From 81bed7aa6fce8f4b204a0436c1205f8eaa03897e Mon Sep 17 00:00:00 2001 From: Kwabena Amponsah Date: Wed, 15 Jul 2026 12:36:33 +0100 Subject: [PATCH 01/13] #285 Bump up to Python 3.10-compatible dependencies --- setup.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/setup.py b/setup.py index e44359fe..c7c9e1d1 100644 --- a/setup.py +++ b/setup.py @@ -46,21 +46,21 @@ # List of dependencies install_requires=[ - 'py>=1.10.0', - 'decorator>=4.5', - 'importlib-metadata>=1.7', + 'py>=1.11', + 'decorator>=5.1', + 'importlib-metadata>=4.6', 'isodate>=0.6', 'lxml>=4.7', - 'MarkupSafe>=1.2', - 'mpmath>=1.1', - 'networkx>=2.4', - 'packaging>=20.4', - 'Pint>=0.9, <0.20', - 'pyparsing>=2.4.7, <4', - 'rdflib>=5.0', - 'six>=1.15', - 'sympy>=1.9, <1.11', - 'zipp>=1.2', + 'MarkupSafe>=2.0', + 'mpmath>=1.2', + 'networkx>=2.7', + 'packaging>=21.0', + 'Pint>=0.24, <0.26', # Occasional breaking changes in minor versions + 'pyparsing>=3.0, <4', + 'rdflib>=6.2', + 'six>=1.16', + 'sympy>=1.10, <1.15', # Occasional breaking changes in minor versions + 'zipp>=3.6', 'Jinja2>=3.0', 'cellmlmanip>=0.3.7', ], From e944eadd9a9609db3aa27de531bc623147777049 Mon Sep 17 00:00:00 2001 From: Kwabena Amponsah Date: Wed, 15 Jul 2026 17:07:30 +0100 Subject: [PATCH 02/13] #285 Pin Pint to 0.25.3 in the dev requirements --- dev-requirements/dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-requirements/dev.txt b/dev-requirements/dev.txt index 33e0de94..3126e086 100644 --- a/dev-requirements/dev.txt +++ b/dev-requirements/dev.txt @@ -23,7 +23,7 @@ mock==5.1.0 mpmath==1.3.0 networkx==3.2.1 packaging==24.2 -Pint==0.19.2 +Pint==0.25.3 pluggy==1.5.0 py==1.11.0 pycodestyle==2.12.1 From 615b4b61c0cab35541ebfd848239fe0e50e2652a Mon Sep 17 00:00:00 2001 From: Kwabena Amponsah Date: Wed, 15 Jul 2026 17:07:30 +0100 Subject: [PATCH 03/13] #285 Fix model loading on sympy 1.12 and later --- chaste_codegen/_math_functions.py | 3 ++- chaste_codegen/model_with_conversions.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/chaste_codegen/_math_functions.py b/chaste_codegen/_math_functions.py index fa842896..c79b6b0c 100644 --- a/chaste_codegen/_math_functions.py +++ b/chaste_codegen/_math_functions.py @@ -76,7 +76,8 @@ def fdiff(self, argindex=1): # MATH_FUNC_SYMPY_MAPPING provides a mapping from our specified math functions back to sympy versions. -# This can be used to put sympy function into an expression or evaluation. e.g. `expr.subs(MATH_FUNC_SYMPY_MAPPING)`. +# Apply it via subs_math_func_placeholders(), which uses expr.replace(). Do not use expr.subs() with this +# mapping as sympy >= 1.12 strictly sympifies the substitution values and rejects e.g. the sqrt function. MATH_FUNC_SYMPY_MAPPING = {abs_: Abs, acos_: acos, cos_: cos, exp_: exp, sin_: sin, sqrt_: sqrt} diff --git a/chaste_codegen/model_with_conversions.py b/chaste_codegen/model_with_conversions.py index 3ced70f3..f25c870c 100644 --- a/chaste_codegen/model_with_conversions.py +++ b/chaste_codegen/model_with_conversions.py @@ -16,7 +16,7 @@ ) from chaste_codegen import LOGGER, CodegenError -from chaste_codegen._math_functions import MATH_FUNC_SYMPY_MAPPING +from chaste_codegen._math_functions import subs_math_func_placeholders from chaste_codegen._optimize import optimize_expr_for_c_output from chaste_codegen._rdf import ( OXMETA, @@ -411,7 +411,7 @@ def _stimulus_sign(model, expr_to_check, equations, stimulus_current=None): expr_to_check = expr_to_check.xreplace({stimulus_current: 1}) # stimulus = 1 if isinstance(expr_to_check, Expr): # plug in math functions for sign calculation - expr_to_check = expr_to_check.subs(MATH_FUNC_SYMPY_MAPPING) + expr_to_check = subs_math_func_placeholders(expr_to_check) return - 1 if expr_to_check > 0 else 1 From 008108fbdc3ba3b38daedba3e082d4d119cd2bd1 Mon Sep 17 00:00:00 2001 From: Kwabena Amponsah Date: Wed, 15 Jul 2026 17:07:31 +0100 Subject: [PATCH 04/13] #285 Select test reference files per sympy version --- chaste_codegen/tests/conftest.py | 102 ++++++++++++++++++++++--------- 1 file changed, 74 insertions(+), 28 deletions(-) diff --git a/chaste_codegen/tests/conftest.py b/chaste_codegen/tests/conftest.py index f9756829..4442b0cd 100644 --- a/chaste_codegen/tests/conftest.py +++ b/chaste_codegen/tests/conftest.py @@ -1,7 +1,9 @@ +import glob import os import re import pytest +import sympy from chaste_codegen import DATA_DIR, load_model_with_conversions from chaste_codegen._script_utils import write_file @@ -14,6 +16,42 @@ COMMENTS_REGEX = re.compile(r'(//.*)') VERSION_REGEX = re.compile(r'(//! This source file was generated from CellML by chaste_codegen version .*)') + +def versioned_reference_path(reference_file, sympy_version=None): + """Return the reference file applicable to the running sympy version. + + When sympy changes the generated output format at version X.Y, the new + expected output is kept in a sibling file with a ``--sympy_X_Y`` suffix + inserted before the extension, e.g. ``foo.cpp`` -> ``foo--sympy_1_13.cpp``. + The base ``reference_file`` is used for versions below the lowest threshold, + and whenever there are no variants. + """ + if sympy_version is None: + sympy_version = sympy.__version__ + running = tuple(int(part) for part in sympy_version.split('.')[:2]) + + root, ext = os.path.splitext(reference_file) + suffix = re.compile(r'--sympy_(\d+)_(\d+)' + re.escape(ext) + r'$') + best_threshold, best_path = (0, 0), reference_file # base file is the fallback + for variant in glob.glob(glob.escape(root) + '--sympy_*_*' + glob.escape(ext)): + match = suffix.search(variant) + if match: + threshold = (int(match.group(1)), int(match.group(2))) + if best_threshold < threshold <= running: + best_threshold, best_path = threshold, variant + return best_path + + +def read_versioned_reference(reference_file, sympy_version=None): + """Read the reference text applicable to the running sympy version. + + See :func:`versioned_reference_path` for how the variant is selected. + """ + with open(versioned_reference_path(reference_file, sympy_version), 'r') as f: + content = f.read() + return content[:-1] if content.endswith('\n') else content + + cached_models = {} @@ -71,34 +109,37 @@ def load_chaste_models(model_types=[], reference_folder='chaste_reference_models return model_files +def normalise_lines(raw_lines, remove_comments=False): + """ Normalise raw text lines for comparison + + Strips surrounding whitespace, removes the timestamp/version header lines + and (optionally) comments, and drops blank lines. + + :param raw_lines: an iterable of raw lines (e.g. from ``file.readlines()``) + :param remove_comments: indicates whether to remove all comments starting with // + """ + lines = [] + for line in raw_lines: + line = line.rstrip().lstrip() # Remove trailing and preceding whitespace + line = TIMESTAMP_REGEX.sub("", line) # Remove timestamp + line = VERSION_REGEX.sub("", line) # Remove Version + if remove_comments: + line = COMMENTS_REGEX.sub("", line) # Remove comments + if line != '': # Skip empty lines + lines.append(line) + return lines + + def get_file_lines(file_name, remove_comments=False): - """ Load a file into a list of lines + """ Load a file into a normalised list of lines :param file_name: file name including path :param remove_comments: indicates whether to remove all comments starting with // """ # Check file exists assert os.path.isfile(file_name) - lines = [] with open(file_name, 'r') as f: - for line in f.readlines(): - line = line.rstrip().lstrip() # Remove trailing and preceding whitespace - line = TIMESTAMP_REGEX.sub("", line) # Remove timestamp - line = VERSION_REGEX.sub("", line) # Remove Version - if remove_comments: - line = COMMENTS_REGEX.sub("", line) # Remove comments - lines.append(line) - f.close() - - # Remove empty lines - i = 0 - while i < len(lines): - if lines[i] == '': - del lines[i] - else: - i += 1 - - return lines + return normalise_lines(f.readlines(), remove_comments) def compare_model_against_reference(chaste_model, tmp_path, model_type, reference_folder='chaste_reference_models'): @@ -117,12 +158,17 @@ def compare_model_against_reference(chaste_model, tmp_path, model_type, referenc def compare_file_against_reference(reference_file, file): - """ Check a model's generated files against given reference files + """ Check a generated file against its reference. + + The applicable reference is selected by :func:`versioned_reference_path` for + the running sympy version. Setting the ``CHASTE_CODEGEN_REGENERATE_REFERENCES`` + environment variable dumps the generated output to a per-sympy-version file + (``.regen..``) instead of asserting, for later use. """ - # Load reference file - file = get_file_lines(file) - reference = get_file_lines(reference_file) - alt_reference = reference_file + '_python36' - if file != reference and os.path.exists(alt_reference): - reference = get_file_lines(alt_reference) - assert file == reference, str(alt_reference) + if os.environ.get('CHASTE_CODEGEN_REGENERATE_REFERENCES'): + version = '.'.join(sympy.__version__.split('.')[:2]) + with open(file, 'r') as gen, open(reference_file + '.regen.' + version, 'w') as out: + out.write(gen.read()) + return + reference_file = versioned_reference_path(reference_file) + assert get_file_lines(file) == get_file_lines(reference_file), reference_file From dfc6adf1c6e3dffaddbfb719a7e1cd59cd8a3bd3 Mon Sep 17 00:00:00 2001 From: Kwabena Amponsah Date: Wed, 15 Jul 2026 17:07:47 +0100 Subject: [PATCH 05/13] #285 Add per-sympy-version variants of the generated code references --- ...slanidi_atrial_model_2009--sympy_1_11.cpp} | 267 +- ...aslanidi_atrial_model_2009--sympy_1_13.cpp | 1225 ++++ ...aslanidi_atrial_model_2009--sympy_1_14.cpp | 1228 ++++ ...kim_rasmusson_2004_apical--sympy_1_11.cpp} | 422 +- ..._kim_rasmusson_2004_apical--sympy_1_13.cpp | 2231 ++++++++ ..._kim_rasmusson_2004_apical--sympy_1_14.cpp | 2233 ++++++++ ...rtemanche_ramirez_nattel_1998.cpp_python36 | 1028 ---- ...ini_bers_2010_ssBackwardEuler.cpp_python36 | 2310 -------- ...python36 => li_mouse_2010--sympy_1_11.cpp} | 451 +- .../BE/li_mouse_2010--sympy_1_13.cpp | 1873 ++++++ .../BE/li_mouse_2010--sympy_1_14.cpp | 1876 ++++++ ...kim_rasmusson_2004_apical--sympy_1_11.cpp} | 424 +- ..._kim_rasmusson_2004_apical--sympy_1_13.cpp | 2807 +++++++++ ..._kim_rasmusson_2004_apical--sympy_1_14.cpp | 2809 +++++++++ ...p_python36 => decker_2009--sympy_1_11.cpp} | 853 +-- .../BEopt/decker_2009--sympy_1_13.cpp | 3652 ++++++++++++ .../BEopt/decker_2009--sympy_1_14.cpp | 3657 ++++++++++++ ...rtemanche_ramirez_nattel_1998.cpp_python36 | 1462 ----- .../dokos_model_1996--sympy_1_13.cpp | 666 +++ .../dokos_model_1996--sympy_1_14.cpp | 666 +++ ..._axon_model_1952_modified--sympy_1_13.cpp} | 8 +- ...francesco_noble_model_1985--sympy_1_13.cpp | 744 +++ .../Cvode/faber_rudy_2000--sympy_1_13.cpp | 928 +++ .../Cvode/faber_rudy_2000--sympy_1_14.cpp | 928 +++ ..._severi_ventricularVersion--sympy_1_13.cpp | 833 +++ ..._severi_ventricularVersion--sympy_1_14.cpp | 833 +++ ...hilgemann_noble_model_1987--sympy_1_13.cpp | 855 +++ ..._axon_model_1952_modified--sympy_1_11.cpp} | 57 +- ...d_axon_model_1952_modified--sympy_1_13.cpp | 584 ++ ...slanidi_atrial_model_2009--sympy_1_11.cpp} | 821 ++- ...aslanidi_atrial_model_2009--sympy_1_13.cpp | 1322 +++++ ...aslanidi_atrial_model_2009--sympy_1_14.cpp | 1334 +++++ .../dynamic_Shannon2004.cpp_python36 | 2173 ------- ..._axon_model_1952_modified--sympy_1_11.cpp} | 24 +- ...d_axon_model_1952_modified--sympy_1_13.cpp | 359 ++ .../dynamic_demir_model_1994.cpp_python36 | 2828 --------- ..._axon_model_1952_modified--sympy_1_13.cpp} | 20 +- ... beeler_reuter_model_1977--sympy_1_11.cpp} | 116 +- .../beeler_reuter_model_1977--sympy_1_13.cpp | 1347 +++++ .../beeler_reuter_model_1977--sympy_1_14.cpp | 1345 +++++ .../dynamic_matsuoka_model_2003.cpp_python36 | 5085 ----------------- .../dynamic_winslow_model_1999.cpp_python36 | 3441 ----------- ..._axon_model_1952_modified--sympy_1_13.cpp} | 20 +- ...ic_viswanathan_model_1999_epi.cpp_python36 | 3472 ----------- ..._axon_model_1952_modified--sympy_1_13.cpp} | 52 +- .../Normal/luo_rudy_1994--sympy_1_13.cpp | 520 ++ .../Normal/luo_rudy_1994--sympy_1_14.cpp | 520 ++ ...uter_model_1977_lookup_tables.cpp_python36 | 842 --- ..._axon_model_1952_modified--sympy_1_13.cpp} | 8 +- ..._with_range_cap_dimensionless.cpp_python36 | 805 --- ...d_axon_model_1952_modified--sympy_1_13.cpp | 309 + ..._axon_model_1952_modified--sympy_1_13.cpp} | 14 +- 52 files changed, 39455 insertions(+), 25232 deletions(-) rename chaste_codegen/data/tests/chaste_reference_models/BE/{aslanidi_atrial_model_2009.cpp_python36 => aslanidi_atrial_model_2009--sympy_1_11.cpp} (90%) create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009--sympy_1_14.cpp rename chaste_codegen/data/tests/chaste_reference_models/BE/{bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp_python36 => bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_11.cpp} (89%) create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_14.cpp delete mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998.cpp_python36 delete mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler.cpp_python36 rename chaste_codegen/data/tests/chaste_reference_models/BE/{li_mouse_2010.cpp_python36 => li_mouse_2010--sympy_1_11.cpp} (88%) create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010--sympy_1_14.cpp rename chaste_codegen/data/tests/chaste_reference_models/BEopt/{bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp_python36 => bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_11.cpp} (90%) create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_14.cpp rename chaste_codegen/data/tests/chaste_reference_models/BEopt/{decker_2009.cpp_python36 => decker_2009--sympy_1_11.cpp} (83%) create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009--sympy_1_14.cpp delete mode 100644 chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998.cpp_python36 create mode 100644 chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996--sympy_1_14.cpp rename chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/{hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 => hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp} (95%) create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode/difrancesco_noble_model_1985--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersion--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersion--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/hilgemann_noble_model_1987--sympy_1_13.cpp rename chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/{hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 => hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_11.cpp} (89%) create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp rename chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/{aslanidi_atrial_model_2009.cpp_python36 => aslanidi_atrial_model_2009--sympy_1_11.cpp} (75%) create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009--sympy_1_14.cpp delete mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004.cpp_python36 rename chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/{hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 => hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_11.cpp} (93%) create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp delete mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994.cpp_python36 rename chaste_codegen/data/tests/chaste_reference_models/GRL1/{hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 => hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp} (96%) rename chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/{beeler_reuter_model_1977.cpp_python36 => beeler_reuter_model_1977--sympy_1_11.cpp} (92%) create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977--sympy_1_14.cpp delete mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003.cpp_python36 delete mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999.cpp_python36 rename chaste_codegen/data/tests/chaste_reference_models/GRL2/{hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 => hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp} (97%) delete mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi.cpp_python36 rename chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/{hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 => hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp} (93%) create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994--sympy_1_14.cpp delete mode 100644 chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables.cpp_python36 rename chaste_codegen/data/tests/chaste_reference_models/Opt/{hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 => hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp} (95%) delete mode 100644 chaste_codegen/data/tests/chaste_reference_models/Opt/test_luo_rudy_1991_with_range_cap_dimensionless.cpp_python36 create mode 100644 chaste_codegen/data/tests/chaste_reference_models/RL/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp rename chaste_codegen/data/tests/chaste_reference_models/RLopt/{hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 => hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp} (95%) diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009--sympy_1_11.cpp similarity index 90% rename from chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009--sympy_1_11.cpp index f6c5379d..575699a3 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009--sympy_1_11.cpp @@ -26,6 +26,7 @@ + boost::shared_ptr Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::UseCellMLDefaultStimulus() { // Use the default stimulus specified by CellML metadata @@ -110,7 +111,7 @@ EXCEPTION(DumpState(error_message)); } } - + double Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) { // For state variable interpolation (SVI) we read in interpolated state variables, @@ -175,26 +176,26 @@ const double var_membrane__T = 308; // kelvin const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt - const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA - const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[9] / (1 + (pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA const double var_Na_Ca_ion_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_ion_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA - const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA const double var_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA const double var_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 - const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA const double var_inward_rectifier__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt - const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA @@ -316,25 +317,25 @@ const double var_Ca_handling_by_the_SR__r_act = 240 * exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 203.80000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / pow((var_Ca_handling_by_the_SR__k_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 4); // per_second const double var_Ca_handling_by_the_SR__F1_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F3 * var_Ca_handling_by_the_SR__k_F3 - var_chaste_interface__Ca_handling_by_the_SR__F1 * var_Ca_handling_by_the_SR__r_act; // 1 / second const double var_Ca_handling_by_the_SR__F2_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F1 * var_Ca_handling_by_the_SR__r_act - var_chaste_interface__Ca_handling_by_the_SR__F2 * var_Ca_handling_by_the_SR__r_inact; // 1 / second - const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA - const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F1 = 0.001 * var_Ca_handling_by_the_SR__F1_orig_deriv; // 1 / millisecond const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F2 = 0.001 * var_Ca_handling_by_the_SR__F2_orig_deriv; // 1 / millisecond const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[9] / (1 + (pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA - const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA - const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA const double var_intracellular_ion_concentrations__Ca_i_orig_deriv = -0.044999999999999998 * var_intracellular_Ca_buffering__dOCdt - 0.080000000000000002 * var_intracellular_Ca_buffering__dOTCdt - 0.16 * var_intracellular_Ca_buffering__dOTMgCdt + 0.5 * (-var_Ca_handling_by_the_SR__i_up - var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_background_currents__i_B_Ca - var_sarcolemmal_calcium_pump_current__i_CaP + 2 * var_Na_Ca_ion_exchanger_current__i_NaCa + var_Ca_handling_by_the_SR__i_rel) / (var_intracellular_ion_concentrations__Vol_Ca * var_membrane__F); // millimolar / second const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = 0.001 * var_intracellular_ion_concentrations__Ca_i_orig_deriv; // millimolar / millisecond const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt - const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA const double var_sodium_potassium_pump__k_NaK_K = 1; // millimolar @@ -411,96 +412,94 @@ const double var_x5 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; const double var_x6 = 0.23554751134632365 * var_x5; const double var_x7 = var_x2 / pow(var_x0, 3); - const double var_x8 = var_x1 * var_chaste_interface__Ca_handling_by_the_SR__F2 * mParameters[0]; - const double var_x9 = 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x10 = 1 / (1.3999999999999999 + var_x9 + 0.80000000000000004 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up); - const double var_x11 = (var_x9 - 0.32000000000000006 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up) / pow((0.00041999999999999996 + 0.00023999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2); - const double var_x12 = 0.23999999999999999 * exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V); - const double var_x13 = 0.00029999999999999997 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x14 = pow(var_x13, (-4)); - const double var_x15 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4); - const double var_x16 = var_x14 * var_x15; - const double var_x17 = 0.20380000000000001 * var_x16; - const double var_x18 = var_x15 / pow(var_x13, 5); - const double var_x19 = 0.81520000000000004 * var_x18; - const double var_x20 = var_x14 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); - const double var_x21 = 0.81520000000000004 * var_x20; - const double var_x22 = 0.33960000000000001 * var_x16; - const double var_x23 = 1.3584000000000001 * var_x18; - const double var_x24 = 1.3584000000000001 * var_x20; - const double var_x25 = mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; - const double var_x26 = 1 / var_chaste_interface__cleft_space_ion_concentrations__K_c; - const double var_x27 = 0.11002290841454433 * var_x26; - const double var_x28 = pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6); - const double var_x29 = 26.53945091048535 * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; - const double var_x30 = var_x29 * (1.6583208100573134e-5 + 2.4874812150859699e-5 * var_x28); - const double var_x31 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5); - const double var_x32 = 1 / (36.4828726939094 + var_x31); - const double var_x33 = 1 + var_chaste_interface__cleft_space_ion_concentrations__K_c; - const double var_x34 = 1 / (1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)); - const double var_x35 = var_x34 / var_x33; - const double var_x36 = var_x32 * var_x35; - const double var_x37 = var_x31 * var_x36; - const double var_x38 = mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; - const double var_x39 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); - const double var_x40 = 0.58999999999999997 + var_chaste_interface__cleft_space_ion_concentrations__K_c; - const double var_x41 = pow(var_x40, (-3)); - const double var_x42 = 1 / var_chaste_interface__intracellular_ion_concentrations__K_i; - const double var_x43 = log(var_x42 * var_chaste_interface__cleft_space_ion_concentrations__K_c); - const double var_x44 = exp(0.18895643383558949 + 0.052487898287663745 * var_chaste_interface__membrane__V - 1.393 * var_x43); - const double var_x45 = 1 + var_x44; - const double var_x46 = mParameters[6] / var_x45; - const double var_x47 = var_x41 * var_x46; - const double var_x48 = var_x39 * var_x47; - const double var_x49 = -26.53945091048535 * var_x43 + var_chaste_interface__membrane__V; - const double var_x50 = 0.024873817198171774 * var_x49; - const double var_x51 = var_x31 * var_x32 * var_x34 * var_chaste_interface__cleft_space_ion_concentrations__K_c / pow(var_x33, 2); - const double var_x52 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3); - const double var_x53 = var_x46 * var_x52 / pow(var_x40, 4); - const double var_x54 = var_x41 * var_x44 * var_x49 * mParameters[6] / pow(var_x45, 2); - const double var_x55 = var_x39 * var_x54; - const double var_x56 = var_x25 * var_x42; - const double var_x57 = var_x38 * var_x42; - const double var_x58 = var_x42 * var_x52; - const double var_x59 = var_x47 * var_x58; - const double var_x60 = var_x54 * var_x58; - const double var_x61 = var_x35 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2) * var_chaste_interface__cleft_space_ion_concentrations__K_c / pow((1 + 0.027410122234342148 * var_x31), 2); - const double var_x62 = var_x36 * sqrt(var_chaste_interface__intracellular_ion_concentrations__Na_i) * var_chaste_interface__cleft_space_ion_concentrations__K_c; - const double var_x63 = -200 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x64 = 0.00088070109612833447 * var_x3; - const double var_x65 = 0.0017614021922566689 * var_x5; - const double var_x66 = 32 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x67 = 0.00020000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x68 = pow(mParameters[2], 3); - const double var_x69 = var_x68 * mParameters[9]; - const double var_x70 = var_x68 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x71 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]; - const double var_x72 = 1 + 0.00029999999999999997 * var_x70 + 0.00029999999999999997 * var_x71; - const double var_x73 = exp(0.016955889611951675 * var_chaste_interface__membrane__V); - const double var_x74 = exp(-0.02072386508127427 * var_chaste_interface__membrane__V); - const double var_x75 = (var_x71 * var_x73 - var_x70 * var_x74) / pow(var_x72, 2); - const double var_x76 = var_x69 * var_x75; - const double var_x77 = 1 / var_x72; - const double var_x78 = var_x69 * var_x74 * var_x77; - const double var_x79 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2) * mParameters[9] * mParameters[1]; - const double var_x80 = var_x73 * var_x77 * var_x79; - const double var_x81 = var_x75 * var_x79; - const double var_x82 = 0.021829942145742926 * var_x26; - const double var_x83 = var_x29 * (-3.290319067574035e-6 - 4.9354786013610522e-6 * var_x28); - const double var_x84 = 0.0049352811901134472 * var_x49; - const double var_x85 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; - const double var_x86 = var_x85 * mParameters[2]; - const double var_x87 = -log(var_x86); - const double var_x88 = var_x86 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[5]; - const double var_x89 = 0.0096486999999999996 * var_x88; - const double var_x90 = var_x89 * exp(-9.9999999999999995e-8 + var_x87) / (-1 + exp(-9.9999999999999995e-8)); - const double var_x91 = 0.037679754693225945 * var_chaste_interface__membrane__V; + const double var_x8 = 1 / (1.3999999999999999 + 0.80000000000000004 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i); + const double var_x9 = pow((0.00041999999999999996 + 0.00023999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_chaste_interface__intracellular_ion_concentrations__Ca_i), (-2)); + const double var_x10 = 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.32000000000000006 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up; + const double var_x11 = var_x10 * var_x9; + const double var_x12 = 0.00029999999999999997 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x13 = pow(var_x12, (-4)); + const double var_x14 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4); + const double var_x15 = var_x13 * var_x14; + const double var_x16 = 0.20380000000000001 * var_x15 + 0.23999999999999999 * exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V); + const double var_x17 = var_x14 / pow(var_x12, 5); + const double var_x18 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); + const double var_x19 = 0.001 * (-815.20000000000005 * var_x17 + 815.20000000000005 * var_x13 * var_x18) * var_chaste_interface__Ca_handling_by_the_SR__F1; + const double var_x20 = 0.033960000000000004 + 0.33960000000000001 * var_x15; + const double var_x21 = 0.001 * (-1358.4000000000001 * var_x17 + 1358.4000000000001 * var_x13 * var_x18) * var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x22 = mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; + const double var_x23 = 1 / var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x24 = 0.11002290841454433 * var_x23; + const double var_x25 = (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x26 = 0.0011002730933088092 * var_x25; + const double var_x27 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5); + const double var_x28 = 1 / (36.4828726939094 + var_x27); + const double var_x29 = 1 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x30 = 1 / var_x29; + const double var_x31 = 1 / (1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)); + const double var_x32 = var_x30 * var_x31; + const double var_x33 = var_x28 * var_x32; + const double var_x34 = var_x27 * var_x33; + const double var_x35 = mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; + const double var_x36 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); + const double var_x37 = 0.58999999999999997 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x38 = pow(var_x37, (-3)); + const double var_x39 = 1 / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x40 = log(var_x39 * var_chaste_interface__cleft_space_ion_concentrations__K_c); + const double var_x41 = exp(0.18895643383558949 + 0.052487898287663745 * var_chaste_interface__membrane__V - 1.393 * var_x40); + const double var_x42 = 1 + var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = var_x43 * mParameters[6]; + const double var_x45 = var_x38 * var_x44; + const double var_x46 = var_x36 * var_x45; + const double var_x47 = -26.53945091048535 * var_x40 + var_chaste_interface__membrane__V; + const double var_x48 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3); + const double var_x49 = var_x44 * var_x48 / pow(var_x37, 4); + const double var_x50 = pow(var_x29, (-2)); + const double var_x51 = pow(var_x42, (-2)); + const double var_x52 = var_x22 * var_x39; + const double var_x53 = var_x35 * var_x39; + const double var_x54 = var_x39 * var_x48; + const double var_x55 = var_x45 * var_x54; + const double var_x56 = var_x38 * var_x41 * var_x47 * var_x51 * mParameters[6]; + const double var_x57 = var_x33 * sqrt(var_chaste_interface__intracellular_ion_concentrations__Na_i) * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x58 = pow((1 + 0.027410122234342148 * var_x27), (-2)); + const double var_x59 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x60 = 200 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x61 = 0.00088070109612833447 * var_x3; + const double var_x62 = 32 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x63 = 0.00020000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x64 = pow(mParameters[2], 3); + const double var_x65 = var_x64 * mParameters[9]; + const double var_x66 = var_x64 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x67 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]; + const double var_x68 = 1 + 0.00029999999999999997 * var_x66 + 0.00029999999999999997 * var_x67; + const double var_x69 = pow(var_x68, (-2)); + const double var_x70 = exp(0.016955889611951675 * var_chaste_interface__membrane__V); + const double var_x71 = exp(-0.02072386508127427 * var_chaste_interface__membrane__V); + const double var_x72 = var_x67 * var_x70 - var_x66 * var_x71; + const double var_x73 = var_x69 * var_x72; + const double var_x74 = var_x65 * var_x73; + const double var_x75 = 1 / var_x68; + const double var_x76 = var_x65 * var_x71 * var_x75; + const double var_x77 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x78 = var_x77 * mParameters[9] * mParameters[1]; + const double var_x79 = 0.021829942145742926 * var_x23; + const double var_x80 = 0.00021830815343428756 * var_x25; + const double var_x81 = 0.0049352811901134472 * var_x47; + const double var_x82 = var_x27 * var_x28 * var_x31 * var_x50 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x83 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x84 = var_x83 * mParameters[2]; + const double var_x85 = log(var_x84); + const double var_x86 = var_x84 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[5]; + const double var_x87 = 0.0096486999999999996 * var_x86; + const double var_x88 = var_x87 * exp(-9.9999999999999995e-8 - var_x85) / (-1 + exp(-9.9999999999999995e-8)); + const double var_x89 = 0.037679754693225945 * var_chaste_interface__membrane__V; rJacobian[0][0] = 1.0 - (mDt * (-14.98 - var_x4 + 14.880000000000001 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse)); rJacobian[0][1] = -(mDt * (0.099999999999999992)); rJacobian[0][2] = 0.0; - rJacobian[0][3] = -(mDt * (var_x6 * var_x7 - var_x6 * var_x8)); + rJacobian[0][3] = -(mDt * (var_x6 * var_x7 - var_x1 * var_x6 * var_chaste_interface__Ca_handling_by_the_SR__F2 * mParameters[0])); rJacobian[0][4] = 0.0; rJacobian[0][5] = -(mDt * (12.4 + 14.880000000000001 * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel)); rJacobian[0][6] = 0.0; @@ -512,7 +511,7 @@ rJacobian[0][12] = 0.0; rJacobian[0][13] = 0.0; rJacobian[1][0] = -(mDt * (0.011085915847820609)); - rJacobian[1][1] = 1.0 - (mDt * (-0.011085915847820609 - 2.6321499680605046e-9 * var_x11 - 0.011698444302491135 * var_x10)); + rJacobian[1][1] = 1.0 - (mDt * (-0.011085915847820609 - 2.6321499680605046e-9 * var_x11 - 0.011698444302491135 * var_x8)); rJacobian[1][2] = 0.0; rJacobian[1][3] = 0.0; rJacobian[1][4] = 0.0; @@ -522,12 +521,12 @@ rJacobian[1][8] = 0.0; rJacobian[1][9] = 0.0; rJacobian[1][10] = 0.0; - rJacobian[1][11] = -(mDt * (121.85879481761599 * var_x10 - 1.0967291533585437e-5 * var_x11)); + rJacobian[1][11] = -(mDt * (121.85879481761599 * var_x8 - 1.0967291533585437e-5 * var_x11)); rJacobian[1][12] = 0.0; rJacobian[1][13] = 0.0; rJacobian[2][0] = 0.0; rJacobian[2][1] = 0.0; - rJacobian[2][2] = 1.0 - (mDt * (-var_x12 - var_x17)); + rJacobian[2][2] = 1.0 - (mDt * (-var_x16)); rJacobian[2][3] = 0.0; rJacobian[2][4] = -(mDt * (0.00081499999999999997)); rJacobian[2][5] = 0.0; @@ -536,13 +535,13 @@ rJacobian[2][8] = 0.0; rJacobian[2][9] = 0.0; rJacobian[2][10] = 0.0; - rJacobian[2][11] = -(mDt * ((var_x19 - var_x21) * var_chaste_interface__Ca_handling_by_the_SR__F1)); + rJacobian[2][11] = -(mDt * (-var_x19)); rJacobian[2][12] = 0.0; rJacobian[2][13] = 0.0; rJacobian[3][0] = 0.0; rJacobian[3][1] = 0.0; - rJacobian[3][2] = -(mDt * (var_x12 + var_x17)); - rJacobian[3][3] = 1.0 - (mDt * (-0.033960000000000004 - var_x22)); + rJacobian[3][2] = -(mDt * (var_x16)); + rJacobian[3][3] = 1.0 - (mDt * (-var_x20)); rJacobian[3][4] = 0.0; rJacobian[3][5] = 0.0; rJacobian[3][6] = 0.0; @@ -550,13 +549,13 @@ rJacobian[3][8] = 0.0; rJacobian[3][9] = 0.0; rJacobian[3][10] = 0.0; - rJacobian[3][11] = -(mDt * ((var_x21 - var_x19) * var_chaste_interface__Ca_handling_by_the_SR__F1 + (var_x23 - var_x24) * var_chaste_interface__Ca_handling_by_the_SR__F2)); + rJacobian[3][11] = -(mDt * (var_x19 - var_x21)); rJacobian[3][12] = 0.0; rJacobian[3][13] = 0.0; rJacobian[4][0] = 0.0; rJacobian[4][1] = 0.0; rJacobian[4][2] = 0.0; - rJacobian[4][3] = -(mDt * (0.033960000000000004 + var_x22)); + rJacobian[4][3] = -(mDt * (var_x20)); rJacobian[4][4] = 1.0 - (mDt * (-0.00081499999999999997)); rJacobian[4][5] = 0.0; rJacobian[4][6] = 0.0; @@ -564,7 +563,7 @@ rJacobian[4][8] = 0.0; rJacobian[4][9] = 0.0; rJacobian[4][10] = 0.0; - rJacobian[4][11] = -(mDt * ((var_x24 - var_x23) * var_chaste_interface__Ca_handling_by_the_SR__F2)); + rJacobian[4][11] = -(mDt * (var_x21)); rJacobian[4][12] = 0.0; rJacobian[4][13] = 0.0; rJacobian[5][0] = -(mDt * (0.47999999999999998 - 0.47999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse)); @@ -587,14 +586,14 @@ rJacobian[6][3] = 0.0; rJacobian[6][4] = 0.0; rJacobian[6][5] = 0.0; - rJacobian[6][6] = 1.0 - (mDt * (0.011549742452351092 * var_x55 + 0.00085446536839159674 * var_x51 - 0.00085446536839159674 * var_x37 - 0.22004581682908866 * var_x48 + var_x48 * var_x50 - var_x25 * var_x27 - var_x26 * var_x30 - var_x27 * var_x38 - var_x50 * var_x53)); + rJacobian[6][6] = 1.0 - (mDt * (-0.00085446536839159674 * var_x34 - 0.22004581682908866 * var_x46 - var_x22 * var_x24 - var_x23 * var_x26 - var_x24 * var_x35 - 0.024873817198171774 * var_x47 * var_x49 + 0.024873817198171774 * var_x36 * var_x38 * var_x43 * var_x47 * mParameters[6] + 0.00085446536839159674 * var_x27 * var_x28 * var_x31 * var_x50 * var_chaste_interface__cleft_space_ion_concentrations__K_c + 0.011549742452351092 * var_x36 * var_x38 * var_x41 * var_x47 * var_x51 * mParameters[6])); rJacobian[6][7] = 0.0; rJacobian[6][8] = 0.0; rJacobian[6][9] = 0.0; rJacobian[6][10] = 0.0; rJacobian[6][11] = 0.0; - rJacobian[6][12] = -(mDt * (0.11002290841454433 * var_x56 + 0.11002290841454433 * var_x57 + 0.22004581682908866 * var_x59 - 0.011549742452351092 * var_x60 + var_x30 * var_x42)); - rJacobian[6][13] = -(mDt * (9.6295871719563877e-7 * var_x61 - 0.0012816980525873951 * var_x62)); + rJacobian[6][12] = -(mDt * (0.11002290841454433 * var_x52 + 0.11002290841454433 * var_x53 + 0.22004581682908866 * var_x55 + var_x26 * var_x39 - 0.011549742452351092 * var_x54 * var_x56)); + rJacobian[6][13] = -(mDt * (-0.0012816980525873951 * var_x57 + 9.6295871719563877e-7 * var_x30 * var_x31 * var_x58 * var_x59 * var_chaste_interface__cleft_space_ion_concentrations__K_c)); rJacobian[7][0] = 0.0; rJacobian[7][1] = 0.0; rJacobian[7][2] = 0.0; @@ -602,7 +601,7 @@ rJacobian[7][4] = 0.0; rJacobian[7][5] = 0.0; rJacobian[7][6] = 0.0; - rJacobian[7][7] = 1.0 - (mDt * (-0.47599999999999998 + var_x63)); + rJacobian[7][7] = 1.0 - (mDt * (-0.47599999999999998 - var_x60)); rJacobian[7][8] = 0.0; rJacobian[7][9] = 0.0; rJacobian[7][10] = 0.0; @@ -632,8 +631,8 @@ rJacobian[9][6] = 0.0; rJacobian[9][7] = 0.0; rJacobian[9][8] = 0.0; - rJacobian[9][9] = 1.0 - (mDt * (-0.0066 + var_x63)); - rJacobian[9][10] = -(mDt * (var_x63)); + rJacobian[9][9] = 1.0 - (mDt * (-0.0066 - var_x60)); + rJacobian[9][10] = -(mDt * (-var_x60)); rJacobian[9][11] = -(mDt * (200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg)); rJacobian[9][12] = 0.0; rJacobian[9][13] = 0.0; @@ -651,48 +650,48 @@ rJacobian[10][11] = 0.0; rJacobian[10][12] = 0.0; rJacobian[10][13] = 0.0; - rJacobian[11][0] = -(mDt * (var_x64)); - rJacobian[11][1] = -(mDt * (1.7754934097947219e-10 * var_x11 + 0.00078910818213098765 * var_x10)); + rJacobian[11][0] = -(mDt * (var_x61)); + rJacobian[11][1] = -(mDt * (1.7754934097947219e-10 * var_x11 + 0.00078910818213098765 * var_x8)); rJacobian[11][2] = 0.0; - rJacobian[11][3] = -(mDt * (var_x65 * var_x8 - var_x65 * var_x7)); + rJacobian[11][3] = -(mDt * (-0.0017614021922566689 * var_x5 * var_x7 + 0.0017614021922566689 * var_x1 * var_x5 * var_chaste_interface__Ca_handling_by_the_SR__F2 * mParameters[0])); rJacobian[11][4] = 0.0; rJacobian[11][5] = 0.0; rJacobian[11][6] = 0.0; rJacobian[11][7] = -(mDt * (0.021419999999999998 + 9 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); rJacobian[11][8] = -(mDt * (0.031359999999999999 + 6.2720000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); - rJacobian[11][9] = -(mDt * (0.0010559999999999999 + var_x66)); - rJacobian[11][10] = -(mDt * (var_x66)); - rJacobian[11][11] = 1.0 - (mDt * (-47.271999999999998 - var_x64 + 6.2720000000000002 * var_chaste_interface__intracellular_Ca_buffering__O_TC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg + 9 * var_chaste_interface__intracellular_Ca_buffering__O_C + 7.3978892074780085e-7 * var_x11 - 8.3745867230843319e-6 / var_x67 - 5.2842065767700058e-7 * var_x76 - 8.2198768971977874 * var_x10 - 0.0017614021922566689 * var_x78 - 2.3373323507508574e-7 / var_chaste_interface__intracellular_ion_concentrations__Ca_i + 8.3745867230843319e-6 * var_chaste_interface__intracellular_ion_concentrations__Ca_i / pow(var_x67, 2))); + rJacobian[11][9] = -(mDt * (0.0010559999999999999 + var_x62)); + rJacobian[11][10] = -(mDt * (var_x62)); + rJacobian[11][11] = 1.0 - (mDt * (-47.271999999999998 - var_x61 + 6.2720000000000002 * var_chaste_interface__intracellular_Ca_buffering__O_TC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg + 9 * var_chaste_interface__intracellular_Ca_buffering__O_C - 8.3745867230843319e-6 / var_x63 - 5.2842065767700058e-7 * var_x74 - 8.2198768971977874 * var_x8 - 0.0017614021922566689 * var_x76 - 2.3373323507508574e-7 / var_chaste_interface__intracellular_ion_concentrations__Ca_i + 8.3745867230843319e-6 * var_chaste_interface__intracellular_ion_concentrations__Ca_i / pow(var_x63, 2) + 7.3978892074780085e-7 * var_x10 * var_x9)); rJacobian[11][12] = 0.0; - rJacobian[11][13] = -(mDt * (0.0052842065767700064 * var_x80 - 1.5852619730310017e-6 * var_x81)); + rJacobian[11][13] = -(mDt * (-1.5852619730310017e-6 * var_x73 * var_x78 + 0.0052842065767700064 * var_x70 * var_x75 * var_x77 * mParameters[9] * mParameters[1])); rJacobian[12][0] = 0.0; rJacobian[12][1] = 0.0; rJacobian[12][2] = 0.0; rJacobian[12][3] = 0.0; rJacobian[12][4] = 0.0; rJacobian[12][5] = 0.0; - rJacobian[12][6] = -(mDt * (0.043659884291485852 * var_x48 + 0.00016953677944277714 * var_x37 - 0.0022916155659426776 * var_x55 - 0.00016953677944277714 * var_x51 + var_x25 * var_x82 + var_x38 * var_x82 + var_x53 * var_x84 - var_x26 * var_x83 - var_x48 * var_x84)); + rJacobian[12][6] = -(mDt * (0.043659884291485852 * var_x46 + 0.00016953677944277714 * var_x34 - 0.00016953677944277714 * var_x82 + var_x22 * var_x79 + var_x23 * var_x80 + var_x35 * var_x79 + var_x49 * var_x81 - var_x46 * var_x81 - 0.0022916155659426776 * var_x36 * var_x56)); rJacobian[12][7] = 0.0; rJacobian[12][8] = 0.0; rJacobian[12][9] = 0.0; rJacobian[12][10] = 0.0; rJacobian[12][11] = 0.0; - rJacobian[12][12] = 1.0 - (mDt * (0.0022916155659426776 * var_x60 - 0.021829942145742926 * var_x56 - 0.021829942145742926 * var_x57 - 0.043659884291485852 * var_x59 + var_x42 * var_x83)); - rJacobian[12][13] = -(mDt * (0.00025430516916416572 * var_x62 - 1.9106323753881723e-7 * var_x61)); + rJacobian[12][12] = 1.0 - (mDt * (-0.021829942145742926 * var_x52 - 0.021829942145742926 * var_x53 - 0.043659884291485852 * var_x55 - var_x39 * var_x80 + 0.0022916155659426776 * var_x38 * var_x39 * var_x41 * var_x47 * var_x48 * var_x51 * mParameters[6])); + rJacobian[12][13] = -(mDt * (0.00025430516916416572 * var_x57 - 1.9106323753881723e-7 * var_x32 * var_x58 * var_x59 * var_chaste_interface__cleft_space_ion_concentrations__K_c)); rJacobian[13][0] = 0.0; rJacobian[13][1] = 0.0; rJacobian[13][2] = 0.0; rJacobian[13][3] = 0.0; rJacobian[13][4] = 0.0; rJacobian[13][5] = 0.0; - rJacobian[13][6] = -(mDt * (0.00025430516916416572 * var_x51 - 0.00025430516916416572 * var_x37)); + rJacobian[13][6] = -(mDt * (0.00025430516916416572 * var_x82 - 0.00025430516916416572 * var_x34)); rJacobian[13][7] = 0.0; rJacobian[13][8] = 0.0; rJacobian[13][9] = 0.0; rJacobian[13][10] = 0.0; - rJacobian[13][11] = -(mDt * (0.0024676405950567236 * var_x78 + 7.4029217851701709e-7 * var_x76)); + rJacobian[13][11] = -(mDt * (0.0024676405950567236 * var_x76 + 7.4029217851701709e-7 * var_x74)); rJacobian[13][12] = 0.0; - rJacobian[13][13] = 1.0 - (mDt * (2.2208765355510512e-6 * var_x81 + 2.8659485630822583e-7 * var_x61 - 0.00038145775374624855 * var_x62 - 4.3659884291485854e-7 * var_x85 - 0.00082254686501890791 * (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (-var_x90 + (0.5 + 188398.77346612973 * var_chaste_interface__membrane__V) * (var_x90 + var_x89 * exp(9.9999999999999995e-8 + var_x87) / (-1 + exp(9.9999999999999995e-8)))) : (3635.606491085292 * var_x88 * var_chaste_interface__membrane__V * exp(var_x87 + var_x91) / (-1 + exp(var_x91)))) - 0.0074029217851701709 * var_x80)); + rJacobian[13][13] = 1.0 - (mDt * (-0.00038145775374624855 * var_x57 - 4.3659884291485854e-7 * var_x83 - 0.00082254686501890791 * (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (-var_x88 + 188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (var_x88 + var_x87 * exp(9.9999999999999995e-8 - var_x85) / (-1 + exp(9.9999999999999995e-8)))) : (3635.606491085292 * var_x86 * var_chaste_interface__membrane__V * exp(var_x89 - var_x85) / (-1 + exp(var_x89)))) - 0.0074029217851701709 * var_x70 * var_x75 * var_x78 + 2.2208765355510512e-6 * var_x69 * var_x72 * var_x77 * mParameters[9] * mParameters[1] + 2.8659485630822583e-7 * var_x30 * var_x31 * var_x58 * var_x59 * var_chaste_interface__cleft_space_ion_concentrations__K_c)); } void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) @@ -757,23 +756,23 @@ const double var_membrane__T = 308; // kelvin const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt - const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA - const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[9] / (1 + (pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA - const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA - const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 const double var_membrane__i_Stim = 1000000 * var_membrane__Cm_converted * var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // picoA const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt - const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA const double var_sodium_potassium_pump__k_NaK_K = 1; // millimolar @@ -957,7 +956,7 @@ const double var_membrane__T = 308; // kelvin const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[9] / (1 + (pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA const double var_Na_Ca_ion_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_ion_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 @@ -965,7 +964,7 @@ const double var_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA const double var_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 - const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA const double var_inward_rectifier__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009--sympy_1_13.cpp new file mode 100644 index 00000000..e414cf69 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009--sympy_1_13.cpp @@ -0,0 +1,1225 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: aslanidi_atrial_model_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEuler) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "aslanidi_atrial_model_2009.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_membrane__Cm_converted = 0.001 * mParameters[4]; // uF + const double var_chaste_interface__membrane__stim_amplitude_converted = -3.9999999999999998e-6 * HeartConfig::Instance()->GetCapacitance() / var_membrane__Cm_converted; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = 0.5; // millisecond + const double var_chaste_interface__membrane__stim_period_converted = 500; // millisecond + const double var_chaste_interface__membrane__stim_start_converted = 10; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration_converted, + var_chaste_interface__membrane__stim_period_converted, + var_chaste_interface__membrane__stim_start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<14>( + 29, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 200; // (var_Ca_handling_by_the_SR__alpha_rel) [picoA_per_millimolar] + this->mParameters[1] = 2.5; // (var_cleft_space_ion_concentrations__Ca_c) [millimolar] + this->mParameters[2] = 140; // (var_cleft_space_ion_concentrations__Na_c) [millimolar] + this->mParameters[3] = 0.0040000000000000001; // (var_L_type_Ca_channel__g_Ca_L) [nanoS] + this->mParameters[4] = 5.0000000000000002e-5; // (var_membrane__Cm) [nanoF] + this->mParameters[5] = 1.3999999999999999e-6; // (var_sodium_current__P_Na) [nanolitre_per_second] + this->mParameters[6] = 0.0050800000000000003; // (var_inward_rectifier__g_K1) [nanoS] + this->mParameters[7] = 0.0035000000000000001; // (var_delayed_rectifier_K_current__g_Kr) [nanoS] + this->mParameters[8] = 0.0025000000000000001; // (var_delayed_rectifier_K_current__g_Ks) [nanoS] + this->mParameters[9] = 2.0000000000000002e-5; // (var_Na_Ca_ion_exchanger_current__k_NaCa) [picoA_per_millimolar_4] + } + + Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::~Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler() + { + } + + + void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 29; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[16]; + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[17]; + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = rY[22]; + // Units: millimolar; Initial value: 5.0 + + const double var_Ca_independent_transient_outward_K_current__g_to = 0.050001999999999998; // nanoS + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_T_type_Ca_channel__E_Ca_T = 38; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.0060000000000000001; // nanoS + const double var_background_currents__g_B_Ca = 3.1000000000000001e-5; // nanoS + const double var_background_currents__g_B_Na = 6.3999999999999997e-5; // nanoS + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__Cm_converted = 0.001 * mParameters[4]; // uF + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[9] / (1 + (pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_Na_Ca_ion_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_ion_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA + const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA + const double var_sodium_potassium_pump__k_NaK_K = 1; // millimolar + const double var_sodium_potassium_pump__k_NaK_Na = 11; // millimolar + const double var_sodium_potassium_pump__i_p = 1.6000000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) + pow(var_sodium_potassium_pump__k_NaK_Na, 1.5)) * (var_chaste_interface__cleft_space_ion_concentrations__K_c + var_sodium_potassium_pump__k_NaK_K)); // picoA + const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_ion_exchanger_current__i_NaCa_converted + var_delayed_rectifier_K_current__i_Kr_converted + var_delayed_rectifier_K_current__i_Ks_converted + var_inward_rectifier__i_K1_converted + var_sodium_current__i_Na_converted) * var_membrane__Cm_converted + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Ca_independent_transient_outward_K_current__i_sus + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Ca_independent_transient_outward_K_current__i_to + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Ca + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Na + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump_current__i_CaP + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_p) / var_membrane__Cm_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[14], double rResidual[14]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + + //output_nonlinear_state_assignments + double var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = rCurrentGuess[0]; + double var_chaste_interface__Ca_handling_by_the_SR__Ca_up = rCurrentGuess[1]; + double var_chaste_interface__Ca_handling_by_the_SR__F1 = rCurrentGuess[2]; + double var_chaste_interface__Ca_handling_by_the_SR__F2 = rCurrentGuess[3]; + double var_chaste_interface__Ca_handling_by_the_SR__F3 = rCurrentGuess[4]; + double var_chaste_interface__Ca_handling_by_the_SR__O_Calse = rCurrentGuess[5]; + double var_chaste_interface__cleft_space_ion_concentrations__K_c = rCurrentGuess[6]; + double var_chaste_interface__intracellular_Ca_buffering__O_C = rCurrentGuess[7]; + double var_chaste_interface__intracellular_Ca_buffering__O_TC = rCurrentGuess[8]; + double var_chaste_interface__intracellular_Ca_buffering__O_TMgC = rCurrentGuess[9]; + double var_chaste_interface__intracellular_Ca_buffering__O_TMgMg = rCurrentGuess[10]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[11]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[12]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[13]; + + //output_equations + const double var_Ca_handling_by_the_SR__I_up_max = 2.7999999999999998; // picoA + const double var_Ca_handling_by_the_SR__O_Calse_orig_deriv = -400 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse + 480 * (1 - var_chaste_interface__Ca_handling_by_the_SR__O_Calse) * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; // 1 / second + const double var_Ca_handling_by_the_SR__Vol_rel = 4.3999999999999997e-8; // nanolitre + const double var_Ca_handling_by_the_SR__Vol_up = 3.9690000000000001e-7; // nanolitre + const double var_Ca_handling_by_the_SR__k_F3 = 0.81499999999999995; // per_second + const double var_Ca_handling_by_the_SR__k_cyca = 0.00029999999999999997; // millimolar + const double var_Ca_handling_by_the_SR__k_rel = 0.00029999999999999997; // millimolar + const double var_Ca_handling_by_the_SR__k_srca = 0.5; // millimolar + const double var_Ca_handling_by_the_SR__k_xcs = 0.40000000000000002; // dimensionless + const double var_Ca_handling_by_the_SR__tau_tr = 0.01; // second + const double var_Ca_independent_transient_outward_K_current__g_to = 0.050001999999999998; // nanoS + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__O_Calse = 0.001 * var_Ca_handling_by_the_SR__O_Calse_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_T_type_Ca_channel__E_Ca_T = 38; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.0060000000000000001; // nanoS + const double var_background_currents__g_B_Ca = 3.1000000000000001e-5; // nanoS + const double var_background_currents__g_B_Na = 6.3999999999999997e-5; // nanoS + const double var_cleft_space_ion_concentrations__Vol_c = 2.5000000000000002e-6; // nanolitre + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_intracellular_Ca_buffering__Mg_i = 2.5; // millimolar + const double var_intracellular_Ca_buffering__O_TMgMg_orig_deriv = -666 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg + 2000 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_TMgC - var_chaste_interface__intracellular_Ca_buffering__O_TMgMg) * var_intracellular_Ca_buffering__Mg_i; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgMg = 0.001 * var_intracellular_Ca_buffering__O_TMgMg_orig_deriv; // 1 / millisecond + const double var_Ca_handling_by_the_SR__i_rel = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel) * mParameters[0] / pow((0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2), 2); // picoA + const double var_Ca_handling_by_the_SR__i_up = (var_chaste_interface__intracellular_ion_concentrations__Ca_i / var_Ca_handling_by_the_SR__k_cyca - pow(var_Ca_handling_by_the_SR__k_xcs, 2) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up / var_Ca_handling_by_the_SR__k_srca) * var_Ca_handling_by_the_SR__I_up_max / ((var_Ca_handling_by_the_SR__k_cyca + var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_Ca_handling_by_the_SR__k_cyca + (var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_Ca_handling_by_the_SR__k_srca) * var_Ca_handling_by_the_SR__k_xcs / var_Ca_handling_by_the_SR__k_srca); // picoA + const double var_Ca_handling_by_the_SR__r_inact = 33.960000000000001 + 339.60000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / pow((var_Ca_handling_by_the_SR__k_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 4); // per_second + const double var_Ca_handling_by_the_SR__F3_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F2 * var_Ca_handling_by_the_SR__r_inact - var_chaste_interface__Ca_handling_by_the_SR__F3 * var_Ca_handling_by_the_SR__k_F3; // 1 / second + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F3 = 0.001 * var_Ca_handling_by_the_SR__F3_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOCdt = -476 * var_chaste_interface__intracellular_Ca_buffering__O_C + 200000 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_C) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; // per_second + const double var_intracellular_Ca_buffering__O_C_orig_deriv = var_intracellular_Ca_buffering__dOCdt; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_C = 0.001 * var_intracellular_Ca_buffering__O_C_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOTCdt = -392 * var_chaste_interface__intracellular_Ca_buffering__O_TC + 78400 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_TC) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; // per_second + const double var_intracellular_Ca_buffering__O_TC_orig_deriv = var_intracellular_Ca_buffering__dOTCdt; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TC = 0.001 * var_intracellular_Ca_buffering__O_TC_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOTMgCdt = -6.5999999999999996 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC + 200000 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_TMgC - var_chaste_interface__intracellular_Ca_buffering__O_TMgMg) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; // per_second + const double var_intracellular_Ca_buffering__O_TMgC_orig_deriv = var_intracellular_Ca_buffering__dOTMgCdt; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgC = 0.001 * var_intracellular_Ca_buffering__O_TMgC_orig_deriv; // 1 / millisecond + const double var_intracellular_ion_concentrations__Vol_Ca = 5.8839999999999999e-6; // nanolitre + const double var_intracellular_ion_concentrations__Vol_i = 1.26e-5; // nanolitre + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_Ca_handling_by_the_SR__i_tr = 2 * (-var_chaste_interface__Ca_handling_by_the_SR__Ca_rel + var_chaste_interface__Ca_handling_by_the_SR__Ca_up) * var_Ca_handling_by_the_SR__Vol_rel * var_membrane__F / var_Ca_handling_by_the_SR__tau_tr; // picoA + const double var_Ca_handling_by_the_SR__Ca_rel_orig_deriv = -31 * var_Ca_handling_by_the_SR__O_Calse_orig_deriv + 0.5 * (-var_Ca_handling_by_the_SR__i_rel + var_Ca_handling_by_the_SR__i_tr) / (var_Ca_handling_by_the_SR__Vol_rel * var_membrane__F); // millimolar / second + const double var_Ca_handling_by_the_SR__Ca_up_orig_deriv = 0.5 * (-var_Ca_handling_by_the_SR__i_tr + var_Ca_handling_by_the_SR__i_up) / (var_Ca_handling_by_the_SR__Vol_up * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_rel = 0.001 * var_Ca_handling_by_the_SR__Ca_rel_orig_deriv; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_up = 0.001 * var_Ca_handling_by_the_SR__Ca_up_orig_deriv; // millimolar / millisecond + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_Ca_handling_by_the_SR__r_act = 240 * exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 203.80000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / pow((var_Ca_handling_by_the_SR__k_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 4); // per_second + const double var_Ca_handling_by_the_SR__F1_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F3 * var_Ca_handling_by_the_SR__k_F3 - var_chaste_interface__Ca_handling_by_the_SR__F1 * var_Ca_handling_by_the_SR__r_act; // 1 / second + const double var_Ca_handling_by_the_SR__F2_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F1 * var_Ca_handling_by_the_SR__r_act - var_chaste_interface__Ca_handling_by_the_SR__F2 * var_Ca_handling_by_the_SR__r_inact; // 1 / second + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F1 = 0.001 * var_Ca_handling_by_the_SR__F1_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F2 = 0.001 * var_Ca_handling_by_the_SR__F2_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[9] / (1 + (pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA + const double var_intracellular_ion_concentrations__Ca_i_orig_deriv = -0.044999999999999998 * var_intracellular_Ca_buffering__dOCdt - 0.080000000000000002 * var_intracellular_Ca_buffering__dOTCdt - 0.16 * var_intracellular_Ca_buffering__dOTMgCdt + 0.5 * (-var_Ca_handling_by_the_SR__i_up - var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_background_currents__i_B_Ca - var_sarcolemmal_calcium_pump_current__i_CaP + 2 * var_Na_Ca_ion_exchanger_current__i_NaCa + var_Ca_handling_by_the_SR__i_rel) / (var_intracellular_ion_concentrations__Vol_Ca * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = 0.001 * var_intracellular_ion_concentrations__Ca_i_orig_deriv; // millimolar / millisecond + const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA + const double var_sodium_potassium_pump__k_NaK_K = 1; // millimolar + const double var_sodium_potassium_pump__k_NaK_Na = 11; // millimolar + const double var_sodium_potassium_pump__i_p = 1.6000000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) + pow(var_sodium_potassium_pump__k_NaK_Na, 1.5)) * (var_chaste_interface__cleft_space_ion_concentrations__K_c + var_sodium_potassium_pump__k_NaK_K)); // picoA + const double var_cleft_space_ion_concentrations__K_c_orig_deriv = (-2 * var_sodium_potassium_pump__i_p + var_Ca_independent_transient_outward_K_current__i_sus + var_Ca_independent_transient_outward_K_current__i_to + var_delayed_rectifier_K_current__i_Kr + var_delayed_rectifier_K_current__i_Ks + var_inward_rectifier__i_K1) / (var_cleft_space_ion_concentrations__Vol_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_ion_concentrations__K_c = 0.001 * var_cleft_space_ion_concentrations__K_c_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__K_i_orig_deriv = (-var_Ca_independent_transient_outward_K_current__i_sus - var_Ca_independent_transient_outward_K_current__i_to - var_delayed_rectifier_K_current__i_Kr - var_delayed_rectifier_K_current__i_Ks - var_inward_rectifier__i_K1 + 2 * var_sodium_potassium_pump__i_p) / (var_intracellular_ion_concentrations__Vol_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = 0.001 * var_intracellular_ion_concentrations__K_i_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__Na_i_orig_deriv = (-var_background_currents__i_B_Na - var_sodium_current__i_Na - 3 * var_Na_Ca_ion_exchanger_current__i_NaCa - 3 * var_sodium_potassium_pump__i_p) / (var_intracellular_ion_concentrations__Vol_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = 0.001 * var_intracellular_ion_concentrations__Na_i_orig_deriv; // millimolar / millisecond + + rResidual[11] = rCurrentGuess[11] - rY[1] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i; + rResidual[13] = rCurrentGuess[13] - rY[16] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rResidual[12] = rCurrentGuess[12] - rY[17] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rResidual[7] = rCurrentGuess[7] - rY[18] - mDt*d_dt_chaste_interface_var_intracellular_Ca_buffering__O_C; + rResidual[8] = rCurrentGuess[8] - rY[19] - mDt*d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TC; + rResidual[9] = rCurrentGuess[9] - rY[20] - mDt*d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgC; + rResidual[10] = rCurrentGuess[10] - rY[21] - mDt*d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgMg; + rResidual[6] = rCurrentGuess[6] - rY[22] - mDt*d_dt_chaste_interface_var_cleft_space_ion_concentrations__K_c; + rResidual[0] = rCurrentGuess[0] - rY[23] - mDt*d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_rel; + rResidual[1] = rCurrentGuess[1] - rY[24] - mDt*d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_up; + rResidual[5] = rCurrentGuess[5] - rY[25] - mDt*d_dt_chaste_interface_var_Ca_handling_by_the_SR__O_Calse; + rResidual[2] = rCurrentGuess[2] - rY[26] - mDt*d_dt_chaste_interface_var_Ca_handling_by_the_SR__F1; + rResidual[3] = rCurrentGuess[3] - rY[27] - mDt*d_dt_chaste_interface_var_Ca_handling_by_the_SR__F2; + rResidual[4] = rCurrentGuess[4] - rY[28] - mDt*d_dt_chaste_interface_var_Ca_handling_by_the_SR__F3; + } + + void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[14], double rJacobian[14][14]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + + double var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = rCurrentGuess[0]; + double var_chaste_interface__Ca_handling_by_the_SR__Ca_up = rCurrentGuess[1]; + double var_chaste_interface__Ca_handling_by_the_SR__F1 = rCurrentGuess[2]; + double var_chaste_interface__Ca_handling_by_the_SR__F2 = rCurrentGuess[3]; + double var_chaste_interface__Ca_handling_by_the_SR__O_Calse = rCurrentGuess[5]; + double var_chaste_interface__cleft_space_ion_concentrations__K_c = rCurrentGuess[6]; + double var_chaste_interface__intracellular_Ca_buffering__O_C = rCurrentGuess[7]; + double var_chaste_interface__intracellular_Ca_buffering__O_TC = rCurrentGuess[8]; + double var_chaste_interface__intracellular_Ca_buffering__O_TMgC = rCurrentGuess[9]; + double var_chaste_interface__intracellular_Ca_buffering__O_TMgMg = rCurrentGuess[10]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[11]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[12]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[13]; + + const double var_x0 = 0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x1 = pow(var_x0, (-2)); + const double var_x2 = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = 0.11777375567316183 * var_x3; + const double var_x5 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + const double var_x6 = 0.23554751134632365 * var_x5; + const double var_x7 = var_x2 / pow(var_x0, 3); + const double var_x8 = 1 / (1.3999999999999999 + 0.80000000000000004 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i); + const double var_x9 = pow((0.00041999999999999996 + 0.00023999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_chaste_interface__intracellular_ion_concentrations__Ca_i), (-2)); + const double var_x10 = 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.32000000000000006 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up; + const double var_x11 = var_x10 * var_x9; + const double var_x12 = 0.00029999999999999997 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x13 = pow(var_x12, (-4)); + const double var_x14 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4); + const double var_x15 = var_x13 * var_x14; + const double var_x16 = 0.20380000000000001 * var_x15 + 0.23999999999999999 * exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V); + const double var_x17 = var_x14 / pow(var_x12, 5); + const double var_x18 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); + const double var_x19 = 0.001 * (-815.20000000000005 * var_x17 + 815.20000000000005 * var_x13 * var_x18) * var_chaste_interface__Ca_handling_by_the_SR__F1; + const double var_x20 = 0.033960000000000004 + 0.33960000000000001 * var_x15; + const double var_x21 = 0.001 * (-1358.4000000000001 * var_x17 + 1358.4000000000001 * var_x13 * var_x18) * var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x22 = mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; + const double var_x23 = 1 / var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x24 = 0.11002290841454433 * var_x23; + const double var_x25 = (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x26 = 0.0011002730933088092 * var_x25; + const double var_x27 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5); + const double var_x28 = 1 / (36.4828726939094 + var_x27); + const double var_x29 = 1 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x30 = 1 / var_x29; + const double var_x31 = 1 / (1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)); + const double var_x32 = var_x30 * var_x31; + const double var_x33 = var_x28 * var_x32; + const double var_x34 = var_x27 * var_x33; + const double var_x35 = mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; + const double var_x36 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); + const double var_x37 = 0.58999999999999997 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x38 = pow(var_x37, (-3)); + const double var_x39 = 1 / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x40 = log(var_x39 * var_chaste_interface__cleft_space_ion_concentrations__K_c); + const double var_x41 = exp(0.18895643383558949 + 0.052487898287663745 * var_chaste_interface__membrane__V - 1.393 * var_x40); + const double var_x42 = 1 + var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = var_x43 * mParameters[6]; + const double var_x45 = var_x38 * var_x44; + const double var_x46 = var_x36 * var_x45; + const double var_x47 = -26.53945091048535 * var_x40 + var_chaste_interface__membrane__V; + const double var_x48 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3); + const double var_x49 = var_x44 * var_x48 / pow(var_x37, 4); + const double var_x50 = pow(var_x29, (-2)); + const double var_x51 = pow(var_x42, (-2)); + const double var_x52 = var_x22 * var_x39; + const double var_x53 = var_x35 * var_x39; + const double var_x54 = var_x39 * var_x48; + const double var_x55 = var_x45 * var_x54; + const double var_x56 = var_x38 * var_x41 * var_x47 * var_x51 * mParameters[6]; + const double var_x57 = var_x33 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 0.5) * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x58 = pow((1 + 0.027410122234342148 * var_x27), (-2)); + const double var_x59 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x60 = 200 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x61 = 0.00088070109612833447 * var_x3; + const double var_x62 = 32 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x63 = 0.00020000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x64 = pow(mParameters[2], 3); + const double var_x65 = var_x64 * mParameters[9]; + const double var_x66 = var_x64 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x67 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]; + const double var_x68 = 1 + 0.00029999999999999997 * var_x66 + 0.00029999999999999997 * var_x67; + const double var_x69 = pow(var_x68, (-2)); + const double var_x70 = exp(0.016955889611951675 * var_chaste_interface__membrane__V); + const double var_x71 = exp(-0.02072386508127427 * var_chaste_interface__membrane__V); + const double var_x72 = var_x67 * var_x70 - var_x66 * var_x71; + const double var_x73 = var_x69 * var_x72; + const double var_x74 = var_x65 * var_x73; + const double var_x75 = 1 / var_x68; + const double var_x76 = var_x65 * var_x71 * var_x75; + const double var_x77 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x78 = var_x77 * mParameters[9] * mParameters[1]; + const double var_x79 = 0.021829942145742926 * var_x23; + const double var_x80 = 0.00021830815343428756 * var_x25; + const double var_x81 = 0.0049352811901134472 * var_x47; + const double var_x82 = var_x27 * var_x28 * var_x31 * var_x50 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x83 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x84 = var_x83 * mParameters[2]; + const double var_x85 = 1 * log(var_x84); + const double var_x86 = var_x84 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[5]; + const double var_x87 = 0.0096486999999999996 * var_x86; + const double var_x88 = var_x87 * exp(-9.9999999999999995e-8 - var_x85) / (-1 + exp(-9.9999999999999995e-8)); + const double var_x89 = 0.037679754693225945 * var_chaste_interface__membrane__V; + + + rJacobian[0][0] = 1.0 - (mDt * (-14.98 - var_x4 + 14.880000000000001 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse)); + rJacobian[0][1] = -(mDt * (0.099999999999999992)); + rJacobian[0][2] = 0.0; + rJacobian[0][3] = -(mDt * (var_x6 * var_x7 - var_x1 * var_x6 * var_chaste_interface__Ca_handling_by_the_SR__F2 * mParameters[0])); + rJacobian[0][4] = 0.0; + rJacobian[0][5] = -(mDt * (12.4 + 14.880000000000001 * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel)); + rJacobian[0][6] = 0.0; + rJacobian[0][7] = 0.0; + rJacobian[0][8] = 0.0; + rJacobian[0][9] = 0.0; + rJacobian[0][10] = 0.0; + rJacobian[0][11] = -(mDt * (var_x4)); + rJacobian[0][12] = 0.0; + rJacobian[0][13] = 0.0; + rJacobian[1][0] = -(mDt * (0.011085915847820609)); + rJacobian[1][1] = 1.0 - (mDt * (-0.011085915847820609 - 2.6321499680605046e-9 * var_x11 - 0.011698444302491135 * var_x8)); + rJacobian[1][2] = 0.0; + rJacobian[1][3] = 0.0; + rJacobian[1][4] = 0.0; + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = 0.0; + rJacobian[1][8] = 0.0; + rJacobian[1][9] = 0.0; + rJacobian[1][10] = 0.0; + rJacobian[1][11] = -(mDt * (121.85879481761599 * var_x8 - 1.0967291533585437e-5 * var_x11)); + rJacobian[1][12] = 0.0; + rJacobian[1][13] = 0.0; + rJacobian[2][0] = 0.0; + rJacobian[2][1] = 0.0; + rJacobian[2][2] = 1.0 - (mDt * (-var_x16)); + rJacobian[2][3] = 0.0; + rJacobian[2][4] = -(mDt * (0.00081499999999999997)); + rJacobian[2][5] = 0.0; + rJacobian[2][6] = 0.0; + rJacobian[2][7] = 0.0; + rJacobian[2][8] = 0.0; + rJacobian[2][9] = 0.0; + rJacobian[2][10] = 0.0; + rJacobian[2][11] = -(mDt * (-var_x19)); + rJacobian[2][12] = 0.0; + rJacobian[2][13] = 0.0; + rJacobian[3][0] = 0.0; + rJacobian[3][1] = 0.0; + rJacobian[3][2] = -(mDt * (var_x16)); + rJacobian[3][3] = 1.0 - (mDt * (-var_x20)); + rJacobian[3][4] = 0.0; + rJacobian[3][5] = 0.0; + rJacobian[3][6] = 0.0; + rJacobian[3][7] = 0.0; + rJacobian[3][8] = 0.0; + rJacobian[3][9] = 0.0; + rJacobian[3][10] = 0.0; + rJacobian[3][11] = -(mDt * (var_x19 - var_x21)); + rJacobian[3][12] = 0.0; + rJacobian[3][13] = 0.0; + rJacobian[4][0] = 0.0; + rJacobian[4][1] = 0.0; + rJacobian[4][2] = 0.0; + rJacobian[4][3] = -(mDt * (var_x20)); + rJacobian[4][4] = 1.0 - (mDt * (-0.00081499999999999997)); + rJacobian[4][5] = 0.0; + rJacobian[4][6] = 0.0; + rJacobian[4][7] = 0.0; + rJacobian[4][8] = 0.0; + rJacobian[4][9] = 0.0; + rJacobian[4][10] = 0.0; + rJacobian[4][11] = -(mDt * (var_x21)); + rJacobian[4][12] = 0.0; + rJacobian[4][13] = 0.0; + rJacobian[5][0] = -(mDt * (0.47999999999999998 - 0.47999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse)); + rJacobian[5][1] = 0.0; + rJacobian[5][2] = 0.0; + rJacobian[5][3] = 0.0; + rJacobian[5][4] = 0.0; + rJacobian[5][5] = 1.0 - (mDt * (-0.40000000000000002 - 0.47999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[5][8] = 0.0; + rJacobian[5][9] = 0.0; + rJacobian[5][10] = 0.0; + rJacobian[5][11] = 0.0; + rJacobian[5][12] = 0.0; + rJacobian[5][13] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (-0.00085446536839159674 * var_x34 - 0.22004581682908866 * var_x46 - var_x22 * var_x24 - var_x23 * var_x26 - var_x24 * var_x35 - 0.024873817198171774 * var_x47 * var_x49 + 0.024873817198171774 * var_x36 * var_x38 * var_x43 * var_x47 * mParameters[6] + 0.00085446536839159674 * var_x27 * var_x28 * var_x31 * var_x50 * var_chaste_interface__cleft_space_ion_concentrations__K_c + 0.011549742452351092 * var_x36 * var_x38 * var_x41 * var_x47 * var_x51 * mParameters[6])); + rJacobian[6][7] = 0.0; + rJacobian[6][8] = 0.0; + rJacobian[6][9] = 0.0; + rJacobian[6][10] = 0.0; + rJacobian[6][11] = 0.0; + rJacobian[6][12] = -(mDt * (0.11002290841454433 * var_x52 + 0.11002290841454433 * var_x53 + 0.22004581682908866 * var_x55 + var_x26 * var_x39 - 0.011549742452351092 * var_x54 * var_x56)); + rJacobian[6][13] = -(mDt * (-0.0012816980525873951 * var_x57 + 9.6295871719563877e-7 * var_x30 * var_x31 * var_x58 * var_x59 * var_chaste_interface__cleft_space_ion_concentrations__K_c)); + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = 0.0; + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (-0.47599999999999998 - var_x60)); + rJacobian[7][8] = 0.0; + rJacobian[7][9] = 0.0; + rJacobian[7][10] = 0.0; + rJacobian[7][11] = -(mDt * (200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_C)); + rJacobian[7][12] = 0.0; + rJacobian[7][13] = 0.0; + rJacobian[8][0] = 0.0; + rJacobian[8][1] = 0.0; + rJacobian[8][2] = 0.0; + rJacobian[8][3] = 0.0; + rJacobian[8][4] = 0.0; + rJacobian[8][5] = 0.0; + rJacobian[8][6] = 0.0; + rJacobian[8][7] = 0.0; + rJacobian[8][8] = 1.0 - (mDt * (-0.39200000000000002 - 78.400000000000006 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + rJacobian[8][9] = 0.0; + rJacobian[8][10] = 0.0; + rJacobian[8][11] = -(mDt * (78.400000000000006 - 78.400000000000006 * var_chaste_interface__intracellular_Ca_buffering__O_TC)); + rJacobian[8][12] = 0.0; + rJacobian[8][13] = 0.0; + rJacobian[9][0] = 0.0; + rJacobian[9][1] = 0.0; + rJacobian[9][2] = 0.0; + rJacobian[9][3] = 0.0; + rJacobian[9][4] = 0.0; + rJacobian[9][5] = 0.0; + rJacobian[9][6] = 0.0; + rJacobian[9][7] = 0.0; + rJacobian[9][8] = 0.0; + rJacobian[9][9] = 1.0 - (mDt * (-0.0066 - var_x60)); + rJacobian[9][10] = -(mDt * (-var_x60)); + rJacobian[9][11] = -(mDt * (200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg)); + rJacobian[9][12] = 0.0; + rJacobian[9][13] = 0.0; + rJacobian[10][0] = 0.0; + rJacobian[10][1] = 0.0; + rJacobian[10][2] = 0.0; + rJacobian[10][3] = 0.0; + rJacobian[10][4] = 0.0; + rJacobian[10][5] = 0.0; + rJacobian[10][6] = 0.0; + rJacobian[10][7] = 0.0; + rJacobian[10][8] = 0.0; + rJacobian[10][9] = -(mDt * (-5)); + rJacobian[10][10] = 1.0 - (mDt * (-5.6660000000000004)); + rJacobian[10][11] = 0.0; + rJacobian[10][12] = 0.0; + rJacobian[10][13] = 0.0; + rJacobian[11][0] = -(mDt * (var_x61)); + rJacobian[11][1] = -(mDt * (1.7754934097947219e-10 * var_x11 + 0.00078910818213098765 * var_x8)); + rJacobian[11][2] = 0.0; + rJacobian[11][3] = -(mDt * (-0.0017614021922566689 * var_x5 * var_x7 + 0.0017614021922566689 * var_x1 * var_x5 * var_chaste_interface__Ca_handling_by_the_SR__F2 * mParameters[0])); + rJacobian[11][4] = 0.0; + rJacobian[11][5] = 0.0; + rJacobian[11][6] = 0.0; + rJacobian[11][7] = -(mDt * (0.021419999999999998 + 9 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + rJacobian[11][8] = -(mDt * (0.031359999999999999 + 6.2720000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + rJacobian[11][9] = -(mDt * (0.0010559999999999999 + var_x62)); + rJacobian[11][10] = -(mDt * (var_x62)); + rJacobian[11][11] = 1.0 - (mDt * (-47.271999999999998 - var_x61 + 6.2720000000000002 * var_chaste_interface__intracellular_Ca_buffering__O_TC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg + 9 * var_chaste_interface__intracellular_Ca_buffering__O_C - 8.3745867230843319e-6 / var_x63 - 5.2842065767700058e-7 * var_x74 - 8.2198768971977874 * var_x8 - 0.0017614021922566689 * var_x76 - 2.3373323507508574e-7 / var_chaste_interface__intracellular_ion_concentrations__Ca_i + 8.3745867230843319e-6 * var_chaste_interface__intracellular_ion_concentrations__Ca_i / pow(var_x63, 2) + 7.3978892074780085e-7 * var_x10 * var_x9)); + rJacobian[11][12] = 0.0; + rJacobian[11][13] = -(mDt * (-1.5852619730310017e-6 * var_x73 * var_x78 + 0.0052842065767700064 * var_x70 * var_x75 * var_x77 * mParameters[9] * mParameters[1])); + rJacobian[12][0] = 0.0; + rJacobian[12][1] = 0.0; + rJacobian[12][2] = 0.0; + rJacobian[12][3] = 0.0; + rJacobian[12][4] = 0.0; + rJacobian[12][5] = 0.0; + rJacobian[12][6] = -(mDt * (0.043659884291485852 * var_x46 + 0.00016953677944277714 * var_x34 - 0.00016953677944277714 * var_x82 + var_x22 * var_x79 + var_x23 * var_x80 + var_x35 * var_x79 + var_x49 * var_x81 - var_x46 * var_x81 - 0.0022916155659426776 * var_x36 * var_x56)); + rJacobian[12][7] = 0.0; + rJacobian[12][8] = 0.0; + rJacobian[12][9] = 0.0; + rJacobian[12][10] = 0.0; + rJacobian[12][11] = 0.0; + rJacobian[12][12] = 1.0 - (mDt * (-0.021829942145742926 * var_x52 - 0.021829942145742926 * var_x53 - 0.043659884291485852 * var_x55 - var_x39 * var_x80 + 0.0022916155659426776 * var_x38 * var_x39 * var_x41 * var_x47 * var_x48 * var_x51 * mParameters[6])); + rJacobian[12][13] = -(mDt * (0.00025430516916416572 * var_x57 - 1.9106323753881723e-7 * var_x32 * var_x58 * var_x59 * var_chaste_interface__cleft_space_ion_concentrations__K_c)); + rJacobian[13][0] = 0.0; + rJacobian[13][1] = 0.0; + rJacobian[13][2] = 0.0; + rJacobian[13][3] = 0.0; + rJacobian[13][4] = 0.0; + rJacobian[13][5] = 0.0; + rJacobian[13][6] = -(mDt * (0.00025430516916416572 * var_x82 - 0.00025430516916416572 * var_x34)); + rJacobian[13][7] = 0.0; + rJacobian[13][8] = 0.0; + rJacobian[13][9] = 0.0; + rJacobian[13][10] = 0.0; + rJacobian[13][11] = -(mDt * (0.0024676405950567236 * var_x76 + 7.4029217851701709e-7 * var_x74)); + rJacobian[13][12] = 0.0; + rJacobian[13][13] = 1.0 - (mDt * (-0.00038145775374624855 * var_x57 - 4.3659884291485854e-7 * var_x83 - 0.00082254686501890791 * (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (-var_x88 + 188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (var_x88 + var_x87 * exp(9.9999999999999995e-8 - var_x85) / (-1 + exp(9.9999999999999995e-8)))) : (3635.606491085292 * var_x86 * var_chaste_interface__membrane__V * exp(var_x89 - var_x85) / (-1 + exp(var_x89)))) - 0.0074029217851701709 * var_x70 * var_x75 * var_x78 + 2.2208765355510512e-6 * var_x69 * var_x72 * var_x77 * mParameters[9] * mParameters[1] + 2.8659485630822583e-7 * var_x30 * var_x31 * var_x58 * var_x59 * var_chaste_interface__cleft_space_ion_concentrations__K_c)); + } + + void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[16]; + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[17]; + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = rY[22]; + // Units: millimolar; Initial value: 5.0 + + const double var_Ca_independent_transient_outward_K_current__g_to = 0.050001999999999998; // nanoS + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_T_type_Ca_channel__E_Ca_T = 38; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.0060000000000000001; // nanoS + const double var_background_currents__g_B_Ca = 3.1000000000000001e-5; // nanoS + const double var_background_currents__g_B_Na = 6.3999999999999997e-5; // nanoS + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__Cm_converted = 0.001 * mParameters[4]; // uF + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[9] / (1 + (pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = 1000000 * var_membrane__Cm_converted * var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA + const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA + const double var_sodium_potassium_pump__k_NaK_K = 1; // millimolar + const double var_sodium_potassium_pump__k_NaK_Na = 11; // millimolar + const double var_sodium_potassium_pump__i_p = 1.6000000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) + pow(var_sodium_potassium_pump__k_NaK_Na, 1.5)) * (var_chaste_interface__cleft_space_ion_concentrations__K_c + var_sodium_potassium_pump__k_NaK_K)); // picoA + const double var_membrane__V_orig_deriv = -1 * (var_Ca_independent_transient_outward_K_current__i_sus + var_Ca_independent_transient_outward_K_current__i_to + var_L_type_Ca_channel__i_Ca_L + var_Na_Ca_ion_exchanger_current__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_background_currents__i_B_Ca + var_background_currents__i_B_Na + var_delayed_rectifier_K_current__i_Kr + var_delayed_rectifier_K_current__i_Ks + var_inward_rectifier__i_K1 + var_membrane__i_Stim + var_sarcolemmal_calcium_pump_current__i_CaP + var_sodium_current__i_Na + var_sodium_potassium_pump__i_p) / mParameters[4]; // millivolt / second + const double d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; + } + + void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + + const double var_Ca_independent_transient_outward_K_current_r_gate__alpha_r = 386.60000000000002 * exp(0.083333333333333329 * var_chaste_interface__membrane__V); + const double var_Ca_independent_transient_outward_K_current_r_gate__beta_r = 8.0109999999999992 * exp(-0.1388888888888889 * var_chaste_interface__membrane__V); + const double var_Ca_independent_transient_outward_K_current_r_gate__r_infinity = 1 / (1 + exp(-2.6628794603230959 - 0.17752529735487307 * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_r_gate__tau_r = 0.00040000000000000002 + 1 / (var_Ca_independent_transient_outward_K_current_r_gate__alpha_r + var_Ca_independent_transient_outward_K_current_r_gate__beta_r); + const double var_Ca_independent_transient_outward_K_current_s1_gate__s1_infinity = 1 / (1 + exp(4.0070821529745047 + 0.14164305949008499 * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1 = 0.020400000000000001 + 0.54659999999999997 / (1 + exp(327.99999999999994 + 10 * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s2_gate__s2_infinity = 1 / (1 + exp(4.0070821529745047 + 0.14164305949008499 * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2 = 5.75 / (1 + exp(327.99999999999994 + 10 * var_chaste_interface__membrane__V)) + 0.45000000000000001 / (1 + exp(0.96921975662133131 - 0.071581961345740866 * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s3_gate__s3_infinity = 0.39975990396158467 + 0.60024009603841544 / (1 + exp(1.8506208911614319 + 0.036523009495982472 * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3 = 0.5 + 7.5 / (1 + exp(46 + 2 * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_d_L_gate__E10 = 10 + var_chaste_interface__membrane__V; + const double var_L_type_Ca_channel_d_L_gate__alpha_d_L = (((var_chaste_interface__membrane__V >= -10.000000480800001) && (var_chaste_interface__membrane__V <= -9.9999995191999993)) ? (2.4040000000391526e-5 / (-1 + exp(1.0000000000162864e-7)) + 1039933.4442576389 * (10.000000480800001 + var_chaste_interface__membrane__V) * (-2.4040000000391526e-5 / (-1 + exp(1.0000000000162864e-7)) - 2.4039999999697637e-5 / (-1 + exp(-9.9999999998742257e-8)))) : (-50 * (10 + var_chaste_interface__membrane__V) / (-1 + exp(-2.0798668885191347 - 0.20798668885191349 * var_chaste_interface__membrane__V)))) + (((var_chaste_interface__membrane__V >= -45.000000249999999) && (var_chaste_interface__membrane__V <= -44.999999750000001)) ? (4.1799999996561256e-6 / (-1 + exp(9.9999999991773334e-8)) + 1999999.9999424887 * (45.000000249999999 + var_chaste_interface__membrane__V) * (-4.1800000005842713e-6 / (-1 + exp(-1.000000000139778e-7)) - 4.1799999996561256e-6 / (-1 + exp(9.9999999991773334e-8)))) : (-16.719999999999999 * (45 + var_chaste_interface__membrane__V) / (-1 + exp(-18 - 0.40000000000000002 * var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_d_L_gate__beta_d_L = (((var_chaste_interface__membrane__V >= -5.0000002500000003) && (var_chaste_interface__membrane__V <= -4.9999997499999997)) ? (-1.1200000000011203e-6 / (-1 + exp(-1.0000000000010001e-7)) + 1999999.9999979998 * (5.0000002500000003 + var_chaste_interface__membrane__V) * (1.1200000000011203e-6 / (-1 + exp(1.0000000000010001e-7)) + 1.1200000000011203e-6 / (-1 + exp(-1.0000000000010001e-7)))) : (4.4800000000000004 * (5 + var_chaste_interface__membrane__V) / (-1 + exp(2 + 0.40000000000000002 * var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_d_L_gate__d_L_infinity = 1 / (1 + exp(-0.14393939393939395 - 0.15151515151515152 * var_L_type_Ca_channel_d_L_gate__E10)); + const double var_L_type_Ca_channel_d_L_gate__tau_d_L = 1 / (var_L_type_Ca_channel_d_L_gate__alpha_d_L + var_L_type_Ca_channel_d_L_gate__beta_d_L); + const double var_L_type_Ca_channel_f_L_gate__E0_f_L = 18 + var_chaste_interface__membrane__V; + const double var_L_type_Ca_channel_f_L_gate__alpha_f_L = (((var_chaste_interface__membrane__V >= -18.000000400000001) && (var_chaste_interface__membrane__V <= -17.999999599999999)) ? (-3.3960000000976542e-6 / (-1 + exp(-1.0000000000287557e-7)) + 1249999.9999640554 * (18.000000400000001 + var_chaste_interface__membrane__V) * (3.3960000000976542e-6 / (-1 + exp(1.0000000000287557e-7)) + 3.3960000000976542e-6 / (-1 + exp(-1.0000000000287557e-7)))) : (8.4900000000000002 * (18 + var_chaste_interface__membrane__V) / (-1 + exp(4.5 + 0.25 * var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_f_L_gate__beta_f_L = 67.921999999999997 / (1 + exp(-0.25 * var_L_type_Ca_channel_f_L_gate__E0_f_L)); + const double var_L_type_Ca_channel_f_L_gate__f_L_infinity = var_L_type_Ca_channel_f_L_gate__alpha_f_L / (var_L_type_Ca_channel_f_L_gate__alpha_f_L + var_L_type_Ca_channel_f_L_gate__beta_f_L); + const double var_L_type_Ca_channel_f_L_gate__tau_f_L = 1 / (var_L_type_Ca_channel_f_L_gate__alpha_f_L + var_L_type_Ca_channel_f_L_gate__beta_f_L); + const double var_T_type_Ca_channel_d_T_gate__E0_d_T = 23.300000000000001 + var_chaste_interface__membrane__V; + const double var_T_type_Ca_channel_d_T_gate__alpha_d_T = 674.173 * exp(0.033333333333333333 * var_T_type_Ca_channel_d_T_gate__E0_d_T); + const double var_T_type_Ca_channel_d_T_gate__beta_d_T = 674.173 * exp(-0.033333333333333333 * var_T_type_Ca_channel_d_T_gate__E0_d_T); + const double var_T_type_Ca_channel_d_T_gate__d_T_infinity = 1 / (1 + exp(0.049180327868852458 - 0.16393442622950821 * var_T_type_Ca_channel_d_T_gate__E0_d_T)); + const double var_T_type_Ca_channel_d_T_gate__tau_d_T = 1 / (var_T_type_Ca_channel_d_T_gate__alpha_d_T + var_T_type_Ca_channel_d_T_gate__beta_d_T); + const double var_T_type_Ca_channel_f_T_gate__E0_f_T = 75 + var_chaste_interface__membrane__V; + const double var_T_type_Ca_channel_f_T_gate__alpha_f_T = 9.6370000000000005 * exp(-0.012004801920768308 * var_T_type_Ca_channel_f_T_gate__E0_f_T); + const double var_T_type_Ca_channel_f_T_gate__beta_f_T = 9.6370000000000005 * exp(0.065019505851755519 * var_T_type_Ca_channel_f_T_gate__E0_f_T); + const double var_T_type_Ca_channel_f_T_gate__f_T_infinity = var_T_type_Ca_channel_f_T_gate__alpha_f_T / (var_T_type_Ca_channel_f_T_gate__alpha_f_T + var_T_type_Ca_channel_f_T_gate__beta_f_T); + const double var_T_type_Ca_channel_f_T_gate__tau_f_T = 1 / (var_T_type_Ca_channel_f_T_gate__alpha_f_T + var_T_type_Ca_channel_f_T_gate__beta_f_T); + const double var_delayed_rectifier_K_current_pa_gate__alpha_p_a = 9 * exp(0.03941508020968823 * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_pa_gate__beta_p_a = 1.3 * exp(-0.076769537847382163 * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_pa_gate__p_a_infinity = 1 / (1 + exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V)); + const double var_delayed_rectifier_K_current_pa_gate__tau_p_a = 1 / (var_delayed_rectifier_K_current_pa_gate__alpha_p_a + var_delayed_rectifier_K_current_pa_gate__beta_p_a); + const double var_delayed_rectifier_K_current_pi_gate__alpha_p_i = 100 * exp(-0.018299935950224173 * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_pi_gate__beta_p_i = 656 * exp(0.009420009985210585 * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_pi_gate__p_i_infinity = 1 / (1 + exp(2.539728728905752 + 0.05358970648917756 * var_chaste_interface__membrane__V)); + const double var_delayed_rectifier_K_current_pi_gate__tau_p_i = 1 / (var_delayed_rectifier_K_current_pi_gate__alpha_p_i + var_delayed_rectifier_K_current_pi_gate__beta_p_i); + const double var_delayed_rectifier_K_current_z_gate__alpha_z = 1.6599999999999999 * exp(0.014398433450440593 * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_z_gate__beta_z = 0.29999999999999999 * exp(-0.045816915605241454 * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_z_gate__tau_z = 0.059999999999999998 + 1 / (var_delayed_rectifier_K_current_z_gate__alpha_z + var_delayed_rectifier_K_current_z_gate__beta_z); + const double var_delayed_rectifier_K_current_z_gate__z_infinity = 1 / (1 + exp(0.065217391304347824 - 0.072463768115942032 * var_chaste_interface__membrane__V)); + const double var_sodium_current_h1_gate__alpha_h = 44.899999999999999 * exp(-12.010771992818672 - 0.17953321364452424 * var_chaste_interface__membrane__V); + const double var_sodium_current_h1_gate__beta_h = 1491 / (1 + 323.30000000000001 * exp(-7.333333333333333 - 0.077519379844961239 * var_chaste_interface__membrane__V)); + const double var_sodium_current_h1_gate__h_infinity = var_sodium_current_h1_gate__alpha_h / (var_sodium_current_h1_gate__alpha_h + var_sodium_current_h1_gate__beta_h); + const double var_sodium_current_h1_gate__tau_h1 = 0.00014999999999999999 + 0.029999999999999999 / (1 + exp(6.666666666666667 + 0.16666666666666666 * var_chaste_interface__membrane__V)); + const double var_sodium_current_h2_gate__tau_h2 = 0.00044999999999999999 + 0.12 / (1 + exp(30 + 0.5 * var_chaste_interface__membrane__V)); + const double var_sodium_current_m_gate__E0_m = 44.399999999999999 + var_chaste_interface__membrane__V; + const double var_sodium_current_m_gate__alpha_m = (((var_chaste_interface__membrane__V >= -44.400001267299999) && (var_chaste_interface__membrane__V <= -44.399998732699999)) ? (0.00058295799999830145 / (-1 + exp(9.9999999999708629e-8)) + 394539.57232025318 * (44.400001267299999 + var_chaste_interface__membrane__V) * (-0.00058295799999830145 / (-1 + exp(9.9999999999708629e-8)) - 0.00058295799999830145 / (-1 + exp(-9.9999999999708629e-8)))) : (-460 * (44.399999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-3.5035114021936398 - 0.078907914463820727 * var_chaste_interface__membrane__V)))); + const double var_sodium_current_m_gate__beta_m = 18400 * exp(-0.078907914463820727 * var_sodium_current_m_gate__E0_m); + + + rY[9] = (var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + ((0.001 * var_Ca_independent_transient_outward_K_current_r_gate__r_infinity / var_Ca_independent_transient_outward_K_current_r_gate__tau_r) * mDt)) / (1.0 - ((-0.001 / var_Ca_independent_transient_outward_K_current_r_gate__tau_r) * mDt)); + rY[10] = (var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 + ((0.001 * var_Ca_independent_transient_outward_K_current_s1_gate__s1_infinity / var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1) * mDt)) / (1.0 - ((-0.001 / var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1) * mDt)); + rY[11] = (var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 + ((0.001 * var_Ca_independent_transient_outward_K_current_s2_gate__s2_infinity / var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2) * mDt)) / (1.0 - ((-0.001 / var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2) * mDt)); + rY[12] = (var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 + ((0.001 * var_Ca_independent_transient_outward_K_current_s3_gate__s3_infinity / var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3) * mDt)) / (1.0 - ((-0.001 / var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3) * mDt)); + rY[5] = (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L + ((0.001 * var_L_type_Ca_channel_d_L_gate__d_L_infinity / var_L_type_Ca_channel_d_L_gate__tau_d_L) * mDt)) / (1.0 - ((-0.001 / var_L_type_Ca_channel_d_L_gate__tau_d_L) * mDt)); + rY[6] = (var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + ((0.001 * var_L_type_Ca_channel_f_L_gate__f_L_infinity / var_L_type_Ca_channel_f_L_gate__tau_f_L) * mDt)) / (1.0 - ((-0.001 / var_L_type_Ca_channel_f_L_gate__tau_f_L) * mDt)); + rY[7] = (var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T + ((0.001 * var_T_type_Ca_channel_d_T_gate__d_T_infinity / var_T_type_Ca_channel_d_T_gate__tau_d_T) * mDt)) / (1.0 - ((-0.001 / var_T_type_Ca_channel_d_T_gate__tau_d_T) * mDt)); + rY[8] = (var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T + ((0.001 * var_T_type_Ca_channel_f_T_gate__f_T_infinity / var_T_type_Ca_channel_f_T_gate__tau_f_T) * mDt)) / (1.0 - ((-0.001 / var_T_type_Ca_channel_f_T_gate__tau_f_T) * mDt)); + rY[14] = (var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a + ((0.001 * var_delayed_rectifier_K_current_pa_gate__p_a_infinity / var_delayed_rectifier_K_current_pa_gate__tau_p_a) * mDt)) / (1.0 - ((-0.001 / var_delayed_rectifier_K_current_pa_gate__tau_p_a) * mDt)); + rY[15] = (var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i + ((0.001 * var_delayed_rectifier_K_current_pi_gate__p_i_infinity / var_delayed_rectifier_K_current_pi_gate__tau_p_i) * mDt)) / (1.0 - ((-0.001 / var_delayed_rectifier_K_current_pi_gate__tau_p_i) * mDt)); + rY[13] = (var_chaste_interface__delayed_rectifier_K_current_z_gate__z + ((0.001 * var_delayed_rectifier_K_current_z_gate__z_infinity / var_delayed_rectifier_K_current_z_gate__tau_z) * mDt)) / (1.0 - ((-0.001 / var_delayed_rectifier_K_current_z_gate__tau_z) * mDt)); + rY[3] = (var_chaste_interface__sodium_current_h1_gate__h1 + ((0.001 * var_sodium_current_h1_gate__h_infinity / var_sodium_current_h1_gate__tau_h1) * mDt)) / (1.0 - ((-0.001 / var_sodium_current_h1_gate__tau_h1) * mDt)); + rY[4] = (var_chaste_interface__sodium_current_h2_gate__h2 + ((0.001 * var_sodium_current_h1_gate__h_infinity / var_sodium_current_h2_gate__tau_h2) * mDt)) / (1.0 - ((-0.001 / var_sodium_current_h2_gate__tau_h2) * mDt)); + rY[2] = (var_chaste_interface__sodium_current_m_gate__m + ((0.001 * var_sodium_current_m_gate__alpha_m) * mDt)) / (1.0 - ((-0.001 * var_sodium_current_m_gate__alpha_m - 0.001 * var_sodium_current_m_gate__beta_m) * mDt)); + + double _guess[14] = {rY[23],rY[24],rY[26],rY[27],rY[28],rY[25],rY[22],rY[18],rY[19],rY[20],rY[21],rY[1],rY[17],rY[16]}; + CardiacNewtonSolver<14,Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<14,Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time_converted, _guess); + rY[23] = _guess[0]; + rY[24] = _guess[1]; + rY[26] = _guess[2]; + rY[27] = _guess[3]; + rY[28] = _guess[4]; + rY[25] = _guess[5]; + rY[22] = _guess[6]; + rY[18] = _guess[7]; + rY[19] = _guess[8]; + rY[20] = _guess[9]; + rY[21] = _guess[10]; + rY[1] = _guess[11]; + rY[17] = _guess[12]; + rY[16] = _guess[13]; + } + + std::vector Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[16]; + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[17]; + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = rY[22]; + // Units: millimolar; Initial value: 5.0 + double var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = rY[23]; + // Units: millimolar; Initial value: 0.726776 + double var_chaste_interface__Ca_handling_by_the_SR__F2 = rY[27]; + // Units: dimensionless; Initial value: 0.002262 + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_Ca_handling_by_the_SR__i_rel = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel) * mParameters[0] / pow((0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2), 2); // picoA + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__Cm_converted = 0.001 * mParameters[4]; // uF + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[9] / (1 + (pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_Na_Ca_ion_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_ion_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + + std::vector dqs(10); + dqs[0] = var_Ca_handling_by_the_SR__i_rel; + dqs[1] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[2] = var_membrane__Cm_converted; + dqs[3] = var_sodium_current__i_Na_converted; + dqs[4] = var_inward_rectifier__i_K1_converted; + dqs[5] = var_delayed_rectifier_K_current__i_Kr_converted; + dqs[6] = var_delayed_rectifier_K_current__i_Ks_converted; + dqs[7] = var_Na_Ca_ion_exchanger_current__i_NaCa_converted; + dqs[8] = var_membrane__i_Stim_converted; + dqs[9] = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "aslanidi_atrial_model_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-80.0); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(7.1e-05); + + // rY[2]: + this->mVariableNames.push_back("sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01309); + + // rY[3]: + this->mVariableNames.push_back("sodium_current_h1_gate__h1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.706); + + // rY[4]: + this->mVariableNames.push_back("sodium_current_h2_gate__h2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.61493); + + // rY[5]: + this->mVariableNames.push_back("L_type_Ca_channel_d_L_gate__d_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3e-05); + + // rY[6]: + this->mVariableNames.push_back("L_type_Ca_channel_f_L_gate__f_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99981); + + // rY[7]: + this->mVariableNames.push_back("T_type_Ca_channel_d_T_gate__d_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00046); + + // rY[8]: + this->mVariableNames.push_back("T_type_Ca_channel_f_T_gate__f_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.30752); + + // rY[9]: + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_r_gate__r"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6e-05); + + // rY[10]: + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_s1_gate__s1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.5753); + + // rY[11]: + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_s2_gate__s2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.39871); + + // rY[12]: + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_s3_gate__s3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.57363); + + // rY[13]: + this->mVariableNames.push_back("delayed_rectifier_K_current_z_gate__z"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.02032); + + // rY[14]: + this->mVariableNames.push_back("delayed_rectifier_K_current_pa_gate__p_a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00016); + + // rY[15]: + this->mVariableNames.push_back("delayed_rectifier_K_current_pi_gate__p_i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.76898); + + // rY[16]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.4); + + // rY[17]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(100.0); + + // rY[18]: + this->mVariableNames.push_back("intracellular_Ca_buffering__O_C"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.029108); + + // rY[19]: + this->mVariableNames.push_back("intracellular_Ca_buffering__O_TC"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.014071); + + // rY[20]: + this->mVariableNames.push_back("intracellular_Ca_buffering__O_TMgC"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.214036); + + // rY[21]: + this->mVariableNames.push_back("intracellular_Ca_buffering__O_TMgMg"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.693565); + + // rY[22]: + this->mVariableNames.push_back("extracellular_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(5.0); + + // rY[23]: + this->mVariableNames.push_back("Ca_handling_by_the_SR__Ca_rel"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.726776); + + // rY[24]: + this->mVariableNames.push_back("Ca_handling_by_the_SR__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.730866); + + // rY[25]: + this->mVariableNames.push_back("Ca_handling_by_the_SR__O_Calse"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.465921); + + // rY[26]: + this->mVariableNames.push_back("Ca_handling_by_the_SR__F1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.288039); + + // rY[27]: + this->mVariableNames.push_back("Ca_handling_by_the_SR__F2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002262); + + // rY[28]: + this->mVariableNames.push_back("Ca_handling_by_the_SR__F3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.612697); + + // mParameters[0]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[1]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane__Cm"); + this->mParameterUnits.push_back("nanoF"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("nanolitre_per_second"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar_4"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("picoA"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009--sympy_1_14.cpp new file mode 100644 index 00000000..203301ef --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/aslanidi_atrial_model_2009--sympy_1_14.cpp @@ -0,0 +1,1228 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: aslanidi_atrial_model_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEuler) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "aslanidi_atrial_model_2009.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_membrane__Cm_converted = 0.001 * mParameters[4]; // uF + const double var_chaste_interface__membrane__stim_amplitude_converted = -3.9999999999999998e-6 * HeartConfig::Instance()->GetCapacitance() / var_membrane__Cm_converted; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = 0.5; // millisecond + const double var_chaste_interface__membrane__stim_period_converted = 500; // millisecond + const double var_chaste_interface__membrane__stim_start_converted = 10; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration_converted, + var_chaste_interface__membrane__stim_period_converted, + var_chaste_interface__membrane__stim_start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<14>( + 29, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 200; // (var_Ca_handling_by_the_SR__alpha_rel) [picoA_per_millimolar] + this->mParameters[1] = 2.5; // (var_cleft_space_ion_concentrations__Ca_c) [millimolar] + this->mParameters[2] = 140; // (var_cleft_space_ion_concentrations__Na_c) [millimolar] + this->mParameters[3] = 0.0040000000000000001; // (var_L_type_Ca_channel__g_Ca_L) [nanoS] + this->mParameters[4] = 5.0000000000000002e-5; // (var_membrane__Cm) [nanoF] + this->mParameters[5] = 1.3999999999999999e-6; // (var_sodium_current__P_Na) [nanolitre_per_second] + this->mParameters[6] = 0.0050800000000000003; // (var_inward_rectifier__g_K1) [nanoS] + this->mParameters[7] = 0.0035000000000000001; // (var_delayed_rectifier_K_current__g_Kr) [nanoS] + this->mParameters[8] = 0.0025000000000000001; // (var_delayed_rectifier_K_current__g_Ks) [nanoS] + this->mParameters[9] = 2.0000000000000002e-5; // (var_Na_Ca_ion_exchanger_current__k_NaCa) [picoA_per_millimolar_4] + } + + Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::~Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler() + { + } + + + void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 29; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[16]; + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[17]; + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = rY[22]; + // Units: millimolar; Initial value: 5.0 + + const double var_Ca_independent_transient_outward_K_current__g_to = 0.050001999999999998; // nanoS + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_T_type_Ca_channel__E_Ca_T = 38; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.0060000000000000001; // nanoS + const double var_background_currents__g_B_Ca = 3.1000000000000001e-5; // nanoS + const double var_background_currents__g_B_Na = 6.3999999999999997e-5; // nanoS + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__Cm_converted = 0.001 * mParameters[4]; // uF + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[9] / (1 + (pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_Na_Ca_ion_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_ion_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA + const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA + const double var_sodium_potassium_pump__k_NaK_K = 1; // millimolar + const double var_sodium_potassium_pump__k_NaK_Na = 11; // millimolar + const double var_sodium_potassium_pump__i_p = 1.6000000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) + pow(var_sodium_potassium_pump__k_NaK_Na, 1.5)) * (var_chaste_interface__cleft_space_ion_concentrations__K_c + var_sodium_potassium_pump__k_NaK_K)); // picoA + const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_ion_exchanger_current__i_NaCa_converted + var_delayed_rectifier_K_current__i_Kr_converted + var_delayed_rectifier_K_current__i_Ks_converted + var_inward_rectifier__i_K1_converted + var_sodium_current__i_Na_converted) * var_membrane__Cm_converted + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Ca_independent_transient_outward_K_current__i_sus + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Ca_independent_transient_outward_K_current__i_to + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Ca + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Na + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump_current__i_CaP + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_p) / var_membrane__Cm_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[14], double rResidual[14]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + + //output_nonlinear_state_assignments + double var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = rCurrentGuess[0]; + double var_chaste_interface__Ca_handling_by_the_SR__Ca_up = rCurrentGuess[1]; + double var_chaste_interface__Ca_handling_by_the_SR__F1 = rCurrentGuess[2]; + double var_chaste_interface__Ca_handling_by_the_SR__F2 = rCurrentGuess[3]; + double var_chaste_interface__Ca_handling_by_the_SR__F3 = rCurrentGuess[4]; + double var_chaste_interface__Ca_handling_by_the_SR__O_Calse = rCurrentGuess[5]; + double var_chaste_interface__cleft_space_ion_concentrations__K_c = rCurrentGuess[6]; + double var_chaste_interface__intracellular_Ca_buffering__O_C = rCurrentGuess[7]; + double var_chaste_interface__intracellular_Ca_buffering__O_TC = rCurrentGuess[8]; + double var_chaste_interface__intracellular_Ca_buffering__O_TMgC = rCurrentGuess[9]; + double var_chaste_interface__intracellular_Ca_buffering__O_TMgMg = rCurrentGuess[10]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[11]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[12]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[13]; + + //output_equations + const double var_Ca_handling_by_the_SR__I_up_max = 2.7999999999999998; // picoA + const double var_Ca_handling_by_the_SR__O_Calse_orig_deriv = -400 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse + 480 * (1 - var_chaste_interface__Ca_handling_by_the_SR__O_Calse) * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; // 1 / second + const double var_Ca_handling_by_the_SR__Vol_rel = 4.3999999999999997e-8; // nanolitre + const double var_Ca_handling_by_the_SR__Vol_up = 3.9690000000000001e-7; // nanolitre + const double var_Ca_handling_by_the_SR__k_F3 = 0.81499999999999995; // per_second + const double var_Ca_handling_by_the_SR__k_cyca = 0.00029999999999999997; // millimolar + const double var_Ca_handling_by_the_SR__k_rel = 0.00029999999999999997; // millimolar + const double var_Ca_handling_by_the_SR__k_srca = 0.5; // millimolar + const double var_Ca_handling_by_the_SR__k_xcs = 0.40000000000000002; // dimensionless + const double var_Ca_handling_by_the_SR__tau_tr = 0.01; // second + const double var_Ca_independent_transient_outward_K_current__g_to = 0.050001999999999998; // nanoS + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__O_Calse = 0.001 * var_Ca_handling_by_the_SR__O_Calse_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_T_type_Ca_channel__E_Ca_T = 38; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.0060000000000000001; // nanoS + const double var_background_currents__g_B_Ca = 3.1000000000000001e-5; // nanoS + const double var_background_currents__g_B_Na = 6.3999999999999997e-5; // nanoS + const double var_cleft_space_ion_concentrations__Vol_c = 2.5000000000000002e-6; // nanolitre + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_intracellular_Ca_buffering__Mg_i = 2.5; // millimolar + const double var_intracellular_Ca_buffering__O_TMgMg_orig_deriv = -666 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg + 2000 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_TMgC - var_chaste_interface__intracellular_Ca_buffering__O_TMgMg) * var_intracellular_Ca_buffering__Mg_i; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgMg = 0.001 * var_intracellular_Ca_buffering__O_TMgMg_orig_deriv; // 1 / millisecond + const double var_Ca_handling_by_the_SR__i_rel = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel) * mParameters[0] / pow((0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2), 2); // picoA + const double var_Ca_handling_by_the_SR__i_up = (var_chaste_interface__intracellular_ion_concentrations__Ca_i / var_Ca_handling_by_the_SR__k_cyca - pow(var_Ca_handling_by_the_SR__k_xcs, 2) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up / var_Ca_handling_by_the_SR__k_srca) * var_Ca_handling_by_the_SR__I_up_max / ((var_Ca_handling_by_the_SR__k_cyca + var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_Ca_handling_by_the_SR__k_cyca + (var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_Ca_handling_by_the_SR__k_srca) * var_Ca_handling_by_the_SR__k_xcs / var_Ca_handling_by_the_SR__k_srca); // picoA + const double var_Ca_handling_by_the_SR__r_inact = 33.960000000000001 + 339.60000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / pow((var_Ca_handling_by_the_SR__k_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 4); // per_second + const double var_Ca_handling_by_the_SR__F3_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F2 * var_Ca_handling_by_the_SR__r_inact - var_chaste_interface__Ca_handling_by_the_SR__F3 * var_Ca_handling_by_the_SR__k_F3; // 1 / second + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F3 = 0.001 * var_Ca_handling_by_the_SR__F3_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOCdt = -476 * var_chaste_interface__intracellular_Ca_buffering__O_C + 200000 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_C) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; // per_second + const double var_intracellular_Ca_buffering__O_C_orig_deriv = var_intracellular_Ca_buffering__dOCdt; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_C = 0.001 * var_intracellular_Ca_buffering__O_C_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOTCdt = -392 * var_chaste_interface__intracellular_Ca_buffering__O_TC + 78400 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_TC) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; // per_second + const double var_intracellular_Ca_buffering__O_TC_orig_deriv = var_intracellular_Ca_buffering__dOTCdt; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TC = 0.001 * var_intracellular_Ca_buffering__O_TC_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOTMgCdt = -6.5999999999999996 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC + 200000 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_TMgC - var_chaste_interface__intracellular_Ca_buffering__O_TMgMg) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; // per_second + const double var_intracellular_Ca_buffering__O_TMgC_orig_deriv = var_intracellular_Ca_buffering__dOTMgCdt; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgC = 0.001 * var_intracellular_Ca_buffering__O_TMgC_orig_deriv; // 1 / millisecond + const double var_intracellular_ion_concentrations__Vol_Ca = 5.8839999999999999e-6; // nanolitre + const double var_intracellular_ion_concentrations__Vol_i = 1.26e-5; // nanolitre + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_Ca_handling_by_the_SR__i_tr = 2 * (-var_chaste_interface__Ca_handling_by_the_SR__Ca_rel + var_chaste_interface__Ca_handling_by_the_SR__Ca_up) * var_Ca_handling_by_the_SR__Vol_rel * var_membrane__F / var_Ca_handling_by_the_SR__tau_tr; // picoA + const double var_Ca_handling_by_the_SR__Ca_rel_orig_deriv = -31 * var_Ca_handling_by_the_SR__O_Calse_orig_deriv + 0.5 * (-var_Ca_handling_by_the_SR__i_rel + var_Ca_handling_by_the_SR__i_tr) / (var_Ca_handling_by_the_SR__Vol_rel * var_membrane__F); // millimolar / second + const double var_Ca_handling_by_the_SR__Ca_up_orig_deriv = 0.5 * (-var_Ca_handling_by_the_SR__i_tr + var_Ca_handling_by_the_SR__i_up) / (var_Ca_handling_by_the_SR__Vol_up * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_rel = 0.001 * var_Ca_handling_by_the_SR__Ca_rel_orig_deriv; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_up = 0.001 * var_Ca_handling_by_the_SR__Ca_up_orig_deriv; // millimolar / millisecond + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_Ca_handling_by_the_SR__r_act = 240 * exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 203.80000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / pow((var_Ca_handling_by_the_SR__k_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 4); // per_second + const double var_Ca_handling_by_the_SR__F1_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F3 * var_Ca_handling_by_the_SR__k_F3 - var_chaste_interface__Ca_handling_by_the_SR__F1 * var_Ca_handling_by_the_SR__r_act; // 1 / second + const double var_Ca_handling_by_the_SR__F2_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F1 * var_Ca_handling_by_the_SR__r_act - var_chaste_interface__Ca_handling_by_the_SR__F2 * var_Ca_handling_by_the_SR__r_inact; // 1 / second + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F1 = 0.001 * var_Ca_handling_by_the_SR__F1_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F2 = 0.001 * var_Ca_handling_by_the_SR__F2_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[9] / (1 + (pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA + const double var_intracellular_ion_concentrations__Ca_i_orig_deriv = -0.044999999999999998 * var_intracellular_Ca_buffering__dOCdt - 0.080000000000000002 * var_intracellular_Ca_buffering__dOTCdt - 0.16 * var_intracellular_Ca_buffering__dOTMgCdt + 0.5 * (-var_Ca_handling_by_the_SR__i_up - var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_background_currents__i_B_Ca - var_sarcolemmal_calcium_pump_current__i_CaP + 2 * var_Na_Ca_ion_exchanger_current__i_NaCa + var_Ca_handling_by_the_SR__i_rel) / (var_intracellular_ion_concentrations__Vol_Ca * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = 0.001 * var_intracellular_ion_concentrations__Ca_i_orig_deriv; // millimolar / millisecond + const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA + const double var_sodium_potassium_pump__k_NaK_K = 1; // millimolar + const double var_sodium_potassium_pump__k_NaK_Na = 11; // millimolar + const double var_sodium_potassium_pump__i_p = 1.6000000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) + pow(var_sodium_potassium_pump__k_NaK_Na, 1.5)) * (var_chaste_interface__cleft_space_ion_concentrations__K_c + var_sodium_potassium_pump__k_NaK_K)); // picoA + const double var_cleft_space_ion_concentrations__K_c_orig_deriv = (-2 * var_sodium_potassium_pump__i_p + var_Ca_independent_transient_outward_K_current__i_sus + var_Ca_independent_transient_outward_K_current__i_to + var_delayed_rectifier_K_current__i_Kr + var_delayed_rectifier_K_current__i_Ks + var_inward_rectifier__i_K1) / (var_cleft_space_ion_concentrations__Vol_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_ion_concentrations__K_c = 0.001 * var_cleft_space_ion_concentrations__K_c_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__K_i_orig_deriv = (-var_Ca_independent_transient_outward_K_current__i_sus - var_Ca_independent_transient_outward_K_current__i_to - var_delayed_rectifier_K_current__i_Kr - var_delayed_rectifier_K_current__i_Ks - var_inward_rectifier__i_K1 + 2 * var_sodium_potassium_pump__i_p) / (var_intracellular_ion_concentrations__Vol_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = 0.001 * var_intracellular_ion_concentrations__K_i_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__Na_i_orig_deriv = (-var_background_currents__i_B_Na - var_sodium_current__i_Na - 3 * var_Na_Ca_ion_exchanger_current__i_NaCa - 3 * var_sodium_potassium_pump__i_p) / (var_intracellular_ion_concentrations__Vol_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = 0.001 * var_intracellular_ion_concentrations__Na_i_orig_deriv; // millimolar / millisecond + + rResidual[11] = rCurrentGuess[11] - rY[1] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i; + rResidual[13] = rCurrentGuess[13] - rY[16] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rResidual[12] = rCurrentGuess[12] - rY[17] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rResidual[7] = rCurrentGuess[7] - rY[18] - mDt*d_dt_chaste_interface_var_intracellular_Ca_buffering__O_C; + rResidual[8] = rCurrentGuess[8] - rY[19] - mDt*d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TC; + rResidual[9] = rCurrentGuess[9] - rY[20] - mDt*d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgC; + rResidual[10] = rCurrentGuess[10] - rY[21] - mDt*d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgMg; + rResidual[6] = rCurrentGuess[6] - rY[22] - mDt*d_dt_chaste_interface_var_cleft_space_ion_concentrations__K_c; + rResidual[0] = rCurrentGuess[0] - rY[23] - mDt*d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_rel; + rResidual[1] = rCurrentGuess[1] - rY[24] - mDt*d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_up; + rResidual[5] = rCurrentGuess[5] - rY[25] - mDt*d_dt_chaste_interface_var_Ca_handling_by_the_SR__O_Calse; + rResidual[2] = rCurrentGuess[2] - rY[26] - mDt*d_dt_chaste_interface_var_Ca_handling_by_the_SR__F1; + rResidual[3] = rCurrentGuess[3] - rY[27] - mDt*d_dt_chaste_interface_var_Ca_handling_by_the_SR__F2; + rResidual[4] = rCurrentGuess[4] - rY[28] - mDt*d_dt_chaste_interface_var_Ca_handling_by_the_SR__F3; + } + + void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time_converted, const double rCurrentGuess[14], double rJacobian[14][14]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + + double var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = rCurrentGuess[0]; + double var_chaste_interface__Ca_handling_by_the_SR__Ca_up = rCurrentGuess[1]; + double var_chaste_interface__Ca_handling_by_the_SR__F1 = rCurrentGuess[2]; + double var_chaste_interface__Ca_handling_by_the_SR__F2 = rCurrentGuess[3]; + double var_chaste_interface__Ca_handling_by_the_SR__O_Calse = rCurrentGuess[5]; + double var_chaste_interface__cleft_space_ion_concentrations__K_c = rCurrentGuess[6]; + double var_chaste_interface__intracellular_Ca_buffering__O_C = rCurrentGuess[7]; + double var_chaste_interface__intracellular_Ca_buffering__O_TC = rCurrentGuess[8]; + double var_chaste_interface__intracellular_Ca_buffering__O_TMgC = rCurrentGuess[9]; + double var_chaste_interface__intracellular_Ca_buffering__O_TMgMg = rCurrentGuess[10]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[11]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[12]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[13]; + + const double var_x0 = 0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x1 = pow(var_x0, (-2)); + const double var_x2 = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = 0.11777375567316183 * var_x3; + const double var_x5 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + const double var_x6 = 0.23554751134632365 * var_x5; + const double var_x7 = var_x2 / pow(var_x0, 3); + const double var_x8 = 1.3999999999999999 + 0.80000000000000004 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x9 = 1 / var_x8; + const double var_x10 = pow(var_x8, (-2)); + const double var_x11 = 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.32000000000000006 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up; + const double var_x12 = var_x10 * var_x11; + const double var_x13 = 0.00029999999999999997 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x14 = pow(var_x13, (-4)); + const double var_x15 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4); + const double var_x16 = var_x14 * var_x15; + const double var_x17 = 0.20380000000000001 * var_x16 + 0.23999999999999999 * exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V); + const double var_x18 = var_x15 / pow(var_x13, 5); + const double var_x19 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); + const double var_x20 = 0.001 * (-815.20000000000005 * var_x18 + 815.20000000000005 * var_x14 * var_x19) * var_chaste_interface__Ca_handling_by_the_SR__F1; + const double var_x21 = 0.033960000000000004 + 0.33960000000000001 * var_x16; + const double var_x22 = 0.001 * (-1358.4000000000001 * var_x18 + 1358.4000000000001 * var_x14 * var_x19) * var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x23 = mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; + const double var_x24 = 1 / var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x25 = 0.11002290841454433 * var_x24; + const double var_x26 = (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x27 = 0.0011002730933088092 * var_x26; + const double var_x28 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5); + const double var_x29 = 36.4828726939094 + var_x28; + const double var_x30 = 1 / var_x29; + const double var_x31 = 1 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x32 = 1 / var_x31; + const double var_x33 = 1 / (1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)); + const double var_x34 = var_x32 * var_x33; + const double var_x35 = var_x30 * var_x34; + const double var_x36 = var_x28 * var_x35; + const double var_x37 = mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; + const double var_x38 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); + const double var_x39 = 0.58999999999999997 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x40 = pow(var_x39, (-3)); + const double var_x41 = 1 / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x42 = log(var_x41 * var_chaste_interface__cleft_space_ion_concentrations__K_c); + const double var_x43 = exp(0.18895643383558949 + 0.052487898287663745 * var_chaste_interface__membrane__V - 1.393 * var_x42); + const double var_x44 = 1 + var_x43; + const double var_x45 = 1 / var_x44; + const double var_x46 = var_x45 * mParameters[6]; + const double var_x47 = var_x40 * var_x46; + const double var_x48 = var_x38 * var_x47; + const double var_x49 = -26.53945091048535 * var_x42 + var_chaste_interface__membrane__V; + const double var_x50 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3); + const double var_x51 = var_x46 * var_x50 / pow(var_x39, 4); + const double var_x52 = pow(var_x31, (-2)); + const double var_x53 = pow(var_x44, (-2)); + const double var_x54 = var_x23 * var_x41; + const double var_x55 = var_x37 * var_x41; + const double var_x56 = var_x41 * var_x50; + const double var_x57 = var_x47 * var_x56; + const double var_x58 = var_x40 * var_x43 * var_x49 * var_x53 * mParameters[6]; + const double var_x59 = var_x35 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 0.5); + const double var_x60 = pow(var_x29, (-2)); + const double var_x61 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x62 = 200 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x63 = 0.00088070109612833447 * var_x3; + const double var_x64 = 32 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x65 = 0.00020000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x66 = pow(mParameters[2], 3); + const double var_x67 = var_x66 * mParameters[9]; + const double var_x68 = var_x66 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x69 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]; + const double var_x70 = 1 + 0.00029999999999999997 * var_x68 + 0.00029999999999999997 * var_x69; + const double var_x71 = pow(var_x70, (-2)); + const double var_x72 = exp(0.016955889611951675 * var_chaste_interface__membrane__V); + const double var_x73 = exp(-0.02072386508127427 * var_chaste_interface__membrane__V); + const double var_x74 = var_x69 * var_x72 - var_x68 * var_x73; + const double var_x75 = var_x71 * var_x74; + const double var_x76 = var_x67 * var_x75; + const double var_x77 = 1 / var_x70; + const double var_x78 = var_x67 * var_x73 * var_x77; + const double var_x79 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x80 = var_x79 * mParameters[9] * mParameters[1]; + const double var_x81 = 0.021829942145742926 * var_x24; + const double var_x82 = 0.00021830815343428756 * var_x26; + const double var_x83 = 0.0049352811901134472 * var_x49; + const double var_x84 = var_x28 * var_x30 * var_x33 * var_x52 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x85 = 0.00025430516916416572 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x86 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x87 = var_x86 * mParameters[2]; + const double var_x88 = 1 * log(var_x87); + const double var_x89 = var_x87 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[5]; + const double var_x90 = 0.0096486999999999996 * var_x89; + const double var_x91 = var_x90 * exp(-9.9999999999999995e-8 - var_x88) / (-1 + exp(-9.9999999999999995e-8)); + const double var_x92 = 0.037679754693225945 * var_chaste_interface__membrane__V; + + + rJacobian[0][0] = 1.0 - (mDt * (-14.98 - var_x4 + 14.880000000000001 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse)); + rJacobian[0][1] = -(mDt * (0.099999999999999992)); + rJacobian[0][2] = 0.0; + rJacobian[0][3] = -(mDt * (var_x6 * var_x7 - var_x1 * var_x6 * var_chaste_interface__Ca_handling_by_the_SR__F2 * mParameters[0])); + rJacobian[0][4] = 0.0; + rJacobian[0][5] = -(mDt * (12.4 + 14.880000000000001 * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel)); + rJacobian[0][6] = 0.0; + rJacobian[0][7] = 0.0; + rJacobian[0][8] = 0.0; + rJacobian[0][9] = 0.0; + rJacobian[0][10] = 0.0; + rJacobian[0][11] = -(mDt * (var_x4)); + rJacobian[0][12] = 0.0; + rJacobian[0][13] = 0.0; + rJacobian[1][0] = -(mDt * (0.011085915847820609)); + rJacobian[1][1] = 1.0 - (mDt * (-0.011085915847820609 - 0.011698444302491135 * var_x9 - 0.029246110756227836 * var_x12)); + rJacobian[1][2] = 0.0; + rJacobian[1][3] = 0.0; + rJacobian[1][4] = 0.0; + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = 0.0; + rJacobian[1][8] = 0.0; + rJacobian[1][9] = 0.0; + rJacobian[1][10] = 0.0; + rJacobian[1][11] = -(mDt * (121.85879481761599 * var_x9 - 121.85879481761599 * var_x12)); + rJacobian[1][12] = 0.0; + rJacobian[1][13] = 0.0; + rJacobian[2][0] = 0.0; + rJacobian[2][1] = 0.0; + rJacobian[2][2] = 1.0 - (mDt * (-var_x17)); + rJacobian[2][3] = 0.0; + rJacobian[2][4] = -(mDt * (0.00081499999999999997)); + rJacobian[2][5] = 0.0; + rJacobian[2][6] = 0.0; + rJacobian[2][7] = 0.0; + rJacobian[2][8] = 0.0; + rJacobian[2][9] = 0.0; + rJacobian[2][10] = 0.0; + rJacobian[2][11] = -(mDt * (-var_x20)); + rJacobian[2][12] = 0.0; + rJacobian[2][13] = 0.0; + rJacobian[3][0] = 0.0; + rJacobian[3][1] = 0.0; + rJacobian[3][2] = -(mDt * (var_x17)); + rJacobian[3][3] = 1.0 - (mDt * (-var_x21)); + rJacobian[3][4] = 0.0; + rJacobian[3][5] = 0.0; + rJacobian[3][6] = 0.0; + rJacobian[3][7] = 0.0; + rJacobian[3][8] = 0.0; + rJacobian[3][9] = 0.0; + rJacobian[3][10] = 0.0; + rJacobian[3][11] = -(mDt * (var_x20 - var_x22)); + rJacobian[3][12] = 0.0; + rJacobian[3][13] = 0.0; + rJacobian[4][0] = 0.0; + rJacobian[4][1] = 0.0; + rJacobian[4][2] = 0.0; + rJacobian[4][3] = -(mDt * (var_x21)); + rJacobian[4][4] = 1.0 - (mDt * (-0.00081499999999999997)); + rJacobian[4][5] = 0.0; + rJacobian[4][6] = 0.0; + rJacobian[4][7] = 0.0; + rJacobian[4][8] = 0.0; + rJacobian[4][9] = 0.0; + rJacobian[4][10] = 0.0; + rJacobian[4][11] = -(mDt * (var_x22)); + rJacobian[4][12] = 0.0; + rJacobian[4][13] = 0.0; + rJacobian[5][0] = -(mDt * (0.47999999999999998 - 0.47999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse)); + rJacobian[5][1] = 0.0; + rJacobian[5][2] = 0.0; + rJacobian[5][3] = 0.0; + rJacobian[5][4] = 0.0; + rJacobian[5][5] = 1.0 - (mDt * (-0.40000000000000002 - 0.47999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[5][8] = 0.0; + rJacobian[5][9] = 0.0; + rJacobian[5][10] = 0.0; + rJacobian[5][11] = 0.0; + rJacobian[5][12] = 0.0; + rJacobian[5][13] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (-0.00085446536839159674 * var_x36 - 0.22004581682908866 * var_x48 - var_x23 * var_x25 - var_x24 * var_x27 - var_x25 * var_x37 - 0.024873817198171774 * var_x49 * var_x51 + 0.024873817198171774 * var_x38 * var_x40 * var_x45 * var_x49 * mParameters[6] + 0.00085446536839159674 * var_x28 * var_x30 * var_x33 * var_x52 * var_chaste_interface__cleft_space_ion_concentrations__K_c + 0.011549742452351092 * var_x38 * var_x40 * var_x43 * var_x49 * var_x53 * mParameters[6])); + rJacobian[6][7] = 0.0; + rJacobian[6][8] = 0.0; + rJacobian[6][9] = 0.0; + rJacobian[6][10] = 0.0; + rJacobian[6][11] = 0.0; + rJacobian[6][12] = -(mDt * (0.11002290841454433 * var_x54 + 0.11002290841454433 * var_x55 + 0.22004581682908866 * var_x57 + var_x27 * var_x41 - 0.011549742452351092 * var_x56 * var_x58)); + rJacobian[6][13] = -(mDt * (-0.0012816980525873951 * var_x59 * var_chaste_interface__cleft_space_ion_concentrations__K_c + 0.0012816980525873951 * var_x32 * var_x33 * var_x60 * var_x61 * var_chaste_interface__cleft_space_ion_concentrations__K_c)); + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = 0.0; + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (-0.47599999999999998 - var_x62)); + rJacobian[7][8] = 0.0; + rJacobian[7][9] = 0.0; + rJacobian[7][10] = 0.0; + rJacobian[7][11] = -(mDt * (200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_C)); + rJacobian[7][12] = 0.0; + rJacobian[7][13] = 0.0; + rJacobian[8][0] = 0.0; + rJacobian[8][1] = 0.0; + rJacobian[8][2] = 0.0; + rJacobian[8][3] = 0.0; + rJacobian[8][4] = 0.0; + rJacobian[8][5] = 0.0; + rJacobian[8][6] = 0.0; + rJacobian[8][7] = 0.0; + rJacobian[8][8] = 1.0 - (mDt * (-0.39200000000000002 - 78.400000000000006 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + rJacobian[8][9] = 0.0; + rJacobian[8][10] = 0.0; + rJacobian[8][11] = -(mDt * (78.400000000000006 - 78.400000000000006 * var_chaste_interface__intracellular_Ca_buffering__O_TC)); + rJacobian[8][12] = 0.0; + rJacobian[8][13] = 0.0; + rJacobian[9][0] = 0.0; + rJacobian[9][1] = 0.0; + rJacobian[9][2] = 0.0; + rJacobian[9][3] = 0.0; + rJacobian[9][4] = 0.0; + rJacobian[9][5] = 0.0; + rJacobian[9][6] = 0.0; + rJacobian[9][7] = 0.0; + rJacobian[9][8] = 0.0; + rJacobian[9][9] = 1.0 - (mDt * (-0.0066 - var_x62)); + rJacobian[9][10] = -(mDt * (-var_x62)); + rJacobian[9][11] = -(mDt * (200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg)); + rJacobian[9][12] = 0.0; + rJacobian[9][13] = 0.0; + rJacobian[10][0] = 0.0; + rJacobian[10][1] = 0.0; + rJacobian[10][2] = 0.0; + rJacobian[10][3] = 0.0; + rJacobian[10][4] = 0.0; + rJacobian[10][5] = 0.0; + rJacobian[10][6] = 0.0; + rJacobian[10][7] = 0.0; + rJacobian[10][8] = 0.0; + rJacobian[10][9] = -(mDt * (-5)); + rJacobian[10][10] = 1.0 - (mDt * (-5.6660000000000004)); + rJacobian[10][11] = 0.0; + rJacobian[10][12] = 0.0; + rJacobian[10][13] = 0.0; + rJacobian[11][0] = -(mDt * (var_x63)); + rJacobian[11][1] = -(mDt * (0.0019727704553274693 * var_x12 + 0.00078910818213098765 * var_x9)); + rJacobian[11][2] = 0.0; + rJacobian[11][3] = -(mDt * (-0.0017614021922566689 * var_x5 * var_x7 + 0.0017614021922566689 * var_x1 * var_x5 * var_chaste_interface__Ca_handling_by_the_SR__F2 * mParameters[0])); + rJacobian[11][4] = 0.0; + rJacobian[11][5] = 0.0; + rJacobian[11][6] = 0.0; + rJacobian[11][7] = -(mDt * (0.021419999999999998 + 9 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + rJacobian[11][8] = -(mDt * (0.031359999999999999 + 6.2720000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + rJacobian[11][9] = -(mDt * (0.0010559999999999999 + var_x64)); + rJacobian[11][10] = -(mDt * (var_x64)); + rJacobian[11][11] = 1.0 - (mDt * (-47.271999999999998 - var_x63 + 6.2720000000000002 * var_chaste_interface__intracellular_Ca_buffering__O_TC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg + 9 * var_chaste_interface__intracellular_Ca_buffering__O_C - 8.3745867230843319e-6 / var_x65 - 5.2842065767700058e-7 * var_x76 - 8.2198768971977874 * var_x9 - 0.0017614021922566689 * var_x78 - 2.3373323507508574e-7 / var_chaste_interface__intracellular_ion_concentrations__Ca_i + 8.3745867230843319e-6 * var_chaste_interface__intracellular_ion_concentrations__Ca_i / pow(var_x65, 2) + 8.2198768971977874 * var_x10 * var_x11)); + rJacobian[11][12] = 0.0; + rJacobian[11][13] = -(mDt * (-1.5852619730310017e-6 * var_x75 * var_x80 + 0.0052842065767700064 * var_x72 * var_x77 * var_x79 * mParameters[9] * mParameters[1])); + rJacobian[12][0] = 0.0; + rJacobian[12][1] = 0.0; + rJacobian[12][2] = 0.0; + rJacobian[12][3] = 0.0; + rJacobian[12][4] = 0.0; + rJacobian[12][5] = 0.0; + rJacobian[12][6] = -(mDt * (0.043659884291485852 * var_x48 + 0.00016953677944277714 * var_x36 - 0.00016953677944277714 * var_x84 + var_x23 * var_x81 + var_x24 * var_x82 + var_x37 * var_x81 + var_x51 * var_x83 - var_x48 * var_x83 - 0.0022916155659426776 * var_x38 * var_x58)); + rJacobian[12][7] = 0.0; + rJacobian[12][8] = 0.0; + rJacobian[12][9] = 0.0; + rJacobian[12][10] = 0.0; + rJacobian[12][11] = 0.0; + rJacobian[12][12] = 1.0 - (mDt * (-0.021829942145742926 * var_x54 - 0.021829942145742926 * var_x55 - 0.043659884291485852 * var_x57 - var_x41 * var_x82 + 0.0022916155659426776 * var_x40 * var_x41 * var_x43 * var_x49 * var_x50 * var_x53 * mParameters[6])); + rJacobian[12][13] = -(mDt * (var_x59 * var_x85 - var_x34 * var_x60 * var_x61 * var_x85)); + rJacobian[13][0] = 0.0; + rJacobian[13][1] = 0.0; + rJacobian[13][2] = 0.0; + rJacobian[13][3] = 0.0; + rJacobian[13][4] = 0.0; + rJacobian[13][5] = 0.0; + rJacobian[13][6] = -(mDt * (0.00025430516916416572 * var_x84 - 0.00025430516916416572 * var_x36)); + rJacobian[13][7] = 0.0; + rJacobian[13][8] = 0.0; + rJacobian[13][9] = 0.0; + rJacobian[13][10] = 0.0; + rJacobian[13][11] = -(mDt * (0.0024676405950567236 * var_x78 + 7.4029217851701709e-7 * var_x76)); + rJacobian[13][12] = 0.0; + rJacobian[13][13] = 1.0 - (mDt * (-4.3659884291485854e-7 * var_x86 - 0.00082254686501890791 * (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (-var_x91 + 188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (var_x91 + var_x90 * exp(9.9999999999999995e-8 - var_x88) / (-1 + exp(9.9999999999999995e-8)))) : (3635.606491085292 * var_x89 * var_chaste_interface__membrane__V * exp(var_x92 - var_x88) / (-1 + exp(var_x92)))) - 0.00038145775374624855 * var_x59 * var_chaste_interface__cleft_space_ion_concentrations__K_c - 0.0074029217851701709 * var_x72 * var_x77 * var_x80 + 0.00038145775374624855 * var_x32 * var_x33 * var_x60 * var_x61 * var_chaste_interface__cleft_space_ion_concentrations__K_c + 2.2208765355510512e-6 * var_x71 * var_x74 * var_x79 * mParameters[9] * mParameters[1])); + } + + void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[16]; + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[17]; + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = rY[22]; + // Units: millimolar; Initial value: 5.0 + + const double var_Ca_independent_transient_outward_K_current__g_to = 0.050001999999999998; // nanoS + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_T_type_Ca_channel__E_Ca_T = 38; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.0060000000000000001; // nanoS + const double var_background_currents__g_B_Ca = 3.1000000000000001e-5; // nanoS + const double var_background_currents__g_B_Na = 6.3999999999999997e-5; // nanoS + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__Cm_converted = 0.001 * mParameters[4]; // uF + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[9] / (1 + (pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = 1000000 * var_membrane__Cm_converted * var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA + const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA + const double var_sodium_potassium_pump__k_NaK_K = 1; // millimolar + const double var_sodium_potassium_pump__k_NaK_Na = 11; // millimolar + const double var_sodium_potassium_pump__i_p = 1.6000000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) + pow(var_sodium_potassium_pump__k_NaK_Na, 1.5)) * (var_chaste_interface__cleft_space_ion_concentrations__K_c + var_sodium_potassium_pump__k_NaK_K)); // picoA + const double var_membrane__V_orig_deriv = -1 * (var_Ca_independent_transient_outward_K_current__i_sus + var_Ca_independent_transient_outward_K_current__i_to + var_L_type_Ca_channel__i_Ca_L + var_Na_Ca_ion_exchanger_current__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_background_currents__i_B_Ca + var_background_currents__i_B_Na + var_delayed_rectifier_K_current__i_Kr + var_delayed_rectifier_K_current__i_Ks + var_inward_rectifier__i_K1 + var_membrane__i_Stim + var_sarcolemmal_calcium_pump_current__i_CaP + var_sodium_current__i_Na + var_sodium_potassium_pump__i_p) / mParameters[4]; // millivolt / second + const double d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; + } + + void Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = rY[9]; + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = rY[10]; + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = rY[11]; + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = rY[12]; + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + + const double var_Ca_independent_transient_outward_K_current_r_gate__alpha_r = 386.60000000000002 * exp(0.083333333333333329 * var_chaste_interface__membrane__V); + const double var_Ca_independent_transient_outward_K_current_r_gate__beta_r = 8.0109999999999992 * exp(-0.1388888888888889 * var_chaste_interface__membrane__V); + const double var_Ca_independent_transient_outward_K_current_r_gate__r_infinity = 1 / (1 + exp(-2.6628794603230959 - 0.17752529735487307 * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_r_gate__tau_r = 0.00040000000000000002 + 1 / (var_Ca_independent_transient_outward_K_current_r_gate__alpha_r + var_Ca_independent_transient_outward_K_current_r_gate__beta_r); + const double var_Ca_independent_transient_outward_K_current_s1_gate__s1_infinity = 1 / (1 + exp(4.0070821529745047 + 0.14164305949008499 * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1 = 0.020400000000000001 + 0.54659999999999997 / (1 + exp(327.99999999999994 + 10 * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s2_gate__s2_infinity = 1 / (1 + exp(4.0070821529745047 + 0.14164305949008499 * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2 = 5.75 / (1 + exp(327.99999999999994 + 10 * var_chaste_interface__membrane__V)) + 0.45000000000000001 / (1 + exp(0.96921975662133131 - 0.071581961345740866 * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s3_gate__s3_infinity = 0.39975990396158467 + 0.60024009603841544 / (1 + exp(1.8506208911614319 + 0.036523009495982472 * var_chaste_interface__membrane__V)); + const double var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3 = 0.5 + 7.5 / (1 + exp(46 + 2 * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_d_L_gate__E10 = 10 + var_chaste_interface__membrane__V; + const double var_L_type_Ca_channel_d_L_gate__alpha_d_L = (((var_chaste_interface__membrane__V >= -10.000000480800001) && (var_chaste_interface__membrane__V <= -9.9999995191999993)) ? (2.4040000000391526e-5 / (-1 + exp(1.0000000000162864e-7)) + 1039933.4442576389 * (10.000000480800001 + var_chaste_interface__membrane__V) * (-2.4040000000391526e-5 / (-1 + exp(1.0000000000162864e-7)) - 2.4039999999697637e-5 / (-1 + exp(-9.9999999998742257e-8)))) : (-50 * (10 + var_chaste_interface__membrane__V) / (-1 + exp(-2.0798668885191347 - 0.20798668885191349 * var_chaste_interface__membrane__V)))) + (((var_chaste_interface__membrane__V >= -45.000000249999999) && (var_chaste_interface__membrane__V <= -44.999999750000001)) ? (4.1799999996561256e-6 / (-1 + exp(9.9999999991773334e-8)) + 1999999.9999424887 * (45.000000249999999 + var_chaste_interface__membrane__V) * (-4.1800000005842713e-6 / (-1 + exp(-1.000000000139778e-7)) - 4.1799999996561256e-6 / (-1 + exp(9.9999999991773334e-8)))) : (-16.719999999999999 * (45 + var_chaste_interface__membrane__V) / (-1 + exp(-18 - 0.40000000000000002 * var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_d_L_gate__beta_d_L = (((var_chaste_interface__membrane__V >= -5.0000002500000003) && (var_chaste_interface__membrane__V <= -4.9999997499999997)) ? (-1.1200000000011203e-6 / (-1 + exp(-1.0000000000010001e-7)) + 1999999.9999979998 * (5.0000002500000003 + var_chaste_interface__membrane__V) * (1.1200000000011203e-6 / (-1 + exp(1.0000000000010001e-7)) + 1.1200000000011203e-6 / (-1 + exp(-1.0000000000010001e-7)))) : (4.4800000000000004 * (5 + var_chaste_interface__membrane__V) / (-1 + exp(2 + 0.40000000000000002 * var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_d_L_gate__d_L_infinity = 1 / (1 + exp(-0.14393939393939395 - 0.15151515151515152 * var_L_type_Ca_channel_d_L_gate__E10)); + const double var_L_type_Ca_channel_d_L_gate__tau_d_L = 1 / (var_L_type_Ca_channel_d_L_gate__alpha_d_L + var_L_type_Ca_channel_d_L_gate__beta_d_L); + const double var_L_type_Ca_channel_f_L_gate__E0_f_L = 18 + var_chaste_interface__membrane__V; + const double var_L_type_Ca_channel_f_L_gate__alpha_f_L = (((var_chaste_interface__membrane__V >= -18.000000400000001) && (var_chaste_interface__membrane__V <= -17.999999599999999)) ? (-3.3960000000976542e-6 / (-1 + exp(-1.0000000000287557e-7)) + 1249999.9999640554 * (18.000000400000001 + var_chaste_interface__membrane__V) * (3.3960000000976542e-6 / (-1 + exp(1.0000000000287557e-7)) + 3.3960000000976542e-6 / (-1 + exp(-1.0000000000287557e-7)))) : (8.4900000000000002 * (18 + var_chaste_interface__membrane__V) / (-1 + exp(4.5 + 0.25 * var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_f_L_gate__beta_f_L = 67.921999999999997 / (1 + exp(-0.25 * var_L_type_Ca_channel_f_L_gate__E0_f_L)); + const double var_L_type_Ca_channel_f_L_gate__f_L_infinity = var_L_type_Ca_channel_f_L_gate__alpha_f_L / (var_L_type_Ca_channel_f_L_gate__alpha_f_L + var_L_type_Ca_channel_f_L_gate__beta_f_L); + const double var_L_type_Ca_channel_f_L_gate__tau_f_L = 1 / (var_L_type_Ca_channel_f_L_gate__alpha_f_L + var_L_type_Ca_channel_f_L_gate__beta_f_L); + const double var_T_type_Ca_channel_d_T_gate__E0_d_T = 23.300000000000001 + var_chaste_interface__membrane__V; + const double var_T_type_Ca_channel_d_T_gate__alpha_d_T = 674.173 * exp(0.033333333333333333 * var_T_type_Ca_channel_d_T_gate__E0_d_T); + const double var_T_type_Ca_channel_d_T_gate__beta_d_T = 674.173 * exp(-0.033333333333333333 * var_T_type_Ca_channel_d_T_gate__E0_d_T); + const double var_T_type_Ca_channel_d_T_gate__d_T_infinity = 1 / (1 + exp(0.049180327868852458 - 0.16393442622950821 * var_T_type_Ca_channel_d_T_gate__E0_d_T)); + const double var_T_type_Ca_channel_d_T_gate__tau_d_T = 1 / (var_T_type_Ca_channel_d_T_gate__alpha_d_T + var_T_type_Ca_channel_d_T_gate__beta_d_T); + const double var_T_type_Ca_channel_f_T_gate__E0_f_T = 75 + var_chaste_interface__membrane__V; + const double var_T_type_Ca_channel_f_T_gate__alpha_f_T = 9.6370000000000005 * exp(-0.012004801920768308 * var_T_type_Ca_channel_f_T_gate__E0_f_T); + const double var_T_type_Ca_channel_f_T_gate__beta_f_T = 9.6370000000000005 * exp(0.065019505851755519 * var_T_type_Ca_channel_f_T_gate__E0_f_T); + const double var_T_type_Ca_channel_f_T_gate__f_T_infinity = var_T_type_Ca_channel_f_T_gate__alpha_f_T / (var_T_type_Ca_channel_f_T_gate__alpha_f_T + var_T_type_Ca_channel_f_T_gate__beta_f_T); + const double var_T_type_Ca_channel_f_T_gate__tau_f_T = 1 / (var_T_type_Ca_channel_f_T_gate__alpha_f_T + var_T_type_Ca_channel_f_T_gate__beta_f_T); + const double var_delayed_rectifier_K_current_pa_gate__alpha_p_a = 9 * exp(0.03941508020968823 * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_pa_gate__beta_p_a = 1.3 * exp(-0.076769537847382163 * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_pa_gate__p_a_infinity = 1 / (1 + exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V)); + const double var_delayed_rectifier_K_current_pa_gate__tau_p_a = 1 / (var_delayed_rectifier_K_current_pa_gate__alpha_p_a + var_delayed_rectifier_K_current_pa_gate__beta_p_a); + const double var_delayed_rectifier_K_current_pi_gate__alpha_p_i = 100 * exp(-0.018299935950224173 * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_pi_gate__beta_p_i = 656 * exp(0.009420009985210585 * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_pi_gate__p_i_infinity = 1 / (1 + exp(2.539728728905752 + 0.05358970648917756 * var_chaste_interface__membrane__V)); + const double var_delayed_rectifier_K_current_pi_gate__tau_p_i = 1 / (var_delayed_rectifier_K_current_pi_gate__alpha_p_i + var_delayed_rectifier_K_current_pi_gate__beta_p_i); + const double var_delayed_rectifier_K_current_z_gate__alpha_z = 1.6599999999999999 * exp(0.014398433450440593 * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_z_gate__beta_z = 0.29999999999999999 * exp(-0.045816915605241454 * var_chaste_interface__membrane__V); + const double var_delayed_rectifier_K_current_z_gate__tau_z = 0.059999999999999998 + 1 / (var_delayed_rectifier_K_current_z_gate__alpha_z + var_delayed_rectifier_K_current_z_gate__beta_z); + const double var_delayed_rectifier_K_current_z_gate__z_infinity = 1 / (1 + exp(0.065217391304347824 - 0.072463768115942032 * var_chaste_interface__membrane__V)); + const double var_sodium_current_h1_gate__alpha_h = 44.899999999999999 * exp(-12.010771992818672 - 0.17953321364452424 * var_chaste_interface__membrane__V); + const double var_sodium_current_h1_gate__beta_h = 1491 / (1 + 323.30000000000001 * exp(-7.333333333333333 - 0.077519379844961239 * var_chaste_interface__membrane__V)); + const double var_sodium_current_h1_gate__h_infinity = var_sodium_current_h1_gate__alpha_h / (var_sodium_current_h1_gate__alpha_h + var_sodium_current_h1_gate__beta_h); + const double var_sodium_current_h1_gate__tau_h1 = 0.00014999999999999999 + 0.029999999999999999 / (1 + exp(6.666666666666667 + 0.16666666666666666 * var_chaste_interface__membrane__V)); + const double var_sodium_current_h2_gate__tau_h2 = 0.00044999999999999999 + 0.12 / (1 + exp(30 + 0.5 * var_chaste_interface__membrane__V)); + const double var_sodium_current_m_gate__E0_m = 44.399999999999999 + var_chaste_interface__membrane__V; + const double var_sodium_current_m_gate__alpha_m = (((var_chaste_interface__membrane__V >= -44.400001267299999) && (var_chaste_interface__membrane__V <= -44.399998732699999)) ? (0.00058295799999830145 / (-1 + exp(9.9999999999708629e-8)) + 394539.57232025318 * (44.400001267299999 + var_chaste_interface__membrane__V) * (-0.00058295799999830145 / (-1 + exp(9.9999999999708629e-8)) - 0.00058295799999830145 / (-1 + exp(-9.9999999999708629e-8)))) : (-460 * (44.399999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-3.5035114021936398 - 0.078907914463820727 * var_chaste_interface__membrane__V)))); + const double var_sodium_current_m_gate__beta_m = 18400 * exp(-0.078907914463820727 * var_sodium_current_m_gate__E0_m); + + + rY[9] = (var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + ((0.001 * var_Ca_independent_transient_outward_K_current_r_gate__r_infinity / var_Ca_independent_transient_outward_K_current_r_gate__tau_r) * mDt)) / (1.0 - ((-0.001 / var_Ca_independent_transient_outward_K_current_r_gate__tau_r) * mDt)); + rY[10] = (var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 + ((0.001 * var_Ca_independent_transient_outward_K_current_s1_gate__s1_infinity / var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1) * mDt)) / (1.0 - ((-0.001 / var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1) * mDt)); + rY[11] = (var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 + ((0.001 * var_Ca_independent_transient_outward_K_current_s2_gate__s2_infinity / var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2) * mDt)) / (1.0 - ((-0.001 / var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2) * mDt)); + rY[12] = (var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 + ((0.001 * var_Ca_independent_transient_outward_K_current_s3_gate__s3_infinity / var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3) * mDt)) / (1.0 - ((-0.001 / var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3) * mDt)); + rY[5] = (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L + ((0.001 * var_L_type_Ca_channel_d_L_gate__d_L_infinity / var_L_type_Ca_channel_d_L_gate__tau_d_L) * mDt)) / (1.0 - ((-0.001 / var_L_type_Ca_channel_d_L_gate__tau_d_L) * mDt)); + rY[6] = (var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + ((0.001 * var_L_type_Ca_channel_f_L_gate__f_L_infinity / var_L_type_Ca_channel_f_L_gate__tau_f_L) * mDt)) / (1.0 - ((-0.001 / var_L_type_Ca_channel_f_L_gate__tau_f_L) * mDt)); + rY[7] = (var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T + ((0.001 * var_T_type_Ca_channel_d_T_gate__d_T_infinity / var_T_type_Ca_channel_d_T_gate__tau_d_T) * mDt)) / (1.0 - ((-0.001 / var_T_type_Ca_channel_d_T_gate__tau_d_T) * mDt)); + rY[8] = (var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T + ((0.001 * var_T_type_Ca_channel_f_T_gate__f_T_infinity / var_T_type_Ca_channel_f_T_gate__tau_f_T) * mDt)) / (1.0 - ((-0.001 / var_T_type_Ca_channel_f_T_gate__tau_f_T) * mDt)); + rY[14] = (var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a + ((0.001 * var_delayed_rectifier_K_current_pa_gate__p_a_infinity / var_delayed_rectifier_K_current_pa_gate__tau_p_a) * mDt)) / (1.0 - ((-0.001 / var_delayed_rectifier_K_current_pa_gate__tau_p_a) * mDt)); + rY[15] = (var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i + ((0.001 * var_delayed_rectifier_K_current_pi_gate__p_i_infinity / var_delayed_rectifier_K_current_pi_gate__tau_p_i) * mDt)) / (1.0 - ((-0.001 / var_delayed_rectifier_K_current_pi_gate__tau_p_i) * mDt)); + rY[13] = (var_chaste_interface__delayed_rectifier_K_current_z_gate__z + ((0.001 * var_delayed_rectifier_K_current_z_gate__z_infinity / var_delayed_rectifier_K_current_z_gate__tau_z) * mDt)) / (1.0 - ((-0.001 / var_delayed_rectifier_K_current_z_gate__tau_z) * mDt)); + rY[3] = (var_chaste_interface__sodium_current_h1_gate__h1 + ((0.001 * var_sodium_current_h1_gate__h_infinity / var_sodium_current_h1_gate__tau_h1) * mDt)) / (1.0 - ((-0.001 / var_sodium_current_h1_gate__tau_h1) * mDt)); + rY[4] = (var_chaste_interface__sodium_current_h2_gate__h2 + ((0.001 * var_sodium_current_h1_gate__h_infinity / var_sodium_current_h2_gate__tau_h2) * mDt)) / (1.0 - ((-0.001 / var_sodium_current_h2_gate__tau_h2) * mDt)); + rY[2] = (var_chaste_interface__sodium_current_m_gate__m + ((0.001 * var_sodium_current_m_gate__alpha_m) * mDt)) / (1.0 - ((-0.001 * var_sodium_current_m_gate__alpha_m - 0.001 * var_sodium_current_m_gate__beta_m) * mDt)); + + double _guess[14] = {rY[23],rY[24],rY[26],rY[27],rY[28],rY[25],rY[22],rY[18],rY[19],rY[20],rY[21],rY[1],rY[17],rY[16]}; + CardiacNewtonSolver<14,Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<14,Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time_converted, _guess); + rY[23] = _guess[0]; + rY[24] = _guess[1]; + rY[26] = _guess[2]; + rY[27] = _guess[3]; + rY[28] = _guess[4]; + rY[25] = _guess[5]; + rY[22] = _guess[6]; + rY[18] = _guess[7]; + rY[19] = _guess[8]; + rY[20] = _guess[9]; + rY[21] = _guess[10]; + rY[1] = _guess[11]; + rY[17] = _guess[12]; + rY[16] = _guess[13]; + } + + std::vector Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = rY[13]; + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = rY[14]; + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = rY[15]; + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[16]; + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[17]; + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = rY[22]; + // Units: millimolar; Initial value: 5.0 + double var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = rY[23]; + // Units: millimolar; Initial value: 0.726776 + double var_chaste_interface__Ca_handling_by_the_SR__F2 = rY[27]; + // Units: dimensionless; Initial value: 0.002262 + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_Ca_handling_by_the_SR__i_rel = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel) * mParameters[0] / pow((0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2), 2); // picoA + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__Cm_converted = 0.001 * mParameters[4]; // uF + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * mParameters[3]))); // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1] * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[9] / (1 + (pow(mParameters[2], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[1]) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_Na_Ca_ion_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_ion_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * mParameters[5] / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(mParameters[2] / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * mParameters[2] * var_chaste_interface__membrane__V * mParameters[5] / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + + std::vector dqs(10); + dqs[0] = var_Ca_handling_by_the_SR__i_rel; + dqs[1] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[2] = var_membrane__Cm_converted; + dqs[3] = var_sodium_current__i_Na_converted; + dqs[4] = var_inward_rectifier__i_K1_converted; + dqs[5] = var_delayed_rectifier_K_current__i_Kr_converted; + dqs[6] = var_delayed_rectifier_K_current__i_Ks_converted; + dqs[7] = var_Na_Ca_ion_exchanger_current__i_NaCa_converted; + dqs[8] = var_membrane__i_Stim_converted; + dqs[9] = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "aslanidi_atrial_model_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-80.0); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(7.1e-05); + + // rY[2]: + this->mVariableNames.push_back("sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01309); + + // rY[3]: + this->mVariableNames.push_back("sodium_current_h1_gate__h1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.706); + + // rY[4]: + this->mVariableNames.push_back("sodium_current_h2_gate__h2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.61493); + + // rY[5]: + this->mVariableNames.push_back("L_type_Ca_channel_d_L_gate__d_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3e-05); + + // rY[6]: + this->mVariableNames.push_back("L_type_Ca_channel_f_L_gate__f_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99981); + + // rY[7]: + this->mVariableNames.push_back("T_type_Ca_channel_d_T_gate__d_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00046); + + // rY[8]: + this->mVariableNames.push_back("T_type_Ca_channel_f_T_gate__f_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.30752); + + // rY[9]: + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_r_gate__r"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6e-05); + + // rY[10]: + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_s1_gate__s1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.5753); + + // rY[11]: + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_s2_gate__s2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.39871); + + // rY[12]: + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_s3_gate__s3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.57363); + + // rY[13]: + this->mVariableNames.push_back("delayed_rectifier_K_current_z_gate__z"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.02032); + + // rY[14]: + this->mVariableNames.push_back("delayed_rectifier_K_current_pa_gate__p_a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00016); + + // rY[15]: + this->mVariableNames.push_back("delayed_rectifier_K_current_pi_gate__p_i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.76898); + + // rY[16]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.4); + + // rY[17]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(100.0); + + // rY[18]: + this->mVariableNames.push_back("intracellular_Ca_buffering__O_C"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.029108); + + // rY[19]: + this->mVariableNames.push_back("intracellular_Ca_buffering__O_TC"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.014071); + + // rY[20]: + this->mVariableNames.push_back("intracellular_Ca_buffering__O_TMgC"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.214036); + + // rY[21]: + this->mVariableNames.push_back("intracellular_Ca_buffering__O_TMgMg"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.693565); + + // rY[22]: + this->mVariableNames.push_back("extracellular_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(5.0); + + // rY[23]: + this->mVariableNames.push_back("Ca_handling_by_the_SR__Ca_rel"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.726776); + + // rY[24]: + this->mVariableNames.push_back("Ca_handling_by_the_SR__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.730866); + + // rY[25]: + this->mVariableNames.push_back("Ca_handling_by_the_SR__O_Calse"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.465921); + + // rY[26]: + this->mVariableNames.push_back("Ca_handling_by_the_SR__F1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.288039); + + // rY[27]: + this->mVariableNames.push_back("Ca_handling_by_the_SR__F2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002262); + + // rY[28]: + this->mVariableNames.push_back("Ca_handling_by_the_SR__F3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.612697); + + // mParameters[0]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[1]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane__Cm"); + this->mParameterUnits.push_back("nanoF"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("nanolitre_per_second"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar_4"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("picoA"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellaslanidi_atrial_model_2009FromCellMLBackwardEuler) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_11.cpp similarity index 89% rename from chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_11.cpp index bc65e404..c91b597a 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_11.cpp @@ -502,120 +502,114 @@ const double var_x17 = 0.00040000000000000002 * var_x0; const double var_x18 = 0.0001 * var_x0; const double var_x19 = 0.20000000000000001 * var_x0; - const double var_x20 = var_x9 * var_chaste_interface__L_type_calcium_current__C4; - const double var_x21 = var_x11 * var_x20; - const double var_x22 = var_chaste_interface__calcium_concentration__Cass / pow((1 + 0.050000000000000003 * var_chaste_interface__calcium_concentration__Cass), 2); - const double var_x23 = 0.00058310000000000002 * var_x22; - const double var_x24 = var_x20 * var_x23; - const double var_x25 = var_x15 * var_chaste_interface__L_type_calcium_current__C4; - const double var_x26 = 2.3324000000000003e-6 * var_x2 * var_x22 * var_chaste_interface__L_type_calcium_current__C4; - const double var_x27 = 0.013000000000000001 * var_x7; - const double var_x28 = 0.00040000000000000002 * var_x2; - const double var_x29 = var_x11 * var_chaste_interface__L_type_calcium_current__O; - const double var_x30 = var_x23 * var_chaste_interface__L_type_calcium_current__O; - const double var_x31 = -var_x12; - const double var_x32 = -var_x28; - const double var_x33 = 0.013000000000000001 - var_x27; - const double var_x34 = var_x11 * var_chaste_interface__L_type_calcium_current__I2; - const double var_x35 = var_x23 * var_chaste_interface__L_type_calcium_current__I2; - const double var_x36 = 2.3700000000000001 * var_chaste_interface__calcium_concentration__Cai_converted; - const double var_x37 = 2.3700000000000001 * var_chaste_interface__calcium_buffering__HTRPN_Ca; - const double var_x38 = 32.699999999999996 * var_chaste_interface__calcium_concentration__Cai_converted; - const double var_x39 = 32.699999999999996 * var_chaste_interface__calcium_buffering__LTRPN_Ca; - const double var_x40 = 1 + 0.00125 * var_chaste_interface__calcium_concentration__CaJSR; - const double var_x41 = pow(var_x40, (-2)); - const double var_x42 = 1 / (1 + 18.75 * var_x41); - const double var_x43 = -var_chaste_interface__ryanodine_receptors__P_O1 - var_chaste_interface__ryanodine_receptors__P_O2; - const double var_x44 = var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; - const double var_x45 = var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2; - const double var_x46 = var_x44 * var_x45; - const double var_x47 = var_x46 * (-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR); - const double var_x48 = var_x42 * (-var_chaste_interface__calcium_concentration__CaJSR + var_chaste_interface__calcium_concentration__Cass); - const double var_x49 = var_x45 * mParameters[1]; - const double var_x50 = var_x44 * var_x48; - const double var_x51 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); - const double var_x52 = 1000000 * var_x51; - const double var_x53 = 1 / (0.25 + var_x52); - const double var_x54 = var_x53 * var_chaste_interface__calcium_concentration__Cai_converted; - const double var_x55 = var_x54 * mParameters[2]; - const double var_x56 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 3) / pow((2.4999999999999999e-7 + var_x51), 2); - const double var_x57 = var_x56 * mParameters[2]; - const double var_x58 = 0.00023799999999999998 + var_chaste_interface__calcium_concentration__Cai_converted; - const double var_x59 = 1 + 1.19e-5 / pow(var_x58, 2); - const double var_x60 = 1 / var_x59; - const double var_x61 = 0.001 * var_x60; - const double var_x62 = 1 / var_chaste_interface__calcium_concentration__Cai_converted; - const double var_x63 = exp(-0.025317124991725771 * var_chaste_interface__membrane__V); - const double var_x64 = pow(mParameters[6], 3); - const double var_x65 = var_x63 * var_x64; - const double var_x66 = mParameters[15] / ((1 + 0.10000000000000001 * var_x63) * (1380 + mParameters[4]) * (669921875000000.0 + var_x64)); - const double var_x67 = var_x65 * var_x66; - const double var_x68 = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; - const double var_x69 = var_x52 * var_x53; - const double var_x70 = mParameters[4] * exp(0.013632298072467722 * var_chaste_interface__membrane__V); - const double var_x71 = var_x66 * var_x70 * pow(var_chaste_interface__sodium_concentration__Nai, 2); - const double var_x72 = 0.23799999999999999 + var_chaste_interface__calcium_concentration__Cass; - const double var_x73 = pow(var_x72, (-2)); - const double var_x74 = 1 / (1 + 11.899999999999999 * var_x73); - const double var_x75 = mParameters[7] * mParameters[8]; - const double var_x76 = 80.808080808080803 * var_chaste_interface__ryanodine_receptors__P_O1; - const double var_x77 = 80.808080808080803 * var_chaste_interface__ryanodine_receptors__P_O2; - const double var_x78 = var_x44 * var_x74; - const double var_x79 = 80.808080808080803 * var_chaste_interface__calcium_concentration__CaJSR - 80.808080808080803 * var_chaste_interface__calcium_concentration__Cass; - const double var_x80 = var_x78 * var_x79; - const double var_x81 = -0.04926108374384236 * var_chaste_interface__membrane__V; - const double var_x82 = 0.20000000000000001 * exp(0.12315270935960591 + var_x81); - const double var_x83 = -var_x82; - const double var_x84 = exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__membrane__V); - const double var_x85 = 1 / (0.25 * var_x84 + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__membrane__V)); - const double var_x86 = 3.802 * var_x85; - const double var_x87 = 2.0000000000000002e-5 * var_chaste_interface__membrane__V; - const double var_x88 = -0.008539999999999999 - var_x87; - const double var_x89 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__membrane__V) + 0.23000000000000001 * var_x84); - const double var_x90 = exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__membrane__V); - const double var_x91 = 6.9999999999999997e-7 * var_x90; - const double var_x92 = exp(0.36945812807881773 + var_x81); - const double var_x93 = 0.22 * var_x92; - const double var_x94 = 3.802 / (0.20000000000000001 * var_x84 + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__membrane__V)); - const double var_x95 = -var_x94; - const double var_x96 = 0.19170000000000001 * exp(-0.12315270935960591 + var_x81); - const double var_x97 = -var_x89 - var_x96; - const double var_x98 = var_x88 + var_x95; - const double var_x99 = -var_x91; - const double var_x100 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 + 0.060240963855421679 * mParameters[10] - 0.060240963855421679 * var_chaste_interface__membrane__V)); - const double var_x101 = 1.0526315789473684e-5 * var_x100; - const double var_x102 = 1.4e-8 * var_x90; - const double var_x103 = 0.001 * var_x100; - const double var_x104 = 0.008539999999999999 + var_x87; - const double var_x105 = 1.2097272727272726e-5 * var_x100 * var_x85 * var_x90 / (var_x104 * var_x92); - const double var_x106 = var_x100; - const double var_x107 = 1 / var_chaste_interface__potassium_concentration__Ki; - const double var_x108 = var_x107 * mParameters[5]; - const double var_x109 = log(var_x108); - const double var_x110 = -25.674321243523316 * var_x109 + var_chaste_interface__membrane__V; - const double var_x111 = var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12]; - const double var_x112 = mParameters[8] * mParameters[3]; - const double var_x113 = 0.061518471582797281 * var_x112; - const double var_x114 = 1 / (var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai); - const double var_x115 = var_x114 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; - const double var_x116 = 1.5794450018272976 * var_x107; - const double var_x117 = exp(0.089599999999999999 * var_chaste_interface__membrane__V - 2.300419183419689 * var_x109); - const double var_x118 = 1 + var_x117; - const double var_x119 = var_x108 * mParameters[11] / (210 + mParameters[5]); - const double var_x120 = 1 / var_chaste_interface__sodium_concentration__Nai; - const double var_x121 = pow(var_x120, 1.5); - const double var_x122 = var_x120 * var_x121 * mParameters[5] / ((1500 + mParameters[5]) * pow((3.2860264730588296e-7 + var_x121), 2) * (1 + 0.1245 * exp(-0.0038949423064193493 * var_chaste_interface__membrane__V) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * exp(-0.038949423064193495 * var_chaste_interface__membrane__V))); - const double var_x123 = -0.022348 * exp(0.01176 * var_chaste_interface__membrane__V); - const double var_x124 = 0.013733 * exp(0.038198000000000003 * var_chaste_interface__membrane__V); - const double var_x125 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__membrane__V); - const double var_x126 = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__membrane__V); - const double var_x127 = 0.090820999999999999 * exp(0.11695499999999999 + 0.023390999999999999 * var_chaste_interface__membrane__V); - const double var_x128 = pow(var_chaste_interface__calcium_concentration__Cass, 3); - const double var_x129 = 0.012149999999999999 * pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; - const double var_x130 = -0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4); - const double var_x131 = 0.0040499999999999998 * var_x128; - const double var_x132 = 1 / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki); - const double var_x133 = var_x132 * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; + const double var_x20 = var_chaste_interface__calcium_concentration__Cass / pow((1 + 0.050000000000000003 * var_chaste_interface__calcium_concentration__Cass), 2); + const double var_x21 = -var_x15 * var_chaste_interface__L_type_calcium_current__C4 + 2.3324000000000003e-6 * var_x2 * var_x20 * var_chaste_interface__L_type_calcium_current__C4; + const double var_x22 = var_x9 * var_chaste_interface__L_type_calcium_current__C4; + const double var_x23 = 0.00058310000000000002 * var_x20; + const double var_x24 = var_x22 * var_x23 - var_x11 * var_x22; + const double var_x25 = 0.013000000000000001 * var_x7; + const double var_x26 = -var_x25; + const double var_x27 = 0.00040000000000000002 * var_x2; + const double var_x28 = var_x23 * var_chaste_interface__L_type_calcium_current__O - var_x11 * var_chaste_interface__L_type_calcium_current__O; + const double var_x29 = 0.013000000000000001 - var_x25; + const double var_x30 = var_x23 * var_chaste_interface__L_type_calcium_current__I2 - var_x11 * var_chaste_interface__L_type_calcium_current__I2; + const double var_x31 = 2.3700000000000001 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x32 = 3.1999999999999999e-5 + var_x31; + const double var_x33 = 2.3700000000000001 * var_chaste_interface__calcium_buffering__HTRPN_Ca; + const double var_x34 = 32.699999999999996 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x35 = 0.019599999999999999 + var_x34; + const double var_x36 = 32.699999999999996 * var_chaste_interface__calcium_buffering__LTRPN_Ca; + const double var_x37 = 1 + 0.00125 * var_chaste_interface__calcium_concentration__CaJSR; + const double var_x38 = pow(var_x37, (-2)); + const double var_x39 = 1 / (1 + 18.75 * var_x38); + const double var_x40 = var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2; + const double var_x41 = var_x40 * mParameters[1]; + const double var_x42 = var_x41 * var_chaste_interface__calcium_fluxes__P_RyR; + const double var_x43 = -var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR; + const double var_x44 = var_x39 * var_x43; + const double var_x45 = var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; + const double var_x46 = -var_x44 * var_x45; + const double var_x47 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); + const double var_x48 = 1000000 * var_x47; + const double var_x49 = 1 / (0.25 + var_x48); + const double var_x50 = var_x49 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x51 = pow((2.4999999999999999e-7 + var_x47), (-2)); + const double var_x52 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 3); + const double var_x53 = var_x51 * var_x52; + const double var_x54 = 0.00023799999999999998 + var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x55 = 1 + 1.19e-5 / pow(var_x54, 2); + const double var_x56 = 1 / var_x55; + const double var_x57 = 0.001 * var_x56; + const double var_x58 = 1 / var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x59 = 2000000 * var_x50; + const double var_x60 = exp(-0.025317124991725771 * var_chaste_interface__membrane__V); + const double var_x61 = pow(mParameters[6], 3); + const double var_x62 = var_x60 * var_x61; + const double var_x63 = mParameters[15] / ((1 + 0.10000000000000001 * var_x60) * (1380 + mParameters[4]) * (669921875000000.0 + var_x61)); + const double var_x64 = var_x62 * var_x63; + const double var_x65 = 0.03075923579139864 * mParameters[8]; + const double var_x66 = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x67 = var_x48 * var_x49; + const double var_x68 = exp(0.013632298072467722 * var_chaste_interface__membrane__V); + const double var_x69 = var_x63 * var_x68 * pow(var_chaste_interface__sodium_concentration__Nai, 2) * mParameters[4]; + const double var_x70 = 0.23799999999999999 + var_chaste_interface__calcium_concentration__Cass; + const double var_x71 = pow(var_x70, (-2)); + const double var_x72 = 1 / (1 + 11.899999999999999 * var_x71); + const double var_x73 = (-63 + var_chaste_interface__membrane__V) * mParameters[7]; + const double var_x74 = 535.23141606043157 * var_x73 * mParameters[8]; + const double var_x75 = 80.808080808080803 * var_x42; + const double var_x76 = 80.808080808080803 * var_x43 * var_x72; + const double var_x77 = var_x45 * var_x76; + const double var_x78 = 0.04926108374384236 * var_chaste_interface__membrane__V; + const double var_x79 = 0.20000000000000001 * exp(0.12315270935960591 - var_x78); + const double var_x80 = exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__membrane__V); + const double var_x81 = 1 / (0.25 * var_x80 + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__membrane__V)); + const double var_x82 = 3.802 * var_x81; + const double var_x83 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__membrane__V; + const double var_x84 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__membrane__V) + 0.23000000000000001 * var_x80); + const double var_x85 = exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__membrane__V); + const double var_x86 = 6.9999999999999997e-7 * var_x85; + const double var_x87 = exp(0.36945812807881773 - var_x78); + const double var_x88 = 0.22 * var_x87; + const double var_x89 = 3.802 / (0.20000000000000001 * var_x80 + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_x90 = -var_x89; + const double var_x91 = 0.19170000000000001 * exp(-0.12315270935960591 - var_x78); + const double var_x92 = var_x84 + var_x91; + const double var_x93 = var_x83 + var_x89; + const double var_x94 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 + 0.060240963855421679 * mParameters[10] - 0.060240963855421679 * var_chaste_interface__membrane__V)); + const double var_x95 = 1.0526315789473684e-5 * var_x94; + const double var_x96 = 1.4e-8 * var_x85; + const double var_x97 = 0.001 * var_x94; + const double var_x98 = -var_x83; + const double var_x99 = 1.2097272727272726e-5 * var_x81 * var_x85 * var_x94 / (var_x83 * var_x87); + const double var_x100 = var_x94; + const double var_x101 = 1 / var_chaste_interface__potassium_concentration__Ki; + const double var_x102 = var_x101 * mParameters[5]; + const double var_x103 = log(var_x102); + const double var_x104 = -25.674321243523316 * var_x103 + var_chaste_interface__membrane__V; + const double var_x105 = mParameters[8] * mParameters[3]; + const double var_x106 = 0.061518471582797281 * var_x105; + const double var_x107 = var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12]; + const double var_x108 = 1 / (var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai); + const double var_x109 = 25.674321243523316 * var_x101; + const double var_x110 = exp(0.089599999999999999 * var_chaste_interface__membrane__V - 2.300419183419689 * var_x103); + const double var_x111 = 1 + var_x110; + const double var_x112 = var_x102 * mParameters[11] / (210 + mParameters[5]); + const double var_x113 = 1 / var_chaste_interface__sodium_concentration__Nai; + const double var_x114 = pow(var_x113, 1.5); + const double var_x115 = var_x113 * var_x114 * mParameters[5] / ((1500 + mParameters[5]) * pow((3.2860264730588296e-7 + var_x114), 2) * (1 + 0.1245 * exp(-0.0038949423064193493 * var_chaste_interface__membrane__V) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * exp(-0.038949423064193495 * var_chaste_interface__membrane__V))); + const double var_x116 = 0.022348 * exp(0.01176 * var_chaste_interface__membrane__V); + const double var_x117 = -var_x116; + const double var_x118 = 0.013733 * exp(0.038198000000000003 * var_chaste_interface__membrane__V); + const double var_x119 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__membrane__V); + const double var_x120 = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__membrane__V); + const double var_x121 = 0.090820999999999999 * exp(0.11695499999999999 + 0.023390999999999999 * var_chaste_interface__membrane__V); + const double var_x122 = 0.012149999999999999 * pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; + const double var_x123 = pow(var_chaste_interface__calcium_concentration__Cass, 3); + const double var_x124 = 0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4); + const double var_x125 = 0.0040499999999999998 * var_x123; + const double var_x126 = 1 / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki); + const double var_x127 = var_x126 * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; rJacobian[0][0] = 1.0 - (mDt * (-0.050000000000000003 * var_x0 - 2.8000000000000003 * var_x2)); @@ -694,7 +688,7 @@ rJacobian[2][9] = 0.0; rJacobian[2][10] = 0.0; rJacobian[2][11] = 0.0; - rJacobian[2][12] = -(mDt * (var_x24 + var_x26 - var_x21 - var_x25)); + rJacobian[2][12] = -(mDt * (var_x21 + var_x24)); rJacobian[2][13] = 0.0; rJacobian[2][14] = 0.0; rJacobian[2][15] = 0.0; @@ -717,16 +711,16 @@ rJacobian[3][0] = 0.0; rJacobian[3][1] = 0.0; rJacobian[3][2] = -(mDt * (var_x16)); - rJacobian[3][3] = 1.0 - (mDt * (-0.0135 + var_x27 + var_x0 * (-0.026000000000000002 + 0.026000000000000002 * var_x7))); + rJacobian[3][3] = 1.0 - (mDt * (-0.0135 - var_x26 - 0.002 * var_x0 * var_x9)); rJacobian[3][4] = 0.0; - rJacobian[3][5] = -(mDt * (var_x28)); + rJacobian[3][5] = -(mDt * (var_x27)); rJacobian[3][6] = -(mDt * (var_x12)); rJacobian[3][7] = 0.0; rJacobian[3][8] = 0.0; rJacobian[3][9] = 0.0; rJacobian[3][10] = 0.0; rJacobian[3][11] = 0.0; - rJacobian[3][12] = -(mDt * (var_x25 + var_x29 - var_x26 - var_x30)); + rJacobian[3][12] = -(mDt * (-var_x21 - var_x28)); rJacobian[3][13] = 0.0; rJacobian[3][14] = 0.0; rJacobian[3][15] = 0.0; @@ -750,15 +744,15 @@ rJacobian[4][1] = 0.0; rJacobian[4][2] = -(mDt * (0.026000000000000002 - var_x8)); rJacobian[4][3] = 0.0; - rJacobian[4][4] = 1.0 - (mDt * (var_x31 + var_x32 - var_x17)); + rJacobian[4][4] = 1.0 - (mDt * (-var_x12 - var_x17 - var_x27)); rJacobian[4][5] = -(mDt * (0.00050000000000000001)); - rJacobian[4][6] = -(mDt * (var_x33)); + rJacobian[4][6] = -(mDt * (var_x29)); rJacobian[4][7] = 0.0; rJacobian[4][8] = 0.0; rJacobian[4][9] = 0.0; rJacobian[4][10] = 0.0; rJacobian[4][11] = 0.0; - rJacobian[4][12] = -(mDt * (var_x35 - var_x34)); + rJacobian[4][12] = -(mDt * (var_x30)); rJacobian[4][13] = 0.0; rJacobian[4][14] = 0.0; rJacobian[4][15] = 0.0; @@ -781,16 +775,16 @@ rJacobian[5][0] = 0.0; rJacobian[5][1] = 0.0; rJacobian[5][2] = -(mDt * (var_x13)); - rJacobian[5][3] = -(mDt * (var_x33)); + rJacobian[5][3] = -(mDt * (var_x29)); rJacobian[5][4] = -(mDt * (var_x12)); - rJacobian[5][5] = 1.0 - (mDt * (-0.00050000000000000001 + var_x32 - var_x18)); + rJacobian[5][5] = 1.0 - (mDt * (-0.00050000000000000001 - var_x18 - var_x27)); rJacobian[5][6] = 0.0; rJacobian[5][7] = 0.0; rJacobian[5][8] = 0.0; rJacobian[5][9] = 0.0; rJacobian[5][10] = 0.0; rJacobian[5][11] = 0.0; - rJacobian[5][12] = -(mDt * (var_x21 + var_x34 - var_x24 - var_x35)); + rJacobian[5][12] = -(mDt * (-var_x24 - var_x30)); rJacobian[5][13] = 0.0; rJacobian[5][14] = 0.0; rJacobian[5][15] = 0.0; @@ -814,15 +808,15 @@ rJacobian[6][1] = 0.0; rJacobian[6][2] = -(mDt * (var_x14)); rJacobian[6][3] = -(mDt * (0.00050000000000000001)); - rJacobian[6][4] = -(mDt * (var_x28)); + rJacobian[6][4] = -(mDt * (var_x27)); rJacobian[6][5] = 0.0; - rJacobian[6][6] = 1.0 - (mDt * (-0.013000000000000001 + var_x27 + var_x31 - var_x19)); + rJacobian[6][6] = 1.0 - (mDt * (-0.013000000000000001 - var_x12 - var_x19 - var_x26)); rJacobian[6][7] = 0.0; rJacobian[6][8] = 0.0; rJacobian[6][9] = 0.0; rJacobian[6][10] = 0.0; rJacobian[6][11] = 0.0; - rJacobian[6][12] = -(mDt * (var_x30 - var_x29)); + rJacobian[6][12] = -(mDt * (var_x28)); rJacobian[6][13] = 0.0; rJacobian[6][14] = 0.0; rJacobian[6][15] = 0.0; @@ -849,11 +843,11 @@ rJacobian[7][4] = 0.0; rJacobian[7][5] = 0.0; rJacobian[7][6] = 0.0; - rJacobian[7][7] = 1.0 - (mDt * (-3.1999999999999999e-5 - var_x36)); + rJacobian[7][7] = 1.0 - (mDt * (-var_x32)); rJacobian[7][8] = 0.0; rJacobian[7][9] = 0.0; rJacobian[7][10] = 0.0; - rJacobian[7][11] = -(mDt * (331.80000000000001 - var_x37)); + rJacobian[7][11] = -(mDt * (331.80000000000001 - var_x33)); rJacobian[7][12] = 0.0; rJacobian[7][13] = 0.0; rJacobian[7][14] = 0.0; @@ -882,10 +876,10 @@ rJacobian[8][5] = 0.0; rJacobian[8][6] = 0.0; rJacobian[8][7] = 0.0; - rJacobian[8][8] = 1.0 - (mDt * (-0.019599999999999999 - var_x38)); + rJacobian[8][8] = 1.0 - (mDt * (-var_x35)); rJacobian[8][9] = 0.0; rJacobian[8][10] = 0.0; - rJacobian[8][11] = -(mDt * (2289 - var_x39)); + rJacobian[8][11] = -(mDt * (2289 - var_x36)); rJacobian[8][12] = 0.0; rJacobian[8][13] = 0.0; rJacobian[8][14] = 0.0; @@ -915,11 +909,11 @@ rJacobian[9][6] = 0.0; rJacobian[9][7] = 0.0; rJacobian[9][8] = 0.0; - rJacobian[9][9] = 1.0 - (mDt * (var_x42 * (-0.050000000000000003 + var_x43 * var_x44) + 0.00013333333333333334 * (-var_x47 + 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaNSR - 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaJSR) / (pow(var_x40, 3) * pow((0.053333333333333337 + var_x41), 2)))); - rJacobian[9][10] = -(mDt * (0.050000000000000003 * var_x42)); + rJacobian[9][9] = 1.0 - (mDt * (var_x39 * (-0.050000000000000003 - var_x42) + 0.00013333333333333334 * (0.050000000000000003 * var_chaste_interface__calcium_concentration__CaNSR - 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaJSR - var_x42 * var_x43) / (pow(var_x37, 3) * pow((0.053333333333333337 + var_x38), 2)))); + rJacobian[9][10] = -(mDt * (0.050000000000000003 * var_x39)); rJacobian[9][11] = 0.0; - rJacobian[9][12] = -(mDt * (var_x42 * var_x46)); - rJacobian[9][13] = -(mDt * (var_x48 * var_x49)); + rJacobian[9][12] = -(mDt * (var_x39 * var_x42)); + rJacobian[9][13] = -(mDt * (-var_x41 * var_x44)); rJacobian[9][14] = 0.0; rJacobian[9][15] = 0.0; rJacobian[9][16] = 0.0; @@ -935,8 +929,8 @@ rJacobian[9][26] = 0.0; rJacobian[9][27] = 0.0; rJacobian[9][28] = 0.0; - rJacobian[9][29] = -(mDt * (var_x50)); - rJacobian[9][30] = -(mDt * (var_x50)); + rJacobian[9][29] = -(mDt * (var_x46)); + rJacobian[9][30] = -(mDt * (var_x46)); rJacobian[9][31] = 0.0; rJacobian[10][0] = 0.0; rJacobian[10][1] = 0.0; @@ -949,7 +943,7 @@ rJacobian[10][8] = 0.0; rJacobian[10][9] = -(mDt * (0.0028598665395614866)); rJacobian[10][10] = 1.0 - (mDt * (-0.0028598665395614866 - 12.316491897044804 * mParameters[0])); - rJacobian[10][11] = -(mDt * (12316.491897044803 * mParameters[0] + 24632983.794089608 * var_x55 - 24.632983794089608 * var_x57)); + rJacobian[10][11] = -(mDt * (12316.491897044803 * mParameters[0] + 24632983.794089608 * var_x50 * mParameters[2] - 24.632983794089608 * var_x53 * mParameters[2])); rJacobian[10][12] = 0.0; rJacobian[10][13] = 0.0; rJacobian[10][14] = 0.0; @@ -977,12 +971,12 @@ rJacobian[11][4] = 0.0; rJacobian[11][5] = 0.0; rJacobian[11][6] = 0.0; - rJacobian[11][7] = -(mDt * (var_x61 * (3.1999999999999999e-5 + var_x36))); - rJacobian[11][8] = -(mDt * (var_x61 * (0.019599999999999999 + var_x38))); + rJacobian[11][7] = -(mDt * (var_x32 * var_x57)); + rJacobian[11][8] = -(mDt * (var_x35 * var_x57)); rJacobian[11][9] = 0.0; - rJacobian[11][10] = -(mDt * (var_x61 * mParameters[0])); - rJacobian[11][11] = 1.0 - (mDt * (var_x61 * (-2745.8000000000002 + var_x37 + var_x39 + 2 * var_x57 - 2000000 * var_x55 - 1000 * mParameters[0] + (0.061518471582797281 * var_x56 - 61518.471582797276 * var_x54 - 61.518471582797282 * var_x67 - 0.00014491407891765456 * var_x62) * mParameters[8]) + 2.3800000000000001e-8 * (0.125 * var_chaste_interface__calcium_concentration__Cass + 0.019599999999999999 * var_chaste_interface__calcium_buffering__LTRPN_Ca + 3.1999999999999999e-5 * var_chaste_interface__calcium_buffering__HTRPN_Ca - 125 * var_chaste_interface__calcium_concentration__Cai_converted + (-var_x68 + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0] - var_x36 * (140 - var_chaste_interface__calcium_buffering__HTRPN_Ca) - var_x38 * (70 - var_chaste_interface__calcium_buffering__LTRPN_Ca) - var_x69 * mParameters[2] - 0.03075923579139864 * (var_x69 + 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(0.001 * var_x62 * mParameters[4]) - 2 * var_x66 * (var_x70 * pow(var_chaste_interface__sodium_concentration__Nai, 3) - var_x65 * var_x68)) * mParameters[8]) / (pow(var_x58, 3) * pow(var_x59, 2)))); - rJacobian[11][12] = -(mDt * (0.000125 * var_x60)); + rJacobian[11][10] = -(mDt * (var_x57 * mParameters[0])); + rJacobian[11][11] = 1.0 - (mDt * (var_x57 * (-2745.8000000000002 + var_x33 + var_x36 - 1000 * mParameters[0] - var_x59 * mParameters[2] - var_x65 * (var_x59 + 0.0047112379481865285 * var_x58 + 2000 * var_x64 - 2 * var_x53) + 2 * var_x51 * var_x52 * mParameters[2]) + 2.3800000000000001e-8 * (0.125 * var_chaste_interface__calcium_concentration__Cass + 0.019599999999999999 * var_chaste_interface__calcium_buffering__LTRPN_Ca + 3.1999999999999999e-5 * var_chaste_interface__calcium_buffering__HTRPN_Ca - 125 * var_chaste_interface__calcium_concentration__Cai_converted + (-var_x66 + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0] - var_x31 * (140 - var_chaste_interface__calcium_buffering__HTRPN_Ca) - var_x34 * (70 - var_chaste_interface__calcium_buffering__LTRPN_Ca) - var_x65 * (var_x67 + 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(0.001 * var_x58 * mParameters[4]) - 2 * var_x63 * (-var_x62 * var_x66 + var_x68 * pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4])) - var_x67 * mParameters[2]) / (pow(var_x54, 3) * pow(var_x55, 2)))); + rJacobian[11][12] = -(mDt * (0.000125 * var_x56)); rJacobian[11][13] = 0.0; rJacobian[11][14] = 0.0; rJacobian[11][15] = 0.0; @@ -1001,21 +995,21 @@ rJacobian[11][28] = 0.0; rJacobian[11][29] = 0.0; rJacobian[11][30] = 0.0; - rJacobian[11][31] = -(mDt * (0.00018455541474839184 * var_x60 * var_x71 * mParameters[8])); + rJacobian[11][31] = -(mDt * (0.00018455541474839184 * var_x56 * var_x69 * mParameters[8])); rJacobian[12][0] = 0.0; rJacobian[12][1] = 0.0; rJacobian[12][2] = 0.0; rJacobian[12][3] = 0.0; rJacobian[12][4] = 0.0; rJacobian[12][5] = 0.0; - rJacobian[12][6] = -(mDt * (var_x74 * var_x75 * (33719.579211807191 - 535.23141606043157 * var_chaste_interface__membrane__V))); + rJacobian[12][6] = -(mDt * (-var_x72 * var_x74)); rJacobian[12][7] = 0.0; rJacobian[12][8] = 0.0; - rJacobian[12][9] = -(mDt * (var_x78 * (var_x76 + var_x77))); + rJacobian[12][9] = -(mDt * (var_x72 * var_x75)); rJacobian[12][10] = 0.0; - rJacobian[12][11] = -(mDt * (2175084.1750841751 * var_x74)); - rJacobian[12][12] = 1.0 - (mDt * (var_x74 * (-2175.0841750841751 + var_x44 * (-var_x76 - var_x77)) + 0.16806722689075632 * (80.808080808080803 * var_x47 + 2175084.1750841751 * var_chaste_interface__calcium_concentration__Cai_converted - 2175.0841750841751 * var_chaste_interface__calcium_concentration__Cass - 535.23141606043157 * var_x75 * (-63 + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O) / (pow(var_x72, 3) * pow((0.084033613445378158 + var_x73), 2)))); - rJacobian[12][13] = -(mDt * (var_x49 * var_x74 * var_x79)); + rJacobian[12][11] = -(mDt * (2175084.1750841751 * var_x72)); + rJacobian[12][12] = 1.0 - (mDt * (var_x72 * (-2175.0841750841751 - var_x75) + 0.16806722689075632 * (2175084.1750841751 * var_chaste_interface__calcium_concentration__Cai_converted - 2175.0841750841751 * var_chaste_interface__calcium_concentration__Cass - var_x74 * var_chaste_interface__L_type_calcium_current__O + 80.808080808080803 * var_x40 * var_x43 * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]) / (pow(var_x70, 3) * pow((0.084033613445378158 + var_x71), 2)))); + rJacobian[12][13] = -(mDt * (var_x41 * var_x76)); rJacobian[12][14] = 0.0; rJacobian[12][15] = 0.0; rJacobian[12][16] = 0.0; @@ -1031,8 +1025,8 @@ rJacobian[12][26] = 0.0; rJacobian[12][27] = 0.0; rJacobian[12][28] = 0.0; - rJacobian[12][29] = -(mDt * (var_x80)); - rJacobian[12][30] = -(mDt * (var_x80)); + rJacobian[12][29] = -(mDt * (var_x77)); + rJacobian[12][30] = -(mDt * (var_x77)); rJacobian[12][31] = 0.0; rJacobian[13][0] = 0.0; rJacobian[13][1] = 0.0; @@ -1040,7 +1034,7 @@ rJacobian[13][3] = 0.0; rJacobian[13][4] = 0.0; rJacobian[13][5] = 0.0; - rJacobian[13][6] = -(mDt * ((0.90000000000000002 - 0.014285714285714287 * var_chaste_interface__membrane__V) * mParameters[7] * exp(-0.038580246913580245 * pow((-1 + 0.20000000000000001 * var_chaste_interface__membrane__V), 2)))); + rJacobian[13][6] = -(mDt * (-0.014285714285714287 * var_x73 * exp(-0.038580246913580245 * pow((-1 + 0.20000000000000001 * var_chaste_interface__membrane__V), 2)))); rJacobian[13][7] = 0.0; rJacobian[13][8] = 0.0; rJacobian[13][9] = 0.0; @@ -1080,14 +1074,14 @@ rJacobian[14][11] = 0.0; rJacobian[14][12] = 0.0; rJacobian[14][13] = 0.0; - rJacobian[14][14] = 1.0 - (mDt * (var_x83 + var_x88 - var_x86)); - rJacobian[14][15] = -(mDt * (var_x89)); + rJacobian[14][14] = 1.0 - (mDt * (-var_x79 - var_x82 - var_x83)); + rJacobian[14][15] = -(mDt * (var_x84)); rJacobian[14][16] = 0.0; rJacobian[14][17] = 0.0; rJacobian[14][18] = 0.0; rJacobian[14][19] = 0.0; - rJacobian[14][20] = -(mDt * (var_x91)); - rJacobian[14][21] = -(mDt * (var_x93)); + rJacobian[14][20] = -(mDt * (var_x86)); + rJacobian[14][21] = -(mDt * (var_x88)); rJacobian[14][22] = 0.0; rJacobian[14][23] = 0.0; rJacobian[14][24] = 0.0; @@ -1112,14 +1106,14 @@ rJacobian[15][11] = 0.0; rJacobian[15][12] = 0.0; rJacobian[15][13] = 0.0; - rJacobian[15][14] = -(mDt * (var_x82 + var_x95)); - rJacobian[15][15] = 1.0 - (mDt * (var_x97 + var_x98)); - rJacobian[15][16] = -(mDt * (var_x95)); - rJacobian[15][17] = -(mDt * (var_x95)); - rJacobian[15][18] = -(mDt * (var_x91 + var_x95)); - rJacobian[15][19] = -(mDt * (var_x95)); - rJacobian[15][20] = -(mDt * (var_x95)); - rJacobian[15][21] = -(mDt * (var_x95)); + rJacobian[15][14] = -(mDt * (var_x79 + var_x90)); + rJacobian[15][15] = 1.0 - (mDt * (-var_x92 - var_x93)); + rJacobian[15][16] = -(mDt * (var_x90)); + rJacobian[15][17] = -(mDt * (var_x90)); + rJacobian[15][18] = -(mDt * (var_x86 + var_x90)); + rJacobian[15][19] = -(mDt * (var_x90)); + rJacobian[15][20] = -(mDt * (var_x90)); + rJacobian[15][21] = -(mDt * (var_x90)); rJacobian[15][22] = 0.0; rJacobian[15][23] = 0.0; rJacobian[15][24] = 0.0; @@ -1146,11 +1140,11 @@ rJacobian[16][13] = 0.0; rJacobian[16][14] = 0.0; rJacobian[16][15] = 0.0; - rJacobian[16][16] = 1.0 - (mDt * (var_x99 - var_x101)); - rJacobian[16][17] = -(mDt * (var_x102)); + rJacobian[16][16] = 1.0 - (mDt * (-var_x86 - var_x95)); + rJacobian[16][17] = -(mDt * (var_x96)); rJacobian[16][18] = 0.0; rJacobian[16][19] = 0.0; - rJacobian[16][20] = -(mDt * (var_x103)); + rJacobian[16][20] = -(mDt * (var_x97)); rJacobian[16][21] = 0.0; rJacobian[16][22] = 0.0; rJacobian[16][23] = 0.0; @@ -1178,8 +1172,8 @@ rJacobian[17][13] = 0.0; rJacobian[17][14] = 0.0; rJacobian[17][15] = 0.0; - rJacobian[17][16] = -(mDt * (var_x101)); - rJacobian[17][17] = 1.0 - (mDt * (-var_x102)); + rJacobian[17][16] = -(mDt * (var_x95)); + rJacobian[17][17] = 1.0 - (mDt * (-var_x96)); rJacobian[17][18] = 0.0; rJacobian[17][19] = 0.0; rJacobian[17][20] = 0.0; @@ -1209,12 +1203,12 @@ rJacobian[18][12] = 0.0; rJacobian[18][13] = 0.0; rJacobian[18][14] = 0.0; - rJacobian[18][15] = -(mDt * (var_x104)); + rJacobian[18][15] = -(mDt * (var_x83)); rJacobian[18][16] = 0.0; rJacobian[18][17] = 0.0; - rJacobian[18][18] = 1.0 - (mDt * (var_x97 + var_x99)); - rJacobian[18][19] = -(mDt * (var_x94)); - rJacobian[18][20] = -(mDt * (var_x82)); + rJacobian[18][18] = 1.0 - (mDt * (-var_x86 - var_x92)); + rJacobian[18][19] = -(mDt * (var_x89)); + rJacobian[18][20] = -(mDt * (var_x79)); rJacobian[18][21] = 0.0; rJacobian[18][22] = 0.0; rJacobian[18][23] = 0.0; @@ -1240,14 +1234,14 @@ rJacobian[19][11] = 0.0; rJacobian[19][12] = 0.0; rJacobian[19][13] = 0.0; - rJacobian[19][14] = -(mDt * (var_x88)); - rJacobian[19][15] = -(mDt * (var_x88)); - rJacobian[19][16] = -(mDt * (var_x88)); - rJacobian[19][17] = -(mDt * (var_x88)); - rJacobian[19][18] = -(mDt * (var_x88 + var_x96)); - rJacobian[19][19] = 1.0 - (mDt * (var_x98 + var_x99)); - rJacobian[19][20] = -(mDt * (var_x88)); - rJacobian[19][21] = -(mDt * (var_x88)); + rJacobian[19][14] = -(mDt * (var_x98)); + rJacobian[19][15] = -(mDt * (var_x98)); + rJacobian[19][16] = -(mDt * (var_x98)); + rJacobian[19][17] = -(mDt * (var_x98)); + rJacobian[19][18] = -(mDt * (var_x91 - var_x83)); + rJacobian[19][19] = 1.0 - (mDt * (-var_x86 - var_x93)); + rJacobian[19][20] = -(mDt * (var_x98)); + rJacobian[19][21] = -(mDt * (var_x98)); rJacobian[19][22] = 0.0; rJacobian[19][23] = 0.0; rJacobian[19][24] = 0.0; @@ -1272,14 +1266,14 @@ rJacobian[20][11] = 0.0; rJacobian[20][12] = 0.0; rJacobian[20][13] = 0.0; - rJacobian[20][14] = -(mDt * (var_x104)); + rJacobian[20][14] = -(mDt * (var_x83)); rJacobian[20][15] = 0.0; - rJacobian[20][16] = -(mDt * (var_x91)); + rJacobian[20][16] = -(mDt * (var_x86)); rJacobian[20][17] = 0.0; - rJacobian[20][18] = -(mDt * (var_x89)); + rJacobian[20][18] = -(mDt * (var_x84)); rJacobian[20][19] = 0.0; - rJacobian[20][20] = 1.0 - (mDt * (var_x83 + var_x99 - var_x103 - var_x105)); - rJacobian[20][21] = -(mDt * (var_x106)); + rJacobian[20][20] = 1.0 - (mDt * (-var_x79 - var_x86 - var_x97 - var_x99)); + rJacobian[20][21] = -(mDt * (var_x100)); rJacobian[20][22] = 0.0; rJacobian[20][23] = 0.0; rJacobian[20][24] = 0.0; @@ -1304,14 +1298,14 @@ rJacobian[21][11] = 0.0; rJacobian[21][12] = 0.0; rJacobian[21][13] = 0.0; - rJacobian[21][14] = -(mDt * (var_x86)); + rJacobian[21][14] = -(mDt * (var_x82)); rJacobian[21][15] = 0.0; rJacobian[21][16] = 0.0; rJacobian[21][17] = 0.0; rJacobian[21][18] = 0.0; rJacobian[21][19] = 0.0; - rJacobian[21][20] = -(mDt * (var_x105)); - rJacobian[21][21] = 1.0 - (mDt * (-var_x106 - var_x93)); + rJacobian[21][20] = -(mDt * (var_x99)); + rJacobian[21][21] = 1.0 - (mDt * (-var_x100 - var_x88)); rJacobian[21][22] = 0.0; rJacobian[21][23] = 0.0; rJacobian[21][24] = 0.0; @@ -1376,16 +1370,16 @@ rJacobian[23][19] = 0.0; rJacobian[23][20] = 0.0; rJacobian[23][21] = 0.0; - rJacobian[23][22] = -(mDt * (-var_x110 * var_x111 * var_x113)); - rJacobian[23][23] = 1.0 - (mDt * (var_x112 * (-1.5794450018272976 * var_x115 - 1.5794450018272976 * var_x119 / var_x118 - var_x111 * var_x116 * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss - var_x116 * pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * mParameters[14] - 0.25271120029236765 * var_x107 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur - var_x116 * pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f + 0.14151827216372587 * var_x110 * var_x117 * var_x119 / pow(var_x118, 2)))); + rJacobian[23][22] = -(mDt * (-var_x104 * var_x106 * var_x107)); + rJacobian[23][23] = 1.0 - (mDt * (-var_x106 * (25.674321243523316 * var_x112 / var_x111 + var_x107 * var_x109 * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss + var_x109 * pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * mParameters[14] + 4.1078913989637309 * var_x101 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur + 25.674321243523316 * var_x108 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13] + var_x109 * pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f - 2.300419183419689 * var_x104 * var_x110 * var_x112 / pow(var_x111, 2)))); rJacobian[23][24] = 0.0; rJacobian[23][25] = 0.0; rJacobian[23][26] = 0.0; - rJacobian[23][27] = -(mDt * (-var_x113 * (-25.674321243523316 * log(var_x114 * (mParameters[5] + 0.020408163265306124 * mParameters[6])) + var_chaste_interface__membrane__V) * mParameters[13])); + rJacobian[23][27] = -(mDt * (-var_x106 * (-25.674321243523316 * log(var_x108 * (mParameters[5] + 0.020408163265306124 * mParameters[6])) + var_chaste_interface__membrane__V) * mParameters[13])); rJacobian[23][28] = 0.0; rJacobian[23][29] = 0.0; rJacobian[23][30] = 0.0; - rJacobian[23][31] = -(mDt * (var_x112 * (5.3367950117641947e-8 * var_x122 - 0.032233571465863219 * var_x115))); + rJacobian[23][31] = -(mDt * (-var_x106 * (-8.6751098888753097e-7 * var_x115 + 0.52396573966374116 * var_x108 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]))); rJacobian[24][0] = 0.0; rJacobian[24][1] = 0.0; rJacobian[24][2] = 0.0; @@ -1410,10 +1404,10 @@ rJacobian[24][21] = 0.0; rJacobian[24][22] = 0.0; rJacobian[24][23] = 0.0; - rJacobian[24][24] = 1.0 - (mDt * (-0.023761000000000001 + var_x123 - 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__membrane__V))); - rJacobian[24][25] = -(mDt * (0.036777999999999998 + var_x123)); - rJacobian[24][26] = -(mDt * (var_x123)); - rJacobian[24][27] = -(mDt * (var_x123)); + rJacobian[24][24] = 1.0 - (mDt * (-0.023761000000000001 - var_x116 - 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__membrane__V))); + rJacobian[24][25] = -(mDt * (0.036777999999999998 - var_x116)); + rJacobian[24][26] = -(mDt * (var_x117)); + rJacobian[24][27] = -(mDt * (var_x117)); rJacobian[24][28] = 0.0; rJacobian[24][29] = 0.0; rJacobian[24][30] = 0.0; @@ -1443,9 +1437,9 @@ rJacobian[25][22] = 0.0; rJacobian[25][23] = 0.0; rJacobian[25][24] = -(mDt * (0.023761000000000001)); - rJacobian[25][25] = 1.0 - (mDt * (-0.036777999999999998 - var_x124)); + rJacobian[25][25] = 1.0 - (mDt * (-0.036777999999999998 - var_x118)); rJacobian[25][26] = 0.0; - rJacobian[25][27] = -(mDt * (var_x125)); + rJacobian[25][27] = -(mDt * (var_x119)); rJacobian[25][28] = 0.0; rJacobian[25][29] = 0.0; rJacobian[25][30] = 0.0; @@ -1476,8 +1470,8 @@ rJacobian[26][23] = 0.0; rJacobian[26][24] = 0.0; rJacobian[26][25] = 0.0; - rJacobian[26][26] = 1.0 - (mDt * (-var_x126)); - rJacobian[26][27] = -(mDt * (var_x127)); + rJacobian[26][26] = 1.0 - (mDt * (-var_x120)); + rJacobian[26][27] = -(mDt * (var_x121)); rJacobian[26][28] = 0.0; rJacobian[26][29] = 0.0; rJacobian[26][30] = 0.0; @@ -1507,9 +1501,9 @@ rJacobian[27][22] = 0.0; rJacobian[27][23] = 0.0; rJacobian[27][24] = 0.0; - rJacobian[27][25] = -(mDt * (var_x124)); - rJacobian[27][26] = -(mDt * (var_x126)); - rJacobian[27][27] = 1.0 - (mDt * (-var_x125 - var_x127)); + rJacobian[27][25] = -(mDt * (var_x118)); + rJacobian[27][26] = -(mDt * (var_x120)); + rJacobian[27][27] = 1.0 - (mDt * (-var_x119 - var_x121)); rJacobian[27][28] = 0.0; rJacobian[27][29] = 0.0; rJacobian[27][30] = 0.0; @@ -1558,7 +1552,7 @@ rJacobian[29][9] = 0.0; rJacobian[29][10] = 0.0; rJacobian[29][11] = 0.0; - rJacobian[29][12] = -(mDt * (-var_x129 + 0.024299999999999999 * var_x128 * (1 + var_x43 - var_chaste_interface__ryanodine_receptors__P_C2))); + rJacobian[29][12] = -(mDt * (-var_x122 + 0.024299999999999999 * var_x123 * (1 - var_x40 - var_chaste_interface__ryanodine_receptors__P_C2))); rJacobian[29][13] = 0.0; rJacobian[29][14] = 0.0; rJacobian[29][15] = 0.0; @@ -1574,9 +1568,9 @@ rJacobian[29][25] = 0.0; rJacobian[29][26] = 0.0; rJacobian[29][27] = 0.0; - rJacobian[29][28] = -(mDt * (0.00080000000000000004 + var_x130)); - rJacobian[29][29] = 1.0 - (mDt * (-0.080249999999999988 + var_x130 - var_x131)); - rJacobian[29][30] = -(mDt * (0.96499999999999997 + var_x130)); + rJacobian[29][28] = -(mDt * (0.00080000000000000004 - var_x124)); + rJacobian[29][29] = 1.0 - (mDt * (-0.080249999999999988 - var_x124 - var_x125)); + rJacobian[29][30] = -(mDt * (0.96499999999999997 - var_x124)); rJacobian[29][31] = 0.0; rJacobian[30][0] = 0.0; rJacobian[30][1] = 0.0; @@ -1590,7 +1584,7 @@ rJacobian[30][9] = 0.0; rJacobian[30][10] = 0.0; rJacobian[30][11] = 0.0; - rJacobian[30][12] = -(mDt * (var_x129)); + rJacobian[30][12] = -(mDt * (var_x122)); rJacobian[30][13] = 0.0; rJacobian[30][14] = 0.0; rJacobian[30][15] = 0.0; @@ -1607,7 +1601,7 @@ rJacobian[30][26] = 0.0; rJacobian[30][27] = 0.0; rJacobian[30][28] = 0.0; - rJacobian[30][29] = -(mDt * (var_x131)); + rJacobian[30][29] = -(mDt * (var_x125)); rJacobian[30][30] = 1.0 - (mDt * (-0.96499999999999997)); rJacobian[30][31] = 0.0; rJacobian[31][0] = 0.0; @@ -1621,7 +1615,7 @@ rJacobian[31][8] = 0.0; rJacobian[31][9] = 0.0; rJacobian[31][10] = 0.0; - rJacobian[31][11] = -(mDt * (184.55541474839183 * var_x112 * var_x67)); + rJacobian[31][11] = -(mDt * (184.55541474839183 * var_x105 * var_x64)); rJacobian[31][12] = 0.0; rJacobian[31][13] = 0.0; rJacobian[31][14] = 0.0; @@ -1631,9 +1625,9 @@ rJacobian[31][18] = 0.0; rJacobian[31][19] = 0.0; rJacobian[31][20] = 0.0; - rJacobian[31][21] = -(mDt * (-var_x113 * (-25.674321243523316 * log(var_x132 * (mParameters[6] + 0.1111111111111111 * mParameters[5])) + var_chaste_interface__membrane__V) * mParameters[9])); + rJacobian[31][21] = -(mDt * (-var_x106 * (-25.674321243523316 * log(var_x126 * (mParameters[6] + 0.1111111111111111 * mParameters[5])) + var_chaste_interface__membrane__V) * mParameters[9])); rJacobian[31][22] = 0.0; - rJacobian[31][23] = -(mDt * (var_x112 * (-0.00045628411163899709 * var_x132 - 0.17549388909192196 * var_x133))); + rJacobian[31][23] = -(mDt * (-var_x106 * (2.8527023603914796 * var_x127 + 0.007417026137017846 * var_x126))); rJacobian[31][24] = 0.0; rJacobian[31][25] = 0.0; rJacobian[31][26] = 0.0; @@ -1641,7 +1635,7 @@ rJacobian[31][28] = 0.0; rJacobian[31][29] = 0.0; rJacobian[31][30] = 0.0; - rJacobian[31][31] = 1.0 - (mDt * (var_x112 * (-1.5794450018272976 * var_x133 - 0.0041065570047509742 * var_x132 - 0.55366624424517552 * var_x71 - 8.0051925176462917e-8 * var_x122))); + rJacobian[31][31] = 1.0 - (mDt * (-var_x106 * (9 * var_x69 + 1.3012664833312966e-6 * var_x115 + 0.066753235233160624 * var_x126 + 25.674321243523316 * var_x127))); } void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_13.cpp new file mode 100644 index 00000000..28cacc0d --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_13.cpp @@ -0,0 +1,2231 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: bondarenko_2004_apical +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEuler) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 0.5; // millisecond + const double var_chaste_interface__membrane__stim_period = 71.430000000000007; // millisecond + const double var_chaste_interface__membrane__stim_start = 0; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<32>( + 41, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1.7399999999999999e-5; // (var_calcium_fluxes__v2) [per_millisecond] + this->mParameters[1] = 4.5; // (var_calcium_fluxes__v1) [per_millisecond] + this->mParameters[2] = 0.45000000000000001; // (var_calcium_fluxes__v3) [micromolar_per_millisecond] + this->mParameters[3] = 1; // (var_sodium_concentration__conc_clamp) [dimensionless] + this->mParameters[4] = 1800; // (var_membrane__Cao) [micromolar] + this->mParameters[5] = 5400; // (var_membrane__Ko) [micromolar] + this->mParameters[6] = 140000; // (var_membrane__Nao) [micromolar] + this->mParameters[7] = 0.1729; // (var_L_type_calcium_current__g_CaL) [milliS_per_microF] + this->mParameters[8] = 1; // (var_membrane__Cm) [microF_per_cm2] + this->mParameters[9] = 13; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[10] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[11] = 0.29380000000000001; // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = 0.050000000000000003; // (var_non_inactivating_steady_state_potassium_current__g_Kss) [milliS_per_microF] + this->mParameters[13] = 0.078; // (var_rapid_delayed_rectifier_potassium_current__g_Kr) [milliS_per_microF] + this->mParameters[14] = 0.0057499999999999999; // (var_slow_delayed_rectifier_potassium_current__g_Ks) [milliS_per_microF] + this->mParameters[15] = 292.80000000000001; // (var_sodium_calcium_exchange_current__k_NaCa) [picoA_per_picoF] + this->mParameters[16] = 0.40670000000000001; // (var_fast_transient_outward_potassium_current__g_Kto_f) [milliS_per_microF] + } + + Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::~Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler() + { + } + + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 41; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_calcium_activated_chloride_current__E_Cl = -40; // millivolt + const double var_calcium_activated_chloride_current__Km_Cl = 10; // micromolar + const double var_calcium_activated_chloride_current__g_ClCa = 10; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.00036699999999999998; // milliS_per_microF + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__Km_pCa = 0.5; // micromolar + const double var_calcium_pump_current__i_pCa_max = 1; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_calcium_concentration__Cai) / var_membrane__F; // millivolt + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_calcium_activated_chloride_current__O_ClCa = 0.20000000000000001 / (1 + exp(5.9871794871794881 - 0.12820512820512822 * var_chaste_interface__membrane__V)); // dimensionless + const double var_calcium_activated_chloride_current__i_ClCa = (-var_calcium_activated_chloride_current__E_Cl + var_chaste_interface__membrane__V) * var_calcium_activated_chloride_current__O_ClCa * var_calcium_activated_chloride_current__g_ClCa * var_calcium_concentration__Cai / (var_calcium_activated_chloride_current__Km_Cl + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_transient_outward_potassium_current__i_Kto_f; // uA_per_cm2 + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss_converted = HeartConfig::Instance()->GetCapacitance() * var_non_inactivating_steady_state_potassium_current__i_Kss; // uA_per_cm2 + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks; // uA_per_cm2 + const double var_slow_transient_outward_potassium_current__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_potassium_current__i_Kto_s = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__slow_transient_outward_potassium_current__ato_s * var_slow_transient_outward_potassium_current__g_Kto_s * var_chaste_interface__slow_transient_outward_potassium_current__ito_s; // picoA_per_picoF + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchange_current__i_NaCa; // uA_per_cm2 + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 21000; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 0.88; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[5] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (mParameters[5] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur = 0.16; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_calcium_activated_chloride_current__i_ClCa + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Cab + HeartConfig::Instance()->GetCapacitance() * var_calcium_pump_current__i_pCa + HeartConfig::Instance()->GetCapacitance() * var_slow_transient_outward_potassium_current__i_Kto_s + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Nab + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump_current__i_NaK + HeartConfig::Instance()->GetCapacitance() * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur + var_L_type_calcium_current__i_CaL_converted + var_fast_sodium_current__i_Na_converted + var_fast_transient_outward_potassium_current__i_Kto_f_converted + var_non_inactivating_steady_state_potassium_current__i_Kss_converted + var_rapid_delayed_rectifier_potassium_current__i_Kr_converted + var_slow_delayed_rectifier_potassium_current__i_Ks_converted + var_sodium_calcium_exchange_current__i_NaCa_converted + var_time_independent_potassium_current__i_K1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rResidual[32]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + + //output_nonlinear_state_assignments + double var_chaste_interface__L_type_calcium_current__C2 = rCurrentGuess[0]; + double var_chaste_interface__L_type_calcium_current__C3 = rCurrentGuess[1]; + double var_chaste_interface__L_type_calcium_current__C4 = rCurrentGuess[2]; + double var_chaste_interface__L_type_calcium_current__I1 = rCurrentGuess[3]; + double var_chaste_interface__L_type_calcium_current__I2 = rCurrentGuess[4]; + double var_chaste_interface__L_type_calcium_current__I3 = rCurrentGuess[5]; + double var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[6]; + double var_chaste_interface__calcium_buffering__HTRPN_Ca = rCurrentGuess[7]; + double var_chaste_interface__calcium_buffering__LTRPN_Ca = rCurrentGuess[8]; + double var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[9]; + double var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[10]; + double var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[11]; + double var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[12]; + double var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[13]; + double var_chaste_interface__fast_sodium_current__C_Na1 = rCurrentGuess[14]; + double var_chaste_interface__fast_sodium_current__C_Na2 = rCurrentGuess[15]; + double var_chaste_interface__fast_sodium_current__I1_Na = rCurrentGuess[16]; + double var_chaste_interface__fast_sodium_current__I2_Na = rCurrentGuess[17]; + double var_chaste_interface__fast_sodium_current__IC_Na2 = rCurrentGuess[18]; + double var_chaste_interface__fast_sodium_current__IC_Na3 = rCurrentGuess[19]; + double var_chaste_interface__fast_sodium_current__IF_Na = rCurrentGuess[20]; + double var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[21]; + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rCurrentGuess[22]; + double var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[23]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 = rCurrentGuess[24]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 = rCurrentGuess[25]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K = rCurrentGuess[26]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rCurrentGuess[27]; + double var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[28]; + double var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[29]; + double var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[30]; + double var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[31]; + + //output_equations + const double d_dt_chaste_interface_var_non_inactivating_steady_state_potassium_current__iKss = 0; // 1 / millisecond + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_L_type_calcium_current__Kpc_half = 20; // micromolar + const double var_L_type_calcium_current__Kpc_max = 0.23324; // per_millisecond + const double var_L_type_calcium_current__Kpcb = 0.00050000000000000001; // per_millisecond + const double var_L_type_calcium_current__C1 = 1 - var_chaste_interface__L_type_calcium_current__C2 - var_chaste_interface__L_type_calcium_current__C3 - var_chaste_interface__L_type_calcium_current__C4 - var_chaste_interface__L_type_calcium_current__I1 - var_chaste_interface__L_type_calcium_current__I2 - var_chaste_interface__L_type_calcium_current__I3 - var_chaste_interface__L_type_calcium_current__O; // dimensionless + const double var_L_type_calcium_current__i_CaL_max = 7; // picoA_per_picoF + const double var_calcium_background_current__g_Cab = 0.00036699999999999998; // milliS_per_microF + const double var_calcium_buffering__HTRPN_tot = 140; // micromolar + const double var_calcium_buffering__LTRPN_tot = 70; // micromolar + const double var_calcium_concentration__CMDN_tot = 50; // micromolar + const double var_calcium_concentration__CSQN_tot = 15000; // micromolar + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_L_type_calcium_current__gamma = var_L_type_calcium_current__Kpc_max * var_chaste_interface__calcium_concentration__Cass / (var_L_type_calcium_current__Kpc_half + var_chaste_interface__calcium_concentration__Cass); // per_millisecond + const double var_calcium_concentration__Km_CMDN = 0.23799999999999999; // micromolar + const double var_calcium_concentration__Bi = 1 / (1 + var_calcium_concentration__CMDN_tot * var_calcium_concentration__Km_CMDN / pow((var_calcium_concentration__Cai + var_calcium_concentration__Km_CMDN), 2)); // dimensionless + const double var_calcium_concentration__Bss = 1 / (1 + var_calcium_concentration__CMDN_tot * var_calcium_concentration__Km_CMDN / pow((var_chaste_interface__calcium_concentration__Cass + var_calcium_concentration__Km_CMDN), 2)); // dimensionless + const double var_calcium_concentration__Km_CSQN = 800; // micromolar + const double var_calcium_concentration__BJSR = 1 / (1 + var_calcium_concentration__CSQN_tot * var_calcium_concentration__Km_CSQN / pow((var_chaste_interface__calcium_concentration__CaJSR + var_calcium_concentration__Km_CSQN), 2)); // dimensionless + const double var_calcium_fluxes__Km_up = 0.5; // micromolar + const double var_calcium_fluxes__k_minus_htrpn = 3.1999999999999999e-5; // per_millisecond + const double var_calcium_fluxes__k_minus_ltrpn = 0.019599999999999999; // per_millisecond + const double var_calcium_fluxes__k_plus_htrpn = 0.0023700000000000001; // per_micromolar_millisecond + const double d_dt_chaste_interface_var_calcium_buffering__HTRPN_Ca = -var_chaste_interface__calcium_buffering__HTRPN_Ca * var_calcium_fluxes__k_minus_htrpn + (-var_chaste_interface__calcium_buffering__HTRPN_Ca + var_calcium_buffering__HTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_htrpn; // micromolar / millisecond + const double var_calcium_fluxes__k_plus_ltrpn = 0.0327; // per_micromolar_millisecond + const double d_dt_chaste_interface_var_calcium_buffering__LTRPN_Ca = -var_chaste_interface__calcium_buffering__LTRPN_Ca * var_calcium_fluxes__k_minus_ltrpn + (-var_chaste_interface__calcium_buffering__LTRPN_Ca + var_calcium_buffering__LTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_ltrpn; // micromolar / millisecond + const double var_calcium_fluxes__J_trpn = -var_chaste_interface__calcium_buffering__HTRPN_Ca * var_calcium_fluxes__k_minus_htrpn - var_chaste_interface__calcium_buffering__LTRPN_Ca * var_calcium_fluxes__k_minus_ltrpn + (-var_chaste_interface__calcium_buffering__HTRPN_Ca + var_calcium_buffering__HTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_htrpn + (-var_chaste_interface__calcium_buffering__LTRPN_Ca + var_calcium_buffering__LTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_ltrpn; // micromolar_per_millisecond + const double var_calcium_fluxes__tau_tr = 20; // millisecond + const double var_calcium_fluxes__J_tr = (-var_chaste_interface__calcium_concentration__CaJSR + var_chaste_interface__calcium_concentration__CaNSR) / var_calcium_fluxes__tau_tr; // micromolar_per_millisecond + const double var_calcium_fluxes__tau_xfer = 8; // millisecond + const double var_calcium_fluxes__J_xfer = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__Cass) / var_calcium_fluxes__tau_xfer; // micromolar_per_millisecond + const double var_calcium_fluxes__J_leak = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0]; // micromolar_per_millisecond + const double var_calcium_fluxes__J_up = pow(var_calcium_concentration__Cai, 2) * mParameters[2] / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_fluxes__Km_up, 2)); // micromolar_per_millisecond + const double var_calcium_pump_current__Km_pCa = 0.5; // micromolar + const double var_calcium_pump_current__i_pCa_max = 1; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_fast_sodium_current__C_Na3 = 1 - var_chaste_interface__fast_sodium_current__C_Na1 - var_chaste_interface__fast_sodium_current__C_Na2 - var_chaste_interface__fast_sodium_current__I1_Na - var_chaste_interface__fast_sodium_current__I2_Na - var_chaste_interface__fast_sodium_current__IC_Na2 - var_chaste_interface__fast_sodium_current__IC_Na3 - var_chaste_interface__fast_sodium_current__IF_Na - var_chaste_interface__fast_sodium_current__O_Na; // dimensionless + const double var_membrane__Acap = 0.00015339999999999999; // cm2 + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_calcium_concentration__Cai) / var_membrane__F; // millivolt + const double var_L_type_calcium_current__Kpcf = 13 - 13 * exp(-2.1025 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane__V), 2)); // per_millisecond + const double var_L_type_calcium_current__alpha = 0.40000000000000002 * (1 + 0.69999999999999996 * exp(-160 * pow((1 + 0.025000000000000001 * var_chaste_interface__membrane__V), 2)) - 0.75 * exp(-1 * pow((1 + 0.050000000000000003 * var_chaste_interface__membrane__V), 2))) * exp(1.2 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.12 * exp(1.2 + 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_L_type_calcium_current__beta = 0.050000000000000003 * exp(-0.92307692307692313 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C2 = -var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__beta + 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__beta + 4 * var_L_type_calcium_current__C1 * var_L_type_calcium_current__alpha - 3 * var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__alpha; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C3 = 3 * var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__alpha + 3 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__beta - 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__alpha - 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C4 = -var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha + 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__alpha + 4 * var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__beta + 0.0080000000000000002 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__beta - 3 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__beta - 0.002 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf + 4 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta + 0.040000000000000001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta - 1 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma - 0.01 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I1 = var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__gamma - var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb + 0.001 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha - 0.001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf + 0.01 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma - 0.040000000000000001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I2 = var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb - var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__gamma + 0.001 * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O + 0.002 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf - 0.001 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - 0.0080000000000000002 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I3 = var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__gamma - var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb + 0.001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf - 0.001 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha + 1 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma - 4 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__O = var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha + var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb - var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__gamma + 0.001 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - 4 * var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__beta - 0.001 * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O; // 1 / millisecond + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double d_dt_chaste_interface_var_calcium_fluxes__P_RyR = -0.040000000000000001 * var_chaste_interface__calcium_fluxes__P_RyR - 0.10000000000000001 * var_L_type_calcium_current__i_CaL * exp(-0.038580246913580245 * pow((-1 + 0.20000000000000001 * var_chaste_interface__membrane__V), 2)) / var_L_type_calcium_current__i_CaL_max; // 1 / millisecond + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_fast_sodium_current__alpha_Na11 = 3.802 / (0.20000000000000001 * exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__membrane__V) + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na12 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__membrane__V) + 0.23000000000000001 * exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na13 = 3.802 / (0.25 * exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__membrane__V) + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na2 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 + 0.060240963855421679 * mParameters[10] - 0.060240963855421679 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na3 = 6.9999999999999997e-7 * exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current__alpha_Na4 = 0.001 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__alpha_Na5 = 1.0526315789473684e-5 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__beta_Na11 = 0.19170000000000001 * exp(-0.12315270935960591 - 0.04926108374384236 * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current__beta_Na12 = 0.20000000000000001 * exp(0.12315270935960591 - 0.04926108374384236 * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current__beta_Na13 = 0.22 * exp(0.36945812807881773 - 0.04926108374384236 * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current__beta_Na3 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__membrane__V; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na1 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na2 = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 + var_fast_sodium_current__C_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na2 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na3 = var_fast_sodium_current__C_Na3 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na3; // 1 / millisecond + const double var_fast_sodium_current__beta_Na2 = var_fast_sodium_current__alpha_Na13 * var_fast_sodium_current__alpha_Na2 * var_fast_sodium_current__alpha_Na3 / (var_fast_sodium_current__beta_Na13 * var_fast_sodium_current__beta_Na3); // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__O_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13; // 1 / millisecond + const double var_fast_sodium_current__beta_Na4 = var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IF_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2; // 1 / millisecond + const double var_fast_sodium_current__beta_Na5 = 0.02 * var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I1_Na = var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I2_Na = var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5; // 1 / millisecond + const double var_membrane__VJSR = 1.1999999999999999e-7; // microlitre + const double var_membrane__VNSR = 2.0980000000000001e-6; // microlitre + const double var_membrane__Vmyo = 2.584e-5; // microlitre + const double d_dt_chaste_interface_var_calcium_concentration__CaNSR = (-var_calcium_fluxes__J_leak + var_calcium_fluxes__J_up) * var_membrane__Vmyo / var_membrane__VNSR - var_calcium_fluxes__J_tr * var_membrane__VJSR / var_membrane__VNSR; // micromolar / millisecond + const double var_membrane__Vss = 1.4849999999999999e-9; // microlitre + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__C_K0 = 1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K; // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__alpha_a0 = 0.022348 * exp(0.01176 * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__alpha_a1 = 0.013733 * exp(0.038198000000000003 * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__alpha_i = 0.090820999999999999 * exp(0.11695499999999999 + 0.023390999999999999 * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_a0 = 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_a1 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_i = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__membrane__V); // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__I_K = var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__alpha_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K * var_rapid_delayed_rectifier_potassium_current__beta_i; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__O_K = var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__alpha_a1 + var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K * var_rapid_delayed_rectifier_potassium_current__beta_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__alpha_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__beta_a1; // 1 / millisecond + const double var_rapid_delayed_rectifier_potassium_current__kb = 0.036777999999999998; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__kf = 0.023761000000000001; // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K1 = var_rapid_delayed_rectifier_potassium_current__C_K0 * var_rapid_delayed_rectifier_potassium_current__alpha_a0 + var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__kb - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * var_rapid_delayed_rectifier_potassium_current__beta_a0 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * var_rapid_delayed_rectifier_potassium_current__kf; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K2 = var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * var_rapid_delayed_rectifier_potassium_current__kf + var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__beta_a1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__alpha_a1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__kb; // 1 / millisecond + const double var_calcium_fluxes__J_rel = (-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; // micromolar_per_millisecond + const double d_dt_chaste_interface_var_calcium_concentration__CaJSR = (-var_calcium_fluxes__J_rel + var_calcium_fluxes__J_tr) * var_calcium_concentration__BJSR; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cass = (var_calcium_fluxes__J_rel * var_membrane__VJSR / var_membrane__Vss - var_calcium_fluxes__J_xfer * var_membrane__Vmyo / var_membrane__Vss - 0.5 * var_L_type_calcium_current__i_CaL * var_membrane__Acap * mParameters[8] / (var_membrane__F * var_membrane__Vss)) * var_calcium_concentration__Bss; // micromolar / millisecond + const double var_ryanodine_receptors__P_C1 = 1 - var_chaste_interface__ryanodine_receptors__P_C2 - var_chaste_interface__ryanodine_receptors__P_O1 - var_chaste_interface__ryanodine_receptors__P_O2; // dimensionless + const double var_ryanodine_receptors__k_minus_a = 0.071249999999999994; // per_millisecond + const double var_ryanodine_receptors__k_minus_b = 0.96499999999999997; // per_millisecond + const double var_ryanodine_receptors__k_minus_c = 0.00080000000000000004; // per_millisecond + const double var_ryanodine_receptors__k_plus_a = 0.0060749999999999997; // micromolar4_per_millisecond + const double var_ryanodine_receptors__k_plus_b = 0.0040499999999999998; // micromolar3_per_millisecond + const double var_ryanodine_receptors__k_plus_c = 0.0089999999999999993; // per_millisecond + const double d_dt_chaste_interface_var_ryanodine_receptors__P_C2 = var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_c - var_chaste_interface__ryanodine_receptors__P_C2 * var_ryanodine_receptors__k_minus_c; // 1 / millisecond + const double var_ryanodine_receptors__m = 3; // dimensionless + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O2 = -var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b + pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__m) * var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_b; // 1 / millisecond + const double var_ryanodine_receptors__n = 4; // dimensionless + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O1 = var_chaste_interface__ryanodine_receptors__P_C2 * var_ryanodine_receptors__k_minus_c + var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b - var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_minus_a - var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_c + pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__n) * var_ryanodine_receptors__P_C1 * var_ryanodine_receptors__k_plus_a - pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__m) * var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_b; // 1 / millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_transient_outward_potassium_current__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_potassium_current__i_Kto_s = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__slow_transient_outward_potassium_current__ato_s * var_slow_transient_outward_potassium_current__g_Kto_s * var_chaste_interface__slow_transient_outward_potassium_current__ito_s; // picoA_per_picoF + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_calcium_concentration__Cai_orig_deriv = (-var_calcium_fluxes__J_trpn - var_calcium_fluxes__J_up - 0.5 * (-2 * var_sodium_calcium_exchange_current__i_NaCa + var_calcium_background_current__i_Cab + var_calcium_pump_current__i_pCa) * var_membrane__Acap * mParameters[8] / (var_membrane__F * var_membrane__Vmyo) + var_calcium_fluxes__J_leak + var_calcium_fluxes__J_xfer) * var_calcium_concentration__Bi; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cai_converted = 0.001 * var_calcium_concentration__Cai_orig_deriv; // millimolar / millisecond + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 21000; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 0.88; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[5] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (mParameters[5] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double d_dt_chaste_interface_var_sodium_concentration__Nai = -(3 * var_sodium_calcium_exchange_current__i_NaCa + 3 * var_sodium_potassium_pump_current__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Nab) * var_membrane__Acap * mParameters[8] * mParameters[3] / (var_membrane__F * var_membrane__Vmyo); // micromolar / millisecond + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur = 0.16; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_potassium_concentration__Ki = -(-2 * var_sodium_potassium_pump_current__i_NaK + var_fast_transient_outward_potassium_current__i_Kto_f + var_non_inactivating_steady_state_potassium_current__i_Kss + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_slow_delayed_rectifier_potassium_current__i_Ks + var_slow_transient_outward_potassium_current__i_Kto_s + var_time_independent_potassium_current__i_K1 + var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur) * var_membrane__Acap * mParameters[8] * mParameters[3] / (var_membrane__F * var_membrane__Vmyo); // micromolar / millisecond + + rResidual[11] = rCurrentGuess[11] - rY[1] - mDt*d_dt_chaste_interface_var_calcium_concentration__Cai_converted; + rResidual[12] = rCurrentGuess[12] - rY[2] - mDt*d_dt_chaste_interface_var_calcium_concentration__Cass; + rResidual[9] = rCurrentGuess[9] - rY[3] - mDt*d_dt_chaste_interface_var_calcium_concentration__CaJSR; + rResidual[10] = rCurrentGuess[10] - rY[4] - mDt*d_dt_chaste_interface_var_calcium_concentration__CaNSR; + rResidual[13] = rCurrentGuess[13] - rY[5] - mDt*d_dt_chaste_interface_var_calcium_fluxes__P_RyR; + rResidual[8] = rCurrentGuess[8] - rY[6] - mDt*d_dt_chaste_interface_var_calcium_buffering__LTRPN_Ca; + rResidual[7] = rCurrentGuess[7] - rY[7] - mDt*d_dt_chaste_interface_var_calcium_buffering__HTRPN_Ca; + rResidual[29] = rCurrentGuess[29] - rY[8] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_O1; + rResidual[30] = rCurrentGuess[30] - rY[9] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_O2; + rResidual[28] = rCurrentGuess[28] - rY[10] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_C2; + rResidual[6] = rCurrentGuess[6] - rY[11] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__O; + rResidual[0] = rCurrentGuess[0] - rY[12] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__C2; + rResidual[1] = rCurrentGuess[1] - rY[13] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__C3; + rResidual[2] = rCurrentGuess[2] - rY[14] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__C4; + rResidual[3] = rCurrentGuess[3] - rY[15] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I1; + rResidual[4] = rCurrentGuess[4] - rY[16] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I2; + rResidual[5] = rCurrentGuess[5] - rY[17] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I3; + rResidual[31] = rCurrentGuess[31] - rY[18] - mDt*d_dt_chaste_interface_var_sodium_concentration__Nai; + rResidual[21] = rCurrentGuess[21] - rY[19] - mDt*d_dt_chaste_interface_var_fast_sodium_current__O_Na; + rResidual[14] = rCurrentGuess[14] - rY[20] - mDt*d_dt_chaste_interface_var_fast_sodium_current__C_Na1; + rResidual[15] = rCurrentGuess[15] - rY[21] - mDt*d_dt_chaste_interface_var_fast_sodium_current__C_Na2; + rResidual[16] = rCurrentGuess[16] - rY[22] - mDt*d_dt_chaste_interface_var_fast_sodium_current__I1_Na; + rResidual[17] = rCurrentGuess[17] - rY[23] - mDt*d_dt_chaste_interface_var_fast_sodium_current__I2_Na; + rResidual[20] = rCurrentGuess[20] - rY[24] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IF_Na; + rResidual[18] = rCurrentGuess[18] - rY[25] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IC_Na2; + rResidual[19] = rCurrentGuess[19] - rY[26] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IC_Na3; + rResidual[23] = rCurrentGuess[23] - rY[27] - mDt*d_dt_chaste_interface_var_potassium_concentration__Ki; + rResidual[22] = rCurrentGuess[22] - rY[36] - mDt*d_dt_chaste_interface_var_non_inactivating_steady_state_potassium_current__iKss; + rResidual[27] = rCurrentGuess[27] - rY[37] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__O_K; + rResidual[24] = rCurrentGuess[24] - rY[38] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K1; + rResidual[25] = rCurrentGuess[25] - rY[39] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K2; + rResidual[26] = rCurrentGuess[26] - rY[40] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__I_K; + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rJacobian[32][32]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + + double var_chaste_interface__L_type_calcium_current__C4 = rCurrentGuess[2]; + double var_chaste_interface__L_type_calcium_current__I2 = rCurrentGuess[4]; + double var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[6]; + double var_chaste_interface__calcium_buffering__HTRPN_Ca = rCurrentGuess[7]; + double var_chaste_interface__calcium_buffering__LTRPN_Ca = rCurrentGuess[8]; + double var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[9]; + double var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[10]; + double var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[11]; + double var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[12]; + double var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[13]; + double var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[21]; + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rCurrentGuess[22]; + double var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[23]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rCurrentGuess[27]; + double var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[28]; + double var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[29]; + double var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[30]; + double var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[31]; + + const double var_x0 = exp(-0.92307692307692313 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x1 = exp(1.2 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x2 = var_x1 * (1 + 0.69999999999999996 * exp(-160 * pow((1 + 0.025000000000000001 * var_chaste_interface__membrane__V), 2)) - 0.75 * exp(-1 * pow((1 + 0.050000000000000003 * var_chaste_interface__membrane__V), 2))) / (1 + 0.12 * var_x1); + const double var_x3 = 0.10000000000000001 * var_x0; + const double var_x4 = -1.6000000000000001 * var_x2; + const double var_x5 = 0.80000000000000004 * var_x2; + const double var_x6 = 0.15000000000000002 * var_x0; + const double var_x7 = exp(-2.1025 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane__V), 2)); + const double var_x8 = 0.026000000000000002 * var_x7; + const double var_x9 = 13 - 13 * var_x7; + const double var_x10 = 1 / (20 + var_chaste_interface__calcium_concentration__Cass); + const double var_x11 = 0.23324 * var_x10; + const double var_x12 = var_x11 * var_chaste_interface__calcium_concentration__Cass; + const double var_x13 = var_x12 * var_x9; + const double var_x14 = 0.40000000000000002 * var_x2; + const double var_x15 = 0.00093296000000000004 * var_x10 * var_x2; + const double var_x16 = var_x15 * var_chaste_interface__calcium_concentration__Cass; + const double var_x17 = 0.00040000000000000002 * var_x0; + const double var_x18 = 0.0001 * var_x0; + const double var_x19 = 0.20000000000000001 * var_x0; + const double var_x20 = var_chaste_interface__calcium_concentration__Cass / pow((1 + 0.050000000000000003 * var_chaste_interface__calcium_concentration__Cass), 2); + const double var_x21 = -var_x15 * var_chaste_interface__L_type_calcium_current__C4 + 2.3324000000000003e-6 * var_x2 * var_x20 * var_chaste_interface__L_type_calcium_current__C4; + const double var_x22 = var_x9 * var_chaste_interface__L_type_calcium_current__C4; + const double var_x23 = 0.00058310000000000002 * var_x20; + const double var_x24 = var_x22 * var_x23 - var_x11 * var_x22; + const double var_x25 = 0.013000000000000001 * var_x7; + const double var_x26 = -var_x25; + const double var_x27 = 0.00040000000000000002 * var_x2; + const double var_x28 = var_x23 * var_chaste_interface__L_type_calcium_current__O - var_x11 * var_chaste_interface__L_type_calcium_current__O; + const double var_x29 = 0.013000000000000001 - var_x25; + const double var_x30 = var_x23 * var_chaste_interface__L_type_calcium_current__I2 - var_x11 * var_chaste_interface__L_type_calcium_current__I2; + const double var_x31 = 2.3700000000000001 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x32 = 3.1999999999999999e-5 + var_x31; + const double var_x33 = 2.3700000000000001 * var_chaste_interface__calcium_buffering__HTRPN_Ca; + const double var_x34 = 32.699999999999996 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x35 = 0.019599999999999999 + var_x34; + const double var_x36 = 32.699999999999996 * var_chaste_interface__calcium_buffering__LTRPN_Ca; + const double var_x37 = 1 + 0.00125 * var_chaste_interface__calcium_concentration__CaJSR; + const double var_x38 = pow(var_x37, (-2)); + const double var_x39 = 1 / (1 + 18.75 * var_x38); + const double var_x40 = var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2; + const double var_x41 = var_x40 * mParameters[1]; + const double var_x42 = var_x41 * var_chaste_interface__calcium_fluxes__P_RyR; + const double var_x43 = -var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR; + const double var_x44 = var_x39 * var_x43; + const double var_x45 = var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; + const double var_x46 = -var_x44 * var_x45; + const double var_x47 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); + const double var_x48 = 1000000 * var_x47; + const double var_x49 = 1 / (0.25 + var_x48); + const double var_x50 = var_x49 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x51 = pow((2.4999999999999999e-7 + var_x47), (-2)); + const double var_x52 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 3); + const double var_x53 = var_x51 * var_x52; + const double var_x54 = 0.00023799999999999998 + var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x55 = 1 + 1.19e-5 / pow(var_x54, 2); + const double var_x56 = 1 / var_x55; + const double var_x57 = 0.001 * var_x56; + const double var_x58 = 1 / var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x59 = 2000000 * var_x50; + const double var_x60 = exp(-0.025317124991725771 * var_chaste_interface__membrane__V); + const double var_x61 = pow(mParameters[6], 3); + const double var_x62 = var_x60 * var_x61; + const double var_x63 = mParameters[15] / ((1 + 0.10000000000000001 * var_x60) * (1380 + mParameters[4]) * (669921875000000.0 + var_x61)); + const double var_x64 = var_x62 * var_x63; + const double var_x65 = 0.03075923579139864 * mParameters[8]; + const double var_x66 = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x67 = var_x48 * var_x49; + const double var_x68 = exp(0.013632298072467722 * var_chaste_interface__membrane__V); + const double var_x69 = var_x63 * var_x68 * pow(var_chaste_interface__sodium_concentration__Nai, 2) * mParameters[4]; + const double var_x70 = 0.23799999999999999 + var_chaste_interface__calcium_concentration__Cass; + const double var_x71 = pow(var_x70, (-2)); + const double var_x72 = 1 / (1 + 11.899999999999999 * var_x71); + const double var_x73 = (-63 + var_chaste_interface__membrane__V) * mParameters[7]; + const double var_x74 = 535.23141606043157 * var_x73 * mParameters[8]; + const double var_x75 = 80.808080808080803 * var_x42; + const double var_x76 = 80.808080808080803 * var_x43 * var_x72; + const double var_x77 = var_x45 * var_x76; + const double var_x78 = 0.04926108374384236 * var_chaste_interface__membrane__V; + const double var_x79 = 0.20000000000000001 * exp(0.12315270935960591 - var_x78); + const double var_x80 = exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__membrane__V); + const double var_x81 = 1 / (0.25 * var_x80 + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__membrane__V)); + const double var_x82 = 3.802 * var_x81; + const double var_x83 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__membrane__V; + const double var_x84 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__membrane__V) + 0.23000000000000001 * var_x80); + const double var_x85 = exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__membrane__V); + const double var_x86 = 6.9999999999999997e-7 * var_x85; + const double var_x87 = exp(0.36945812807881773 - var_x78); + const double var_x88 = 0.22 * var_x87; + const double var_x89 = 3.802 / (0.20000000000000001 * var_x80 + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_x90 = -var_x89; + const double var_x91 = 0.19170000000000001 * exp(-0.12315270935960591 - var_x78); + const double var_x92 = var_x84 + var_x91; + const double var_x93 = var_x83 + var_x89; + const double var_x94 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 + 0.060240963855421679 * mParameters[10] - 0.060240963855421679 * var_chaste_interface__membrane__V)); + const double var_x95 = 1.0526315789473684e-5 * var_x94; + const double var_x96 = 1.4e-8 * var_x85; + const double var_x97 = 0.001 * var_x94; + const double var_x98 = -var_x83; + const double var_x99 = 1.2097272727272726e-5 * var_x81 * var_x85 * var_x94 / (var_x83 * var_x87); + const double var_x100 = 1 * var_x94; + const double var_x101 = 1 / var_chaste_interface__potassium_concentration__Ki; + const double var_x102 = var_x101 * mParameters[5]; + const double var_x103 = log(var_x102); + const double var_x104 = -25.674321243523316 * var_x103 + var_chaste_interface__membrane__V; + const double var_x105 = mParameters[8] * mParameters[3]; + const double var_x106 = 0.061518471582797281 * var_x105; + const double var_x107 = var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12]; + const double var_x108 = 1 / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai); + const double var_x109 = 25.674321243523316 * var_x101; + const double var_x110 = exp(0.089599999999999999 * var_chaste_interface__membrane__V - 2.300419183419689 * var_x103); + const double var_x111 = 1 + var_x110; + const double var_x112 = var_x102 * mParameters[11] / (210 + mParameters[5]); + const double var_x113 = 1 / var_chaste_interface__sodium_concentration__Nai; + const double var_x114 = pow(var_x113, 1.5); + const double var_x115 = var_x113 * var_x114 * mParameters[5] / ((1500 + mParameters[5]) * pow((3.2860264730588296e-7 + var_x114), 2) * (1 + 0.1245 * exp(-0.0038949423064193493 * var_chaste_interface__membrane__V) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * exp(-0.038949423064193495 * var_chaste_interface__membrane__V))); + const double var_x116 = 0.022348 * exp(0.01176 * var_chaste_interface__membrane__V); + const double var_x117 = -var_x116; + const double var_x118 = 0.013733 * exp(0.038198000000000003 * var_chaste_interface__membrane__V); + const double var_x119 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__membrane__V); + const double var_x120 = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__membrane__V); + const double var_x121 = 0.090820999999999999 * exp(0.11695499999999999 + 0.023390999999999999 * var_chaste_interface__membrane__V); + const double var_x122 = 0.012149999999999999 * pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; + const double var_x123 = pow(var_chaste_interface__calcium_concentration__Cass, 3); + const double var_x124 = 0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4); + const double var_x125 = 0.0040499999999999998 * var_x123; + const double var_x126 = 1 / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki); + const double var_x127 = var_x126 * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; + + + rJacobian[0][0] = 1.0 - (mDt * (-0.050000000000000003 * var_x0 - 2.8000000000000003 * var_x2)); + rJacobian[0][1] = -(mDt * (var_x3 + var_x4)); + rJacobian[0][2] = -(mDt * (var_x4)); + rJacobian[0][3] = -(mDt * (var_x4)); + rJacobian[0][4] = -(mDt * (var_x4)); + rJacobian[0][5] = -(mDt * (var_x4)); + rJacobian[0][6] = -(mDt * (var_x4)); + rJacobian[0][7] = 0.0; + rJacobian[0][8] = 0.0; + rJacobian[0][9] = 0.0; + rJacobian[0][10] = 0.0; + rJacobian[0][11] = 0.0; + rJacobian[0][12] = 0.0; + rJacobian[0][13] = 0.0; + rJacobian[0][14] = 0.0; + rJacobian[0][15] = 0.0; + rJacobian[0][16] = 0.0; + rJacobian[0][17] = 0.0; + rJacobian[0][18] = 0.0; + rJacobian[0][19] = 0.0; + rJacobian[0][20] = 0.0; + rJacobian[0][21] = 0.0; + rJacobian[0][22] = 0.0; + rJacobian[0][23] = 0.0; + rJacobian[0][24] = 0.0; + rJacobian[0][25] = 0.0; + rJacobian[0][26] = 0.0; + rJacobian[0][27] = 0.0; + rJacobian[0][28] = 0.0; + rJacobian[0][29] = 0.0; + rJacobian[0][30] = 0.0; + rJacobian[0][31] = 0.0; + rJacobian[1][0] = -(mDt * (1.2000000000000002 * var_x2)); + rJacobian[1][1] = 1.0 - (mDt * (-var_x3 - var_x5)); + rJacobian[1][2] = -(mDt * (var_x6)); + rJacobian[1][3] = 0.0; + rJacobian[1][4] = 0.0; + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = 0.0; + rJacobian[1][8] = 0.0; + rJacobian[1][9] = 0.0; + rJacobian[1][10] = 0.0; + rJacobian[1][11] = 0.0; + rJacobian[1][12] = 0.0; + rJacobian[1][13] = 0.0; + rJacobian[1][14] = 0.0; + rJacobian[1][15] = 0.0; + rJacobian[1][16] = 0.0; + rJacobian[1][17] = 0.0; + rJacobian[1][18] = 0.0; + rJacobian[1][19] = 0.0; + rJacobian[1][20] = 0.0; + rJacobian[1][21] = 0.0; + rJacobian[1][22] = 0.0; + rJacobian[1][23] = 0.0; + rJacobian[1][24] = 0.0; + rJacobian[1][25] = 0.0; + rJacobian[1][26] = 0.0; + rJacobian[1][27] = 0.0; + rJacobian[1][28] = 0.0; + rJacobian[1][29] = 0.0; + rJacobian[1][30] = 0.0; + rJacobian[1][31] = 0.0; + rJacobian[2][0] = 0.0; + rJacobian[2][1] = -(mDt * (var_x5)); + rJacobian[2][2] = 1.0 - (mDt * (-0.026000000000000002 + var_x8 - var_x13 - var_x14 - var_x16 - var_x6)); + rJacobian[2][3] = -(mDt * (1.0000000000000002e-6 * var_x0)); + rJacobian[2][4] = -(mDt * (var_x17)); + rJacobian[2][5] = -(mDt * (var_x18)); + rJacobian[2][6] = -(mDt * (var_x19)); + rJacobian[2][7] = 0.0; + rJacobian[2][8] = 0.0; + rJacobian[2][9] = 0.0; + rJacobian[2][10] = 0.0; + rJacobian[2][11] = 0.0; + rJacobian[2][12] = -(mDt * (var_x21 + var_x24)); + rJacobian[2][13] = 0.0; + rJacobian[2][14] = 0.0; + rJacobian[2][15] = 0.0; + rJacobian[2][16] = 0.0; + rJacobian[2][17] = 0.0; + rJacobian[2][18] = 0.0; + rJacobian[2][19] = 0.0; + rJacobian[2][20] = 0.0; + rJacobian[2][21] = 0.0; + rJacobian[2][22] = 0.0; + rJacobian[2][23] = 0.0; + rJacobian[2][24] = 0.0; + rJacobian[2][25] = 0.0; + rJacobian[2][26] = 0.0; + rJacobian[2][27] = 0.0; + rJacobian[2][28] = 0.0; + rJacobian[2][29] = 0.0; + rJacobian[2][30] = 0.0; + rJacobian[2][31] = 0.0; + rJacobian[3][0] = 0.0; + rJacobian[3][1] = 0.0; + rJacobian[3][2] = -(mDt * (var_x16)); + rJacobian[3][3] = 1.0 - (mDt * (-0.0135 - var_x26 - 0.002 * var_x0 * var_x9)); + rJacobian[3][4] = 0.0; + rJacobian[3][5] = -(mDt * (var_x27)); + rJacobian[3][6] = -(mDt * (var_x12)); + rJacobian[3][7] = 0.0; + rJacobian[3][8] = 0.0; + rJacobian[3][9] = 0.0; + rJacobian[3][10] = 0.0; + rJacobian[3][11] = 0.0; + rJacobian[3][12] = -(mDt * (-var_x21 - var_x28)); + rJacobian[3][13] = 0.0; + rJacobian[3][14] = 0.0; + rJacobian[3][15] = 0.0; + rJacobian[3][16] = 0.0; + rJacobian[3][17] = 0.0; + rJacobian[3][18] = 0.0; + rJacobian[3][19] = 0.0; + rJacobian[3][20] = 0.0; + rJacobian[3][21] = 0.0; + rJacobian[3][22] = 0.0; + rJacobian[3][23] = 0.0; + rJacobian[3][24] = 0.0; + rJacobian[3][25] = 0.0; + rJacobian[3][26] = 0.0; + rJacobian[3][27] = 0.0; + rJacobian[3][28] = 0.0; + rJacobian[3][29] = 0.0; + rJacobian[3][30] = 0.0; + rJacobian[3][31] = 0.0; + rJacobian[4][0] = 0.0; + rJacobian[4][1] = 0.0; + rJacobian[4][2] = -(mDt * (0.026000000000000002 - var_x8)); + rJacobian[4][3] = 0.0; + rJacobian[4][4] = 1.0 - (mDt * (-var_x12 - var_x17 - var_x27)); + rJacobian[4][5] = -(mDt * (0.00050000000000000001)); + rJacobian[4][6] = -(mDt * (var_x29)); + rJacobian[4][7] = 0.0; + rJacobian[4][8] = 0.0; + rJacobian[4][9] = 0.0; + rJacobian[4][10] = 0.0; + rJacobian[4][11] = 0.0; + rJacobian[4][12] = -(mDt * (var_x30)); + rJacobian[4][13] = 0.0; + rJacobian[4][14] = 0.0; + rJacobian[4][15] = 0.0; + rJacobian[4][16] = 0.0; + rJacobian[4][17] = 0.0; + rJacobian[4][18] = 0.0; + rJacobian[4][19] = 0.0; + rJacobian[4][20] = 0.0; + rJacobian[4][21] = 0.0; + rJacobian[4][22] = 0.0; + rJacobian[4][23] = 0.0; + rJacobian[4][24] = 0.0; + rJacobian[4][25] = 0.0; + rJacobian[4][26] = 0.0; + rJacobian[4][27] = 0.0; + rJacobian[4][28] = 0.0; + rJacobian[4][29] = 0.0; + rJacobian[4][30] = 0.0; + rJacobian[4][31] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = -(mDt * (var_x13)); + rJacobian[5][3] = -(mDt * (var_x29)); + rJacobian[5][4] = -(mDt * (var_x12)); + rJacobian[5][5] = 1.0 - (mDt * (-0.00050000000000000001 - var_x18 - var_x27)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[5][8] = 0.0; + rJacobian[5][9] = 0.0; + rJacobian[5][10] = 0.0; + rJacobian[5][11] = 0.0; + rJacobian[5][12] = -(mDt * (-var_x24 - var_x30)); + rJacobian[5][13] = 0.0; + rJacobian[5][14] = 0.0; + rJacobian[5][15] = 0.0; + rJacobian[5][16] = 0.0; + rJacobian[5][17] = 0.0; + rJacobian[5][18] = 0.0; + rJacobian[5][19] = 0.0; + rJacobian[5][20] = 0.0; + rJacobian[5][21] = 0.0; + rJacobian[5][22] = 0.0; + rJacobian[5][23] = 0.0; + rJacobian[5][24] = 0.0; + rJacobian[5][25] = 0.0; + rJacobian[5][26] = 0.0; + rJacobian[5][27] = 0.0; + rJacobian[5][28] = 0.0; + rJacobian[5][29] = 0.0; + rJacobian[5][30] = 0.0; + rJacobian[5][31] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = -(mDt * (var_x14)); + rJacobian[6][3] = -(mDt * (0.00050000000000000001)); + rJacobian[6][4] = -(mDt * (var_x27)); + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (-0.013000000000000001 - var_x12 - var_x19 - var_x26)); + rJacobian[6][7] = 0.0; + rJacobian[6][8] = 0.0; + rJacobian[6][9] = 0.0; + rJacobian[6][10] = 0.0; + rJacobian[6][11] = 0.0; + rJacobian[6][12] = -(mDt * (var_x28)); + rJacobian[6][13] = 0.0; + rJacobian[6][14] = 0.0; + rJacobian[6][15] = 0.0; + rJacobian[6][16] = 0.0; + rJacobian[6][17] = 0.0; + rJacobian[6][18] = 0.0; + rJacobian[6][19] = 0.0; + rJacobian[6][20] = 0.0; + rJacobian[6][21] = 0.0; + rJacobian[6][22] = 0.0; + rJacobian[6][23] = 0.0; + rJacobian[6][24] = 0.0; + rJacobian[6][25] = 0.0; + rJacobian[6][26] = 0.0; + rJacobian[6][27] = 0.0; + rJacobian[6][28] = 0.0; + rJacobian[6][29] = 0.0; + rJacobian[6][30] = 0.0; + rJacobian[6][31] = 0.0; + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = 0.0; + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (-var_x32)); + rJacobian[7][8] = 0.0; + rJacobian[7][9] = 0.0; + rJacobian[7][10] = 0.0; + rJacobian[7][11] = -(mDt * (331.80000000000001 - var_x33)); + rJacobian[7][12] = 0.0; + rJacobian[7][13] = 0.0; + rJacobian[7][14] = 0.0; + rJacobian[7][15] = 0.0; + rJacobian[7][16] = 0.0; + rJacobian[7][17] = 0.0; + rJacobian[7][18] = 0.0; + rJacobian[7][19] = 0.0; + rJacobian[7][20] = 0.0; + rJacobian[7][21] = 0.0; + rJacobian[7][22] = 0.0; + rJacobian[7][23] = 0.0; + rJacobian[7][24] = 0.0; + rJacobian[7][25] = 0.0; + rJacobian[7][26] = 0.0; + rJacobian[7][27] = 0.0; + rJacobian[7][28] = 0.0; + rJacobian[7][29] = 0.0; + rJacobian[7][30] = 0.0; + rJacobian[7][31] = 0.0; + rJacobian[8][0] = 0.0; + rJacobian[8][1] = 0.0; + rJacobian[8][2] = 0.0; + rJacobian[8][3] = 0.0; + rJacobian[8][4] = 0.0; + rJacobian[8][5] = 0.0; + rJacobian[8][6] = 0.0; + rJacobian[8][7] = 0.0; + rJacobian[8][8] = 1.0 - (mDt * (-var_x35)); + rJacobian[8][9] = 0.0; + rJacobian[8][10] = 0.0; + rJacobian[8][11] = -(mDt * (2289 - var_x36)); + rJacobian[8][12] = 0.0; + rJacobian[8][13] = 0.0; + rJacobian[8][14] = 0.0; + rJacobian[8][15] = 0.0; + rJacobian[8][16] = 0.0; + rJacobian[8][17] = 0.0; + rJacobian[8][18] = 0.0; + rJacobian[8][19] = 0.0; + rJacobian[8][20] = 0.0; + rJacobian[8][21] = 0.0; + rJacobian[8][22] = 0.0; + rJacobian[8][23] = 0.0; + rJacobian[8][24] = 0.0; + rJacobian[8][25] = 0.0; + rJacobian[8][26] = 0.0; + rJacobian[8][27] = 0.0; + rJacobian[8][28] = 0.0; + rJacobian[8][29] = 0.0; + rJacobian[8][30] = 0.0; + rJacobian[8][31] = 0.0; + rJacobian[9][0] = 0.0; + rJacobian[9][1] = 0.0; + rJacobian[9][2] = 0.0; + rJacobian[9][3] = 0.0; + rJacobian[9][4] = 0.0; + rJacobian[9][5] = 0.0; + rJacobian[9][6] = 0.0; + rJacobian[9][7] = 0.0; + rJacobian[9][8] = 0.0; + rJacobian[9][9] = 1.0 - (mDt * (var_x39 * (-0.050000000000000003 - var_x42) + 0.00013333333333333334 * (0.050000000000000003 * var_chaste_interface__calcium_concentration__CaNSR - 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaJSR - var_x42 * var_x43) / (pow(var_x37, 3) * pow((0.053333333333333337 + var_x38), 2)))); + rJacobian[9][10] = -(mDt * (0.050000000000000003 * var_x39)); + rJacobian[9][11] = 0.0; + rJacobian[9][12] = -(mDt * (var_x39 * var_x42)); + rJacobian[9][13] = -(mDt * (-var_x41 * var_x44)); + rJacobian[9][14] = 0.0; + rJacobian[9][15] = 0.0; + rJacobian[9][16] = 0.0; + rJacobian[9][17] = 0.0; + rJacobian[9][18] = 0.0; + rJacobian[9][19] = 0.0; + rJacobian[9][20] = 0.0; + rJacobian[9][21] = 0.0; + rJacobian[9][22] = 0.0; + rJacobian[9][23] = 0.0; + rJacobian[9][24] = 0.0; + rJacobian[9][25] = 0.0; + rJacobian[9][26] = 0.0; + rJacobian[9][27] = 0.0; + rJacobian[9][28] = 0.0; + rJacobian[9][29] = -(mDt * (var_x46)); + rJacobian[9][30] = -(mDt * (var_x46)); + rJacobian[9][31] = 0.0; + rJacobian[10][0] = 0.0; + rJacobian[10][1] = 0.0; + rJacobian[10][2] = 0.0; + rJacobian[10][3] = 0.0; + rJacobian[10][4] = 0.0; + rJacobian[10][5] = 0.0; + rJacobian[10][6] = 0.0; + rJacobian[10][7] = 0.0; + rJacobian[10][8] = 0.0; + rJacobian[10][9] = -(mDt * (0.0028598665395614866)); + rJacobian[10][10] = 1.0 - (mDt * (-0.0028598665395614866 - 12.316491897044804 * mParameters[0])); + rJacobian[10][11] = -(mDt * (12316.491897044803 * mParameters[0] + 24632983.794089608 * var_x50 * mParameters[2] - 24.632983794089608 * var_x53 * mParameters[2])); + rJacobian[10][12] = 0.0; + rJacobian[10][13] = 0.0; + rJacobian[10][14] = 0.0; + rJacobian[10][15] = 0.0; + rJacobian[10][16] = 0.0; + rJacobian[10][17] = 0.0; + rJacobian[10][18] = 0.0; + rJacobian[10][19] = 0.0; + rJacobian[10][20] = 0.0; + rJacobian[10][21] = 0.0; + rJacobian[10][22] = 0.0; + rJacobian[10][23] = 0.0; + rJacobian[10][24] = 0.0; + rJacobian[10][25] = 0.0; + rJacobian[10][26] = 0.0; + rJacobian[10][27] = 0.0; + rJacobian[10][28] = 0.0; + rJacobian[10][29] = 0.0; + rJacobian[10][30] = 0.0; + rJacobian[10][31] = 0.0; + rJacobian[11][0] = 0.0; + rJacobian[11][1] = 0.0; + rJacobian[11][2] = 0.0; + rJacobian[11][3] = 0.0; + rJacobian[11][4] = 0.0; + rJacobian[11][5] = 0.0; + rJacobian[11][6] = 0.0; + rJacobian[11][7] = -(mDt * (var_x32 * var_x57)); + rJacobian[11][8] = -(mDt * (var_x35 * var_x57)); + rJacobian[11][9] = 0.0; + rJacobian[11][10] = -(mDt * (var_x57 * mParameters[0])); + rJacobian[11][11] = 1.0 - (mDt * (var_x57 * (-2745.8000000000002 + var_x33 + var_x36 - 1000 * mParameters[0] - var_x59 * mParameters[2] - var_x65 * (var_x59 + 0.0047112379481865285 * var_x58 + 2000 * var_x64 - 2 * var_x53) + 2 * var_x51 * var_x52 * mParameters[2]) + 2.3800000000000001e-8 * (0.125 * var_chaste_interface__calcium_concentration__Cass + 0.019599999999999999 * var_chaste_interface__calcium_buffering__LTRPN_Ca + 3.1999999999999999e-5 * var_chaste_interface__calcium_buffering__HTRPN_Ca - 125 * var_chaste_interface__calcium_concentration__Cai_converted + (-var_x66 + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0] - var_x31 * (140 - var_chaste_interface__calcium_buffering__HTRPN_Ca) - var_x34 * (70 - var_chaste_interface__calcium_buffering__LTRPN_Ca) - var_x65 * (var_x67 + 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(0.001 * var_x58 * mParameters[4]) - 2 * var_x63 * (-var_x62 * var_x66 + var_x68 * pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4])) - var_x67 * mParameters[2]) / (pow(var_x54, 3) * pow(var_x55, 2)))); + rJacobian[11][12] = -(mDt * (0.000125 * var_x56)); + rJacobian[11][13] = 0.0; + rJacobian[11][14] = 0.0; + rJacobian[11][15] = 0.0; + rJacobian[11][16] = 0.0; + rJacobian[11][17] = 0.0; + rJacobian[11][18] = 0.0; + rJacobian[11][19] = 0.0; + rJacobian[11][20] = 0.0; + rJacobian[11][21] = 0.0; + rJacobian[11][22] = 0.0; + rJacobian[11][23] = 0.0; + rJacobian[11][24] = 0.0; + rJacobian[11][25] = 0.0; + rJacobian[11][26] = 0.0; + rJacobian[11][27] = 0.0; + rJacobian[11][28] = 0.0; + rJacobian[11][29] = 0.0; + rJacobian[11][30] = 0.0; + rJacobian[11][31] = -(mDt * (0.00018455541474839184 * var_x56 * var_x69 * mParameters[8])); + rJacobian[12][0] = 0.0; + rJacobian[12][1] = 0.0; + rJacobian[12][2] = 0.0; + rJacobian[12][3] = 0.0; + rJacobian[12][4] = 0.0; + rJacobian[12][5] = 0.0; + rJacobian[12][6] = -(mDt * (-var_x72 * var_x74)); + rJacobian[12][7] = 0.0; + rJacobian[12][8] = 0.0; + rJacobian[12][9] = -(mDt * (var_x72 * var_x75)); + rJacobian[12][10] = 0.0; + rJacobian[12][11] = -(mDt * (2175084.1750841751 * var_x72)); + rJacobian[12][12] = 1.0 - (mDt * (var_x72 * (-2175.0841750841751 - var_x75) + 0.16806722689075632 * (2175084.1750841751 * var_chaste_interface__calcium_concentration__Cai_converted - 2175.0841750841751 * var_chaste_interface__calcium_concentration__Cass - var_x74 * var_chaste_interface__L_type_calcium_current__O + 80.808080808080803 * var_x40 * var_x43 * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]) / (pow(var_x70, 3) * pow((0.084033613445378158 + var_x71), 2)))); + rJacobian[12][13] = -(mDt * (var_x41 * var_x76)); + rJacobian[12][14] = 0.0; + rJacobian[12][15] = 0.0; + rJacobian[12][16] = 0.0; + rJacobian[12][17] = 0.0; + rJacobian[12][18] = 0.0; + rJacobian[12][19] = 0.0; + rJacobian[12][20] = 0.0; + rJacobian[12][21] = 0.0; + rJacobian[12][22] = 0.0; + rJacobian[12][23] = 0.0; + rJacobian[12][24] = 0.0; + rJacobian[12][25] = 0.0; + rJacobian[12][26] = 0.0; + rJacobian[12][27] = 0.0; + rJacobian[12][28] = 0.0; + rJacobian[12][29] = -(mDt * (var_x77)); + rJacobian[12][30] = -(mDt * (var_x77)); + rJacobian[12][31] = 0.0; + rJacobian[13][0] = 0.0; + rJacobian[13][1] = 0.0; + rJacobian[13][2] = 0.0; + rJacobian[13][3] = 0.0; + rJacobian[13][4] = 0.0; + rJacobian[13][5] = 0.0; + rJacobian[13][6] = -(mDt * (-0.014285714285714287 * var_x73 * exp(-0.038580246913580245 * pow((-1 + 0.20000000000000001 * var_chaste_interface__membrane__V), 2)))); + rJacobian[13][7] = 0.0; + rJacobian[13][8] = 0.0; + rJacobian[13][9] = 0.0; + rJacobian[13][10] = 0.0; + rJacobian[13][11] = 0.0; + rJacobian[13][12] = 0.0; + rJacobian[13][13] = 1.0 - (mDt * (-0.040000000000000001)); + rJacobian[13][14] = 0.0; + rJacobian[13][15] = 0.0; + rJacobian[13][16] = 0.0; + rJacobian[13][17] = 0.0; + rJacobian[13][18] = 0.0; + rJacobian[13][19] = 0.0; + rJacobian[13][20] = 0.0; + rJacobian[13][21] = 0.0; + rJacobian[13][22] = 0.0; + rJacobian[13][23] = 0.0; + rJacobian[13][24] = 0.0; + rJacobian[13][25] = 0.0; + rJacobian[13][26] = 0.0; + rJacobian[13][27] = 0.0; + rJacobian[13][28] = 0.0; + rJacobian[13][29] = 0.0; + rJacobian[13][30] = 0.0; + rJacobian[13][31] = 0.0; + rJacobian[14][0] = 0.0; + rJacobian[14][1] = 0.0; + rJacobian[14][2] = 0.0; + rJacobian[14][3] = 0.0; + rJacobian[14][4] = 0.0; + rJacobian[14][5] = 0.0; + rJacobian[14][6] = 0.0; + rJacobian[14][7] = 0.0; + rJacobian[14][8] = 0.0; + rJacobian[14][9] = 0.0; + rJacobian[14][10] = 0.0; + rJacobian[14][11] = 0.0; + rJacobian[14][12] = 0.0; + rJacobian[14][13] = 0.0; + rJacobian[14][14] = 1.0 - (mDt * (-var_x79 - var_x82 - var_x83)); + rJacobian[14][15] = -(mDt * (var_x84)); + rJacobian[14][16] = 0.0; + rJacobian[14][17] = 0.0; + rJacobian[14][18] = 0.0; + rJacobian[14][19] = 0.0; + rJacobian[14][20] = -(mDt * (var_x86)); + rJacobian[14][21] = -(mDt * (var_x88)); + rJacobian[14][22] = 0.0; + rJacobian[14][23] = 0.0; + rJacobian[14][24] = 0.0; + rJacobian[14][25] = 0.0; + rJacobian[14][26] = 0.0; + rJacobian[14][27] = 0.0; + rJacobian[14][28] = 0.0; + rJacobian[14][29] = 0.0; + rJacobian[14][30] = 0.0; + rJacobian[14][31] = 0.0; + rJacobian[15][0] = 0.0; + rJacobian[15][1] = 0.0; + rJacobian[15][2] = 0.0; + rJacobian[15][3] = 0.0; + rJacobian[15][4] = 0.0; + rJacobian[15][5] = 0.0; + rJacobian[15][6] = 0.0; + rJacobian[15][7] = 0.0; + rJacobian[15][8] = 0.0; + rJacobian[15][9] = 0.0; + rJacobian[15][10] = 0.0; + rJacobian[15][11] = 0.0; + rJacobian[15][12] = 0.0; + rJacobian[15][13] = 0.0; + rJacobian[15][14] = -(mDt * (var_x79 + var_x90)); + rJacobian[15][15] = 1.0 - (mDt * (-var_x92 - var_x93)); + rJacobian[15][16] = -(mDt * (var_x90)); + rJacobian[15][17] = -(mDt * (var_x90)); + rJacobian[15][18] = -(mDt * (var_x86 + var_x90)); + rJacobian[15][19] = -(mDt * (var_x90)); + rJacobian[15][20] = -(mDt * (var_x90)); + rJacobian[15][21] = -(mDt * (var_x90)); + rJacobian[15][22] = 0.0; + rJacobian[15][23] = 0.0; + rJacobian[15][24] = 0.0; + rJacobian[15][25] = 0.0; + rJacobian[15][26] = 0.0; + rJacobian[15][27] = 0.0; + rJacobian[15][28] = 0.0; + rJacobian[15][29] = 0.0; + rJacobian[15][30] = 0.0; + rJacobian[15][31] = 0.0; + rJacobian[16][0] = 0.0; + rJacobian[16][1] = 0.0; + rJacobian[16][2] = 0.0; + rJacobian[16][3] = 0.0; + rJacobian[16][4] = 0.0; + rJacobian[16][5] = 0.0; + rJacobian[16][6] = 0.0; + rJacobian[16][7] = 0.0; + rJacobian[16][8] = 0.0; + rJacobian[16][9] = 0.0; + rJacobian[16][10] = 0.0; + rJacobian[16][11] = 0.0; + rJacobian[16][12] = 0.0; + rJacobian[16][13] = 0.0; + rJacobian[16][14] = 0.0; + rJacobian[16][15] = 0.0; + rJacobian[16][16] = 1.0 - (mDt * (-var_x86 - var_x95)); + rJacobian[16][17] = -(mDt * (var_x96)); + rJacobian[16][18] = 0.0; + rJacobian[16][19] = 0.0; + rJacobian[16][20] = -(mDt * (var_x97)); + rJacobian[16][21] = 0.0; + rJacobian[16][22] = 0.0; + rJacobian[16][23] = 0.0; + rJacobian[16][24] = 0.0; + rJacobian[16][25] = 0.0; + rJacobian[16][26] = 0.0; + rJacobian[16][27] = 0.0; + rJacobian[16][28] = 0.0; + rJacobian[16][29] = 0.0; + rJacobian[16][30] = 0.0; + rJacobian[16][31] = 0.0; + rJacobian[17][0] = 0.0; + rJacobian[17][1] = 0.0; + rJacobian[17][2] = 0.0; + rJacobian[17][3] = 0.0; + rJacobian[17][4] = 0.0; + rJacobian[17][5] = 0.0; + rJacobian[17][6] = 0.0; + rJacobian[17][7] = 0.0; + rJacobian[17][8] = 0.0; + rJacobian[17][9] = 0.0; + rJacobian[17][10] = 0.0; + rJacobian[17][11] = 0.0; + rJacobian[17][12] = 0.0; + rJacobian[17][13] = 0.0; + rJacobian[17][14] = 0.0; + rJacobian[17][15] = 0.0; + rJacobian[17][16] = -(mDt * (var_x95)); + rJacobian[17][17] = 1.0 - (mDt * (-var_x96)); + rJacobian[17][18] = 0.0; + rJacobian[17][19] = 0.0; + rJacobian[17][20] = 0.0; + rJacobian[17][21] = 0.0; + rJacobian[17][22] = 0.0; + rJacobian[17][23] = 0.0; + rJacobian[17][24] = 0.0; + rJacobian[17][25] = 0.0; + rJacobian[17][26] = 0.0; + rJacobian[17][27] = 0.0; + rJacobian[17][28] = 0.0; + rJacobian[17][29] = 0.0; + rJacobian[17][30] = 0.0; + rJacobian[17][31] = 0.0; + rJacobian[18][0] = 0.0; + rJacobian[18][1] = 0.0; + rJacobian[18][2] = 0.0; + rJacobian[18][3] = 0.0; + rJacobian[18][4] = 0.0; + rJacobian[18][5] = 0.0; + rJacobian[18][6] = 0.0; + rJacobian[18][7] = 0.0; + rJacobian[18][8] = 0.0; + rJacobian[18][9] = 0.0; + rJacobian[18][10] = 0.0; + rJacobian[18][11] = 0.0; + rJacobian[18][12] = 0.0; + rJacobian[18][13] = 0.0; + rJacobian[18][14] = 0.0; + rJacobian[18][15] = -(mDt * (var_x83)); + rJacobian[18][16] = 0.0; + rJacobian[18][17] = 0.0; + rJacobian[18][18] = 1.0 - (mDt * (-var_x86 - var_x92)); + rJacobian[18][19] = -(mDt * (var_x89)); + rJacobian[18][20] = -(mDt * (var_x79)); + rJacobian[18][21] = 0.0; + rJacobian[18][22] = 0.0; + rJacobian[18][23] = 0.0; + rJacobian[18][24] = 0.0; + rJacobian[18][25] = 0.0; + rJacobian[18][26] = 0.0; + rJacobian[18][27] = 0.0; + rJacobian[18][28] = 0.0; + rJacobian[18][29] = 0.0; + rJacobian[18][30] = 0.0; + rJacobian[18][31] = 0.0; + rJacobian[19][0] = 0.0; + rJacobian[19][1] = 0.0; + rJacobian[19][2] = 0.0; + rJacobian[19][3] = 0.0; + rJacobian[19][4] = 0.0; + rJacobian[19][5] = 0.0; + rJacobian[19][6] = 0.0; + rJacobian[19][7] = 0.0; + rJacobian[19][8] = 0.0; + rJacobian[19][9] = 0.0; + rJacobian[19][10] = 0.0; + rJacobian[19][11] = 0.0; + rJacobian[19][12] = 0.0; + rJacobian[19][13] = 0.0; + rJacobian[19][14] = -(mDt * (var_x98)); + rJacobian[19][15] = -(mDt * (var_x98)); + rJacobian[19][16] = -(mDt * (var_x98)); + rJacobian[19][17] = -(mDt * (var_x98)); + rJacobian[19][18] = -(mDt * (var_x91 - var_x83)); + rJacobian[19][19] = 1.0 - (mDt * (-var_x86 - var_x93)); + rJacobian[19][20] = -(mDt * (var_x98)); + rJacobian[19][21] = -(mDt * (var_x98)); + rJacobian[19][22] = 0.0; + rJacobian[19][23] = 0.0; + rJacobian[19][24] = 0.0; + rJacobian[19][25] = 0.0; + rJacobian[19][26] = 0.0; + rJacobian[19][27] = 0.0; + rJacobian[19][28] = 0.0; + rJacobian[19][29] = 0.0; + rJacobian[19][30] = 0.0; + rJacobian[19][31] = 0.0; + rJacobian[20][0] = 0.0; + rJacobian[20][1] = 0.0; + rJacobian[20][2] = 0.0; + rJacobian[20][3] = 0.0; + rJacobian[20][4] = 0.0; + rJacobian[20][5] = 0.0; + rJacobian[20][6] = 0.0; + rJacobian[20][7] = 0.0; + rJacobian[20][8] = 0.0; + rJacobian[20][9] = 0.0; + rJacobian[20][10] = 0.0; + rJacobian[20][11] = 0.0; + rJacobian[20][12] = 0.0; + rJacobian[20][13] = 0.0; + rJacobian[20][14] = -(mDt * (var_x83)); + rJacobian[20][15] = 0.0; + rJacobian[20][16] = -(mDt * (var_x86)); + rJacobian[20][17] = 0.0; + rJacobian[20][18] = -(mDt * (var_x84)); + rJacobian[20][19] = 0.0; + rJacobian[20][20] = 1.0 - (mDt * (-var_x79 - var_x86 - var_x97 - var_x99)); + rJacobian[20][21] = -(mDt * (var_x100)); + rJacobian[20][22] = 0.0; + rJacobian[20][23] = 0.0; + rJacobian[20][24] = 0.0; + rJacobian[20][25] = 0.0; + rJacobian[20][26] = 0.0; + rJacobian[20][27] = 0.0; + rJacobian[20][28] = 0.0; + rJacobian[20][29] = 0.0; + rJacobian[20][30] = 0.0; + rJacobian[20][31] = 0.0; + rJacobian[21][0] = 0.0; + rJacobian[21][1] = 0.0; + rJacobian[21][2] = 0.0; + rJacobian[21][3] = 0.0; + rJacobian[21][4] = 0.0; + rJacobian[21][5] = 0.0; + rJacobian[21][6] = 0.0; + rJacobian[21][7] = 0.0; + rJacobian[21][8] = 0.0; + rJacobian[21][9] = 0.0; + rJacobian[21][10] = 0.0; + rJacobian[21][11] = 0.0; + rJacobian[21][12] = 0.0; + rJacobian[21][13] = 0.0; + rJacobian[21][14] = -(mDt * (var_x82)); + rJacobian[21][15] = 0.0; + rJacobian[21][16] = 0.0; + rJacobian[21][17] = 0.0; + rJacobian[21][18] = 0.0; + rJacobian[21][19] = 0.0; + rJacobian[21][20] = -(mDt * (var_x99)); + rJacobian[21][21] = 1.0 - (mDt * (-var_x100 - var_x88)); + rJacobian[21][22] = 0.0; + rJacobian[21][23] = 0.0; + rJacobian[21][24] = 0.0; + rJacobian[21][25] = 0.0; + rJacobian[21][26] = 0.0; + rJacobian[21][27] = 0.0; + rJacobian[21][28] = 0.0; + rJacobian[21][29] = 0.0; + rJacobian[21][30] = 0.0; + rJacobian[21][31] = 0.0; + rJacobian[22][0] = 0.0; + rJacobian[22][1] = 0.0; + rJacobian[22][2] = 0.0; + rJacobian[22][3] = 0.0; + rJacobian[22][4] = 0.0; + rJacobian[22][5] = 0.0; + rJacobian[22][6] = 0.0; + rJacobian[22][7] = 0.0; + rJacobian[22][8] = 0.0; + rJacobian[22][9] = 0.0; + rJacobian[22][10] = 0.0; + rJacobian[22][11] = 0.0; + rJacobian[22][12] = 0.0; + rJacobian[22][13] = 0.0; + rJacobian[22][14] = 0.0; + rJacobian[22][15] = 0.0; + rJacobian[22][16] = 0.0; + rJacobian[22][17] = 0.0; + rJacobian[22][18] = 0.0; + rJacobian[22][19] = 0.0; + rJacobian[22][20] = 0.0; + rJacobian[22][21] = 0.0; + rJacobian[22][22] = 1.0; + rJacobian[22][23] = 0.0; + rJacobian[22][24] = 0.0; + rJacobian[22][25] = 0.0; + rJacobian[22][26] = 0.0; + rJacobian[22][27] = 0.0; + rJacobian[22][28] = 0.0; + rJacobian[22][29] = 0.0; + rJacobian[22][30] = 0.0; + rJacobian[22][31] = 0.0; + rJacobian[23][0] = 0.0; + rJacobian[23][1] = 0.0; + rJacobian[23][2] = 0.0; + rJacobian[23][3] = 0.0; + rJacobian[23][4] = 0.0; + rJacobian[23][5] = 0.0; + rJacobian[23][6] = 0.0; + rJacobian[23][7] = 0.0; + rJacobian[23][8] = 0.0; + rJacobian[23][9] = 0.0; + rJacobian[23][10] = 0.0; + rJacobian[23][11] = 0.0; + rJacobian[23][12] = 0.0; + rJacobian[23][13] = 0.0; + rJacobian[23][14] = 0.0; + rJacobian[23][15] = 0.0; + rJacobian[23][16] = 0.0; + rJacobian[23][17] = 0.0; + rJacobian[23][18] = 0.0; + rJacobian[23][19] = 0.0; + rJacobian[23][20] = 0.0; + rJacobian[23][21] = 0.0; + rJacobian[23][22] = -(mDt * (-var_x104 * var_x106 * var_x107)); + rJacobian[23][23] = 1.0 - (mDt * (-var_x106 * (25.674321243523316 * var_x112 / var_x111 + var_x107 * var_x109 * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss + var_x109 * pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * mParameters[14] + 4.1078913989637309 * var_x101 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur + 25.674321243523316 * var_x108 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13] + var_x109 * pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f - 2.300419183419689 * var_x104 * var_x110 * var_x112 / pow(var_x111, 2)))); + rJacobian[23][24] = 0.0; + rJacobian[23][25] = 0.0; + rJacobian[23][26] = 0.0; + rJacobian[23][27] = -(mDt * (-var_x106 * (-25.674321243523316 * log(var_x108 * (1 * mParameters[5] + 0.020408163265306124 * mParameters[6])) + var_chaste_interface__membrane__V) * mParameters[13])); + rJacobian[23][28] = 0.0; + rJacobian[23][29] = 0.0; + rJacobian[23][30] = 0.0; + rJacobian[23][31] = -(mDt * (-var_x106 * (-8.6751098888753097e-7 * var_x115 + 0.52396573966374116 * var_x108 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]))); + rJacobian[24][0] = 0.0; + rJacobian[24][1] = 0.0; + rJacobian[24][2] = 0.0; + rJacobian[24][3] = 0.0; + rJacobian[24][4] = 0.0; + rJacobian[24][5] = 0.0; + rJacobian[24][6] = 0.0; + rJacobian[24][7] = 0.0; + rJacobian[24][8] = 0.0; + rJacobian[24][9] = 0.0; + rJacobian[24][10] = 0.0; + rJacobian[24][11] = 0.0; + rJacobian[24][12] = 0.0; + rJacobian[24][13] = 0.0; + rJacobian[24][14] = 0.0; + rJacobian[24][15] = 0.0; + rJacobian[24][16] = 0.0; + rJacobian[24][17] = 0.0; + rJacobian[24][18] = 0.0; + rJacobian[24][19] = 0.0; + rJacobian[24][20] = 0.0; + rJacobian[24][21] = 0.0; + rJacobian[24][22] = 0.0; + rJacobian[24][23] = 0.0; + rJacobian[24][24] = 1.0 - (mDt * (-0.023761000000000001 - var_x116 - 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__membrane__V))); + rJacobian[24][25] = -(mDt * (0.036777999999999998 - var_x116)); + rJacobian[24][26] = -(mDt * (var_x117)); + rJacobian[24][27] = -(mDt * (var_x117)); + rJacobian[24][28] = 0.0; + rJacobian[24][29] = 0.0; + rJacobian[24][30] = 0.0; + rJacobian[24][31] = 0.0; + rJacobian[25][0] = 0.0; + rJacobian[25][1] = 0.0; + rJacobian[25][2] = 0.0; + rJacobian[25][3] = 0.0; + rJacobian[25][4] = 0.0; + rJacobian[25][5] = 0.0; + rJacobian[25][6] = 0.0; + rJacobian[25][7] = 0.0; + rJacobian[25][8] = 0.0; + rJacobian[25][9] = 0.0; + rJacobian[25][10] = 0.0; + rJacobian[25][11] = 0.0; + rJacobian[25][12] = 0.0; + rJacobian[25][13] = 0.0; + rJacobian[25][14] = 0.0; + rJacobian[25][15] = 0.0; + rJacobian[25][16] = 0.0; + rJacobian[25][17] = 0.0; + rJacobian[25][18] = 0.0; + rJacobian[25][19] = 0.0; + rJacobian[25][20] = 0.0; + rJacobian[25][21] = 0.0; + rJacobian[25][22] = 0.0; + rJacobian[25][23] = 0.0; + rJacobian[25][24] = -(mDt * (0.023761000000000001)); + rJacobian[25][25] = 1.0 - (mDt * (-0.036777999999999998 - var_x118)); + rJacobian[25][26] = 0.0; + rJacobian[25][27] = -(mDt * (var_x119)); + rJacobian[25][28] = 0.0; + rJacobian[25][29] = 0.0; + rJacobian[25][30] = 0.0; + rJacobian[25][31] = 0.0; + rJacobian[26][0] = 0.0; + rJacobian[26][1] = 0.0; + rJacobian[26][2] = 0.0; + rJacobian[26][3] = 0.0; + rJacobian[26][4] = 0.0; + rJacobian[26][5] = 0.0; + rJacobian[26][6] = 0.0; + rJacobian[26][7] = 0.0; + rJacobian[26][8] = 0.0; + rJacobian[26][9] = 0.0; + rJacobian[26][10] = 0.0; + rJacobian[26][11] = 0.0; + rJacobian[26][12] = 0.0; + rJacobian[26][13] = 0.0; + rJacobian[26][14] = 0.0; + rJacobian[26][15] = 0.0; + rJacobian[26][16] = 0.0; + rJacobian[26][17] = 0.0; + rJacobian[26][18] = 0.0; + rJacobian[26][19] = 0.0; + rJacobian[26][20] = 0.0; + rJacobian[26][21] = 0.0; + rJacobian[26][22] = 0.0; + rJacobian[26][23] = 0.0; + rJacobian[26][24] = 0.0; + rJacobian[26][25] = 0.0; + rJacobian[26][26] = 1.0 - (mDt * (-var_x120)); + rJacobian[26][27] = -(mDt * (var_x121)); + rJacobian[26][28] = 0.0; + rJacobian[26][29] = 0.0; + rJacobian[26][30] = 0.0; + rJacobian[26][31] = 0.0; + rJacobian[27][0] = 0.0; + rJacobian[27][1] = 0.0; + rJacobian[27][2] = 0.0; + rJacobian[27][3] = 0.0; + rJacobian[27][4] = 0.0; + rJacobian[27][5] = 0.0; + rJacobian[27][6] = 0.0; + rJacobian[27][7] = 0.0; + rJacobian[27][8] = 0.0; + rJacobian[27][9] = 0.0; + rJacobian[27][10] = 0.0; + rJacobian[27][11] = 0.0; + rJacobian[27][12] = 0.0; + rJacobian[27][13] = 0.0; + rJacobian[27][14] = 0.0; + rJacobian[27][15] = 0.0; + rJacobian[27][16] = 0.0; + rJacobian[27][17] = 0.0; + rJacobian[27][18] = 0.0; + rJacobian[27][19] = 0.0; + rJacobian[27][20] = 0.0; + rJacobian[27][21] = 0.0; + rJacobian[27][22] = 0.0; + rJacobian[27][23] = 0.0; + rJacobian[27][24] = 0.0; + rJacobian[27][25] = -(mDt * (var_x118)); + rJacobian[27][26] = -(mDt * (var_x120)); + rJacobian[27][27] = 1.0 - (mDt * (-var_x119 - var_x121)); + rJacobian[27][28] = 0.0; + rJacobian[27][29] = 0.0; + rJacobian[27][30] = 0.0; + rJacobian[27][31] = 0.0; + rJacobian[28][0] = 0.0; + rJacobian[28][1] = 0.0; + rJacobian[28][2] = 0.0; + rJacobian[28][3] = 0.0; + rJacobian[28][4] = 0.0; + rJacobian[28][5] = 0.0; + rJacobian[28][6] = 0.0; + rJacobian[28][7] = 0.0; + rJacobian[28][8] = 0.0; + rJacobian[28][9] = 0.0; + rJacobian[28][10] = 0.0; + rJacobian[28][11] = 0.0; + rJacobian[28][12] = 0.0; + rJacobian[28][13] = 0.0; + rJacobian[28][14] = 0.0; + rJacobian[28][15] = 0.0; + rJacobian[28][16] = 0.0; + rJacobian[28][17] = 0.0; + rJacobian[28][18] = 0.0; + rJacobian[28][19] = 0.0; + rJacobian[28][20] = 0.0; + rJacobian[28][21] = 0.0; + rJacobian[28][22] = 0.0; + rJacobian[28][23] = 0.0; + rJacobian[28][24] = 0.0; + rJacobian[28][25] = 0.0; + rJacobian[28][26] = 0.0; + rJacobian[28][27] = 0.0; + rJacobian[28][28] = 1.0 - (mDt * (-0.00080000000000000004)); + rJacobian[28][29] = -(mDt * (0.0089999999999999993)); + rJacobian[28][30] = 0.0; + rJacobian[28][31] = 0.0; + rJacobian[29][0] = 0.0; + rJacobian[29][1] = 0.0; + rJacobian[29][2] = 0.0; + rJacobian[29][3] = 0.0; + rJacobian[29][4] = 0.0; + rJacobian[29][5] = 0.0; + rJacobian[29][6] = 0.0; + rJacobian[29][7] = 0.0; + rJacobian[29][8] = 0.0; + rJacobian[29][9] = 0.0; + rJacobian[29][10] = 0.0; + rJacobian[29][11] = 0.0; + rJacobian[29][12] = -(mDt * (-var_x122 + 0.024299999999999999 * var_x123 * (1 - var_x40 - var_chaste_interface__ryanodine_receptors__P_C2))); + rJacobian[29][13] = 0.0; + rJacobian[29][14] = 0.0; + rJacobian[29][15] = 0.0; + rJacobian[29][16] = 0.0; + rJacobian[29][17] = 0.0; + rJacobian[29][18] = 0.0; + rJacobian[29][19] = 0.0; + rJacobian[29][20] = 0.0; + rJacobian[29][21] = 0.0; + rJacobian[29][22] = 0.0; + rJacobian[29][23] = 0.0; + rJacobian[29][24] = 0.0; + rJacobian[29][25] = 0.0; + rJacobian[29][26] = 0.0; + rJacobian[29][27] = 0.0; + rJacobian[29][28] = -(mDt * (0.00080000000000000004 - var_x124)); + rJacobian[29][29] = 1.0 - (mDt * (-0.080249999999999988 - var_x124 - var_x125)); + rJacobian[29][30] = -(mDt * (0.96499999999999997 - var_x124)); + rJacobian[29][31] = 0.0; + rJacobian[30][0] = 0.0; + rJacobian[30][1] = 0.0; + rJacobian[30][2] = 0.0; + rJacobian[30][3] = 0.0; + rJacobian[30][4] = 0.0; + rJacobian[30][5] = 0.0; + rJacobian[30][6] = 0.0; + rJacobian[30][7] = 0.0; + rJacobian[30][8] = 0.0; + rJacobian[30][9] = 0.0; + rJacobian[30][10] = 0.0; + rJacobian[30][11] = 0.0; + rJacobian[30][12] = -(mDt * (var_x122)); + rJacobian[30][13] = 0.0; + rJacobian[30][14] = 0.0; + rJacobian[30][15] = 0.0; + rJacobian[30][16] = 0.0; + rJacobian[30][17] = 0.0; + rJacobian[30][18] = 0.0; + rJacobian[30][19] = 0.0; + rJacobian[30][20] = 0.0; + rJacobian[30][21] = 0.0; + rJacobian[30][22] = 0.0; + rJacobian[30][23] = 0.0; + rJacobian[30][24] = 0.0; + rJacobian[30][25] = 0.0; + rJacobian[30][26] = 0.0; + rJacobian[30][27] = 0.0; + rJacobian[30][28] = 0.0; + rJacobian[30][29] = -(mDt * (var_x125)); + rJacobian[30][30] = 1.0 - (mDt * (-0.96499999999999997)); + rJacobian[30][31] = 0.0; + rJacobian[31][0] = 0.0; + rJacobian[31][1] = 0.0; + rJacobian[31][2] = 0.0; + rJacobian[31][3] = 0.0; + rJacobian[31][4] = 0.0; + rJacobian[31][5] = 0.0; + rJacobian[31][6] = 0.0; + rJacobian[31][7] = 0.0; + rJacobian[31][8] = 0.0; + rJacobian[31][9] = 0.0; + rJacobian[31][10] = 0.0; + rJacobian[31][11] = -(mDt * (184.55541474839183 * var_x105 * var_x64)); + rJacobian[31][12] = 0.0; + rJacobian[31][13] = 0.0; + rJacobian[31][14] = 0.0; + rJacobian[31][15] = 0.0; + rJacobian[31][16] = 0.0; + rJacobian[31][17] = 0.0; + rJacobian[31][18] = 0.0; + rJacobian[31][19] = 0.0; + rJacobian[31][20] = 0.0; + rJacobian[31][21] = -(mDt * (-var_x106 * (-25.674321243523316 * log(var_x126 * (1 * mParameters[6] + 0.1111111111111111 * mParameters[5])) + var_chaste_interface__membrane__V) * mParameters[9])); + rJacobian[31][22] = 0.0; + rJacobian[31][23] = -(mDt * (-var_x106 * (2.8527023603914796 * var_x127 + 0.007417026137017846 * var_x126))); + rJacobian[31][24] = 0.0; + rJacobian[31][25] = 0.0; + rJacobian[31][26] = 0.0; + rJacobian[31][27] = 0.0; + rJacobian[31][28] = 0.0; + rJacobian[31][29] = 0.0; + rJacobian[31][30] = 0.0; + rJacobian[31][31] = 1.0 - (mDt * (-var_x106 * (9 * var_x69 + 1.3012664833312966e-6 * var_x115 + 0.066753235233160624 * var_x126 + 25.674321243523316 * var_x127))); + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_calcium_activated_chloride_current__E_Cl = -40; // millivolt + const double var_calcium_activated_chloride_current__Km_Cl = 10; // micromolar + const double var_calcium_activated_chloride_current__g_ClCa = 10; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.00036699999999999998; // milliS_per_microF + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__Km_pCa = 0.5; // micromolar + const double var_calcium_pump_current__i_pCa_max = 1; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_calcium_concentration__Cai) / var_membrane__F; // millivolt + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double var_calcium_activated_chloride_current__O_ClCa = 0.20000000000000001 / (1 + exp(5.9871794871794881 - 0.12820512820512822 * var_chaste_interface__membrane__V)); // dimensionless + const double var_calcium_activated_chloride_current__i_ClCa = (-var_calcium_activated_chloride_current__E_Cl + var_chaste_interface__membrane__V) * var_calcium_activated_chloride_current__O_ClCa * var_calcium_activated_chloride_current__g_ClCa * var_calcium_concentration__Cai / (var_calcium_activated_chloride_current__Km_Cl + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_stim = var_membrane__i_stim_converted / HeartConfig::Instance()->GetCapacitance(); // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_transient_outward_potassium_current__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_potassium_current__i_Kto_s = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__slow_transient_outward_potassium_current__ato_s * var_slow_transient_outward_potassium_current__g_Kto_s * var_chaste_interface__slow_transient_outward_potassium_current__ito_s; // picoA_per_picoF + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 21000; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 0.88; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[5] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (mParameters[5] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur = 0.16; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_membrane__V = -var_L_type_calcium_current__i_CaL - var_calcium_activated_chloride_current__i_ClCa - var_calcium_background_current__i_Cab - var_calcium_pump_current__i_pCa - var_fast_sodium_current__i_Na - var_fast_transient_outward_potassium_current__i_Kto_f - var_membrane__i_stim - var_non_inactivating_steady_state_potassium_current__i_Kss - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_slow_transient_outward_potassium_current__i_Kto_s - var_sodium_background_current__i_Nab - var_sodium_calcium_exchange_current__i_NaCa - var_sodium_potassium_pump_current__i_NaK - var_time_independent_potassium_current__i_K1 - var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + + const double var_fast_transient_outward_potassium_current__alpha_a = 0.18064 * exp(1.0731000000000002 + 0.035770000000000003 * var_chaste_interface__membrane__V); + const double var_fast_transient_outward_potassium_current__alpha_i = 0.00015200000000000001 * exp(-1.9285714285714286 - 0.14285714285714285 * var_chaste_interface__membrane__V) / (1 + 0.0067083000000000004 * exp(-4.7857142857142856 - 0.14285714285714285 * var_chaste_interface__membrane__V)); + const double var_fast_transient_outward_potassium_current__beta_a = 0.39560000000000001 * exp(-1.8711 - 0.062370000000000002 * var_chaste_interface__membrane__V); + const double var_fast_transient_outward_potassium_current__beta_i = 0.00095 * exp(4.7857142857142856 + 0.14285714285714285 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(4.7857142857142856 + 0.14285714285714285 * var_chaste_interface__membrane__V)); + const double var_non_inactivating_steady_state_potassium_current__tau_Kss = 13.17 + 39.299999999999997 * exp(-0.086199999999999999 * var_chaste_interface__membrane__V); + const double var_slow_delayed_rectifier_potassium_current__alpha_n = (((var_chaste_interface__membrane__V >= -26.500000781250002) && (var_chaste_interface__membrane__V <= -26.499999218749998)) ? (-3.7604140624912359e-12 / (1 - exp(9.9999999999766942e-8)) + 640000.00000149151 * (26.500000781250002 + var_chaste_interface__membrane__V) * (3.7604140624912359e-12 / (1 - exp(9.9999999999766942e-8)) + 3.7604140624912359e-12 / (1 - exp(-9.9999999999766942e-8)))) : (4.8133299999999997e-6 * (26.5 + var_chaste_interface__membrane__V) / (1 - exp(-3.3919999999999999 - 0.128 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_potassium_current__beta_n = 9.5333299999999997e-5 * exp(-1.0069999999999999 - 0.037999999999999999 * var_chaste_interface__membrane__V); + const double var_slow_transient_outward_potassium_current__ass = 1 / (1 + exp(-2.9220779220779218 - 0.12987012987012986 * var_chaste_interface__membrane__V)); + const double var_slow_transient_outward_potassium_current__iss = 1 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + const double var_slow_transient_outward_potassium_current__tau_ta_s = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); + const double var_slow_transient_outward_potassium_current__tau_ti_s = 270 + 1050 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur = 1200 - 170 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + + + rY[28] = (var_chaste_interface__fast_transient_outward_potassium_current__ato_f + ((1 * var_fast_transient_outward_potassium_current__alpha_a) * mDt)) / (1.0 - ((-var_fast_transient_outward_potassium_current__alpha_a - var_fast_transient_outward_potassium_current__beta_a) * mDt)); + rY[29] = (var_chaste_interface__fast_transient_outward_potassium_current__ito_f + ((1 * var_fast_transient_outward_potassium_current__alpha_i) * mDt)) / (1.0 - ((-var_fast_transient_outward_potassium_current__alpha_i - var_fast_transient_outward_potassium_current__beta_i) * mDt)); + rY[35] = (var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss + ((var_slow_transient_outward_potassium_current__ass / var_non_inactivating_steady_state_potassium_current__tau_Kss) * mDt)) / (1.0 - ((-1 / var_non_inactivating_steady_state_potassium_current__tau_Kss) * mDt)); + rY[32] = (var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs + ((1 * var_slow_delayed_rectifier_potassium_current__alpha_n) * mDt)) / (1.0 - ((-var_slow_delayed_rectifier_potassium_current__alpha_n - var_slow_delayed_rectifier_potassium_current__beta_n) * mDt)); + rY[30] = (var_chaste_interface__slow_transient_outward_potassium_current__ato_s + ((var_slow_transient_outward_potassium_current__ass / var_slow_transient_outward_potassium_current__tau_ta_s) * mDt)) / (1.0 - ((-1 / var_slow_transient_outward_potassium_current__tau_ta_s) * mDt)); + rY[31] = (var_chaste_interface__slow_transient_outward_potassium_current__ito_s + ((var_slow_transient_outward_potassium_current__iss / var_slow_transient_outward_potassium_current__tau_ti_s) * mDt)) / (1.0 - ((-1 / var_slow_transient_outward_potassium_current__tau_ti_s) * mDt)); + rY[33] = (var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur + ((var_slow_transient_outward_potassium_current__ass / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur) * mDt)) / (1.0 - ((-1 / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur) * mDt)); + rY[34] = (var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur + ((var_slow_transient_outward_potassium_current__iss / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur) * mDt)) / (1.0 - ((-1 / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur) * mDt)); + + double _guess[32] = {rY[12],rY[13],rY[14],rY[15],rY[16],rY[17],rY[11],rY[7],rY[6],rY[3],rY[4],rY[1],rY[2],rY[5],rY[20],rY[21],rY[22],rY[23],rY[25],rY[26],rY[24],rY[19],rY[36],rY[27],rY[38],rY[39],rY[40],rY[37],rY[10],rY[8],rY[9],rY[18]}; + CardiacNewtonSolver<32,Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<32,Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[12] = _guess[0]; + rY[13] = _guess[1]; + rY[14] = _guess[2]; + rY[15] = _guess[3]; + rY[16] = _guess[4]; + rY[17] = _guess[5]; + rY[11] = _guess[6]; + rY[7] = _guess[7]; + rY[6] = _guess[8]; + rY[3] = _guess[9]; + rY[4] = _guess[10]; + rY[1] = _guess[11]; + rY[2] = _guess[12]; + rY[5] = _guess[13]; + rY[20] = _guess[14]; + rY[21] = _guess[15]; + rY[22] = _guess[16]; + rY[23] = _guess[17]; + rY[25] = _guess[18]; + rY[26] = _guess[19]; + rY[24] = _guess[20]; + rY[19] = _guess[21]; + rY[36] = _guess[22]; + rY[27] = _guess[23]; + rY[38] = _guess[24]; + rY[39] = _guess[25]; + rY[40] = _guess[26]; + rY[37] = _guess[27]; + rY[10] = _guess[28]; + rY[8] = _guess[29]; + rY[9] = _guess[30]; + rY[18] = _guess[31]; + } + + std::vector Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.115001 + double var_chaste_interface__calcium_concentration__CaJSR = rY[3]; + // Units: micromolar; Initial value: 1299.5 + double var_chaste_interface__calcium_fluxes__P_RyR = rY[5]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ryanodine_receptors__P_O1 = rY[8]; + // Units: dimensionless; Initial value: 1.49102e-05 + double var_chaste_interface__ryanodine_receptors__P_O2 = rY[9]; + // Units: dimensionless; Initial value: 9.51726e-11 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + // Mathematics + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_transient_outward_potassium_current__i_Kto_f; // uA_per_cm2 + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss_converted = HeartConfig::Instance()->GetCapacitance() * var_non_inactivating_steady_state_potassium_current__i_Kss; // uA_per_cm2 + const double var_calcium_fluxes__J_rel = (-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; // micromolar_per_millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchange_current__i_NaCa; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + + std::vector dqs(12); + dqs[0] = var_calcium_fluxes__J_rel; + dqs[1] = var_chaste_interface__calcium_concentration__Cai_converted; + dqs[2] = var_L_type_calcium_current__i_CaL_converted; + dqs[3] = var_fast_sodium_current__i_Na_converted; + dqs[4] = var_time_independent_potassium_current__i_K1_converted; + dqs[5] = var_non_inactivating_steady_state_potassium_current__i_Kss_converted; + dqs[6] = var_rapid_delayed_rectifier_potassium_current__i_Kr_converted; + dqs[7] = var_slow_delayed_rectifier_potassium_current__i_Ks_converted; + dqs[8] = var_sodium_calcium_exchange_current__i_NaCa_converted; + dqs[9] = var_membrane__i_stim_converted; + dqs[10] = var_fast_transient_outward_potassium_current__i_Kto_f_converted; + dqs[11] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "bondarenko_2004_apical"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-82.4202); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000115001); + + // rY[2]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(0.115001); + + // rY[3]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(1299.5); + + // rY[4]: + this->mVariableNames.push_back("calcium_concentration__CaNSR"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(1299.5); + + // rY[5]: + this->mVariableNames.push_back("calcium_fluxes__P_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[6]: + this->mVariableNames.push_back("calcium_buffering__LTRPN_Ca"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(11.2684); + + // rY[7]: + this->mVariableNames.push_back("calcium_buffering__HTRPN_Ca"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(125.29); + + // rY[8]: + this->mVariableNames.push_back("ryanodine_receptors__P_O1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.49102e-05); + + // rY[9]: + this->mVariableNames.push_back("ryanodine_receptors__P_O2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.51726e-11); + + // rY[10]: + this->mVariableNames.push_back("ryanodine_receptors__P_C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00016774); + + // rY[11]: + this->mVariableNames.push_back("L_type_calcium_current__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.30308e-19); + + // rY[12]: + this->mVariableNames.push_back("L_type_calcium_current__C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000124216); + + // rY[13]: + this->mVariableNames.push_back("L_type_calcium_current__C3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(5.78679e-09); + + // rY[14]: + this->mVariableNames.push_back("L_type_calcium_current__C4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.19816e-13); + + // rY[15]: + this->mVariableNames.push_back("L_type_calcium_current__I1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(4.97923e-19); + + // rY[16]: + this->mVariableNames.push_back("L_type_calcium_current__I2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.45847e-14); + + // rY[17]: + this->mVariableNames.push_back("L_type_calcium_current__I3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.85106e-14); + + // rY[18]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(14237.1); + + // rY[19]: + this->mVariableNames.push_back("fast_sodium_current__O_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.13483e-07); + + // rY[20]: + this->mVariableNames.push_back("fast_sodium_current__C_Na1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000279132); + + // rY[21]: + this->mVariableNames.push_back("fast_sodium_current__C_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.020752); + + // rY[22]: + this->mVariableNames.push_back("fast_sodium_current__I1_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.73345e-07); + + // rY[23]: + this->mVariableNames.push_back("fast_sodium_current__I2_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.55787e-09); + + // rY[24]: + this->mVariableNames.push_back("fast_sodium_current__IF_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000153176); + + // rY[25]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0113879); + + // rY[26]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.34278); + + // rY[27]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(143720.0); + + // rY[28]: + this->mVariableNames.push_back("fast_transient_outward_potassium_current__ato_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00265563); + + // rY[29]: + this->mVariableNames.push_back("fast_transient_outward_potassium_current__ito_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999977); + + // rY[30]: + this->mVariableNames.push_back("slow_transient_outward_potassium_current__ato_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[31]: + this->mVariableNames.push_back("slow_transient_outward_potassium_current__ito_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998543); + + // rY[32]: + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current__nKs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000262753); + + // rY[33]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_potassium_current__aur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[34]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_potassium_current__iur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998543); + + // rY[35]: + this->mVariableNames.push_back("non_inactivating_steady_state_potassium_current__aKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[36]: + this->mVariableNames.push_back("non_inactivating_steady_state_potassium_current__iKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[37]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__O_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000175298); + + // rY[38]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__C_K1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000992513); + + // rY[39]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__C_K2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000641229); + + // rY[40]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__I_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.19129e-05); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("micromolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_non_inactivating_steady_state_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("micromolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_non_inactivating_steady_state_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_14.cpp new file mode 100644 index 00000000..c491ba24 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_14.cpp @@ -0,0 +1,2233 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: bondarenko_2004_apical +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEuler) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 0.5; // millisecond + const double var_chaste_interface__membrane__stim_period = 71.430000000000007; // millisecond + const double var_chaste_interface__membrane__stim_start = 0; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<32>( + 41, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1.7399999999999999e-5; // (var_calcium_fluxes__v2) [per_millisecond] + this->mParameters[1] = 4.5; // (var_calcium_fluxes__v1) [per_millisecond] + this->mParameters[2] = 0.45000000000000001; // (var_calcium_fluxes__v3) [micromolar_per_millisecond] + this->mParameters[3] = 1; // (var_sodium_concentration__conc_clamp) [dimensionless] + this->mParameters[4] = 1800; // (var_membrane__Cao) [micromolar] + this->mParameters[5] = 5400; // (var_membrane__Ko) [micromolar] + this->mParameters[6] = 140000; // (var_membrane__Nao) [micromolar] + this->mParameters[7] = 0.1729; // (var_L_type_calcium_current__g_CaL) [milliS_per_microF] + this->mParameters[8] = 1; // (var_membrane__Cm) [microF_per_cm2] + this->mParameters[9] = 13; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[10] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[11] = 0.29380000000000001; // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = 0.050000000000000003; // (var_non_inactivating_steady_state_potassium_current__g_Kss) [milliS_per_microF] + this->mParameters[13] = 0.078; // (var_rapid_delayed_rectifier_potassium_current__g_Kr) [milliS_per_microF] + this->mParameters[14] = 0.0057499999999999999; // (var_slow_delayed_rectifier_potassium_current__g_Ks) [milliS_per_microF] + this->mParameters[15] = 292.80000000000001; // (var_sodium_calcium_exchange_current__k_NaCa) [picoA_per_picoF] + this->mParameters[16] = 0.40670000000000001; // (var_fast_transient_outward_potassium_current__g_Kto_f) [milliS_per_microF] + } + + Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::~Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler() + { + } + + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 41; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_calcium_activated_chloride_current__E_Cl = -40; // millivolt + const double var_calcium_activated_chloride_current__Km_Cl = 10; // micromolar + const double var_calcium_activated_chloride_current__g_ClCa = 10; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.00036699999999999998; // milliS_per_microF + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__Km_pCa = 0.5; // micromolar + const double var_calcium_pump_current__i_pCa_max = 1; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_calcium_concentration__Cai) / var_membrane__F; // millivolt + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_calcium_activated_chloride_current__O_ClCa = 0.20000000000000001 / (1 + exp(5.9871794871794881 - 0.12820512820512822 * var_chaste_interface__membrane__V)); // dimensionless + const double var_calcium_activated_chloride_current__i_ClCa = (-var_calcium_activated_chloride_current__E_Cl + var_chaste_interface__membrane__V) * var_calcium_activated_chloride_current__O_ClCa * var_calcium_activated_chloride_current__g_ClCa * var_calcium_concentration__Cai / (var_calcium_activated_chloride_current__Km_Cl + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_transient_outward_potassium_current__i_Kto_f; // uA_per_cm2 + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss_converted = HeartConfig::Instance()->GetCapacitance() * var_non_inactivating_steady_state_potassium_current__i_Kss; // uA_per_cm2 + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks; // uA_per_cm2 + const double var_slow_transient_outward_potassium_current__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_potassium_current__i_Kto_s = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__slow_transient_outward_potassium_current__ato_s * var_slow_transient_outward_potassium_current__g_Kto_s * var_chaste_interface__slow_transient_outward_potassium_current__ito_s; // picoA_per_picoF + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchange_current__i_NaCa; // uA_per_cm2 + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 21000; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 0.88; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[5] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (mParameters[5] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur = 0.16; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_calcium_activated_chloride_current__i_ClCa + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Cab + HeartConfig::Instance()->GetCapacitance() * var_calcium_pump_current__i_pCa + HeartConfig::Instance()->GetCapacitance() * var_slow_transient_outward_potassium_current__i_Kto_s + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Nab + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump_current__i_NaK + HeartConfig::Instance()->GetCapacitance() * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur + var_L_type_calcium_current__i_CaL_converted + var_fast_sodium_current__i_Na_converted + var_fast_transient_outward_potassium_current__i_Kto_f_converted + var_non_inactivating_steady_state_potassium_current__i_Kss_converted + var_rapid_delayed_rectifier_potassium_current__i_Kr_converted + var_slow_delayed_rectifier_potassium_current__i_Ks_converted + var_sodium_calcium_exchange_current__i_NaCa_converted + var_time_independent_potassium_current__i_K1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rResidual[32]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + + //output_nonlinear_state_assignments + double var_chaste_interface__L_type_calcium_current__C2 = rCurrentGuess[0]; + double var_chaste_interface__L_type_calcium_current__C3 = rCurrentGuess[1]; + double var_chaste_interface__L_type_calcium_current__C4 = rCurrentGuess[2]; + double var_chaste_interface__L_type_calcium_current__I1 = rCurrentGuess[3]; + double var_chaste_interface__L_type_calcium_current__I2 = rCurrentGuess[4]; + double var_chaste_interface__L_type_calcium_current__I3 = rCurrentGuess[5]; + double var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[6]; + double var_chaste_interface__calcium_buffering__HTRPN_Ca = rCurrentGuess[7]; + double var_chaste_interface__calcium_buffering__LTRPN_Ca = rCurrentGuess[8]; + double var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[9]; + double var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[10]; + double var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[11]; + double var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[12]; + double var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[13]; + double var_chaste_interface__fast_sodium_current__C_Na1 = rCurrentGuess[14]; + double var_chaste_interface__fast_sodium_current__C_Na2 = rCurrentGuess[15]; + double var_chaste_interface__fast_sodium_current__I1_Na = rCurrentGuess[16]; + double var_chaste_interface__fast_sodium_current__I2_Na = rCurrentGuess[17]; + double var_chaste_interface__fast_sodium_current__IC_Na2 = rCurrentGuess[18]; + double var_chaste_interface__fast_sodium_current__IC_Na3 = rCurrentGuess[19]; + double var_chaste_interface__fast_sodium_current__IF_Na = rCurrentGuess[20]; + double var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[21]; + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rCurrentGuess[22]; + double var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[23]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 = rCurrentGuess[24]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 = rCurrentGuess[25]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K = rCurrentGuess[26]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rCurrentGuess[27]; + double var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[28]; + double var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[29]; + double var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[30]; + double var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[31]; + + //output_equations + const double d_dt_chaste_interface_var_non_inactivating_steady_state_potassium_current__iKss = 0; // 1 / millisecond + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_L_type_calcium_current__Kpc_half = 20; // micromolar + const double var_L_type_calcium_current__Kpc_max = 0.23324; // per_millisecond + const double var_L_type_calcium_current__Kpcb = 0.00050000000000000001; // per_millisecond + const double var_L_type_calcium_current__C1 = 1 - var_chaste_interface__L_type_calcium_current__C2 - var_chaste_interface__L_type_calcium_current__C3 - var_chaste_interface__L_type_calcium_current__C4 - var_chaste_interface__L_type_calcium_current__I1 - var_chaste_interface__L_type_calcium_current__I2 - var_chaste_interface__L_type_calcium_current__I3 - var_chaste_interface__L_type_calcium_current__O; // dimensionless + const double var_L_type_calcium_current__i_CaL_max = 7; // picoA_per_picoF + const double var_calcium_background_current__g_Cab = 0.00036699999999999998; // milliS_per_microF + const double var_calcium_buffering__HTRPN_tot = 140; // micromolar + const double var_calcium_buffering__LTRPN_tot = 70; // micromolar + const double var_calcium_concentration__CMDN_tot = 50; // micromolar + const double var_calcium_concentration__CSQN_tot = 15000; // micromolar + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_L_type_calcium_current__gamma = var_L_type_calcium_current__Kpc_max * var_chaste_interface__calcium_concentration__Cass / (var_L_type_calcium_current__Kpc_half + var_chaste_interface__calcium_concentration__Cass); // per_millisecond + const double var_calcium_concentration__Km_CMDN = 0.23799999999999999; // micromolar + const double var_calcium_concentration__Bi = 1 / (1 + var_calcium_concentration__CMDN_tot * var_calcium_concentration__Km_CMDN / pow((var_calcium_concentration__Cai + var_calcium_concentration__Km_CMDN), 2)); // dimensionless + const double var_calcium_concentration__Bss = 1 / (1 + var_calcium_concentration__CMDN_tot * var_calcium_concentration__Km_CMDN / pow((var_chaste_interface__calcium_concentration__Cass + var_calcium_concentration__Km_CMDN), 2)); // dimensionless + const double var_calcium_concentration__Km_CSQN = 800; // micromolar + const double var_calcium_concentration__BJSR = 1 / (1 + var_calcium_concentration__CSQN_tot * var_calcium_concentration__Km_CSQN / pow((var_chaste_interface__calcium_concentration__CaJSR + var_calcium_concentration__Km_CSQN), 2)); // dimensionless + const double var_calcium_fluxes__Km_up = 0.5; // micromolar + const double var_calcium_fluxes__k_minus_htrpn = 3.1999999999999999e-5; // per_millisecond + const double var_calcium_fluxes__k_minus_ltrpn = 0.019599999999999999; // per_millisecond + const double var_calcium_fluxes__k_plus_htrpn = 0.0023700000000000001; // per_micromolar_millisecond + const double d_dt_chaste_interface_var_calcium_buffering__HTRPN_Ca = -var_chaste_interface__calcium_buffering__HTRPN_Ca * var_calcium_fluxes__k_minus_htrpn + (-var_chaste_interface__calcium_buffering__HTRPN_Ca + var_calcium_buffering__HTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_htrpn; // micromolar / millisecond + const double var_calcium_fluxes__k_plus_ltrpn = 0.0327; // per_micromolar_millisecond + const double d_dt_chaste_interface_var_calcium_buffering__LTRPN_Ca = -var_chaste_interface__calcium_buffering__LTRPN_Ca * var_calcium_fluxes__k_minus_ltrpn + (-var_chaste_interface__calcium_buffering__LTRPN_Ca + var_calcium_buffering__LTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_ltrpn; // micromolar / millisecond + const double var_calcium_fluxes__J_trpn = -var_chaste_interface__calcium_buffering__HTRPN_Ca * var_calcium_fluxes__k_minus_htrpn - var_chaste_interface__calcium_buffering__LTRPN_Ca * var_calcium_fluxes__k_minus_ltrpn + (-var_chaste_interface__calcium_buffering__HTRPN_Ca + var_calcium_buffering__HTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_htrpn + (-var_chaste_interface__calcium_buffering__LTRPN_Ca + var_calcium_buffering__LTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_ltrpn; // micromolar_per_millisecond + const double var_calcium_fluxes__tau_tr = 20; // millisecond + const double var_calcium_fluxes__J_tr = (-var_chaste_interface__calcium_concentration__CaJSR + var_chaste_interface__calcium_concentration__CaNSR) / var_calcium_fluxes__tau_tr; // micromolar_per_millisecond + const double var_calcium_fluxes__tau_xfer = 8; // millisecond + const double var_calcium_fluxes__J_xfer = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__Cass) / var_calcium_fluxes__tau_xfer; // micromolar_per_millisecond + const double var_calcium_fluxes__J_leak = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0]; // micromolar_per_millisecond + const double var_calcium_fluxes__J_up = pow(var_calcium_concentration__Cai, 2) * mParameters[2] / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_fluxes__Km_up, 2)); // micromolar_per_millisecond + const double var_calcium_pump_current__Km_pCa = 0.5; // micromolar + const double var_calcium_pump_current__i_pCa_max = 1; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_fast_sodium_current__C_Na3 = 1 - var_chaste_interface__fast_sodium_current__C_Na1 - var_chaste_interface__fast_sodium_current__C_Na2 - var_chaste_interface__fast_sodium_current__I1_Na - var_chaste_interface__fast_sodium_current__I2_Na - var_chaste_interface__fast_sodium_current__IC_Na2 - var_chaste_interface__fast_sodium_current__IC_Na3 - var_chaste_interface__fast_sodium_current__IF_Na - var_chaste_interface__fast_sodium_current__O_Na; // dimensionless + const double var_membrane__Acap = 0.00015339999999999999; // cm2 + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_calcium_concentration__Cai) / var_membrane__F; // millivolt + const double var_L_type_calcium_current__Kpcf = 13 - 13 * exp(-0.01 * pow((14.5 + var_chaste_interface__membrane__V), 2)); // per_millisecond + const double var_L_type_calcium_current__alpha = 0.40000000000000002 * (1 + 0.69999999999999996 * exp(-0.10000000000000001 * pow((40 + var_chaste_interface__membrane__V), 2)) - 0.75 * exp(-0.0025000000000000001 * pow((20 + var_chaste_interface__membrane__V), 2))) * exp(1.2 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.12 * exp(1.2 + 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_L_type_calcium_current__beta = 0.050000000000000003 * exp(-0.92307692307692313 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C2 = -var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__beta + 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__beta + 4 * var_L_type_calcium_current__C1 * var_L_type_calcium_current__alpha - 3 * var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__alpha; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C3 = 3 * var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__alpha + 3 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__beta - 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__alpha - 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C4 = -var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha + 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__alpha + 4 * var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__beta + 0.0080000000000000002 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__beta - 3 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__beta - 0.002 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf + 4 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta + 0.040000000000000001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta - 1 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma - 0.01 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I1 = var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__gamma - var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb + 0.001 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha - 0.001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf + 0.01 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma - 0.040000000000000001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I2 = var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb - var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__gamma + 0.001 * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O + 0.002 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf - 0.001 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - 0.0080000000000000002 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I3 = var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__gamma - var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb + 0.001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf - 0.001 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha + 1 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma - 4 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__O = var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha + var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb - var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__gamma + 0.001 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - 4 * var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__beta - 0.001 * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O; // 1 / millisecond + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double d_dt_chaste_interface_var_calcium_fluxes__P_RyR = -0.040000000000000001 * var_chaste_interface__calcium_fluxes__P_RyR - 0.10000000000000001 * var_L_type_calcium_current__i_CaL * exp(-0.0015432098765432098 * pow((-5 + var_chaste_interface__membrane__V), 2)) / var_L_type_calcium_current__i_CaL_max; // 1 / millisecond + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_fast_sodium_current__alpha_Na11 = 3.802 / (0.20000000000000001 * exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__membrane__V) + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na12 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__membrane__V) + 0.23000000000000001 * exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na13 = 3.802 / (0.25 * exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__membrane__V) + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na2 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 + 0.060240963855421679 * mParameters[10] - 0.060240963855421679 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na3 = 6.9999999999999997e-7 * exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current__alpha_Na4 = 0.001 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__alpha_Na5 = 1.0526315789473684e-5 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__beta_Na11 = 0.19170000000000001 * exp(-0.12315270935960591 - 0.04926108374384236 * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current__beta_Na12 = 0.20000000000000001 * exp(0.12315270935960591 - 0.04926108374384236 * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current__beta_Na13 = 0.22 * exp(0.36945812807881773 - 0.04926108374384236 * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current__beta_Na3 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__membrane__V; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na1 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na2 = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 + var_fast_sodium_current__C_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na2 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na3 = var_fast_sodium_current__C_Na3 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na3; // 1 / millisecond + const double var_fast_sodium_current__beta_Na2 = var_fast_sodium_current__alpha_Na13 * var_fast_sodium_current__alpha_Na2 * var_fast_sodium_current__alpha_Na3 / (var_fast_sodium_current__beta_Na13 * var_fast_sodium_current__beta_Na3); // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__O_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13; // 1 / millisecond + const double var_fast_sodium_current__beta_Na4 = var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IF_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2; // 1 / millisecond + const double var_fast_sodium_current__beta_Na5 = 0.02 * var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I1_Na = var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I2_Na = var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5; // 1 / millisecond + const double var_membrane__VJSR = 1.1999999999999999e-7; // microlitre + const double var_membrane__VNSR = 2.0980000000000001e-6; // microlitre + const double var_membrane__Vmyo = 2.584e-5; // microlitre + const double d_dt_chaste_interface_var_calcium_concentration__CaNSR = (-var_calcium_fluxes__J_leak + var_calcium_fluxes__J_up) * var_membrane__Vmyo / var_membrane__VNSR - var_calcium_fluxes__J_tr * var_membrane__VJSR / var_membrane__VNSR; // micromolar / millisecond + const double var_membrane__Vss = 1.4849999999999999e-9; // microlitre + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__C_K0 = 1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K; // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__alpha_a0 = 0.022348 * exp(0.01176 * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__alpha_a1 = 0.013733 * exp(0.038198000000000003 * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__alpha_i = 0.090820999999999999 * exp(0.11695499999999999 + 0.023390999999999999 * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_a0 = 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_a1 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__membrane__V); // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_i = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__membrane__V); // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__I_K = var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__alpha_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K * var_rapid_delayed_rectifier_potassium_current__beta_i; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__O_K = var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__alpha_a1 + var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K * var_rapid_delayed_rectifier_potassium_current__beta_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__alpha_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__beta_a1; // 1 / millisecond + const double var_rapid_delayed_rectifier_potassium_current__kb = 0.036777999999999998; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__kf = 0.023761000000000001; // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K1 = var_rapid_delayed_rectifier_potassium_current__C_K0 * var_rapid_delayed_rectifier_potassium_current__alpha_a0 + var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__kb - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * var_rapid_delayed_rectifier_potassium_current__beta_a0 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * var_rapid_delayed_rectifier_potassium_current__kf; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K2 = var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * var_rapid_delayed_rectifier_potassium_current__kf + var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__beta_a1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__alpha_a1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__kb; // 1 / millisecond + const double var_calcium_fluxes__J_rel = (-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; // micromolar_per_millisecond + const double d_dt_chaste_interface_var_calcium_concentration__CaJSR = (-var_calcium_fluxes__J_rel + var_calcium_fluxes__J_tr) * var_calcium_concentration__BJSR; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cass = (var_calcium_fluxes__J_rel * var_membrane__VJSR / var_membrane__Vss - var_calcium_fluxes__J_xfer * var_membrane__Vmyo / var_membrane__Vss - 0.5 * var_L_type_calcium_current__i_CaL * var_membrane__Acap * mParameters[8] / (var_membrane__F * var_membrane__Vss)) * var_calcium_concentration__Bss; // micromolar / millisecond + const double var_ryanodine_receptors__P_C1 = 1 - var_chaste_interface__ryanodine_receptors__P_C2 - var_chaste_interface__ryanodine_receptors__P_O1 - var_chaste_interface__ryanodine_receptors__P_O2; // dimensionless + const double var_ryanodine_receptors__k_minus_a = 0.071249999999999994; // per_millisecond + const double var_ryanodine_receptors__k_minus_b = 0.96499999999999997; // per_millisecond + const double var_ryanodine_receptors__k_minus_c = 0.00080000000000000004; // per_millisecond + const double var_ryanodine_receptors__k_plus_a = 0.0060749999999999997; // micromolar4_per_millisecond + const double var_ryanodine_receptors__k_plus_b = 0.0040499999999999998; // micromolar3_per_millisecond + const double var_ryanodine_receptors__k_plus_c = 0.0089999999999999993; // per_millisecond + const double d_dt_chaste_interface_var_ryanodine_receptors__P_C2 = var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_c - var_chaste_interface__ryanodine_receptors__P_C2 * var_ryanodine_receptors__k_minus_c; // 1 / millisecond + const double var_ryanodine_receptors__m = 3; // dimensionless + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O2 = -var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b + pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__m) * var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_b; // 1 / millisecond + const double var_ryanodine_receptors__n = 4; // dimensionless + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O1 = var_chaste_interface__ryanodine_receptors__P_C2 * var_ryanodine_receptors__k_minus_c + var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b - var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_minus_a - var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_c + pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__n) * var_ryanodine_receptors__P_C1 * var_ryanodine_receptors__k_plus_a - pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__m) * var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_b; // 1 / millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_transient_outward_potassium_current__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_potassium_current__i_Kto_s = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__slow_transient_outward_potassium_current__ato_s * var_slow_transient_outward_potassium_current__g_Kto_s * var_chaste_interface__slow_transient_outward_potassium_current__ito_s; // picoA_per_picoF + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_calcium_concentration__Cai_orig_deriv = (-var_calcium_fluxes__J_trpn - var_calcium_fluxes__J_up - 0.5 * (-2 * var_sodium_calcium_exchange_current__i_NaCa + var_calcium_background_current__i_Cab + var_calcium_pump_current__i_pCa) * var_membrane__Acap * mParameters[8] / (var_membrane__F * var_membrane__Vmyo) + var_calcium_fluxes__J_leak + var_calcium_fluxes__J_xfer) * var_calcium_concentration__Bi; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cai_converted = 0.001 * var_calcium_concentration__Cai_orig_deriv; // millimolar / millisecond + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 21000; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 0.88; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[5] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (mParameters[5] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double d_dt_chaste_interface_var_sodium_concentration__Nai = -(3 * var_sodium_calcium_exchange_current__i_NaCa + 3 * var_sodium_potassium_pump_current__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Nab) * var_membrane__Acap * mParameters[8] * mParameters[3] / (var_membrane__F * var_membrane__Vmyo); // micromolar / millisecond + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur = 0.16; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_potassium_concentration__Ki = -(-2 * var_sodium_potassium_pump_current__i_NaK + var_fast_transient_outward_potassium_current__i_Kto_f + var_non_inactivating_steady_state_potassium_current__i_Kss + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_slow_delayed_rectifier_potassium_current__i_Ks + var_slow_transient_outward_potassium_current__i_Kto_s + var_time_independent_potassium_current__i_K1 + var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur) * var_membrane__Acap * mParameters[8] * mParameters[3] / (var_membrane__F * var_membrane__Vmyo); // micromolar / millisecond + + rResidual[11] = rCurrentGuess[11] - rY[1] - mDt*d_dt_chaste_interface_var_calcium_concentration__Cai_converted; + rResidual[12] = rCurrentGuess[12] - rY[2] - mDt*d_dt_chaste_interface_var_calcium_concentration__Cass; + rResidual[9] = rCurrentGuess[9] - rY[3] - mDt*d_dt_chaste_interface_var_calcium_concentration__CaJSR; + rResidual[10] = rCurrentGuess[10] - rY[4] - mDt*d_dt_chaste_interface_var_calcium_concentration__CaNSR; + rResidual[13] = rCurrentGuess[13] - rY[5] - mDt*d_dt_chaste_interface_var_calcium_fluxes__P_RyR; + rResidual[8] = rCurrentGuess[8] - rY[6] - mDt*d_dt_chaste_interface_var_calcium_buffering__LTRPN_Ca; + rResidual[7] = rCurrentGuess[7] - rY[7] - mDt*d_dt_chaste_interface_var_calcium_buffering__HTRPN_Ca; + rResidual[29] = rCurrentGuess[29] - rY[8] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_O1; + rResidual[30] = rCurrentGuess[30] - rY[9] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_O2; + rResidual[28] = rCurrentGuess[28] - rY[10] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_C2; + rResidual[6] = rCurrentGuess[6] - rY[11] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__O; + rResidual[0] = rCurrentGuess[0] - rY[12] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__C2; + rResidual[1] = rCurrentGuess[1] - rY[13] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__C3; + rResidual[2] = rCurrentGuess[2] - rY[14] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__C4; + rResidual[3] = rCurrentGuess[3] - rY[15] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I1; + rResidual[4] = rCurrentGuess[4] - rY[16] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I2; + rResidual[5] = rCurrentGuess[5] - rY[17] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I3; + rResidual[31] = rCurrentGuess[31] - rY[18] - mDt*d_dt_chaste_interface_var_sodium_concentration__Nai; + rResidual[21] = rCurrentGuess[21] - rY[19] - mDt*d_dt_chaste_interface_var_fast_sodium_current__O_Na; + rResidual[14] = rCurrentGuess[14] - rY[20] - mDt*d_dt_chaste_interface_var_fast_sodium_current__C_Na1; + rResidual[15] = rCurrentGuess[15] - rY[21] - mDt*d_dt_chaste_interface_var_fast_sodium_current__C_Na2; + rResidual[16] = rCurrentGuess[16] - rY[22] - mDt*d_dt_chaste_interface_var_fast_sodium_current__I1_Na; + rResidual[17] = rCurrentGuess[17] - rY[23] - mDt*d_dt_chaste_interface_var_fast_sodium_current__I2_Na; + rResidual[20] = rCurrentGuess[20] - rY[24] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IF_Na; + rResidual[18] = rCurrentGuess[18] - rY[25] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IC_Na2; + rResidual[19] = rCurrentGuess[19] - rY[26] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IC_Na3; + rResidual[23] = rCurrentGuess[23] - rY[27] - mDt*d_dt_chaste_interface_var_potassium_concentration__Ki; + rResidual[22] = rCurrentGuess[22] - rY[36] - mDt*d_dt_chaste_interface_var_non_inactivating_steady_state_potassium_current__iKss; + rResidual[27] = rCurrentGuess[27] - rY[37] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__O_K; + rResidual[24] = rCurrentGuess[24] - rY[38] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K1; + rResidual[25] = rCurrentGuess[25] - rY[39] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K2; + rResidual[26] = rCurrentGuess[26] - rY[40] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__I_K; + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rJacobian[32][32]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + + double var_chaste_interface__L_type_calcium_current__C4 = rCurrentGuess[2]; + double var_chaste_interface__L_type_calcium_current__I2 = rCurrentGuess[4]; + double var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[6]; + double var_chaste_interface__calcium_buffering__HTRPN_Ca = rCurrentGuess[7]; + double var_chaste_interface__calcium_buffering__LTRPN_Ca = rCurrentGuess[8]; + double var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[9]; + double var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[10]; + double var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[11]; + double var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[12]; + double var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[13]; + double var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[21]; + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rCurrentGuess[22]; + double var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[23]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rCurrentGuess[27]; + double var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[28]; + double var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[29]; + double var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[30]; + double var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[31]; + + const double var_x0 = exp(-0.92307692307692313 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x1 = exp(1.2 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x2 = var_x1 * (1 + 0.69999999999999996 * exp(-0.10000000000000001 * pow((40 + var_chaste_interface__membrane__V), 2)) - 0.75 * exp(-0.0025000000000000001 * pow((20 + var_chaste_interface__membrane__V), 2))) / (1 + 0.12 * var_x1); + const double var_x3 = 0.10000000000000001 * var_x0; + const double var_x4 = -1.6000000000000001 * var_x2; + const double var_x5 = 0.80000000000000004 * var_x2; + const double var_x6 = 0.15000000000000002 * var_x0; + const double var_x7 = exp(-0.01 * pow((14.5 + var_chaste_interface__membrane__V), 2)); + const double var_x8 = 0.026000000000000002 * var_x7; + const double var_x9 = 13 - 13 * var_x7; + const double var_x10 = 20 + var_chaste_interface__calcium_concentration__Cass; + const double var_x11 = 1 / var_x10; + const double var_x12 = 0.23324 * var_x11; + const double var_x13 = var_x12 * var_chaste_interface__calcium_concentration__Cass; + const double var_x14 = var_x13 * var_x9; + const double var_x15 = 0.40000000000000002 * var_x2; + const double var_x16 = 0.00093296000000000004 * var_x2; + const double var_x17 = var_x11 * var_x16; + const double var_x18 = var_x17 * var_chaste_interface__calcium_concentration__Cass; + const double var_x19 = 0.00040000000000000002 * var_x0; + const double var_x20 = 0.0001 * var_x0; + const double var_x21 = 0.20000000000000001 * var_x0; + const double var_x22 = var_chaste_interface__calcium_concentration__Cass / pow(var_x10, 2); + const double var_x23 = -var_x17 * var_chaste_interface__L_type_calcium_current__C4 + var_x16 * var_x22 * var_chaste_interface__L_type_calcium_current__C4; + const double var_x24 = var_x9 * var_chaste_interface__L_type_calcium_current__C4; + const double var_x25 = 0.23324 * var_x22; + const double var_x26 = var_x24 * var_x25 - var_x12 * var_x24; + const double var_x27 = 0.013000000000000001 * var_x7; + const double var_x28 = -var_x27; + const double var_x29 = 0.00040000000000000002 * var_x2; + const double var_x30 = var_x25 * var_chaste_interface__L_type_calcium_current__O - var_x12 * var_chaste_interface__L_type_calcium_current__O; + const double var_x31 = 0.013000000000000001 - var_x27; + const double var_x32 = var_x25 * var_chaste_interface__L_type_calcium_current__I2 - var_x12 * var_chaste_interface__L_type_calcium_current__I2; + const double var_x33 = 2.3700000000000001 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x34 = 3.1999999999999999e-5 + var_x33; + const double var_x35 = 2.3700000000000001 * var_chaste_interface__calcium_buffering__HTRPN_Ca; + const double var_x36 = 32.699999999999996 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x37 = 0.019599999999999999 + var_x36; + const double var_x38 = 32.699999999999996 * var_chaste_interface__calcium_buffering__LTRPN_Ca; + const double var_x39 = 800 + var_chaste_interface__calcium_concentration__CaJSR; + const double var_x40 = 1 + 12000000 / pow(var_x39, 2); + const double var_x41 = 1 / var_x40; + const double var_x42 = var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2; + const double var_x43 = var_x42 * mParameters[1]; + const double var_x44 = var_x43 * var_chaste_interface__calcium_fluxes__P_RyR; + const double var_x45 = -var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR; + const double var_x46 = var_x41 * var_x45; + const double var_x47 = var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; + const double var_x48 = -var_x46 * var_x47; + const double var_x49 = 1000000 * pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); + const double var_x50 = 0.25 + var_x49; + const double var_x51 = 1 / var_x50; + const double var_x52 = var_x51 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x53 = pow(var_x50, (-2)); + const double var_x54 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 3); + const double var_x55 = var_x53 * var_x54; + const double var_x56 = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x57 = 0.23799999999999999 + var_x56; + const double var_x58 = 1 + 11.899999999999999 / pow(var_x57, 2); + const double var_x59 = 1 / var_x58; + const double var_x60 = 0.001 * var_x59; + const double var_x61 = 1 / var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x62 = 2000000 * var_x52; + const double var_x63 = exp(-0.025317124991725771 * var_chaste_interface__membrane__V); + const double var_x64 = pow(mParameters[6], 3); + const double var_x65 = var_x63 * var_x64; + const double var_x66 = mParameters[15] / ((1 + 0.10000000000000001 * var_x63) * (1380 + mParameters[4]) * (669921875000000.0 + var_x64)); + const double var_x67 = var_x65 * var_x66; + const double var_x68 = 0.03075923579139864 * mParameters[8]; + const double var_x69 = var_x49 * var_x51; + const double var_x70 = exp(0.013632298072467722 * var_chaste_interface__membrane__V); + const double var_x71 = var_x66 * var_x70 * pow(var_chaste_interface__sodium_concentration__Nai, 2) * mParameters[4]; + const double var_x72 = 0.23799999999999999 + var_chaste_interface__calcium_concentration__Cass; + const double var_x73 = 1 + 11.899999999999999 / pow(var_x72, 2); + const double var_x74 = 1 / var_x73; + const double var_x75 = (-63 + var_chaste_interface__membrane__V) * mParameters[7]; + const double var_x76 = 535.23141606043157 * var_x75 * mParameters[8]; + const double var_x77 = 80.808080808080803 * var_x44; + const double var_x78 = 80.808080808080803 * var_x45 * var_x74; + const double var_x79 = var_x47 * var_x78; + const double var_x80 = 0.04926108374384236 * var_chaste_interface__membrane__V; + const double var_x81 = 0.20000000000000001 * exp(0.12315270935960591 - var_x80); + const double var_x82 = exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__membrane__V); + const double var_x83 = 1 / (0.25 * var_x82 + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__membrane__V)); + const double var_x84 = 3.802 * var_x83; + const double var_x85 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__membrane__V; + const double var_x86 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__membrane__V) + 0.23000000000000001 * var_x82); + const double var_x87 = exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__membrane__V); + const double var_x88 = 6.9999999999999997e-7 * var_x87; + const double var_x89 = exp(0.36945812807881773 - var_x80); + const double var_x90 = 0.22 * var_x89; + const double var_x91 = 3.802 / (0.20000000000000001 * var_x82 + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_x92 = -var_x91; + const double var_x93 = 0.19170000000000001 * exp(-0.12315270935960591 - var_x80); + const double var_x94 = var_x86 + var_x93; + const double var_x95 = var_x85 + var_x91; + const double var_x96 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 + 0.060240963855421679 * mParameters[10] - 0.060240963855421679 * var_chaste_interface__membrane__V)); + const double var_x97 = 1.0526315789473684e-5 * var_x96; + const double var_x98 = 1.4e-8 * var_x87; + const double var_x99 = 0.001 * var_x96; + const double var_x100 = -var_x85; + const double var_x101 = 1.2097272727272726e-5 * var_x83 * var_x87 * var_x96 / (var_x85 * var_x89); + const double var_x102 = 1 * var_x96; + const double var_x103 = 1 / var_chaste_interface__potassium_concentration__Ki; + const double var_x104 = var_x103 * mParameters[5]; + const double var_x105 = log(var_x104); + const double var_x106 = -25.674321243523316 * var_x105 + var_chaste_interface__membrane__V; + const double var_x107 = mParameters[8] * mParameters[3]; + const double var_x108 = 0.061518471582797281 * var_x107; + const double var_x109 = var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12]; + const double var_x110 = 1 / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai); + const double var_x111 = 25.674321243523316 * var_x103; + const double var_x112 = exp(0.089599999999999999 * var_chaste_interface__membrane__V - 2.300419183419689 * var_x105); + const double var_x113 = 1 + var_x112; + const double var_x114 = var_x104 * mParameters[11] / (210 + mParameters[5]); + const double var_x115 = 1 / var_chaste_interface__sodium_concentration__Nai; + const double var_x116 = pow(var_x115, 1.5); + const double var_x117 = var_x115 * var_x116 * mParameters[5] / (pow((1 + 3043189.1166997822 * var_x116), 2) * (1500 + mParameters[5]) * (1 + 0.1245 * exp(-0.0038949423064193493 * var_chaste_interface__membrane__V) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * exp(-0.038949423064193495 * var_chaste_interface__membrane__V))); + const double var_x118 = 0.022348 * exp(0.01176 * var_chaste_interface__membrane__V); + const double var_x119 = -var_x118; + const double var_x120 = 0.013733 * exp(0.038198000000000003 * var_chaste_interface__membrane__V); + const double var_x121 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__membrane__V); + const double var_x122 = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__membrane__V); + const double var_x123 = 0.090820999999999999 * exp(0.11695499999999999 + 0.023390999999999999 * var_chaste_interface__membrane__V); + const double var_x124 = 0.012149999999999999 * pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; + const double var_x125 = pow(var_chaste_interface__calcium_concentration__Cass, 3); + const double var_x126 = 0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4); + const double var_x127 = 0.0040499999999999998 * var_x125; + const double var_x128 = 1 / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki); + const double var_x129 = var_x128 * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; + + + rJacobian[0][0] = 1.0 - (mDt * (-0.050000000000000003 * var_x0 - 2.8000000000000003 * var_x2)); + rJacobian[0][1] = -(mDt * (var_x3 + var_x4)); + rJacobian[0][2] = -(mDt * (var_x4)); + rJacobian[0][3] = -(mDt * (var_x4)); + rJacobian[0][4] = -(mDt * (var_x4)); + rJacobian[0][5] = -(mDt * (var_x4)); + rJacobian[0][6] = -(mDt * (var_x4)); + rJacobian[0][7] = 0.0; + rJacobian[0][8] = 0.0; + rJacobian[0][9] = 0.0; + rJacobian[0][10] = 0.0; + rJacobian[0][11] = 0.0; + rJacobian[0][12] = 0.0; + rJacobian[0][13] = 0.0; + rJacobian[0][14] = 0.0; + rJacobian[0][15] = 0.0; + rJacobian[0][16] = 0.0; + rJacobian[0][17] = 0.0; + rJacobian[0][18] = 0.0; + rJacobian[0][19] = 0.0; + rJacobian[0][20] = 0.0; + rJacobian[0][21] = 0.0; + rJacobian[0][22] = 0.0; + rJacobian[0][23] = 0.0; + rJacobian[0][24] = 0.0; + rJacobian[0][25] = 0.0; + rJacobian[0][26] = 0.0; + rJacobian[0][27] = 0.0; + rJacobian[0][28] = 0.0; + rJacobian[0][29] = 0.0; + rJacobian[0][30] = 0.0; + rJacobian[0][31] = 0.0; + rJacobian[1][0] = -(mDt * (1.2000000000000002 * var_x2)); + rJacobian[1][1] = 1.0 - (mDt * (-var_x3 - var_x5)); + rJacobian[1][2] = -(mDt * (var_x6)); + rJacobian[1][3] = 0.0; + rJacobian[1][4] = 0.0; + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = 0.0; + rJacobian[1][8] = 0.0; + rJacobian[1][9] = 0.0; + rJacobian[1][10] = 0.0; + rJacobian[1][11] = 0.0; + rJacobian[1][12] = 0.0; + rJacobian[1][13] = 0.0; + rJacobian[1][14] = 0.0; + rJacobian[1][15] = 0.0; + rJacobian[1][16] = 0.0; + rJacobian[1][17] = 0.0; + rJacobian[1][18] = 0.0; + rJacobian[1][19] = 0.0; + rJacobian[1][20] = 0.0; + rJacobian[1][21] = 0.0; + rJacobian[1][22] = 0.0; + rJacobian[1][23] = 0.0; + rJacobian[1][24] = 0.0; + rJacobian[1][25] = 0.0; + rJacobian[1][26] = 0.0; + rJacobian[1][27] = 0.0; + rJacobian[1][28] = 0.0; + rJacobian[1][29] = 0.0; + rJacobian[1][30] = 0.0; + rJacobian[1][31] = 0.0; + rJacobian[2][0] = 0.0; + rJacobian[2][1] = -(mDt * (var_x5)); + rJacobian[2][2] = 1.0 - (mDt * (-0.026000000000000002 + var_x8 - var_x14 - var_x15 - var_x18 - var_x6)); + rJacobian[2][3] = -(mDt * (1.0000000000000002e-6 * var_x0)); + rJacobian[2][4] = -(mDt * (var_x19)); + rJacobian[2][5] = -(mDt * (var_x20)); + rJacobian[2][6] = -(mDt * (var_x21)); + rJacobian[2][7] = 0.0; + rJacobian[2][8] = 0.0; + rJacobian[2][9] = 0.0; + rJacobian[2][10] = 0.0; + rJacobian[2][11] = 0.0; + rJacobian[2][12] = -(mDt * (var_x23 + var_x26)); + rJacobian[2][13] = 0.0; + rJacobian[2][14] = 0.0; + rJacobian[2][15] = 0.0; + rJacobian[2][16] = 0.0; + rJacobian[2][17] = 0.0; + rJacobian[2][18] = 0.0; + rJacobian[2][19] = 0.0; + rJacobian[2][20] = 0.0; + rJacobian[2][21] = 0.0; + rJacobian[2][22] = 0.0; + rJacobian[2][23] = 0.0; + rJacobian[2][24] = 0.0; + rJacobian[2][25] = 0.0; + rJacobian[2][26] = 0.0; + rJacobian[2][27] = 0.0; + rJacobian[2][28] = 0.0; + rJacobian[2][29] = 0.0; + rJacobian[2][30] = 0.0; + rJacobian[2][31] = 0.0; + rJacobian[3][0] = 0.0; + rJacobian[3][1] = 0.0; + rJacobian[3][2] = -(mDt * (var_x18)); + rJacobian[3][3] = 1.0 - (mDt * (-0.0135 - var_x28 - 0.002 * var_x0 * var_x9)); + rJacobian[3][4] = 0.0; + rJacobian[3][5] = -(mDt * (var_x29)); + rJacobian[3][6] = -(mDt * (var_x13)); + rJacobian[3][7] = 0.0; + rJacobian[3][8] = 0.0; + rJacobian[3][9] = 0.0; + rJacobian[3][10] = 0.0; + rJacobian[3][11] = 0.0; + rJacobian[3][12] = -(mDt * (-var_x23 - var_x30)); + rJacobian[3][13] = 0.0; + rJacobian[3][14] = 0.0; + rJacobian[3][15] = 0.0; + rJacobian[3][16] = 0.0; + rJacobian[3][17] = 0.0; + rJacobian[3][18] = 0.0; + rJacobian[3][19] = 0.0; + rJacobian[3][20] = 0.0; + rJacobian[3][21] = 0.0; + rJacobian[3][22] = 0.0; + rJacobian[3][23] = 0.0; + rJacobian[3][24] = 0.0; + rJacobian[3][25] = 0.0; + rJacobian[3][26] = 0.0; + rJacobian[3][27] = 0.0; + rJacobian[3][28] = 0.0; + rJacobian[3][29] = 0.0; + rJacobian[3][30] = 0.0; + rJacobian[3][31] = 0.0; + rJacobian[4][0] = 0.0; + rJacobian[4][1] = 0.0; + rJacobian[4][2] = -(mDt * (0.026000000000000002 - var_x8)); + rJacobian[4][3] = 0.0; + rJacobian[4][4] = 1.0 - (mDt * (-var_x13 - var_x19 - var_x29)); + rJacobian[4][5] = -(mDt * (0.00050000000000000001)); + rJacobian[4][6] = -(mDt * (var_x31)); + rJacobian[4][7] = 0.0; + rJacobian[4][8] = 0.0; + rJacobian[4][9] = 0.0; + rJacobian[4][10] = 0.0; + rJacobian[4][11] = 0.0; + rJacobian[4][12] = -(mDt * (var_x32)); + rJacobian[4][13] = 0.0; + rJacobian[4][14] = 0.0; + rJacobian[4][15] = 0.0; + rJacobian[4][16] = 0.0; + rJacobian[4][17] = 0.0; + rJacobian[4][18] = 0.0; + rJacobian[4][19] = 0.0; + rJacobian[4][20] = 0.0; + rJacobian[4][21] = 0.0; + rJacobian[4][22] = 0.0; + rJacobian[4][23] = 0.0; + rJacobian[4][24] = 0.0; + rJacobian[4][25] = 0.0; + rJacobian[4][26] = 0.0; + rJacobian[4][27] = 0.0; + rJacobian[4][28] = 0.0; + rJacobian[4][29] = 0.0; + rJacobian[4][30] = 0.0; + rJacobian[4][31] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = -(mDt * (var_x14)); + rJacobian[5][3] = -(mDt * (var_x31)); + rJacobian[5][4] = -(mDt * (var_x13)); + rJacobian[5][5] = 1.0 - (mDt * (-0.00050000000000000001 - var_x20 - var_x29)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[5][8] = 0.0; + rJacobian[5][9] = 0.0; + rJacobian[5][10] = 0.0; + rJacobian[5][11] = 0.0; + rJacobian[5][12] = -(mDt * (-var_x26 - var_x32)); + rJacobian[5][13] = 0.0; + rJacobian[5][14] = 0.0; + rJacobian[5][15] = 0.0; + rJacobian[5][16] = 0.0; + rJacobian[5][17] = 0.0; + rJacobian[5][18] = 0.0; + rJacobian[5][19] = 0.0; + rJacobian[5][20] = 0.0; + rJacobian[5][21] = 0.0; + rJacobian[5][22] = 0.0; + rJacobian[5][23] = 0.0; + rJacobian[5][24] = 0.0; + rJacobian[5][25] = 0.0; + rJacobian[5][26] = 0.0; + rJacobian[5][27] = 0.0; + rJacobian[5][28] = 0.0; + rJacobian[5][29] = 0.0; + rJacobian[5][30] = 0.0; + rJacobian[5][31] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = -(mDt * (var_x15)); + rJacobian[6][3] = -(mDt * (0.00050000000000000001)); + rJacobian[6][4] = -(mDt * (var_x29)); + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (-0.013000000000000001 - var_x13 - var_x21 - var_x28)); + rJacobian[6][7] = 0.0; + rJacobian[6][8] = 0.0; + rJacobian[6][9] = 0.0; + rJacobian[6][10] = 0.0; + rJacobian[6][11] = 0.0; + rJacobian[6][12] = -(mDt * (var_x30)); + rJacobian[6][13] = 0.0; + rJacobian[6][14] = 0.0; + rJacobian[6][15] = 0.0; + rJacobian[6][16] = 0.0; + rJacobian[6][17] = 0.0; + rJacobian[6][18] = 0.0; + rJacobian[6][19] = 0.0; + rJacobian[6][20] = 0.0; + rJacobian[6][21] = 0.0; + rJacobian[6][22] = 0.0; + rJacobian[6][23] = 0.0; + rJacobian[6][24] = 0.0; + rJacobian[6][25] = 0.0; + rJacobian[6][26] = 0.0; + rJacobian[6][27] = 0.0; + rJacobian[6][28] = 0.0; + rJacobian[6][29] = 0.0; + rJacobian[6][30] = 0.0; + rJacobian[6][31] = 0.0; + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = 0.0; + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (-var_x34)); + rJacobian[7][8] = 0.0; + rJacobian[7][9] = 0.0; + rJacobian[7][10] = 0.0; + rJacobian[7][11] = -(mDt * (331.80000000000001 - var_x35)); + rJacobian[7][12] = 0.0; + rJacobian[7][13] = 0.0; + rJacobian[7][14] = 0.0; + rJacobian[7][15] = 0.0; + rJacobian[7][16] = 0.0; + rJacobian[7][17] = 0.0; + rJacobian[7][18] = 0.0; + rJacobian[7][19] = 0.0; + rJacobian[7][20] = 0.0; + rJacobian[7][21] = 0.0; + rJacobian[7][22] = 0.0; + rJacobian[7][23] = 0.0; + rJacobian[7][24] = 0.0; + rJacobian[7][25] = 0.0; + rJacobian[7][26] = 0.0; + rJacobian[7][27] = 0.0; + rJacobian[7][28] = 0.0; + rJacobian[7][29] = 0.0; + rJacobian[7][30] = 0.0; + rJacobian[7][31] = 0.0; + rJacobian[8][0] = 0.0; + rJacobian[8][1] = 0.0; + rJacobian[8][2] = 0.0; + rJacobian[8][3] = 0.0; + rJacobian[8][4] = 0.0; + rJacobian[8][5] = 0.0; + rJacobian[8][6] = 0.0; + rJacobian[8][7] = 0.0; + rJacobian[8][8] = 1.0 - (mDt * (-var_x37)); + rJacobian[8][9] = 0.0; + rJacobian[8][10] = 0.0; + rJacobian[8][11] = -(mDt * (2289 - var_x38)); + rJacobian[8][12] = 0.0; + rJacobian[8][13] = 0.0; + rJacobian[8][14] = 0.0; + rJacobian[8][15] = 0.0; + rJacobian[8][16] = 0.0; + rJacobian[8][17] = 0.0; + rJacobian[8][18] = 0.0; + rJacobian[8][19] = 0.0; + rJacobian[8][20] = 0.0; + rJacobian[8][21] = 0.0; + rJacobian[8][22] = 0.0; + rJacobian[8][23] = 0.0; + rJacobian[8][24] = 0.0; + rJacobian[8][25] = 0.0; + rJacobian[8][26] = 0.0; + rJacobian[8][27] = 0.0; + rJacobian[8][28] = 0.0; + rJacobian[8][29] = 0.0; + rJacobian[8][30] = 0.0; + rJacobian[8][31] = 0.0; + rJacobian[9][0] = 0.0; + rJacobian[9][1] = 0.0; + rJacobian[9][2] = 0.0; + rJacobian[9][3] = 0.0; + rJacobian[9][4] = 0.0; + rJacobian[9][5] = 0.0; + rJacobian[9][6] = 0.0; + rJacobian[9][7] = 0.0; + rJacobian[9][8] = 0.0; + rJacobian[9][9] = 1.0 - (mDt * (var_x41 * (-0.050000000000000003 - var_x44) + 24000000 * (0.050000000000000003 * var_chaste_interface__calcium_concentration__CaNSR - 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaJSR - var_x44 * var_x45) / (pow(var_x39, 3) * pow(var_x40, 2)))); + rJacobian[9][10] = -(mDt * (0.050000000000000003 * var_x41)); + rJacobian[9][11] = 0.0; + rJacobian[9][12] = -(mDt * (var_x41 * var_x44)); + rJacobian[9][13] = -(mDt * (-var_x43 * var_x46)); + rJacobian[9][14] = 0.0; + rJacobian[9][15] = 0.0; + rJacobian[9][16] = 0.0; + rJacobian[9][17] = 0.0; + rJacobian[9][18] = 0.0; + rJacobian[9][19] = 0.0; + rJacobian[9][20] = 0.0; + rJacobian[9][21] = 0.0; + rJacobian[9][22] = 0.0; + rJacobian[9][23] = 0.0; + rJacobian[9][24] = 0.0; + rJacobian[9][25] = 0.0; + rJacobian[9][26] = 0.0; + rJacobian[9][27] = 0.0; + rJacobian[9][28] = 0.0; + rJacobian[9][29] = -(mDt * (var_x48)); + rJacobian[9][30] = -(mDt * (var_x48)); + rJacobian[9][31] = 0.0; + rJacobian[10][0] = 0.0; + rJacobian[10][1] = 0.0; + rJacobian[10][2] = 0.0; + rJacobian[10][3] = 0.0; + rJacobian[10][4] = 0.0; + rJacobian[10][5] = 0.0; + rJacobian[10][6] = 0.0; + rJacobian[10][7] = 0.0; + rJacobian[10][8] = 0.0; + rJacobian[10][9] = -(mDt * (0.0028598665395614866)); + rJacobian[10][10] = 1.0 - (mDt * (-0.0028598665395614866 - 12.316491897044804 * mParameters[0])); + rJacobian[10][11] = -(mDt * (12316.491897044803 * mParameters[0] + 24632983.794089608 * var_x52 * mParameters[2] - 24632983794089.605 * var_x55 * mParameters[2])); + rJacobian[10][12] = 0.0; + rJacobian[10][13] = 0.0; + rJacobian[10][14] = 0.0; + rJacobian[10][15] = 0.0; + rJacobian[10][16] = 0.0; + rJacobian[10][17] = 0.0; + rJacobian[10][18] = 0.0; + rJacobian[10][19] = 0.0; + rJacobian[10][20] = 0.0; + rJacobian[10][21] = 0.0; + rJacobian[10][22] = 0.0; + rJacobian[10][23] = 0.0; + rJacobian[10][24] = 0.0; + rJacobian[10][25] = 0.0; + rJacobian[10][26] = 0.0; + rJacobian[10][27] = 0.0; + rJacobian[10][28] = 0.0; + rJacobian[10][29] = 0.0; + rJacobian[10][30] = 0.0; + rJacobian[10][31] = 0.0; + rJacobian[11][0] = 0.0; + rJacobian[11][1] = 0.0; + rJacobian[11][2] = 0.0; + rJacobian[11][3] = 0.0; + rJacobian[11][4] = 0.0; + rJacobian[11][5] = 0.0; + rJacobian[11][6] = 0.0; + rJacobian[11][7] = -(mDt * (var_x34 * var_x60)); + rJacobian[11][8] = -(mDt * (var_x37 * var_x60)); + rJacobian[11][9] = 0.0; + rJacobian[11][10] = -(mDt * (var_x60 * mParameters[0])); + rJacobian[11][11] = 1.0 - (mDt * (var_x60 * (-2745.8000000000002 + var_x35 + var_x38 - 1000 * mParameters[0] - var_x62 * mParameters[2] - var_x68 * (var_x62 + 0.0047112379481865285 * var_x61 + 2000 * var_x67 - 1999999999999.9998 * var_x55) + 1999999999999.9998 * var_x53 * var_x54 * mParameters[2]) + 23.799999999999997 * (0.125 * var_chaste_interface__calcium_concentration__Cass + 0.019599999999999999 * var_chaste_interface__calcium_buffering__LTRPN_Ca + 3.1999999999999999e-5 * var_chaste_interface__calcium_buffering__HTRPN_Ca - 125 * var_chaste_interface__calcium_concentration__Cai_converted + (-var_x56 + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0] - var_x33 * (140 - var_chaste_interface__calcium_buffering__HTRPN_Ca) - var_x36 * (70 - var_chaste_interface__calcium_buffering__LTRPN_Ca) - var_x68 * (var_x69 + 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(0.001 * var_x61 * mParameters[4]) - 2 * var_x66 * (-var_x56 * var_x65 + var_x70 * pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4])) - var_x69 * mParameters[2]) / (pow(var_x57, 3) * pow(var_x58, 2)))); + rJacobian[11][12] = -(mDt * (0.000125 * var_x59)); + rJacobian[11][13] = 0.0; + rJacobian[11][14] = 0.0; + rJacobian[11][15] = 0.0; + rJacobian[11][16] = 0.0; + rJacobian[11][17] = 0.0; + rJacobian[11][18] = 0.0; + rJacobian[11][19] = 0.0; + rJacobian[11][20] = 0.0; + rJacobian[11][21] = 0.0; + rJacobian[11][22] = 0.0; + rJacobian[11][23] = 0.0; + rJacobian[11][24] = 0.0; + rJacobian[11][25] = 0.0; + rJacobian[11][26] = 0.0; + rJacobian[11][27] = 0.0; + rJacobian[11][28] = 0.0; + rJacobian[11][29] = 0.0; + rJacobian[11][30] = 0.0; + rJacobian[11][31] = -(mDt * (0.00018455541474839184 * var_x59 * var_x71 * mParameters[8])); + rJacobian[12][0] = 0.0; + rJacobian[12][1] = 0.0; + rJacobian[12][2] = 0.0; + rJacobian[12][3] = 0.0; + rJacobian[12][4] = 0.0; + rJacobian[12][5] = 0.0; + rJacobian[12][6] = -(mDt * (-var_x74 * var_x76)); + rJacobian[12][7] = 0.0; + rJacobian[12][8] = 0.0; + rJacobian[12][9] = -(mDt * (var_x74 * var_x77)); + rJacobian[12][10] = 0.0; + rJacobian[12][11] = -(mDt * (2175084.1750841751 * var_x74)); + rJacobian[12][12] = 1.0 - (mDt * (var_x74 * (-2175.0841750841751 - var_x77) + 23.799999999999997 * (2175084.1750841751 * var_chaste_interface__calcium_concentration__Cai_converted - 2175.0841750841751 * var_chaste_interface__calcium_concentration__Cass - var_x76 * var_chaste_interface__L_type_calcium_current__O + 80.808080808080803 * var_x42 * var_x45 * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]) / (pow(var_x72, 3) * pow(var_x73, 2)))); + rJacobian[12][13] = -(mDt * (var_x43 * var_x78)); + rJacobian[12][14] = 0.0; + rJacobian[12][15] = 0.0; + rJacobian[12][16] = 0.0; + rJacobian[12][17] = 0.0; + rJacobian[12][18] = 0.0; + rJacobian[12][19] = 0.0; + rJacobian[12][20] = 0.0; + rJacobian[12][21] = 0.0; + rJacobian[12][22] = 0.0; + rJacobian[12][23] = 0.0; + rJacobian[12][24] = 0.0; + rJacobian[12][25] = 0.0; + rJacobian[12][26] = 0.0; + rJacobian[12][27] = 0.0; + rJacobian[12][28] = 0.0; + rJacobian[12][29] = -(mDt * (var_x79)); + rJacobian[12][30] = -(mDt * (var_x79)); + rJacobian[12][31] = 0.0; + rJacobian[13][0] = 0.0; + rJacobian[13][1] = 0.0; + rJacobian[13][2] = 0.0; + rJacobian[13][3] = 0.0; + rJacobian[13][4] = 0.0; + rJacobian[13][5] = 0.0; + rJacobian[13][6] = -(mDt * (-0.014285714285714287 * var_x75 * exp(-0.0015432098765432098 * pow((-5 + var_chaste_interface__membrane__V), 2)))); + rJacobian[13][7] = 0.0; + rJacobian[13][8] = 0.0; + rJacobian[13][9] = 0.0; + rJacobian[13][10] = 0.0; + rJacobian[13][11] = 0.0; + rJacobian[13][12] = 0.0; + rJacobian[13][13] = 1.0 - (mDt * (-0.040000000000000001)); + rJacobian[13][14] = 0.0; + rJacobian[13][15] = 0.0; + rJacobian[13][16] = 0.0; + rJacobian[13][17] = 0.0; + rJacobian[13][18] = 0.0; + rJacobian[13][19] = 0.0; + rJacobian[13][20] = 0.0; + rJacobian[13][21] = 0.0; + rJacobian[13][22] = 0.0; + rJacobian[13][23] = 0.0; + rJacobian[13][24] = 0.0; + rJacobian[13][25] = 0.0; + rJacobian[13][26] = 0.0; + rJacobian[13][27] = 0.0; + rJacobian[13][28] = 0.0; + rJacobian[13][29] = 0.0; + rJacobian[13][30] = 0.0; + rJacobian[13][31] = 0.0; + rJacobian[14][0] = 0.0; + rJacobian[14][1] = 0.0; + rJacobian[14][2] = 0.0; + rJacobian[14][3] = 0.0; + rJacobian[14][4] = 0.0; + rJacobian[14][5] = 0.0; + rJacobian[14][6] = 0.0; + rJacobian[14][7] = 0.0; + rJacobian[14][8] = 0.0; + rJacobian[14][9] = 0.0; + rJacobian[14][10] = 0.0; + rJacobian[14][11] = 0.0; + rJacobian[14][12] = 0.0; + rJacobian[14][13] = 0.0; + rJacobian[14][14] = 1.0 - (mDt * (-var_x81 - var_x84 - var_x85)); + rJacobian[14][15] = -(mDt * (var_x86)); + rJacobian[14][16] = 0.0; + rJacobian[14][17] = 0.0; + rJacobian[14][18] = 0.0; + rJacobian[14][19] = 0.0; + rJacobian[14][20] = -(mDt * (var_x88)); + rJacobian[14][21] = -(mDt * (var_x90)); + rJacobian[14][22] = 0.0; + rJacobian[14][23] = 0.0; + rJacobian[14][24] = 0.0; + rJacobian[14][25] = 0.0; + rJacobian[14][26] = 0.0; + rJacobian[14][27] = 0.0; + rJacobian[14][28] = 0.0; + rJacobian[14][29] = 0.0; + rJacobian[14][30] = 0.0; + rJacobian[14][31] = 0.0; + rJacobian[15][0] = 0.0; + rJacobian[15][1] = 0.0; + rJacobian[15][2] = 0.0; + rJacobian[15][3] = 0.0; + rJacobian[15][4] = 0.0; + rJacobian[15][5] = 0.0; + rJacobian[15][6] = 0.0; + rJacobian[15][7] = 0.0; + rJacobian[15][8] = 0.0; + rJacobian[15][9] = 0.0; + rJacobian[15][10] = 0.0; + rJacobian[15][11] = 0.0; + rJacobian[15][12] = 0.0; + rJacobian[15][13] = 0.0; + rJacobian[15][14] = -(mDt * (var_x81 + var_x92)); + rJacobian[15][15] = 1.0 - (mDt * (-var_x94 - var_x95)); + rJacobian[15][16] = -(mDt * (var_x92)); + rJacobian[15][17] = -(mDt * (var_x92)); + rJacobian[15][18] = -(mDt * (var_x88 + var_x92)); + rJacobian[15][19] = -(mDt * (var_x92)); + rJacobian[15][20] = -(mDt * (var_x92)); + rJacobian[15][21] = -(mDt * (var_x92)); + rJacobian[15][22] = 0.0; + rJacobian[15][23] = 0.0; + rJacobian[15][24] = 0.0; + rJacobian[15][25] = 0.0; + rJacobian[15][26] = 0.0; + rJacobian[15][27] = 0.0; + rJacobian[15][28] = 0.0; + rJacobian[15][29] = 0.0; + rJacobian[15][30] = 0.0; + rJacobian[15][31] = 0.0; + rJacobian[16][0] = 0.0; + rJacobian[16][1] = 0.0; + rJacobian[16][2] = 0.0; + rJacobian[16][3] = 0.0; + rJacobian[16][4] = 0.0; + rJacobian[16][5] = 0.0; + rJacobian[16][6] = 0.0; + rJacobian[16][7] = 0.0; + rJacobian[16][8] = 0.0; + rJacobian[16][9] = 0.0; + rJacobian[16][10] = 0.0; + rJacobian[16][11] = 0.0; + rJacobian[16][12] = 0.0; + rJacobian[16][13] = 0.0; + rJacobian[16][14] = 0.0; + rJacobian[16][15] = 0.0; + rJacobian[16][16] = 1.0 - (mDt * (-var_x88 - var_x97)); + rJacobian[16][17] = -(mDt * (var_x98)); + rJacobian[16][18] = 0.0; + rJacobian[16][19] = 0.0; + rJacobian[16][20] = -(mDt * (var_x99)); + rJacobian[16][21] = 0.0; + rJacobian[16][22] = 0.0; + rJacobian[16][23] = 0.0; + rJacobian[16][24] = 0.0; + rJacobian[16][25] = 0.0; + rJacobian[16][26] = 0.0; + rJacobian[16][27] = 0.0; + rJacobian[16][28] = 0.0; + rJacobian[16][29] = 0.0; + rJacobian[16][30] = 0.0; + rJacobian[16][31] = 0.0; + rJacobian[17][0] = 0.0; + rJacobian[17][1] = 0.0; + rJacobian[17][2] = 0.0; + rJacobian[17][3] = 0.0; + rJacobian[17][4] = 0.0; + rJacobian[17][5] = 0.0; + rJacobian[17][6] = 0.0; + rJacobian[17][7] = 0.0; + rJacobian[17][8] = 0.0; + rJacobian[17][9] = 0.0; + rJacobian[17][10] = 0.0; + rJacobian[17][11] = 0.0; + rJacobian[17][12] = 0.0; + rJacobian[17][13] = 0.0; + rJacobian[17][14] = 0.0; + rJacobian[17][15] = 0.0; + rJacobian[17][16] = -(mDt * (var_x97)); + rJacobian[17][17] = 1.0 - (mDt * (-var_x98)); + rJacobian[17][18] = 0.0; + rJacobian[17][19] = 0.0; + rJacobian[17][20] = 0.0; + rJacobian[17][21] = 0.0; + rJacobian[17][22] = 0.0; + rJacobian[17][23] = 0.0; + rJacobian[17][24] = 0.0; + rJacobian[17][25] = 0.0; + rJacobian[17][26] = 0.0; + rJacobian[17][27] = 0.0; + rJacobian[17][28] = 0.0; + rJacobian[17][29] = 0.0; + rJacobian[17][30] = 0.0; + rJacobian[17][31] = 0.0; + rJacobian[18][0] = 0.0; + rJacobian[18][1] = 0.0; + rJacobian[18][2] = 0.0; + rJacobian[18][3] = 0.0; + rJacobian[18][4] = 0.0; + rJacobian[18][5] = 0.0; + rJacobian[18][6] = 0.0; + rJacobian[18][7] = 0.0; + rJacobian[18][8] = 0.0; + rJacobian[18][9] = 0.0; + rJacobian[18][10] = 0.0; + rJacobian[18][11] = 0.0; + rJacobian[18][12] = 0.0; + rJacobian[18][13] = 0.0; + rJacobian[18][14] = 0.0; + rJacobian[18][15] = -(mDt * (var_x85)); + rJacobian[18][16] = 0.0; + rJacobian[18][17] = 0.0; + rJacobian[18][18] = 1.0 - (mDt * (-var_x88 - var_x94)); + rJacobian[18][19] = -(mDt * (var_x91)); + rJacobian[18][20] = -(mDt * (var_x81)); + rJacobian[18][21] = 0.0; + rJacobian[18][22] = 0.0; + rJacobian[18][23] = 0.0; + rJacobian[18][24] = 0.0; + rJacobian[18][25] = 0.0; + rJacobian[18][26] = 0.0; + rJacobian[18][27] = 0.0; + rJacobian[18][28] = 0.0; + rJacobian[18][29] = 0.0; + rJacobian[18][30] = 0.0; + rJacobian[18][31] = 0.0; + rJacobian[19][0] = 0.0; + rJacobian[19][1] = 0.0; + rJacobian[19][2] = 0.0; + rJacobian[19][3] = 0.0; + rJacobian[19][4] = 0.0; + rJacobian[19][5] = 0.0; + rJacobian[19][6] = 0.0; + rJacobian[19][7] = 0.0; + rJacobian[19][8] = 0.0; + rJacobian[19][9] = 0.0; + rJacobian[19][10] = 0.0; + rJacobian[19][11] = 0.0; + rJacobian[19][12] = 0.0; + rJacobian[19][13] = 0.0; + rJacobian[19][14] = -(mDt * (var_x100)); + rJacobian[19][15] = -(mDt * (var_x100)); + rJacobian[19][16] = -(mDt * (var_x100)); + rJacobian[19][17] = -(mDt * (var_x100)); + rJacobian[19][18] = -(mDt * (var_x93 - var_x85)); + rJacobian[19][19] = 1.0 - (mDt * (-var_x88 - var_x95)); + rJacobian[19][20] = -(mDt * (var_x100)); + rJacobian[19][21] = -(mDt * (var_x100)); + rJacobian[19][22] = 0.0; + rJacobian[19][23] = 0.0; + rJacobian[19][24] = 0.0; + rJacobian[19][25] = 0.0; + rJacobian[19][26] = 0.0; + rJacobian[19][27] = 0.0; + rJacobian[19][28] = 0.0; + rJacobian[19][29] = 0.0; + rJacobian[19][30] = 0.0; + rJacobian[19][31] = 0.0; + rJacobian[20][0] = 0.0; + rJacobian[20][1] = 0.0; + rJacobian[20][2] = 0.0; + rJacobian[20][3] = 0.0; + rJacobian[20][4] = 0.0; + rJacobian[20][5] = 0.0; + rJacobian[20][6] = 0.0; + rJacobian[20][7] = 0.0; + rJacobian[20][8] = 0.0; + rJacobian[20][9] = 0.0; + rJacobian[20][10] = 0.0; + rJacobian[20][11] = 0.0; + rJacobian[20][12] = 0.0; + rJacobian[20][13] = 0.0; + rJacobian[20][14] = -(mDt * (var_x85)); + rJacobian[20][15] = 0.0; + rJacobian[20][16] = -(mDt * (var_x88)); + rJacobian[20][17] = 0.0; + rJacobian[20][18] = -(mDt * (var_x86)); + rJacobian[20][19] = 0.0; + rJacobian[20][20] = 1.0 - (mDt * (-var_x101 - var_x81 - var_x88 - var_x99)); + rJacobian[20][21] = -(mDt * (var_x102)); + rJacobian[20][22] = 0.0; + rJacobian[20][23] = 0.0; + rJacobian[20][24] = 0.0; + rJacobian[20][25] = 0.0; + rJacobian[20][26] = 0.0; + rJacobian[20][27] = 0.0; + rJacobian[20][28] = 0.0; + rJacobian[20][29] = 0.0; + rJacobian[20][30] = 0.0; + rJacobian[20][31] = 0.0; + rJacobian[21][0] = 0.0; + rJacobian[21][1] = 0.0; + rJacobian[21][2] = 0.0; + rJacobian[21][3] = 0.0; + rJacobian[21][4] = 0.0; + rJacobian[21][5] = 0.0; + rJacobian[21][6] = 0.0; + rJacobian[21][7] = 0.0; + rJacobian[21][8] = 0.0; + rJacobian[21][9] = 0.0; + rJacobian[21][10] = 0.0; + rJacobian[21][11] = 0.0; + rJacobian[21][12] = 0.0; + rJacobian[21][13] = 0.0; + rJacobian[21][14] = -(mDt * (var_x84)); + rJacobian[21][15] = 0.0; + rJacobian[21][16] = 0.0; + rJacobian[21][17] = 0.0; + rJacobian[21][18] = 0.0; + rJacobian[21][19] = 0.0; + rJacobian[21][20] = -(mDt * (var_x101)); + rJacobian[21][21] = 1.0 - (mDt * (-var_x102 - var_x90)); + rJacobian[21][22] = 0.0; + rJacobian[21][23] = 0.0; + rJacobian[21][24] = 0.0; + rJacobian[21][25] = 0.0; + rJacobian[21][26] = 0.0; + rJacobian[21][27] = 0.0; + rJacobian[21][28] = 0.0; + rJacobian[21][29] = 0.0; + rJacobian[21][30] = 0.0; + rJacobian[21][31] = 0.0; + rJacobian[22][0] = 0.0; + rJacobian[22][1] = 0.0; + rJacobian[22][2] = 0.0; + rJacobian[22][3] = 0.0; + rJacobian[22][4] = 0.0; + rJacobian[22][5] = 0.0; + rJacobian[22][6] = 0.0; + rJacobian[22][7] = 0.0; + rJacobian[22][8] = 0.0; + rJacobian[22][9] = 0.0; + rJacobian[22][10] = 0.0; + rJacobian[22][11] = 0.0; + rJacobian[22][12] = 0.0; + rJacobian[22][13] = 0.0; + rJacobian[22][14] = 0.0; + rJacobian[22][15] = 0.0; + rJacobian[22][16] = 0.0; + rJacobian[22][17] = 0.0; + rJacobian[22][18] = 0.0; + rJacobian[22][19] = 0.0; + rJacobian[22][20] = 0.0; + rJacobian[22][21] = 0.0; + rJacobian[22][22] = 1.0; + rJacobian[22][23] = 0.0; + rJacobian[22][24] = 0.0; + rJacobian[22][25] = 0.0; + rJacobian[22][26] = 0.0; + rJacobian[22][27] = 0.0; + rJacobian[22][28] = 0.0; + rJacobian[22][29] = 0.0; + rJacobian[22][30] = 0.0; + rJacobian[22][31] = 0.0; + rJacobian[23][0] = 0.0; + rJacobian[23][1] = 0.0; + rJacobian[23][2] = 0.0; + rJacobian[23][3] = 0.0; + rJacobian[23][4] = 0.0; + rJacobian[23][5] = 0.0; + rJacobian[23][6] = 0.0; + rJacobian[23][7] = 0.0; + rJacobian[23][8] = 0.0; + rJacobian[23][9] = 0.0; + rJacobian[23][10] = 0.0; + rJacobian[23][11] = 0.0; + rJacobian[23][12] = 0.0; + rJacobian[23][13] = 0.0; + rJacobian[23][14] = 0.0; + rJacobian[23][15] = 0.0; + rJacobian[23][16] = 0.0; + rJacobian[23][17] = 0.0; + rJacobian[23][18] = 0.0; + rJacobian[23][19] = 0.0; + rJacobian[23][20] = 0.0; + rJacobian[23][21] = 0.0; + rJacobian[23][22] = -(mDt * (-var_x106 * var_x108 * var_x109)); + rJacobian[23][23] = 1.0 - (mDt * (-var_x108 * (25.674321243523316 * var_x114 / var_x113 + var_x109 * var_x111 * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss + var_x111 * pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * mParameters[14] + 4.1078913989637309 * var_x103 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur + 25.674321243523316 * var_x110 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13] + var_x111 * pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f - 2.300419183419689 * var_x106 * var_x112 * var_x114 / pow(var_x113, 2)))); + rJacobian[23][24] = 0.0; + rJacobian[23][25] = 0.0; + rJacobian[23][26] = 0.0; + rJacobian[23][27] = -(mDt * (-var_x108 * (-25.674321243523316 * log(var_x110 * (1 * mParameters[5] + 0.020408163265306124 * mParameters[6])) + var_chaste_interface__membrane__V) * mParameters[13])); + rJacobian[23][28] = 0.0; + rJacobian[23][29] = 0.0; + rJacobian[23][30] = 0.0; + rJacobian[23][31] = -(mDt * (-var_x108 * (-8034019.2680874243 * var_x117 + 0.52396573966374116 * var_x110 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]))); + rJacobian[24][0] = 0.0; + rJacobian[24][1] = 0.0; + rJacobian[24][2] = 0.0; + rJacobian[24][3] = 0.0; + rJacobian[24][4] = 0.0; + rJacobian[24][5] = 0.0; + rJacobian[24][6] = 0.0; + rJacobian[24][7] = 0.0; + rJacobian[24][8] = 0.0; + rJacobian[24][9] = 0.0; + rJacobian[24][10] = 0.0; + rJacobian[24][11] = 0.0; + rJacobian[24][12] = 0.0; + rJacobian[24][13] = 0.0; + rJacobian[24][14] = 0.0; + rJacobian[24][15] = 0.0; + rJacobian[24][16] = 0.0; + rJacobian[24][17] = 0.0; + rJacobian[24][18] = 0.0; + rJacobian[24][19] = 0.0; + rJacobian[24][20] = 0.0; + rJacobian[24][21] = 0.0; + rJacobian[24][22] = 0.0; + rJacobian[24][23] = 0.0; + rJacobian[24][24] = 1.0 - (mDt * (-0.023761000000000001 - var_x118 - 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__membrane__V))); + rJacobian[24][25] = -(mDt * (0.036777999999999998 - var_x118)); + rJacobian[24][26] = -(mDt * (var_x119)); + rJacobian[24][27] = -(mDt * (var_x119)); + rJacobian[24][28] = 0.0; + rJacobian[24][29] = 0.0; + rJacobian[24][30] = 0.0; + rJacobian[24][31] = 0.0; + rJacobian[25][0] = 0.0; + rJacobian[25][1] = 0.0; + rJacobian[25][2] = 0.0; + rJacobian[25][3] = 0.0; + rJacobian[25][4] = 0.0; + rJacobian[25][5] = 0.0; + rJacobian[25][6] = 0.0; + rJacobian[25][7] = 0.0; + rJacobian[25][8] = 0.0; + rJacobian[25][9] = 0.0; + rJacobian[25][10] = 0.0; + rJacobian[25][11] = 0.0; + rJacobian[25][12] = 0.0; + rJacobian[25][13] = 0.0; + rJacobian[25][14] = 0.0; + rJacobian[25][15] = 0.0; + rJacobian[25][16] = 0.0; + rJacobian[25][17] = 0.0; + rJacobian[25][18] = 0.0; + rJacobian[25][19] = 0.0; + rJacobian[25][20] = 0.0; + rJacobian[25][21] = 0.0; + rJacobian[25][22] = 0.0; + rJacobian[25][23] = 0.0; + rJacobian[25][24] = -(mDt * (0.023761000000000001)); + rJacobian[25][25] = 1.0 - (mDt * (-0.036777999999999998 - var_x120)); + rJacobian[25][26] = 0.0; + rJacobian[25][27] = -(mDt * (var_x121)); + rJacobian[25][28] = 0.0; + rJacobian[25][29] = 0.0; + rJacobian[25][30] = 0.0; + rJacobian[25][31] = 0.0; + rJacobian[26][0] = 0.0; + rJacobian[26][1] = 0.0; + rJacobian[26][2] = 0.0; + rJacobian[26][3] = 0.0; + rJacobian[26][4] = 0.0; + rJacobian[26][5] = 0.0; + rJacobian[26][6] = 0.0; + rJacobian[26][7] = 0.0; + rJacobian[26][8] = 0.0; + rJacobian[26][9] = 0.0; + rJacobian[26][10] = 0.0; + rJacobian[26][11] = 0.0; + rJacobian[26][12] = 0.0; + rJacobian[26][13] = 0.0; + rJacobian[26][14] = 0.0; + rJacobian[26][15] = 0.0; + rJacobian[26][16] = 0.0; + rJacobian[26][17] = 0.0; + rJacobian[26][18] = 0.0; + rJacobian[26][19] = 0.0; + rJacobian[26][20] = 0.0; + rJacobian[26][21] = 0.0; + rJacobian[26][22] = 0.0; + rJacobian[26][23] = 0.0; + rJacobian[26][24] = 0.0; + rJacobian[26][25] = 0.0; + rJacobian[26][26] = 1.0 - (mDt * (-var_x122)); + rJacobian[26][27] = -(mDt * (var_x123)); + rJacobian[26][28] = 0.0; + rJacobian[26][29] = 0.0; + rJacobian[26][30] = 0.0; + rJacobian[26][31] = 0.0; + rJacobian[27][0] = 0.0; + rJacobian[27][1] = 0.0; + rJacobian[27][2] = 0.0; + rJacobian[27][3] = 0.0; + rJacobian[27][4] = 0.0; + rJacobian[27][5] = 0.0; + rJacobian[27][6] = 0.0; + rJacobian[27][7] = 0.0; + rJacobian[27][8] = 0.0; + rJacobian[27][9] = 0.0; + rJacobian[27][10] = 0.0; + rJacobian[27][11] = 0.0; + rJacobian[27][12] = 0.0; + rJacobian[27][13] = 0.0; + rJacobian[27][14] = 0.0; + rJacobian[27][15] = 0.0; + rJacobian[27][16] = 0.0; + rJacobian[27][17] = 0.0; + rJacobian[27][18] = 0.0; + rJacobian[27][19] = 0.0; + rJacobian[27][20] = 0.0; + rJacobian[27][21] = 0.0; + rJacobian[27][22] = 0.0; + rJacobian[27][23] = 0.0; + rJacobian[27][24] = 0.0; + rJacobian[27][25] = -(mDt * (var_x120)); + rJacobian[27][26] = -(mDt * (var_x122)); + rJacobian[27][27] = 1.0 - (mDt * (-var_x121 - var_x123)); + rJacobian[27][28] = 0.0; + rJacobian[27][29] = 0.0; + rJacobian[27][30] = 0.0; + rJacobian[27][31] = 0.0; + rJacobian[28][0] = 0.0; + rJacobian[28][1] = 0.0; + rJacobian[28][2] = 0.0; + rJacobian[28][3] = 0.0; + rJacobian[28][4] = 0.0; + rJacobian[28][5] = 0.0; + rJacobian[28][6] = 0.0; + rJacobian[28][7] = 0.0; + rJacobian[28][8] = 0.0; + rJacobian[28][9] = 0.0; + rJacobian[28][10] = 0.0; + rJacobian[28][11] = 0.0; + rJacobian[28][12] = 0.0; + rJacobian[28][13] = 0.0; + rJacobian[28][14] = 0.0; + rJacobian[28][15] = 0.0; + rJacobian[28][16] = 0.0; + rJacobian[28][17] = 0.0; + rJacobian[28][18] = 0.0; + rJacobian[28][19] = 0.0; + rJacobian[28][20] = 0.0; + rJacobian[28][21] = 0.0; + rJacobian[28][22] = 0.0; + rJacobian[28][23] = 0.0; + rJacobian[28][24] = 0.0; + rJacobian[28][25] = 0.0; + rJacobian[28][26] = 0.0; + rJacobian[28][27] = 0.0; + rJacobian[28][28] = 1.0 - (mDt * (-0.00080000000000000004)); + rJacobian[28][29] = -(mDt * (0.0089999999999999993)); + rJacobian[28][30] = 0.0; + rJacobian[28][31] = 0.0; + rJacobian[29][0] = 0.0; + rJacobian[29][1] = 0.0; + rJacobian[29][2] = 0.0; + rJacobian[29][3] = 0.0; + rJacobian[29][4] = 0.0; + rJacobian[29][5] = 0.0; + rJacobian[29][6] = 0.0; + rJacobian[29][7] = 0.0; + rJacobian[29][8] = 0.0; + rJacobian[29][9] = 0.0; + rJacobian[29][10] = 0.0; + rJacobian[29][11] = 0.0; + rJacobian[29][12] = -(mDt * (-var_x124 + 0.024299999999999999 * var_x125 * (1 - var_x42 - var_chaste_interface__ryanodine_receptors__P_C2))); + rJacobian[29][13] = 0.0; + rJacobian[29][14] = 0.0; + rJacobian[29][15] = 0.0; + rJacobian[29][16] = 0.0; + rJacobian[29][17] = 0.0; + rJacobian[29][18] = 0.0; + rJacobian[29][19] = 0.0; + rJacobian[29][20] = 0.0; + rJacobian[29][21] = 0.0; + rJacobian[29][22] = 0.0; + rJacobian[29][23] = 0.0; + rJacobian[29][24] = 0.0; + rJacobian[29][25] = 0.0; + rJacobian[29][26] = 0.0; + rJacobian[29][27] = 0.0; + rJacobian[29][28] = -(mDt * (0.00080000000000000004 - var_x126)); + rJacobian[29][29] = 1.0 - (mDt * (-0.080249999999999988 - var_x126 - var_x127)); + rJacobian[29][30] = -(mDt * (0.96499999999999997 - var_x126)); + rJacobian[29][31] = 0.0; + rJacobian[30][0] = 0.0; + rJacobian[30][1] = 0.0; + rJacobian[30][2] = 0.0; + rJacobian[30][3] = 0.0; + rJacobian[30][4] = 0.0; + rJacobian[30][5] = 0.0; + rJacobian[30][6] = 0.0; + rJacobian[30][7] = 0.0; + rJacobian[30][8] = 0.0; + rJacobian[30][9] = 0.0; + rJacobian[30][10] = 0.0; + rJacobian[30][11] = 0.0; + rJacobian[30][12] = -(mDt * (var_x124)); + rJacobian[30][13] = 0.0; + rJacobian[30][14] = 0.0; + rJacobian[30][15] = 0.0; + rJacobian[30][16] = 0.0; + rJacobian[30][17] = 0.0; + rJacobian[30][18] = 0.0; + rJacobian[30][19] = 0.0; + rJacobian[30][20] = 0.0; + rJacobian[30][21] = 0.0; + rJacobian[30][22] = 0.0; + rJacobian[30][23] = 0.0; + rJacobian[30][24] = 0.0; + rJacobian[30][25] = 0.0; + rJacobian[30][26] = 0.0; + rJacobian[30][27] = 0.0; + rJacobian[30][28] = 0.0; + rJacobian[30][29] = -(mDt * (var_x127)); + rJacobian[30][30] = 1.0 - (mDt * (-0.96499999999999997)); + rJacobian[30][31] = 0.0; + rJacobian[31][0] = 0.0; + rJacobian[31][1] = 0.0; + rJacobian[31][2] = 0.0; + rJacobian[31][3] = 0.0; + rJacobian[31][4] = 0.0; + rJacobian[31][5] = 0.0; + rJacobian[31][6] = 0.0; + rJacobian[31][7] = 0.0; + rJacobian[31][8] = 0.0; + rJacobian[31][9] = 0.0; + rJacobian[31][10] = 0.0; + rJacobian[31][11] = -(mDt * (184.55541474839183 * var_x107 * var_x67)); + rJacobian[31][12] = 0.0; + rJacobian[31][13] = 0.0; + rJacobian[31][14] = 0.0; + rJacobian[31][15] = 0.0; + rJacobian[31][16] = 0.0; + rJacobian[31][17] = 0.0; + rJacobian[31][18] = 0.0; + rJacobian[31][19] = 0.0; + rJacobian[31][20] = 0.0; + rJacobian[31][21] = -(mDt * (-var_x108 * (-25.674321243523316 * log(var_x128 * (1 * mParameters[6] + 0.1111111111111111 * mParameters[5])) + var_chaste_interface__membrane__V) * mParameters[9])); + rJacobian[31][22] = 0.0; + rJacobian[31][23] = -(mDt * (-var_x108 * (2.8527023603914796 * var_x129 + 0.007417026137017846 * var_x128))); + rJacobian[31][24] = 0.0; + rJacobian[31][25] = 0.0; + rJacobian[31][26] = 0.0; + rJacobian[31][27] = 0.0; + rJacobian[31][28] = 0.0; + rJacobian[31][29] = 0.0; + rJacobian[31][30] = 0.0; + rJacobian[31][31] = 1.0 - (mDt * (-var_x108 * (9 * var_x71 + 0.066753235233160624 * var_x128 + 12051028.902131137 * var_x117 + 25.674321243523316 * var_x129))); + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_calcium_activated_chloride_current__E_Cl = -40; // millivolt + const double var_calcium_activated_chloride_current__Km_Cl = 10; // micromolar + const double var_calcium_activated_chloride_current__g_ClCa = 10; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.00036699999999999998; // milliS_per_microF + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__Km_pCa = 0.5; // micromolar + const double var_calcium_pump_current__i_pCa_max = 1; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_calcium_concentration__Cai) / var_membrane__F; // millivolt + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double var_calcium_activated_chloride_current__O_ClCa = 0.20000000000000001 / (1 + exp(5.9871794871794881 - 0.12820512820512822 * var_chaste_interface__membrane__V)); // dimensionless + const double var_calcium_activated_chloride_current__i_ClCa = (-var_calcium_activated_chloride_current__E_Cl + var_chaste_interface__membrane__V) * var_calcium_activated_chloride_current__O_ClCa * var_calcium_activated_chloride_current__g_ClCa * var_calcium_concentration__Cai / (var_calcium_activated_chloride_current__Km_Cl + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_stim = var_membrane__i_stim_converted / HeartConfig::Instance()->GetCapacitance(); // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_transient_outward_potassium_current__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_potassium_current__i_Kto_s = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__slow_transient_outward_potassium_current__ato_s * var_slow_transient_outward_potassium_current__g_Kto_s * var_chaste_interface__slow_transient_outward_potassium_current__ito_s; // picoA_per_picoF + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 21000; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 0.88; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[5] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (mParameters[5] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur = 0.16; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_membrane__V = -var_L_type_calcium_current__i_CaL - var_calcium_activated_chloride_current__i_ClCa - var_calcium_background_current__i_Cab - var_calcium_pump_current__i_pCa - var_fast_sodium_current__i_Na - var_fast_transient_outward_potassium_current__i_Kto_f - var_membrane__i_stim - var_non_inactivating_steady_state_potassium_current__i_Kss - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_slow_transient_outward_potassium_current__i_Kto_s - var_sodium_background_current__i_Nab - var_sodium_calcium_exchange_current__i_NaCa - var_sodium_potassium_pump_current__i_NaK - var_time_independent_potassium_current__i_K1 - var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + + const double var_fast_transient_outward_potassium_current__alpha_a = 0.18064 * exp(1.0731000000000002 + 0.035770000000000003 * var_chaste_interface__membrane__V); + const double var_fast_transient_outward_potassium_current__alpha_i = 0.00015200000000000001 * exp(-1.9285714285714286 - 0.14285714285714285 * var_chaste_interface__membrane__V) / (1 + 0.0067083000000000004 * exp(-4.7857142857142856 - 0.14285714285714285 * var_chaste_interface__membrane__V)); + const double var_fast_transient_outward_potassium_current__beta_a = 0.39560000000000001 * exp(-1.8711 - 0.062370000000000002 * var_chaste_interface__membrane__V); + const double var_fast_transient_outward_potassium_current__beta_i = 0.00095 * exp(4.7857142857142856 + 0.14285714285714285 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(4.7857142857142856 + 0.14285714285714285 * var_chaste_interface__membrane__V)); + const double var_non_inactivating_steady_state_potassium_current__tau_Kss = 13.17 + 39.299999999999997 * exp(-0.086199999999999999 * var_chaste_interface__membrane__V); + const double var_slow_delayed_rectifier_potassium_current__alpha_n = (((var_chaste_interface__membrane__V >= -26.500000781250002) && (var_chaste_interface__membrane__V <= -26.499999218749998)) ? (-3.7604140624912359e-12 / (1 - exp(9.9999999999766942e-8)) + 640000.00000149151 * (26.500000781250002 + var_chaste_interface__membrane__V) * (3.7604140624912359e-12 / (1 - exp(9.9999999999766942e-8)) + 3.7604140624912359e-12 / (1 - exp(-9.9999999999766942e-8)))) : (4.8133299999999997e-6 * (26.5 + var_chaste_interface__membrane__V) / (1 - exp(-3.3919999999999999 - 0.128 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_potassium_current__beta_n = 9.5333299999999997e-5 * exp(-1.0069999999999999 - 0.037999999999999999 * var_chaste_interface__membrane__V); + const double var_slow_transient_outward_potassium_current__ass = 1 / (1 + exp(-2.9220779220779218 - 0.12987012987012986 * var_chaste_interface__membrane__V)); + const double var_slow_transient_outward_potassium_current__iss = 1 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + const double var_slow_transient_outward_potassium_current__tau_ta_s = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); + const double var_slow_transient_outward_potassium_current__tau_ti_s = 270 + 1050 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur = 1200 - 170 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + + + rY[28] = (var_chaste_interface__fast_transient_outward_potassium_current__ato_f + ((1 * var_fast_transient_outward_potassium_current__alpha_a) * mDt)) / (1.0 - ((-var_fast_transient_outward_potassium_current__alpha_a - var_fast_transient_outward_potassium_current__beta_a) * mDt)); + rY[29] = (var_chaste_interface__fast_transient_outward_potassium_current__ito_f + ((1 * var_fast_transient_outward_potassium_current__alpha_i) * mDt)) / (1.0 - ((-var_fast_transient_outward_potassium_current__alpha_i - var_fast_transient_outward_potassium_current__beta_i) * mDt)); + rY[35] = (var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss + ((var_slow_transient_outward_potassium_current__ass / var_non_inactivating_steady_state_potassium_current__tau_Kss) * mDt)) / (1.0 - ((-1 / var_non_inactivating_steady_state_potassium_current__tau_Kss) * mDt)); + rY[32] = (var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs + ((1 * var_slow_delayed_rectifier_potassium_current__alpha_n) * mDt)) / (1.0 - ((-var_slow_delayed_rectifier_potassium_current__alpha_n - var_slow_delayed_rectifier_potassium_current__beta_n) * mDt)); + rY[30] = (var_chaste_interface__slow_transient_outward_potassium_current__ato_s + ((var_slow_transient_outward_potassium_current__ass / var_slow_transient_outward_potassium_current__tau_ta_s) * mDt)) / (1.0 - ((-1 / var_slow_transient_outward_potassium_current__tau_ta_s) * mDt)); + rY[31] = (var_chaste_interface__slow_transient_outward_potassium_current__ito_s + ((var_slow_transient_outward_potassium_current__iss / var_slow_transient_outward_potassium_current__tau_ti_s) * mDt)) / (1.0 - ((-1 / var_slow_transient_outward_potassium_current__tau_ti_s) * mDt)); + rY[33] = (var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur + ((var_slow_transient_outward_potassium_current__ass / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur) * mDt)) / (1.0 - ((-1 / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur) * mDt)); + rY[34] = (var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur + ((var_slow_transient_outward_potassium_current__iss / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur) * mDt)) / (1.0 - ((-1 / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur) * mDt)); + + double _guess[32] = {rY[12],rY[13],rY[14],rY[15],rY[16],rY[17],rY[11],rY[7],rY[6],rY[3],rY[4],rY[1],rY[2],rY[5],rY[20],rY[21],rY[22],rY[23],rY[25],rY[26],rY[24],rY[19],rY[36],rY[27],rY[38],rY[39],rY[40],rY[37],rY[10],rY[8],rY[9],rY[18]}; + CardiacNewtonSolver<32,Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<32,Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[12] = _guess[0]; + rY[13] = _guess[1]; + rY[14] = _guess[2]; + rY[15] = _guess[3]; + rY[16] = _guess[4]; + rY[17] = _guess[5]; + rY[11] = _guess[6]; + rY[7] = _guess[7]; + rY[6] = _guess[8]; + rY[3] = _guess[9]; + rY[4] = _guess[10]; + rY[1] = _guess[11]; + rY[2] = _guess[12]; + rY[5] = _guess[13]; + rY[20] = _guess[14]; + rY[21] = _guess[15]; + rY[22] = _guess[16]; + rY[23] = _guess[17]; + rY[25] = _guess[18]; + rY[26] = _guess[19]; + rY[24] = _guess[20]; + rY[19] = _guess[21]; + rY[36] = _guess[22]; + rY[27] = _guess[23]; + rY[38] = _guess[24]; + rY[39] = _guess[25]; + rY[40] = _guess[26]; + rY[37] = _guess[27]; + rY[10] = _guess[28]; + rY[8] = _guess[29]; + rY[9] = _guess[30]; + rY[18] = _guess[31]; + } + + std::vector Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.115001 + double var_chaste_interface__calcium_concentration__CaJSR = rY[3]; + // Units: micromolar; Initial value: 1299.5 + double var_chaste_interface__calcium_fluxes__P_RyR = rY[5]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ryanodine_receptors__P_O1 = rY[8]; + // Units: dimensionless; Initial value: 1.49102e-05 + double var_chaste_interface__ryanodine_receptors__P_O2 = rY[9]; + // Units: dimensionless; Initial value: 9.51726e-11 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + // Mathematics + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_transient_outward_potassium_current__i_Kto_f; // uA_per_cm2 + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss_converted = HeartConfig::Instance()->GetCapacitance() * var_non_inactivating_steady_state_potassium_current__i_Kss; // uA_per_cm2 + const double var_calcium_fluxes__J_rel = (-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; // micromolar_per_millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchange_current__i_NaCa; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + + std::vector dqs(12); + dqs[0] = var_calcium_fluxes__J_rel; + dqs[1] = var_chaste_interface__calcium_concentration__Cai_converted; + dqs[2] = var_L_type_calcium_current__i_CaL_converted; + dqs[3] = var_fast_sodium_current__i_Na_converted; + dqs[4] = var_time_independent_potassium_current__i_K1_converted; + dqs[5] = var_non_inactivating_steady_state_potassium_current__i_Kss_converted; + dqs[6] = var_rapid_delayed_rectifier_potassium_current__i_Kr_converted; + dqs[7] = var_slow_delayed_rectifier_potassium_current__i_Ks_converted; + dqs[8] = var_sodium_calcium_exchange_current__i_NaCa_converted; + dqs[9] = var_membrane__i_stim_converted; + dqs[10] = var_fast_transient_outward_potassium_current__i_Kto_f_converted; + dqs[11] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "bondarenko_2004_apical"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-82.4202); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000115001); + + // rY[2]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(0.115001); + + // rY[3]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(1299.5); + + // rY[4]: + this->mVariableNames.push_back("calcium_concentration__CaNSR"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(1299.5); + + // rY[5]: + this->mVariableNames.push_back("calcium_fluxes__P_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[6]: + this->mVariableNames.push_back("calcium_buffering__LTRPN_Ca"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(11.2684); + + // rY[7]: + this->mVariableNames.push_back("calcium_buffering__HTRPN_Ca"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(125.29); + + // rY[8]: + this->mVariableNames.push_back("ryanodine_receptors__P_O1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.49102e-05); + + // rY[9]: + this->mVariableNames.push_back("ryanodine_receptors__P_O2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.51726e-11); + + // rY[10]: + this->mVariableNames.push_back("ryanodine_receptors__P_C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00016774); + + // rY[11]: + this->mVariableNames.push_back("L_type_calcium_current__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.30308e-19); + + // rY[12]: + this->mVariableNames.push_back("L_type_calcium_current__C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000124216); + + // rY[13]: + this->mVariableNames.push_back("L_type_calcium_current__C3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(5.78679e-09); + + // rY[14]: + this->mVariableNames.push_back("L_type_calcium_current__C4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.19816e-13); + + // rY[15]: + this->mVariableNames.push_back("L_type_calcium_current__I1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(4.97923e-19); + + // rY[16]: + this->mVariableNames.push_back("L_type_calcium_current__I2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.45847e-14); + + // rY[17]: + this->mVariableNames.push_back("L_type_calcium_current__I3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.85106e-14); + + // rY[18]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(14237.1); + + // rY[19]: + this->mVariableNames.push_back("fast_sodium_current__O_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.13483e-07); + + // rY[20]: + this->mVariableNames.push_back("fast_sodium_current__C_Na1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000279132); + + // rY[21]: + this->mVariableNames.push_back("fast_sodium_current__C_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.020752); + + // rY[22]: + this->mVariableNames.push_back("fast_sodium_current__I1_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.73345e-07); + + // rY[23]: + this->mVariableNames.push_back("fast_sodium_current__I2_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.55787e-09); + + // rY[24]: + this->mVariableNames.push_back("fast_sodium_current__IF_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000153176); + + // rY[25]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0113879); + + // rY[26]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.34278); + + // rY[27]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(143720.0); + + // rY[28]: + this->mVariableNames.push_back("fast_transient_outward_potassium_current__ato_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00265563); + + // rY[29]: + this->mVariableNames.push_back("fast_transient_outward_potassium_current__ito_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999977); + + // rY[30]: + this->mVariableNames.push_back("slow_transient_outward_potassium_current__ato_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[31]: + this->mVariableNames.push_back("slow_transient_outward_potassium_current__ito_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998543); + + // rY[32]: + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current__nKs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000262753); + + // rY[33]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_potassium_current__aur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[34]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_potassium_current__iur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998543); + + // rY[35]: + this->mVariableNames.push_back("non_inactivating_steady_state_potassium_current__aKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[36]: + this->mVariableNames.push_back("non_inactivating_steady_state_potassium_current__iKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[37]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__O_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000175298); + + // rY[38]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__C_K1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000992513); + + // rY[39]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__C_K2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000641229); + + // rY[40]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__I_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.19129e-05); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("micromolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_non_inactivating_steady_state_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("micromolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_non_inactivating_steady_state_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEuler) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998.cpp_python36 deleted file mode 100644 index c42de6f4..00000000 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998.cpp_python36 +++ /dev/null @@ -1,1028 +0,0 @@ -//! @file -//! -//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) -//! -//! Model: courtemanche_1998 -//! -//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen -//! (translator: chaste_codegen, model type: BackwardEuler) -//! on (date omitted as unimportant) -//! -//! - -#include "CardiacNewtonSolver.hpp" -#include "dynamic_courtemanche_ramirez_nattel_1998.hpp" -#include -#include -#include -#include -#include "Exception.hpp" -#include "OdeSystemInformation.hpp" -#include "RegularStimulus.hpp" -#include "HeartConfig.hpp" -#include "IsNan.hpp" -#include "MathsCustomFunctions.hpp" - -#include "ModelFactory.hpp" - -AbstractBackwardEulerCardiacCell<8>* Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { - return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(p_solver, p_stimulus); -} - -bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered = ModelFactory::Register("dynamic_courtemanche_ramirez_nattel_1998", "BackwardEuler", (ModelFactory::TCreateMethod)Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::CreateMethod); - - - - boost::shared_ptr Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::UseCellMLDefaultStimulus() - { - // Use the default stimulus specified by CellML metadata - const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF - const double var_chaste_interface__membrane__stim_amplitude_converted = -0.002 * HeartConfig::Instance()->GetCapacitance() / var_membrane__Cm_converted; // uA_per_cm2 - const double var_chaste_interface__membrane__stim_duration = 2; // millisecond - const double var_chaste_interface__membrane__stim_period = 1000; // millisecond - const double var_chaste_interface__membrane__stim_start = 100; // millisecond - boost::shared_ptr p_cellml_stim(new RegularStimulus( - -fabs(var_chaste_interface__membrane__stim_amplitude_converted), - var_chaste_interface__membrane__stim_duration, - var_chaste_interface__membrane__stim_period, - var_chaste_interface__membrane__stim_start - )); - mpIntracellularStimulus = p_cellml_stim; - return p_cellml_stim; - } - double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::GetIntracellularCalciumConcentration() - { - return mStateVariables[1]; - } - Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) - : AbstractBackwardEulerCardiacCell<8>( - 21, - 0, - pIntracellularStimulus) - { - // Time units: millisecond - // - this->mpSystemInfo = OdeSystemInformation::Instance(); - Init(); - - // We have a default stimulus specified in the CellML file metadata - this->mHasDefaultStimulusFromCellML = true; - - this->mParameters[0] = 1; // (var_Ca_leak_current_by_the_NSR__leak_factor) [dimensionless] - this->mParameters[1] = 30; // (var_Ca_release_current_from_JSR__K_rel) [per_millisecond] - this->mParameters[2] = 0.0050000000000000001; // (var_Ca_uptake_current_by_the_NSR__I_up_max) [millimolar_per_millisecond] - this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] - this->mParameters[4] = 1.8; // (var_standard_ionic_concentrations__Ca_o) [millimolar] - this->mParameters[5] = 5.4000000000000004; // (var_standard_ionic_concentrations__K_o) [millimolar] - this->mParameters[6] = 140; // (var_standard_ionic_concentrations__Na_o) [millimolar] - this->mParameters[7] = 0.12375; // (var_L_type_Ca_channel__g_Ca_L) [nanoS_per_picoF] - this->mParameters[8] = 2; // (var_L_type_Ca_channel_f_Ca_gate__tau_f_Ca) [millisecond] - this->mParameters[9] = 100; // (var_membrane__Cm) [picoF] - this->mParameters[10] = 7.7999999999999998; // (var_fast_sodium_current__g_Na) [nanoS_per_picoF] - this->mParameters[11] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] - this->mParameters[12] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] - this->mParameters[13] = 0.089999999999999997; // (var_time_independent_potassium_current__g_K1) [nanoS_per_picoF] - this->mParameters[14] = 0.029411764999999999; // (var_rapid_delayed_rectifier_K_current__g_Kr) [nanoS_per_picoF] - this->mParameters[15] = 0.12941175999999999; // (var_slow_delayed_rectifier_K_current__g_Ks) [nanoS_per_picoF] - this->mParameters[16] = 1600; // (var_Na_Ca_exchanger_current__I_NaCa_max) [picoA_per_picoF] - this->mParameters[17] = 0.16520000000000001; // (var_transient_outward_K_current__g_to) [nanoS_per_picoF] - } - - Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::~Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler() - { - } - - - void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::VerifyStateVariables() - { - std::vector& rY = rGetStateVariables(); - std::string error_message = ""; - - for (unsigned i=0; i < 21; i++) - { - if(std::isnan(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; - } - if(std::isinf(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; - } - if(this->is_concentration[i] && rY[i] < 0) - { - error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] < 0) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] > 1) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; - } - } - if (error_message != ""){ - EXCEPTION(DumpState(error_message)); - } - } - - double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) - { - // For state variable interpolation (SVI) we read in interpolated state variables, - // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). - if (!pStateVariables) pStateVariables = &rGetStateVariables(); - const std::vector& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -81.18 - double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0001013 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.002908 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9649 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.9775 - double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; - // Units: dimensionless; Initial value: 0.03043 - double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; - // Units: dimensionless; Initial value: 0.004966 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; - // Units: dimensionless; Initial value: 0.9986 - double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 3.296e-05 - double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; - // Units: dimensionless; Initial value: 0.01869 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; - // Units: dimensionless; Initial value: 0.0001367 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; - // Units: dimensionless; Initial value: 0.9996 - double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; - // Units: dimensionless; Initial value: 0.7755 - double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; - // Units: millimolar; Initial value: 11.17 - double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; - // Units: millimolar; Initial value: 139.0 - - const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar - const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar - const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless - const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless - const double var_background_currents__g_B_Ca = 0.0011310000000000001; // nanoS_per_picoF - const double var_background_currents__g_B_Na = 0.00067443750000000002; // nanoS_per_picoF - const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF - const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole - const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA - const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 - const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.27500000000000002; // picoA_per_picoF - const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] * var_sarcolemmal_calcium_pump_current__i_CaP_max / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA - const double var_sodium_potassium_pump__Km_K_o = 1.5; // millimolar - const double var_sodium_potassium_pump__Km_Na_i = 10; // millimolar - const double var_sodium_potassium_pump__i_NaK_max = 0.59933873999999998; // picoA_per_picoF - const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt - const double var_background_currents__i_B_Ca = (-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca * mParameters[9]; // picoA - const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA - const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt - const double var_background_currents__i_B_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na * mParameters[9]; // picoA - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA - const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 - const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless - const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = mParameters[9] * var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[5] / ((1 + pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (var_sodium_potassium_pump__Km_K_o + mParameters[5])); // picoA - const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt - const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA - const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 - const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA - const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 - const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA - const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 - const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA - const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_K_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 - const double var_ultrarapid_delayed_rectifier_K_current__g_Kur = 0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V)); // nanoS_per_picoF - const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_ultrarapid_delayed_rectifier_K_current__g_Kur * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA - const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_exchanger_current__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_delayed_rectifier_K_current__i_Kr_converted + var_slow_delayed_rectifier_K_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_K_current__i_to_converted) * var_membrane__Cm_converted + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Ca + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Na + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump_current__i_CaP + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_ultrarapid_delayed_rectifier_K_current__i_Kur) / var_membrane__Cm_converted; // uA_per_cm2 - - const double i_ionic = var_chaste_interface__i_ionic; - EXCEPT_IF_NOT(!std::isnan(i_ionic)); - return i_ionic; - } - - void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rResidual[8]) - { - std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -81.18 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.002908 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9649 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.9775 - double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; - // Units: dimensionless; Initial value: 0.03043 - double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; - // Units: dimensionless; Initial value: 0.004966 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; - // Units: dimensionless; Initial value: 0.9986 - double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 3.296e-05 - double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; - // Units: dimensionless; Initial value: 0.01869 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; - // Units: dimensionless; Initial value: 0.0001367 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; - // Units: dimensionless; Initial value: 0.9996 - double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; - // Units: dimensionless; Initial value: 0.9992 - - //output_nonlinear_state_assignments - double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; - double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; - double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; - double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; - double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; - double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; - double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; - double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; - - //output_equations - const double var_Ca_buffers__CMDN_max = 0.050000000000000003; // millimolar - const double var_Ca_buffers__CSQN_max = 10; // millimolar - const double var_Ca_buffers__Km_CMDN = 0.0023800000000000002; // millimolar - const double var_Ca_buffers__Km_CSQN = 0.80000000000000004; // millimolar - const double var_Ca_buffers__Km_TRPN = 0.00050000000000000001; // millimolar - const double var_Ca_buffers__TRPN_max = 0.070000000000000007; // millimolar - const double var_Ca_leak_current_by_the_NSR__Ca_up_max = 15; // millimolar - const double var_Ca_release_current_from_JSR_u_gate__tau_u = 8; // millisecond - const double var_Ca_uptake_current_by_the_NSR__K_up = 0.00092000000000000003; // millimolar - const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar - const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar - const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless - const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless - const double var_background_currents__g_B_Ca = 0.0011310000000000001; // nanoS_per_picoF - const double var_background_currents__g_B_K = 0; // nanoS_per_picoF - const double var_background_currents__g_B_Na = 0.00067443750000000002; // nanoS_per_picoF - const double var_Ca_uptake_current_by_the_NSR__i_up = mParameters[2] / (1 + var_Ca_uptake_current_by_the_NSR__K_up / var_chaste_interface__intracellular_ion_concentrations__Ca_i); // millimolar_per_millisecond - const double var_L_type_Ca_channel_f_Ca_gate__f_Ca_infinity = 1 / (1 + 2857.1428571428573 * var_chaste_interface__intracellular_ion_concentrations__Ca_i); // dimensionless - const double d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca = (-var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca + var_L_type_Ca_channel_f_Ca_gate__f_Ca_infinity) / mParameters[8]; // 1 / millisecond - const double var_intracellular_ion_concentrations__B2 = 1 + var_Ca_buffers__CMDN_max * var_Ca_buffers__Km_CMDN / pow((var_Ca_buffers__Km_CMDN + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2) + var_Ca_buffers__Km_TRPN * var_Ca_buffers__TRPN_max / pow((var_Ca_buffers__Km_TRPN + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2); // dimensionless - const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond - const double var_Ca_leak_current_by_the_NSR__i_up_leak = mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up / var_Ca_leak_current_by_the_NSR__Ca_up_max; // millimolar_per_millisecond - const double var_intracellular_ion_concentrations__V_cell = 20100; // micrometre_3 - const double var_intracellular_ion_concentrations__V_i = 0.68000000000000005 * var_intracellular_ion_concentrations__V_cell; // micrometre_3 - const double var_intracellular_ion_concentrations__V_rel = 0.0047999999999999996 * var_intracellular_ion_concentrations__V_cell; // micrometre_3 - const double var_intracellular_ion_concentrations__V_up = 0.055199999999999999 * var_intracellular_ion_concentrations__V_cell; // micrometre_3 - const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole - const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA - const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.27500000000000002; // picoA_per_picoF - const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] * var_sarcolemmal_calcium_pump_current__i_CaP_max / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA - const double var_sodium_potassium_pump__Km_K_o = 1.5; // millimolar - const double var_sodium_potassium_pump__Km_Na_i = 10; // millimolar - const double var_sodium_potassium_pump__i_NaK_max = 0.59933873999999998; // picoA_per_picoF - const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt - const double var_background_currents__i_B_Ca = (-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca * mParameters[9]; // picoA - const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA - const double var_Ca_release_current_from_JSR__Fn = 9.9999999999999998e-13 * var_Ca_release_current_from_JSR__i_rel * var_intracellular_ion_concentrations__V_rel - 4.9999999999999999e-13 * (0.5 * var_L_type_Ca_channel__i_Ca_L - 0.20000000000000001 * var_Na_Ca_exchanger_current__i_NaCa) / var_membrane__F; // dimensionless - const double var_Ca_release_current_from_JSR_u_gate__u_infinity = 1 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)); // dimensionless - const double var_Ca_release_current_from_JSR_v_gate__tau_v = 1.9099999999999999 + 2.0899999999999999 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)); // millisecond - const double var_Ca_release_current_from_JSR_v_gate__v_infinity = 1 - 1 / (1 + exp(50 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)); // dimensionless - const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u = (-var_chaste_interface__Ca_release_current_from_JSR_u_gate__u + var_Ca_release_current_from_JSR_u_gate__u_infinity) / var_Ca_release_current_from_JSR_u_gate__tau_u; // 1 / millisecond - const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v = (-var_chaste_interface__Ca_release_current_from_JSR_v_gate__v + var_Ca_release_current_from_JSR_v_gate__v_infinity) / var_Ca_release_current_from_JSR_v_gate__tau_v; // 1 / millisecond - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt - const double var_background_currents__i_B_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na * mParameters[9]; // picoA - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA - const double var_intracellular_ion_concentrations__B1 = ((-var_Ca_uptake_current_by_the_NSR__i_up + var_Ca_leak_current_by_the_NSR__i_up_leak) * var_intracellular_ion_concentrations__V_up + var_Ca_release_current_from_JSR__i_rel * var_intracellular_ion_concentrations__V_rel) / var_intracellular_ion_concentrations__V_i + 0.5 * (-var_L_type_Ca_channel__i_Ca_L - var_background_currents__i_B_Ca - var_sarcolemmal_calcium_pump_current__i_CaP + 2 * var_Na_Ca_exchanger_current__i_NaCa) / (var_intracellular_ion_concentrations__V_i * var_membrane__F); // millimolar_per_millisecond - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = var_intracellular_ion_concentrations__B1 / var_intracellular_ion_concentrations__B2; // millimolar / millisecond - const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless - const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = mParameters[9] * var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[5] / ((1 + pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (var_sodium_potassium_pump__Km_K_o + mParameters[5])); // picoA - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = (-var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - 3 * var_Na_Ca_exchanger_current__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) * mParameters[3] / (var_intracellular_ion_concentrations__V_i * var_membrane__F); // millimolar / millisecond - const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt - const double var_background_currents__i_B_K = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_background_currents__g_B_K * mParameters[9]; // picoA - const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA - const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA - const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA - const double var_transfer_current_from_NSR_to_JSR__tau_tr = 180; // millisecond - const double var_transfer_current_from_NSR_to_JSR__i_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_up) / var_transfer_current_from_NSR_to_JSR__tau_tr; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel = (-var_Ca_release_current_from_JSR__i_rel + var_transfer_current_from_NSR_to_JSR__i_tr) / (1 + var_Ca_buffers__CSQN_max * var_Ca_buffers__Km_CSQN / pow((var_Ca_buffers__Km_CSQN + var_chaste_interface__intracellular_ion_concentrations__Ca_rel), 2)); // millimolar / millisecond - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up = -var_Ca_leak_current_by_the_NSR__i_up_leak - var_intracellular_ion_concentrations__V_rel * var_transfer_current_from_NSR_to_JSR__i_tr / var_intracellular_ion_concentrations__V_up + var_Ca_uptake_current_by_the_NSR__i_up; // millimolar / millisecond - const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA - const double var_ultrarapid_delayed_rectifier_K_current__g_Kur = 0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V)); // nanoS_per_picoF - const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_ultrarapid_delayed_rectifier_K_current__g_Kur * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = (-var_background_currents__i_B_K - var_rapid_delayed_rectifier_K_current__i_Kr - var_slow_delayed_rectifier_K_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur + 2 * var_sodium_potassium_pump__i_NaK) * mParameters[3] / (var_intracellular_ion_concentrations__V_i * var_membrane__F); // millimolar / millisecond - - rResidual[3] = rCurrentGuess[3] - rY[1] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i; - rResidual[2] = rCurrentGuess[2] - rY[13] - mDt*d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca; - rResidual[0] = rCurrentGuess[0] - rY[14] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u; - rResidual[1] = rCurrentGuess[1] - rY[15] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v; - rResidual[7] = rCurrentGuess[7] - rY[17] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; - rResidual[6] = rCurrentGuess[6] - rY[18] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; - rResidual[4] = rCurrentGuess[4] - rY[19] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel; - rResidual[5] = rCurrentGuess[5] - rY[20] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up; - } - - void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rJacobian[8][8]) - { - std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -81.18 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.002908 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9649 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.9775 - double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; - // Units: dimensionless; Initial value: 0.03043 - double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; - // Units: dimensionless; Initial value: 0.004966 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; - // Units: dimensionless; Initial value: 0.9986 - double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 3.296e-05 - double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; - // Units: dimensionless; Initial value: 0.01869 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; - // Units: dimensionless; Initial value: 0.0001367 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; - // Units: dimensionless; Initial value: 0.9996 - double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; - // Units: dimensionless; Initial value: 0.9992 - - double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; - double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; - double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; - double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; - double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; - double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; - double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; - double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; - - const double var_x0 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; - const double var_x1 = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; - const double var_x2 = var_x1 * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v; - const double var_x3 = 70577.907827359188 * var_x2; - const double var_x4 = mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_gate__f; - const double var_x5 = var_x4 * mParameters[9]; - const double var_x6 = var_x5 * (-65 + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca; - const double var_x7 = mParameters[4] * exp(0.013102317305629283 * var_chaste_interface__membrane__V); - const double var_x8 = exp(-0.024332874996168673 * var_chaste_interface__membrane__V); - const double var_x9 = pow(mParameters[6], 3); - const double var_x10 = var_x8 * var_x9; - const double var_x11 = mParameters[16] / ((1 + 0.10000000000000001 * var_x8) * (669921.875 + var_x9) * (1.3799999999999999 + mParameters[4])); - const double var_x12 = var_x11 * mParameters[9]; - const double var_x13 = var_x12 * (var_x7 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) - var_x10 * var_chaste_interface__intracellular_ion_concentrations__Ca_i); - const double var_x14 = 1.8954138119330646 * var_x6 - 0.75816552477322585 * var_x13 - var_x0 * var_x3; - const double var_x15 = exp(250 + var_x14); - const double var_x16 = 1 + var_x15; - const double var_x17 = var_x15 / pow(var_x16, 2); - const double var_x18 = var_x0 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_u_gate__u * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; - const double var_x19 = var_x17 * var_x18; - const double var_x20 = var_x0 * var_x1; - const double var_x21 = 8822.2384784198985 * var_x17; - const double var_x22 = var_x5 * (-123.20189777564919 + 1.8954138119330646 * var_chaste_interface__membrane__V); - const double var_x23 = var_x17 * var_x22; - const double var_x24 = var_x10 * var_x12; - const double var_x25 = var_x3 + 0.75816552477322585 * var_x24; - const double var_x26 = var_x17 * var_x25; - const double var_x27 = var_x7 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); - const double var_x28 = var_x12 * var_x27; - const double var_x29 = 1 / var_x16; - const double var_x30 = 1 / (1.9099999999999999 + 2.0899999999999999 * var_x29); - const double var_x31 = exp(50 + var_x14); - const double var_x32 = 1 + var_x31; - const double var_x33 = var_x31 / pow(var_x32, 2); - const double var_x34 = var_x30 * var_x33; - const double var_x35 = (1 - 1 / var_x32 - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / pow((0.9138755980861244 + var_x29), 2); - const double var_x36 = var_x17 * var_x35; - const double var_x37 = 33769.333888688605 * var_x36; - const double var_x38 = 0.47846889952153115 * var_x35; - const double var_x39 = 1 / mParameters[8]; - const double var_x40 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x41 = 0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x42 = pow(var_x41, (-2)); - const double var_x43 = 1 + 0.00011900000000000002 / pow(var_x40, 2) + 3.5000000000000004e-5 * var_x42; - const double var_x44 = 1 / var_x43; - const double var_x45 = var_x44 * mParameters[9]; - const double var_x46 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x47 = 1.0426301393780176e-7 * mParameters[9]; - const double var_x48 = var_x47 / var_x41; - const double var_x49 = 1 + 0.00092000000000000003 * var_x46; - const double var_x50 = mParameters[2] / (pow(var_x49, 2) * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 2)); - const double var_x51 = 0.0070588235294117632 * var_x2; - const double var_x52 = mParameters[0] * mParameters[2]; - const double var_x53 = 0.0054117647058823529 * var_x52; - const double var_x54 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; - const double var_x55 = pow(var_x54, (-2)); - const double var_x56 = 1 / (1 + 8 * var_x55); - const double var_x57 = 2.0255711761517402e-5 * mParameters[9] / var_chaste_interface__intracellular_ion_concentrations__K_i; - const double var_x58 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; - const double var_x59 = pow(var_x58, 1.5); - const double var_x60 = var_x58 * mParameters[9]; - const double var_x61 = var_x59 * var_x60 * mParameters[5] / ((1.5 + mParameters[5]) * pow((0.031622776601683791 + var_x59), 2) * (1 + 0.1245 * exp(-0.0037435192301797956 * var_chaste_interface__membrane__V) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * exp(-0.037435192301797954 * var_chaste_interface__membrane__V))); - - - rJacobian[0][0] = 1.0 - (mDt * (-0.125 + 17644.476956839797 * var_x19)); - rJacobian[0][1] = -(mDt * (var_x20 * var_x21)); - rJacobian[0][2] = -(mDt * (-0.125 * var_x23)); - rJacobian[0][3] = -(mDt * (-0.125 * var_x26)); - rJacobian[0][4] = -(mDt * (var_x2 * var_x21)); - rJacobian[0][5] = 0.0; - rJacobian[0][6] = 0.0; - rJacobian[0][7] = -(mDt * (0.28431207178995971 * var_x17 * var_x28)); - rJacobian[1][0] = -(mDt * (-141155.81565471838 * var_x18 * var_x34 - 67538.66777737721 * var_x19 * var_x35)); - rJacobian[1][1] = 1.0 - (mDt * (var_x30 * (-1 - 70577.907827359188 * var_x20 * var_x33) - var_x20 * var_x37)); - rJacobian[1][2] = -(mDt * (var_x22 * var_x34 + var_x23 * var_x38)); - rJacobian[1][3] = -(mDt * (var_x25 * var_x34 + var_x26 * var_x38)); - rJacobian[1][4] = -(mDt * (-var_x2 * var_x37 - var_x3 * var_x34)); - rJacobian[1][5] = 0.0; - rJacobian[1][6] = 0.0; - rJacobian[1][7] = -(mDt * (-1.0882758728802286 * var_x28 * var_x36 - 2.2744965743196777 * var_x28 * var_x34)); - rJacobian[2][0] = 0.0; - rJacobian[2][1] = 0.0; - rJacobian[2][2] = 1.0 - (mDt * (-var_x39)); - rJacobian[2][3] = -(mDt * (-0.00035 * var_x39 / pow((0.00035 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2))); - rJacobian[2][4] = 0.0; - rJacobian[2][5] = 0.0; - rJacobian[2][6] = 0.0; - rJacobian[2][7] = 0.0; - rJacobian[3][0] = -(mDt * (0.014117647058823526 * var_x18 * var_x44)); - rJacobian[3][1] = -(mDt * (0.0070588235294117632 * var_x20 * var_x44)); - rJacobian[3][2] = -(mDt * (var_x4 * var_x45 * (2.4643985112571321e-5 - 3.7913823250109726e-7 * var_chaste_interface__membrane__V))); - rJacobian[3][3] = 1.0 - (mDt * (var_x44 * (-var_x48 - var_x51 - 7.4682352941176462e-5 * var_x50 - 7.5827646500219453e-7 * var_x24 - 5.7273025005690459e-9 * var_x46 * mParameters[9] + var_x42 * var_x47 * var_chaste_interface__intracellular_ion_concentrations__Ca_i) + (0.00023800000000000004 / pow(var_x40, 3) + 7.0000000000000007e-5 / pow(var_x41, 3)) * (7.5827646500219453e-7 * var_x13 - 3.7913823250109726e-7 * var_x6 + var_x0 * var_x51 + var_x53 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - var_x48 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.081176470588235281 * mParameters[2] / var_x49 - 4.2880534095874102e-10 * (-13.356415961992688 * log(var_x46 * mParameters[4]) + var_chaste_interface__membrane__V) * mParameters[9]) / pow(var_x43, 2))); - rJacobian[3][4] = -(mDt * (var_x44 * var_x51)); - rJacobian[3][5] = -(mDt * (var_x44 * var_x53)); - rJacobian[3][6] = 0.0; - rJacobian[3][7] = -(mDt * (2.2748293950065834e-6 * var_x11 * var_x27 * var_x45)); - rJacobian[4][0] = -(mDt * (-2 * var_x18 * var_x56)); - rJacobian[4][1] = -(mDt * (-var_x20 * var_x56)); - rJacobian[4][2] = 0.0; - rJacobian[4][3] = -(mDt * (var_x2 * var_x56)); - rJacobian[4][4] = 1.0 - (mDt * (var_x56 * (-0.0055555555555555558 - var_x2) + 0.25 * (0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_rel - var_x0 * var_x2) / (pow(var_x54, 3) * pow((0.125 + var_x55), 2)))); - rJacobian[4][5] = -(mDt * (0.0055555555555555558 * var_x56)); - rJacobian[4][6] = 0.0; - rJacobian[4][7] = 0.0; - rJacobian[5][0] = 0.0; - rJacobian[5][1] = 0.0; - rJacobian[5][2] = 0.0; - rJacobian[5][3] = -(mDt * (0.00092000000000000003 * var_x50)); - rJacobian[5][4] = -(mDt * (0.00048309178743961351)); - rJacobian[5][5] = 1.0 - (mDt * (-0.00048309178743961351 - 0.066666666666666666 * var_x52)); - rJacobian[5][6] = 0.0; - rJacobian[5][7] = 0.0; - rJacobian[6][0] = 0.0; - rJacobian[6][1] = 0.0; - rJacobian[6][2] = 0.0; - rJacobian[6][3] = 0.0; - rJacobian[6][4] = 0.0; - rJacobian[6][5] = 0.0; - rJacobian[6][6] = 1.0 - (mDt * ((-var_x57 * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)) - var_x57 * pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * mParameters[15] - var_x57 * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)) - var_x57 * pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi - var_x57 * pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V))) * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui) * mParameters[3])); - rJacobian[6][7] = -(mDt * (4.3114284380885533e-8 * var_x61 * mParameters[3])); - rJacobian[7][0] = 0.0; - rJacobian[7][1] = 0.0; - rJacobian[7][2] = 0.0; - rJacobian[7][3] = -(mDt * (2.2748293950065834e-6 * var_x24 * mParameters[3])); - rJacobian[7][4] = 0.0; - rJacobian[7][5] = 0.0; - rJacobian[7][6] = 0.0; - rJacobian[7][7] = 1.0 - (mDt * ((-6.4671426571328296e-8 * var_x61 - 6.8244881850197506e-6 * var_x28 - 1.3661211601158392e-8 * var_x60 - 2.0255711761517402e-5 * var_x60 * pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j) * mParameters[3])); - } - - void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) - { - // Time units: millisecond - std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -81.18 - double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0001013 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.002908 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9649 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.9775 - double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; - // Units: dimensionless; Initial value: 0.03043 - double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; - // Units: dimensionless; Initial value: 0.004966 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; - // Units: dimensionless; Initial value: 0.9986 - double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 3.296e-05 - double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; - // Units: dimensionless; Initial value: 0.01869 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; - // Units: dimensionless; Initial value: 0.0001367 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; - // Units: dimensionless; Initial value: 0.9996 - double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; - // Units: dimensionless; Initial value: 0.7755 - double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; - // Units: millimolar; Initial value: 11.17 - double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; - // Units: millimolar; Initial value: 139.0 - - const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar - const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar - const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless - const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless - const double var_background_currents__g_B_Ca = 0.0011310000000000001; // nanoS_per_picoF - const double var_background_currents__g_B_Na = 0.00067443750000000002; // nanoS_per_picoF - const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF - const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole - const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA - const double var_membrane__i_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 - const double var_membrane__i_st = 1000000 * var_membrane__Cm_converted * var_membrane__i_st_converted / HeartConfig::Instance()->GetCapacitance(); // picoA - const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.27500000000000002; // picoA_per_picoF - const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] * var_sarcolemmal_calcium_pump_current__i_CaP_max / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA - const double var_sodium_potassium_pump__Km_K_o = 1.5; // millimolar - const double var_sodium_potassium_pump__Km_Na_i = 10; // millimolar - const double var_sodium_potassium_pump__i_NaK_max = 0.59933873999999998; // picoA_per_picoF - const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt - const double var_background_currents__i_B_Ca = (-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca * mParameters[9]; // picoA - const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt - const double var_background_currents__i_B_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na * mParameters[9]; // picoA - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA - const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless - const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = mParameters[9] * var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[5] / ((1 + pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (var_sodium_potassium_pump__Km_K_o + mParameters[5])); // picoA - const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt - const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA - const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA - const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA - const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA - const double var_ultrarapid_delayed_rectifier_K_current__g_Kur = 0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V)); // nanoS_per_picoF - const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_ultrarapid_delayed_rectifier_K_current__g_Kur * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA - const double d_dt_chaste_interface_var_membrane__V = (-var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger_current__i_NaCa - var_background_currents__i_B_Ca - var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - var_membrane__i_st - var_rapid_delayed_rectifier_K_current__i_Kr - var_sarcolemmal_calcium_pump_current__i_CaP - var_slow_delayed_rectifier_K_current__i_Ks - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur) / mParameters[9]; // millivolt / millisecond - - rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; - } - - void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) - { - // Time units: millisecond - std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -81.18 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.002908 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9649 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.9775 - double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; - // Units: dimensionless; Initial value: 0.03043 - double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; - // Units: dimensionless; Initial value: 0.004966 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; - // Units: dimensionless; Initial value: 0.9986 - double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 3.296e-05 - double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; - // Units: dimensionless; Initial value: 0.01869 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; - // Units: dimensionless; Initial value: 0.0001367 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; - // Units: dimensionless; Initial value: 0.9996 - double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; - // Units: dimensionless; Initial value: 0.9992 - - const double var_Ca_release_current_from_JSR_w_gate__tau_w = ((fabs(-7.9000000000000004 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.92307692307692313) : (6 * (1 - exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) / ((1 + 0.29999999999999999 * exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) * (-7.9000000000000004 + var_chaste_interface__membrane__V)))); - const double var_Ca_release_current_from_JSR_w_gate__w_infinity = 1 - 1 / (1 + exp(2.3529411764705883 - 0.058823529411764705 * var_chaste_interface__membrane__V)); - const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-1.25 - 0.125 * var_chaste_interface__membrane__V)); - const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(10 + var_chaste_interface__membrane__V) < 1.0e-10) ? (4.5789999999999997 / (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V))) : (28.571428571428569 * (1 - exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) / ((1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) * (10 + var_chaste_interface__membrane__V)))); - const double var_L_type_Ca_channel_f_gate__f_infinity = exp(-4.057971014492753 - 0.14492753623188406 * var_chaste_interface__membrane__V) / (1 + exp(-4.057971014492753 - 0.14492753623188406 * var_chaste_interface__membrane__V)); - const double var_L_type_Ca_channel_f_gate__tau_f = 9 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); - const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); - const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); - const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); - const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); - const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); - const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); - const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); - const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); - const double var_fast_sodium_current_m_gate__alpha_m = ((var_chaste_interface__membrane__V == (-47.130000000000003)) ? (3.2000000000000002) : (0.32000000000000001 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); - const double var_fast_sodium_current_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); - const double var_fast_sodium_current_m_gate__m_inf = var_fast_sodium_current_m_gate__alpha_m / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); - const double var_fast_sodium_current_m_gate__tau_m = 1 / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); - const double var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr = ((fabs(14.1 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.0015) : (0.00029999999999999997 * (14.1 + var_chaste_interface__membrane__V) / (1 - exp(-2.8199999999999998 - 0.20000000000000001 * var_chaste_interface__membrane__V)))); - const double var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr = ((fabs(-3.3328000000000002 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00037836118) : (7.3898000000000003e-5 * (-3.3328000000000002 + var_chaste_interface__membrane__V) / (-1 + exp(-0.65046743564221166 + 0.19517145812596365 * var_chaste_interface__membrane__V)))); - const double var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr = 1 / (var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr + var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr); - const double var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity = 1 / (1 + exp(-2.1692307692307691 - 0.15384615384615385 * var_chaste_interface__membrane__V)); - const double var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00068000000000000005) : (4.0000000000000003e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (1 - exp(1.1705882352941175 - 0.058823529411764705 * var_chaste_interface__membrane__V)))); - const double var_slow_delayed_rectifier_K_current_xs_gate__beta_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00031500000000000001) : (3.4999999999999997e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-2.2111111111111108 + 0.1111111111111111 * var_chaste_interface__membrane__V)))); - const double var_slow_delayed_rectifier_K_current_xs_gate__tau_xs = 0.5 / (var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs + var_slow_delayed_rectifier_K_current_xs_gate__beta_xs); - const double var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity = pow((1 + exp(1.5669291338582676 - 0.07874015748031496 * var_chaste_interface__membrane__V)), (-0.5)); - const double var_transient_outward_K_current__K_Q10 = 3; - const double var_transient_outward_K_current_oa_gate__alpha_oa = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); - const double var_transient_outward_K_current_oa_gate__beta_oa = 0.65000000000000002 / (2.5 + exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); - const double var_transient_outward_K_current_oa_gate__oa_infinity = 1 / (1 + exp(-1.1670467502850628 - 0.057012542759407071 * var_chaste_interface__membrane__V)); - const double var_transient_outward_K_current_oa_gate__tau_oa = 1 / ((var_transient_outward_K_current_oa_gate__alpha_oa + var_transient_outward_K_current_oa_gate__beta_oa) * var_transient_outward_K_current__K_Q10); - const double var_transient_outward_K_current_oi_gate__alpha_oi = 1 / (18.530000000000001 + exp(10.383561643835618 + 0.091324200913242018 * var_chaste_interface__membrane__V)); - const double var_transient_outward_K_current_oi_gate__beta_oi = 1 / (35.560000000000002 + exp(-0.16935483870967738 - 0.13440860215053763 * var_chaste_interface__membrane__V)); - const double var_transient_outward_K_current_oi_gate__oi_infinity = 1 / (1 + exp(8.1320754716981138 + 0.18867924528301888 * var_chaste_interface__membrane__V)); - const double var_transient_outward_K_current_oi_gate__tau_oi = 1 / ((var_transient_outward_K_current_oi_gate__alpha_oi + var_transient_outward_K_current_oi_gate__beta_oi) * var_transient_outward_K_current__K_Q10); - const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); - const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua = 0.65000000000000002 / (2.5 + exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); - const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua + var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua) * var_transient_outward_K_current__K_Q10); - const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity = 1 / (1 + exp(-3.15625 - 0.10416666666666667 * var_chaste_interface__membrane__V)); - const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui = 1 / (21 + exp(6.6071428571428568 - 0.035714285714285712 * var_chaste_interface__membrane__V)); - const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui = 1 / exp(9.875 - 0.0625 * var_chaste_interface__membrane__V); - const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui + var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui) * var_transient_outward_K_current__K_Q10); - const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity = 1 / (1 + exp(-3.6189956331877728 + 0.036390101892285295 * var_chaste_interface__membrane__V)); - - - rY[16] = (var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + ((var_Ca_release_current_from_JSR_w_gate__w_infinity / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)) / (1.0 - ((-1 / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)); - rY[11] = (var_chaste_interface__L_type_Ca_channel_d_gate__d + ((var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_d_gate__tau_d) * mDt)); - rY[12] = (var_chaste_interface__L_type_Ca_channel_f_gate__f + ((var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_f_gate__tau_f) * mDt)); - rY[3] = (var_chaste_interface__fast_sodium_current_h_gate__h + ((var_fast_sodium_current_h_gate__h_inf / var_fast_sodium_current_h_gate__tau_h) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_h_gate__tau_h) * mDt)); - rY[4] = (var_chaste_interface__fast_sodium_current_j_gate__j + ((var_fast_sodium_current_j_gate__j_inf / var_fast_sodium_current_j_gate__tau_j) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_j_gate__tau_j) * mDt)); - rY[2] = (var_chaste_interface__fast_sodium_current_m_gate__m + ((var_fast_sodium_current_m_gate__m_inf / var_fast_sodium_current_m_gate__tau_m) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_m_gate__tau_m) * mDt)); - rY[9] = (var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr + ((var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)) / (1.0 - ((-1 / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)); - rY[10] = (var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs + ((var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)) / (1.0 - ((-1 / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)); - rY[5] = (var_chaste_interface__transient_outward_K_current_oa_gate__oa + ((var_transient_outward_K_current_oa_gate__oa_infinity / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)); - rY[6] = (var_chaste_interface__transient_outward_K_current_oi_gate__oi + ((var_transient_outward_K_current_oi_gate__oi_infinity / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)); - rY[7] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua + ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)); - rY[8] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui + ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)); - - double _guess[8] = {rY[14],rY[15],rY[13],rY[1],rY[19],rY[20],rY[18],rY[17]}; - CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler>::Instance(); - _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); - rY[14] = _guess[0]; - rY[15] = _guess[1]; - rY[13] = _guess[2]; - rY[1] = _guess[3]; - rY[19] = _guess[4]; - rY[20] = _guess[5]; - rY[18] = _guess[6]; - rY[17] = _guess[7]; - } - - std::vector Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) - { - // Inputs: - // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -81.18 - double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0001013 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.002908 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9649 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.9775 - double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; - // Units: dimensionless; Initial value: 0.03043 - double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 3.296e-05 - double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; - // Units: dimensionless; Initial value: 0.01869 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; - // Units: dimensionless; Initial value: 0.0001367 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; - // Units: dimensionless; Initial value: 0.9996 - double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; - // Units: dimensionless; Initial value: 0.7755 - double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rY[14]; - // Units: dimensionless; Initial value: 2.35e-112 - double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rY[15]; - // Units: dimensionless; Initial value: 1.0 - double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; - // Units: millimolar; Initial value: 11.17 - double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; - // Units: millimolar; Initial value: 139.0 - double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rY[19]; - // Units: millimolar; Initial value: 1.488 - - // Mathematics - const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar - const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar - const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless - const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless - const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond - const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF - const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole - const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA - const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 - const double var_L_type_Ca_channel_f_gate__tau_f = 9 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); // millisecond - const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond - const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond - const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // millisecond - const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); // per_millisecond - const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond - const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // millisecond - const double var_membrane__i_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 - const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA - const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA - const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 - const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt - const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA - const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 - const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA - const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 - const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA - const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 - const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA - const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_K_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 - - std::vector dqs(14); - dqs[0] = var_Ca_release_current_from_JSR__i_rel; - dqs[1] = var_L_type_Ca_channel__i_Ca_L_converted; - dqs[2] = var_L_type_Ca_channel_f_gate__tau_f; - dqs[3] = var_membrane__Cm_converted; - dqs[4] = var_fast_sodium_current__i_Na_converted; - dqs[5] = var_fast_sodium_current_h_gate__tau_h; - dqs[6] = var_fast_sodium_current_j_gate__tau_j; - dqs[7] = var_time_independent_potassium_current__i_K1_converted; - dqs[8] = var_rapid_delayed_rectifier_K_current__i_Kr_converted; - dqs[9] = var_slow_delayed_rectifier_K_current__i_Ks_converted; - dqs[10] = var_Na_Ca_exchanger_current__i_NaCa_converted; - dqs[11] = var_membrane__i_st_converted; - dqs[12] = var_transient_outward_K_current__i_to_converted; - dqs[13] = var_chaste_interface__environment__time; - return dqs; - } - -template<> -void OdeSystemInformation::Initialise(void) -{ - this->mSystemName = "courtemanche_1998"; - this->mFreeVariableName = "time"; - this->mFreeVariableUnits = "millisecond"; - - // rY[0]: - this->mVariableNames.push_back("membrane_voltage"); - this->mVariableUnits.push_back("millivolt"); - this->mInitialConditions.push_back(-81.18); - - // rY[1]: - this->mVariableNames.push_back("cytosolic_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.0001013); - - // rY[2]: - this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.002908); - - // rY[3]: - this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9649); - - // rY[4]: - this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9775); - - // rY[5]: - this->mVariableNames.push_back("transient_outward_K_current_oa_gate__oa"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.03043); - - // rY[6]: - this->mVariableNames.push_back("transient_outward_K_current_oi_gate__oi"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9992); - - // rY[7]: - this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ua_gate__ua"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.004966); - - // rY[8]: - this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ui_gate__ui"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9986); - - // rY[9]: - this->mVariableNames.push_back("rapid_delayed_rectifier_K_current_xr_gate__xr"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(3.296e-05); - - // rY[10]: - this->mVariableNames.push_back("slow_delayed_rectifier_K_current_xs_gate__xs"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.01869); - - // rY[11]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0001367); - - // rY[12]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9996); - - // rY[13]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.7755); - - // rY[14]: - this->mVariableNames.push_back("Ca_release_current_from_JSR_u_gate__u"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(2.35e-112); - - // rY[15]: - this->mVariableNames.push_back("Ca_release_current_from_JSR_v_gate__v"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(1.0); - - // rY[16]: - this->mVariableNames.push_back("Ca_release_current_from_JSR_w_gate__w"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9992); - - // rY[17]: - this->mVariableNames.push_back("cytosolic_sodium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(11.17); - - // rY[18]: - this->mVariableNames.push_back("cytosolic_potassium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(139.0); - - // rY[19]: - this->mVariableNames.push_back("JSR_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(1.488); - - // rY[20]: - this->mVariableNames.push_back("intracellular_ion_concentrations__Ca_up"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(1.488); - - // mParameters[0]: - this->mParameterNames.push_back("SR_leak_current_max"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[1]: - this->mParameterNames.push_back("SR_release_current_max"); - this->mParameterUnits.push_back("per_millisecond"); - - // mParameters[2]: - this->mParameterNames.push_back("SR_uptake_current_max"); - this->mParameterUnits.push_back("millimolar_per_millisecond"); - - // mParameters[3]: - this->mParameterNames.push_back("concentration_clamp_onoff"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[4]: - this->mParameterNames.push_back("extracellular_calcium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[5]: - this->mParameterNames.push_back("extracellular_potassium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[6]: - this->mParameterNames.push_back("extracellular_sodium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[7]: - this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // mParameters[8]: - this->mParameterNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); - this->mParameterUnits.push_back("millisecond"); - - // mParameters[9]: - this->mParameterNames.push_back("membrane__Cm"); - this->mParameterUnits.push_back("picoF"); - - // mParameters[10]: - this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // mParameters[11]: - this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[12]: - this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); - this->mParameterUnits.push_back("millivolt"); - - // mParameters[13]: - this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // mParameters[14]: - this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // mParameters[15]: - this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // mParameters[16]: - this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); - this->mParameterUnits.push_back("picoA_per_picoF"); - - // mParameters[17]: - this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // Derived Quantity index [0]: - this->mDerivedQuantityNames.push_back("SR_release_current"); - this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); - - // Derived Quantity index [1]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [2]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - // Derived Quantity index [3]: - this->mDerivedQuantityNames.push_back("membrane_capacitance"); - this->mDerivedQuantityUnits.push_back("uF"); - - // Derived Quantity index [4]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [5]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - // Derived Quantity index [6]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - // Derived Quantity index [7]: - this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [8]: - this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [9]: - this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [10]: - this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [11]: - this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [12]: - this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [13]: - this->mDerivedQuantityNames.push_back("time"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - this->mInitialised = true; -} - -// Serialization for Boost >= 1.36 -#include "SerializationExportWrapperForCpp.hpp" -CHASTE_CLASS_EXPORT(Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler) -extern "C" -{ - AbstractCardiacCellInterface* MakeCardiacCell( - boost::shared_ptr pSolver, - boost::shared_ptr pStimulus) - { - return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(pSolver, pStimulus); - } - -} diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler.cpp_python36 deleted file mode 100644 index 9ba8ce0c..00000000 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler.cpp_python36 +++ /dev/null @@ -1,2310 +0,0 @@ -//! @file -//! -//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) -//! -//! Model: grandi_pasqualini_bers_2010_epi -//! -//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen -//! (translator: chaste_codegen, model type: BackwardEuler) -//! on (date omitted as unimportant) -//! -//! - -#include "CardiacNewtonSolver.hpp" -#include "grandi_pasqualini_bers_2010_ssBackwardEuler.hpp" -#include -#include -#include -#include -#include "Exception.hpp" -#include "OdeSystemInformation.hpp" -#include "RegularStimulus.hpp" -#include "HeartConfig.hpp" -#include "IsNan.hpp" -#include "MathsCustomFunctions.hpp" - -#include "ModelFactory.hpp" - -AbstractBackwardEulerCardiacCell<27>* Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { - return new Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler(p_solver, p_stimulus); -} - -bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = ModelFactory::Register("grandi_pasqualini_bers_2010_ss", "BackwardEuler", (ModelFactory::TCreateMethod)Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::CreateMethod); - - - - boost::shared_ptr Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::UseCellMLDefaultStimulus() - { - // Use the default stimulus specified by CellML metadata - const double var_chaste_interface__membrane_potential__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 - const double var_chaste_interface__membrane_potential__stim_duration = 5; // msec - const double var_chaste_interface__membrane_potential__stim_period = 1000; // msec - const double var_chaste_interface__membrane_potential__stim_start = 100; // msec - boost::shared_ptr p_cellml_stim(new RegularStimulus( - -fabs(var_chaste_interface__membrane_potential__stim_amplitude_converted), - var_chaste_interface__membrane_potential__stim_duration, - var_chaste_interface__membrane_potential__stim_period, - var_chaste_interface__membrane_potential__stim_start - )); - mpIntracellularStimulus = p_cellml_stim; - return p_cellml_stim; - } - double Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::GetIntracellularCalciumConcentration() - { - return mStateVariables[1]; - } - Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) - : AbstractBackwardEulerCardiacCell<27>( - 39, - 0, - pIntracellularStimulus) - { - // Time units: millisecond - // - this->mpSystemInfo = OdeSystemInformation::Instance(); - Init(); - - // We have a default stimulus specified in the CellML file metadata - this->mHasDefaultStimulusFromCellML = true; - - this->mParameters[0] = 5.3480000000000003e-6; // (var_SR_Fluxes__SR_leak_max) [per_msec] - this->mParameters[1] = 25; // (var_parameters__ks) [per_msec] - this->mParameters[2] = 0.0053114; // (var_parameters__Vmax_SRCaP) [mM_per_msec] - this->mParameters[3] = 1; // (var_Na_Concentrations__conc_clamp) [dimensionless] - this->mParameters[4] = 15; // (var_parameters__Cli) [mM] - this->mParameters[5] = 1.8; // (var_parameters__Cao) [mM] - this->mParameters[6] = 150; // (var_parameters__Clo) [mM] - this->mParameters[7] = 5.4000000000000004; // (var_parameters__Ko) [mM] - this->mParameters[8] = 140; // (var_parameters__Nao) [mM] - this->mParameters[9] = 96485; // (var_parameters__Frdy) [coulomb_per_mole] - this->mParameters[10] = 8314; // (var_parameters__R) [joule_per_kelvin_per_kilomole] - this->mParameters[11] = 0.5; // (var_parameters__pCa_max) [cm_per_sec] - this->mParameters[12] = 23; // (var_parameters__GNa) [mS_per_uF] - this->mParameters[13] = 0; // (var_I_Na__perc_reduced_inact_for_IpNa) [dimensionless] - this->mParameters[14] = 0; // (var_I_Na__shift_INa_inact) [mV] - this->mParameters[15] = 1; // (var_I_to__GtoFast_factor) [dimensionless] - this->mParameters[16] = 0.34999999999999998; // (var_I_Ki__g_ki_factor) [mS_per_uF] - this->mParameters[17] = 0.035000000000000003; // (var_I_Kr__gkr_max) [mS_per_uF] - this->mParameters[18] = 1; // (var_I_Ks__GKs_factor) [dimensionless] - this->mParameters[19] = 1; // (var_I_to__GtoSlow_factor) [dimensionless] - this->mParameters[20] = 4.5; // (var_parameters__IbarNCX) [uA_per_uF] - this->mParameters[21] = 1.8; // (var_parameters__IbarNaK) [uA_per_uF] - this->mParameters[22] = 1.3809999999999999e-10; // (var_parameters__Cmem) [farad] - this->mParameters[23] = 310; // (var_parameters__Temp) [kelvin] - } - - Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::~Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler() - { - } - - - void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::VerifyStateVariables() - { - std::vector& rY = rGetStateVariables(); - std::string error_message = ""; - - for (unsigned i=0; i < 39; i++) - { - if(std::isnan(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; - } - if(std::isinf(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; - } - if(this->is_concentration[i] && rY[i] < 0) - { - error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] < 0) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] > 1) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; - } - } - if (error_message != ""){ - EXCEPTION(DumpState(error_message)); - } - } - - double Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) - { - // For state variable interpolation (SVI) we read in interpolated state variables, - // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). - if (!pStateVariables) pStateVariables = &rGetStateVariables(); - const std::vector& rY = *pStateVariables; - double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: mV; Initial value: -81.4229700631461 - double var_chaste_interface__I_Na__m = rY[2]; - // Units: dimensionless; Initial value: 0.00381858135062259 - double var_chaste_interface__I_Na__h = rY[3]; - // Units: dimensionless; Initial value: 0.625086621635645 - double var_chaste_interface__I_Na__j = rY[4]; - // Units: dimensionless; Initial value: 0.62332507235506 - double var_chaste_interface__I_Kr__x_kr = rY[5]; - // Units: dimensionless; Initial value: 0.021733554982663 - double var_chaste_interface__I_Ks__x_ks = rY[6]; - // Units: dimensionless; Initial value: 0.00428981903391989 - double var_chaste_interface__I_to__x_to_s = rY[7]; - // Units: dimensionless; Initial value: 0.000441539203559411 - double var_chaste_interface__I_to__y_to_s = rY[8]; - // Units: dimensionless; Initial value: 0.784875334693892 - double var_chaste_interface__I_to__x_to_f = rY[9]; - // Units: dimensionless; Initial value: 0.000441531250866821 - double var_chaste_interface__I_to__y_to_f = rY[10]; - // Units: dimensionless; Initial value: 0.999995817153572 - double var_chaste_interface__I_Ca__d = rY[11]; - // Units: dimensionless; Initial value: 2.93982287251302e-06 - double var_chaste_interface__I_Ca__f = rY[12]; - // Units: dimensionless; Initial value: 0.99511673495949 - double var_chaste_interface__I_Ca__f_Ca_Bj = rY[13]; - // Units: dimensionless; Initial value: 0.0246142436477748 - double var_chaste_interface__I_Ca__f_Ca_Bsl = rY[14]; - // Units: dimensionless; Initial value: 0.0152416826209301 - double var_chaste_interface__Na_Concentrations__Na_j = rY[33]; - // Units: mM; Initial value: 8.3215690202059 - double var_chaste_interface__Na_Concentrations__Na_sl = rY[34]; - // Units: mM; Initial value: 8.32094589677861 - double var_chaste_interface__Na_Concentrations__Na_i = rY[35]; - // Units: mM; Initial value: 8.32114502072456 - double var_chaste_interface__K_Concentration__K_i = rY[36]; - // Units: mM; Initial value: 120.0 - double var_chaste_interface__Ca_Concentrations__Ca_j = rY[37]; - // Units: mM; Initial value: 0.000175415190830688 - double var_chaste_interface__Ca_Concentrations__Ca_sl = rY[38]; - // Units: mM; Initial value: 0.000106544589194246 - - const double var_I_Ca__fcaCaMSL = 0; // dimensionless - const double var_I_Ca__fcaCaj = 0; // dimensionless - const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF - const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF - const double var_I_Kp__kp_kp = 1 / (1 + exp(7.4880000000000004 - 0.16722408026755853 * var_chaste_interface__membrane_potential__V_m)); // dimensionless - const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless - const double var_parameters__Fjunc = 0.11; // dimensionless - const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless - const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless - const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * mParameters[18]; // mS_per_uF - const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless - const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF - const double var_parameters__GClB = 0.0089999999999999993; // mS_per_uF - const double var_parameters__GClCa = 0.0548125; // mS_per_uF - const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF - const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF - const double var_parameters__KdClCa = 0.10000000000000001; // mM - const double var_parameters__Kdact = 0.00014999999999999999; // mM - const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless - const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless - const double var_parameters__KmCai = 0.0035899999999999999; // mM - const double var_parameters__KmCao = 1.3; // mM - const double var_parameters__KmKo = 1.5; // mM - const double var_parameters__KmNai = 12.289999999999999; // mM - const double var_parameters__KmNaip = 11; // mM - const double var_parameters__KmNao = 87.5; // mM - const double var_parameters__KmPCa = 0.00050000000000000001; // mM - const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF - const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF - const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 - const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 - const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless - const double var_parameters__Q10CaL = 1.8; // dimensionless - const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless - const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless - const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV - const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless - const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF - const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF - const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF - const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless - const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF - const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF - const double var_parameters__eca_junc = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV - const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF - const double var_parameters__eca_sl = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV - const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF - const double var_parameters__ecl = log(mParameters[4] / mParameters[6]) / var_parameters__FoRT; // mV - const double var_I_ClCa__I_ClCa_junc = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_j); // uA_per_uF - const double var_I_ClCa__I_ClCa_sl = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_sl); // uA_per_uF - const double var_I_ClCa__I_ClCa = var_I_ClCa__I_ClCa_junc + var_I_ClCa__I_ClCa_sl; // uA_per_uF - const double var_I_ClCa__I_Clbk = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__GClB; // uA_per_uF - const double var_membrane_potential__I_Cl_tot = var_I_ClCa__I_ClCa + var_I_ClCa__I_Clbk; // uA_per_uF - const double var_parameters__ek = log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV - const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless - const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless - const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless - const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF - const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF - const double var_parameters__ena_junc = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV - const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF - const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF - const double var_parameters__ena_sl = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV - const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF - const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF - const double var_parameters__epi = 1; // dimensionless - const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * mParameters[15]) : (0.0014039999999999999 * mParameters[15])); // mS_per_uF - const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * mParameters[19]) : (0.037595999999999997 * mParameters[19])); // mS_per_uF - const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF - const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF - const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF - const double var_parameters__gkp = 0.002; // mS_per_uF - const double var_I_Kp__I_kp_junc = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fjunc * var_parameters__gkp; // uA_per_uF - const double var_I_Kp__I_kp_sl = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fsl * var_parameters__gkp; // uA_per_uF - const double var_I_Kp__I_kp = var_I_Kp__I_kp_junc + var_I_Kp__I_kp_sl; // uA_per_uF - const double var_parameters__ksat = 0.32000000000000001; // dimensionless - const double var_parameters__nu = 0.27000000000000002; // dimensionless - const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 - const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 - const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 - const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF - const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 - const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF - const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec - const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF - const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF - const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF - const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF - const double var_membrane_potential__I_Ca_tot = var_Ca_Concentrations__I_Ca_tot_junc + var_Ca_Concentrations__I_Ca_tot_sl; // uA_per_uF - const double var_parameters__pK = 1.35e-7; // cm_per_sec - const double var_I_Ca__ibark = (-0.75 * mParameters[7] + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pK / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_CaK = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * ((1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_parameters__Fjunc_CaL + (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_parameters__Fsl_CaL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibark; // uA_per_uF - const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec - const double var_I_Ca__ibarna_j = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF - const double var_I_Ca__ibarna_sl = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF - const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF - const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF - const double var_membrane_potential__I_Na_tot = var_Na_Concentrations__I_Na_tot_junc + var_Na_Concentrations__I_Na_tot_sl; // uA_per_uF - const double var_parameters__pNaK = 0.018329999999999999; // dimensionless - const double var_I_Ks__eks = log((mParameters[8] * var_parameters__pNaK + mParameters[7]) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV - const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF - const double var_K_Concentration__I_K_tot = -2 * var_I_NaK__I_nak + var_I_Ca__I_CaK + var_I_Ki__I_ki + var_I_Kp__I_kp + var_I_Kr__I_kr + var_I_Ks__I_ks + var_I_to__I_to; // uA_per_uF - const double var_membrane_potential__I_tot = var_K_Concentration__I_K_tot + var_membrane_potential__I_Ca_tot + var_membrane_potential__I_Cl_tot + var_membrane_potential__I_Na_tot; // uA_per_uF - const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane_potential__I_tot; // uA_per_cm2 - - const double i_ionic = var_chaste_interface__i_ionic; - EXCEPT_IF_NOT(!std::isnan(i_ionic)); - return i_ionic; - } - - void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[27], double rResidual[27]) - { - std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: mV; Initial value: -81.4229700631461 - double var_chaste_interface__I_Na__m = rY[2]; - // Units: dimensionless; Initial value: 0.00381858135062259 - double var_chaste_interface__I_Na__h = rY[3]; - // Units: dimensionless; Initial value: 0.625086621635645 - double var_chaste_interface__I_Na__j = rY[4]; - // Units: dimensionless; Initial value: 0.62332507235506 - double var_chaste_interface__I_Ca__d = rY[11]; - // Units: dimensionless; Initial value: 2.93982287251302e-06 - double var_chaste_interface__I_Ca__f = rY[12]; - // Units: dimensionless; Initial value: 0.99511673495949 - - //output_nonlinear_state_assignments - double var_chaste_interface__Ca_Concentrations__Ca_i = rCurrentGuess[0]; - double var_chaste_interface__Ca_Concentrations__Ca_j = rCurrentGuess[1]; - double var_chaste_interface__Ca_Concentrations__Ca_sl = rCurrentGuess[2]; - double var_chaste_interface__Cytosolic_Ca_Buffers__CaM = rCurrentGuess[3]; - double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c = rCurrentGuess[4]; - double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m = rCurrentGuess[5]; - double var_chaste_interface__Cytosolic_Ca_Buffers__SRB = rCurrentGuess[6]; - double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc = rCurrentGuess[7]; - double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm = rCurrentGuess[8]; - double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL = rCurrentGuess[9]; - double var_chaste_interface__I_Ca__f_Ca_Bj = rCurrentGuess[10]; - double var_chaste_interface__I_Ca__f_Ca_Bsl = rCurrentGuess[11]; - double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j = rCurrentGuess[12]; - double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl = rCurrentGuess[13]; - double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j = rCurrentGuess[14]; - double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl = rCurrentGuess[15]; - double var_chaste_interface__Na_Buffers__Na_Bj = rCurrentGuess[17]; - double var_chaste_interface__Na_Buffers__Na_Bsl = rCurrentGuess[18]; - double var_chaste_interface__Na_Concentrations__Na_i = rCurrentGuess[19]; - double var_chaste_interface__Na_Concentrations__Na_j = rCurrentGuess[20]; - double var_chaste_interface__Na_Concentrations__Na_sl = rCurrentGuess[21]; - double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = rCurrentGuess[22]; - double var_chaste_interface__SR_Ca_Concentrations__Csqn_b = rCurrentGuess[23]; - double var_chaste_interface__SR_Fluxes__Ry_Ri = rCurrentGuess[24]; - double var_chaste_interface__SR_Fluxes__Ry_Ro = rCurrentGuess[25]; - double var_chaste_interface__SR_Fluxes__Ry_Rr = rCurrentGuess[26]; - - //output_equations - const double d_dt_chaste_interface_var_K_Concentration__K_i = 0; // mM / msec - const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bj = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bj + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bj) * var_chaste_interface__Ca_Concentrations__Ca_j; // 1 / msec - const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bsl + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl) * var_chaste_interface__Ca_Concentrations__Ca_sl; // 1 / msec - const double var_I_Ca__fcaCaMSL = 0; // dimensionless - const double var_I_Ca__fcaCaj = 0; // dimensionless - const double var_SR_Fluxes__MaxSR = 15; // dimensionless - const double var_SR_Fluxes__MinSR = 1; // dimensionless - const double var_SR_Fluxes__RI = 1 - var_chaste_interface__SR_Fluxes__Ry_Ri - var_chaste_interface__SR_Fluxes__Ry_Ro - var_chaste_interface__SR_Fluxes__Ry_Rr; // mM - const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * mParameters[0]; // mM_per_msec - const double var_parameters__Bmax_CaM = 0.024; // mM - const double var_parameters__Bmax_Naj = 7.5609999999999999; // mM - const double var_parameters__Bmax_Nasl = 1.6499999999999999; // mM - const double var_parameters__Bmax_SR = 0.017100000000000001; // mM - const double var_parameters__Bmax_TnChigh = 0.14000000000000001; // mM - const double var_parameters__Bmax_TnClow = 0.070000000000000007; // mM - const double var_parameters__Bmax_myosin = 0.14000000000000001; // mM - const double var_parameters__Fjunc = 0.11; // dimensionless - const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless - const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless - const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless - const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF - const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF - const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF - const double var_parameters__J_ca_juncsl = 8.2413000000000004e-13; // liters_per_msec - const double var_parameters__J_ca_slmyo = 3.2742999999999999e-12; // liters_per_msec - const double var_parameters__J_na_juncsl = 1.8312999999999999e-14; // liters_per_msec - const double var_parameters__J_na_slmyo = 1.6385999999999999e-12; // liters_per_msec - const double var_parameters__Kdact = 0.00014999999999999999; // mM - const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless - const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless - const double var_parameters__KmCai = 0.0035899999999999999; // mM - const double var_parameters__KmCao = 1.3; // mM - const double var_parameters__KmKo = 1.5; // mM - const double var_parameters__KmNai = 12.289999999999999; // mM - const double var_parameters__KmNaip = 11; // mM - const double var_parameters__KmNao = 87.5; // mM - const double var_parameters__KmPCa = 0.00050000000000000001; // mM - const double var_parameters__Kmf = 0.00024600000000000002; // mM - const double var_parameters__Kmr = 1.7; // mM - const double var_parameters__Mgi = 1; // mM - const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 - const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 - const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless - const double var_parameters__Q10CaL = 1.8; // dimensionless - const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless - const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless - const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless - const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV - const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless - const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF - const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF - const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless - const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF - const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF - const double var_parameters__cellLength = 100; // um - const double var_parameters__cellRadius = 10.25; // um - const double var_parameters__Vcell = 1.0000000000000001e-15 * M_PI * pow(var_parameters__cellRadius, 2) * var_parameters__cellLength; // liter - const double var_parameters__Vjunc = 0.00053900000000000009 * var_parameters__Vcell; // liter - const double var_parameters__Vmyo = 0.65000000000000002 * var_parameters__Vcell; // liter - const double d_dt_chaste_interface_var_Na_Concentrations__Na_i = (-var_chaste_interface__Na_Concentrations__Na_i + var_chaste_interface__Na_Concentrations__Na_sl) * mParameters[3] * var_parameters__J_na_slmyo / var_parameters__Vmyo; // mM / msec - const double var_parameters__Bmax_SLhighj = 0.000165 * var_parameters__Vmyo / var_parameters__Vjunc; // mM - const double var_parameters__Bmax_SLlowj = 0.00046000000000000001 * var_parameters__Vmyo / var_parameters__Vjunc; // mM - const double var_parameters__Vsl = 0.02 * var_parameters__Vcell; // liter - const double var_parameters__Bmax_SLhighsl = 0.0134 * var_parameters__Vmyo / var_parameters__Vsl; // mM - const double var_parameters__Bmax_SLlowsl = 0.037400000000000003 * var_parameters__Vmyo / var_parameters__Vsl; // mM - const double var_parameters__Vsr = 0.035000000000000003 * var_parameters__Vcell; // liter - const double var_parameters__Bmax_Csqn = 0.14000000000000001 * var_parameters__Vmyo / var_parameters__Vsr; // mM - const double var_parameters__ec50SR = 0.45000000000000001; // mM - const double var_SR_Fluxes__kCaSR = -(-var_SR_Fluxes__MinSR + var_SR_Fluxes__MaxSR) / (1 + pow((var_parameters__ec50SR / var_chaste_interface__SR_Ca_Concentrations__Ca_sr), 2.5)) + var_SR_Fluxes__MaxSR; // dimensionless - const double var_parameters__eca_junc = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV - const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF - const double var_parameters__eca_sl = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV - const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF - const double var_parameters__ena_junc = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV - const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF - const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF - const double var_parameters__ena_sl = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV - const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF - const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF - const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless - const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * mParameters[2] / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec - const double var_parameters__kiCa = 0.5; // per_mM_per_msec - const double var_SR_Fluxes__kiSRCa = var_SR_Fluxes__kCaSR * var_parameters__kiCa; // per_mM_per_msec - const double var_parameters__kim = 0.0050000000000000001; // per_msec - const double var_parameters__koCa = 10; // per_mM2_per_msec - const double var_SR_Fluxes__koSRCa = var_parameters__koCa / var_SR_Fluxes__kCaSR; // per_mM2_per_msec - const double var_parameters__koff_cam = 0.23799999999999999; // per_msec - const double var_parameters__koff_csqn = 65; // per_msec - const double var_parameters__koff_myoca = 0.00046000000000000001; // per_msec - const double var_parameters__koff_myomg = 5.7000000000000003e-5; // per_msec - const double var_parameters__koff_na = 0.001; // per_msec - const double var_parameters__koff_slh = 0.029999999999999999; // per_msec - const double var_parameters__koff_sll = 1.3; // per_msec - const double var_parameters__koff_sr = 0.059999999999999998; // per_msec - const double var_parameters__koff_tnchca = 3.1999999999999999e-5; // per_msec - const double var_parameters__koff_tnchmg = 0.0033300000000000001; // per_msec - const double var_parameters__koff_tncl = 0.019599999999999999; // per_msec - const double var_parameters__kom = 0.059999999999999998; // per_msec - const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri = -var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kim - var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kom + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_SR_Fluxes__RI * var_SR_Fluxes__koSRCa + var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec - const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro = var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kim - var_chaste_interface__SR_Fluxes__Ry_Ro * var_parameters__kom + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec - const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr = var_SR_Fluxes__RI * var_parameters__kim + var_chaste_interface__SR_Fluxes__Ry_Ro * var_parameters__kom - pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__kiSRCa; // mM / msec - const double var_parameters__kon_cam = 34; // per_mM_per_msec - const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM = -var_chaste_interface__Cytosolic_Ca_Buffers__CaM * var_parameters__koff_cam + (-var_chaste_interface__Cytosolic_Ca_Buffers__CaM + var_parameters__Bmax_CaM) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_cam; // mM / msec - const double var_parameters__kon_csqn = 100; // per_mM_per_msec - const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b = -var_chaste_interface__SR_Ca_Concentrations__Csqn_b * var_parameters__koff_csqn + (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr * var_parameters__kon_csqn; // mM / msec - const double var_parameters__kon_myoca = 13.800000000000001; // per_mM_per_msec - const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c = -var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c * var_parameters__koff_myoca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_myoca; // mM / msec - const double var_parameters__kon_myomg = 0.015699999999999999; // per_mM_per_msec - const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m = -var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m * var_parameters__koff_myomg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_parameters__Mgi * var_parameters__kon_myomg; // mM / msec - const double var_parameters__kon_na = 0.0001; // per_mM_per_msec - const double var_Na_Buffers__dNa_Bj_dt = -var_chaste_interface__Na_Buffers__Na_Bj * var_parameters__koff_na + (-var_chaste_interface__Na_Buffers__Na_Bj + var_parameters__Bmax_Naj) * var_chaste_interface__Na_Concentrations__Na_j * var_parameters__kon_na; // mM_per_msec - const double d_dt_chaste_interface_var_Na_Buffers__Na_Bj = var_Na_Buffers__dNa_Bj_dt; // mM / msec - const double var_Na_Buffers__dNa_Bsl_dt = -var_chaste_interface__Na_Buffers__Na_Bsl * var_parameters__koff_na + (-var_chaste_interface__Na_Buffers__Na_Bsl + var_parameters__Bmax_Nasl) * var_chaste_interface__Na_Concentrations__Na_sl * var_parameters__kon_na; // mM_per_msec - const double d_dt_chaste_interface_var_Na_Buffers__Na_Bsl = var_Na_Buffers__dNa_Bsl_dt; // mM / msec - const double var_parameters__kon_slh = 100; // per_mM_per_msec - const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j * var_parameters__koff_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_slh; // mM / msec - const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl * var_parameters__koff_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_slh; // mM / msec - const double var_parameters__kon_sll = 100; // per_mM_per_msec - const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_sll; // mM / msec - const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_sll; // mM / msec - const double var_Junctional_and_SL_Ca_Buffers__J_CaB_junction = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j * var_parameters__koff_slh - var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_sll; // mM_per_msec - const double var_Junctional_and_SL_Ca_Buffers__J_CaB_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl * var_parameters__koff_slh - var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_sll; // mM_per_msec - const double var_parameters__kon_sr = 100; // per_mM_per_msec - const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB = -var_chaste_interface__Cytosolic_Ca_Buffers__SRB * var_parameters__koff_sr + (-var_chaste_interface__Cytosolic_Ca_Buffers__SRB + var_parameters__Bmax_SR) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_sr; // mM / msec - const double var_parameters__kon_tnchca = 2.3700000000000001; // per_mM_per_msec - const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc * var_parameters__koff_tnchca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tnchca; // mM / msec - const double var_parameters__kon_tnchmg = 0.0030000000000000001; // per_mM_per_msec - const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm * var_parameters__koff_tnchmg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_parameters__Mgi * var_parameters__kon_tnchmg; // mM / msec - const double var_parameters__kon_tncl = 32.700000000000003; // per_mM_per_msec - const double var_Cytosolic_Ca_Buffers__J_CaB_cytosol = -var_chaste_interface__Cytosolic_Ca_Buffers__CaM * var_parameters__koff_cam - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c * var_parameters__koff_myoca - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m * var_parameters__koff_myomg - var_chaste_interface__Cytosolic_Ca_Buffers__SRB * var_parameters__koff_sr - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc * var_parameters__koff_tnchca - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm * var_parameters__koff_tnchmg - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL * var_parameters__koff_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__CaM + var_parameters__Bmax_CaM) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_cam + (-var_chaste_interface__Cytosolic_Ca_Buffers__SRB + var_parameters__Bmax_SR) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_sr + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + var_parameters__Bmax_TnClow) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_myoca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_parameters__Mgi * var_parameters__kon_myomg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tnchca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_parameters__Mgi * var_parameters__kon_tnchmg; // mM_per_msec - const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_i = -var_Cytosolic_Ca_Buffers__J_CaB_cytosol + (-var_chaste_interface__Ca_Concentrations__Ca_i + var_chaste_interface__Ca_Concentrations__Ca_sl) * var_parameters__J_ca_slmyo / var_parameters__Vmyo - var_SR_Fluxes__J_serca * var_parameters__Vsr / var_parameters__Vmyo; // mM / msec - const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL * var_parameters__koff_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + var_parameters__Bmax_TnClow) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tncl; // mM / msec - const double var_SR_Fluxes__J_SRCarel = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * mParameters[1]; // mM_per_msec - const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr = -var_SR_Fluxes__J_SRCarel + var_chaste_interface__SR_Ca_Concentrations__Csqn_b * var_parameters__koff_csqn - var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vsr - (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr * var_parameters__kon_csqn + var_SR_Fluxes__J_serca; // mM / msec - const double var_parameters__ksat = 0.32000000000000001; // dimensionless - const double var_parameters__nu = 0.27000000000000002; // dimensionless - const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 - const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 - const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 - const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF - const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 - const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF - const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec - const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF - const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF - const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_j = -var_Junctional_and_SL_Ca_Buffers__J_CaB_junction + (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__Ca_Concentrations__Ca_sl) * var_parameters__J_ca_juncsl / var_parameters__Vjunc + var_SR_Fluxes__J_SRCarel * var_parameters__Vsr / var_parameters__Vjunc + var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vjunc - 0.5 * var_Ca_Concentrations__I_Ca_tot_junc * mParameters[22] / (mParameters[9] * var_parameters__Vjunc); // mM / msec - const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF - const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF - const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl = -var_Junctional_and_SL_Ca_Buffers__J_CaB_sl + (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_i) * var_parameters__J_ca_slmyo / var_parameters__Vsl + (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_j) * var_parameters__J_ca_juncsl / var_parameters__Vsl - 0.5 * var_Ca_Concentrations__I_Ca_tot_sl * mParameters[22] / (mParameters[9] * var_parameters__Vsl); // mM / msec - const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec - const double var_I_Ca__ibarna_j = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF - const double var_I_Ca__ibarna_sl = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF - const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF - const double d_dt_chaste_interface_var_Na_Concentrations__Na_j = (-var_Na_Buffers__dNa_Bj_dt + (-var_chaste_interface__Na_Concentrations__Na_j + var_chaste_interface__Na_Concentrations__Na_sl) * var_parameters__J_na_juncsl / var_parameters__Vjunc - var_Na_Concentrations__I_Na_tot_junc * mParameters[22] / (mParameters[9] * var_parameters__Vjunc)) * mParameters[3]; // mM / msec - const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF - const double d_dt_chaste_interface_var_Na_Concentrations__Na_sl = (-var_Na_Buffers__dNa_Bsl_dt + (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_i) * var_parameters__J_na_slmyo / var_parameters__Vsl + (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_j) * var_parameters__J_na_juncsl / var_parameters__Vsl - var_Na_Concentrations__I_Na_tot_sl * mParameters[22] / (mParameters[9] * var_parameters__Vsl)) * mParameters[3]; // mM / msec - - rResidual[0] = rCurrentGuess[0] - rY[1] - mDt*d_dt_chaste_interface_var_Ca_Concentrations__Ca_i; - rResidual[10] = rCurrentGuess[10] - rY[13] - mDt*d_dt_chaste_interface_var_I_Ca__f_Ca_Bj; - rResidual[11] = rCurrentGuess[11] - rY[14] - mDt*d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl; - rResidual[26] = rCurrentGuess[26] - rY[15] - mDt*d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr; - rResidual[25] = rCurrentGuess[25] - rY[16] - mDt*d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro; - rResidual[24] = rCurrentGuess[24] - rY[17] - mDt*d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri; - rResidual[17] = rCurrentGuess[17] - rY[18] - mDt*d_dt_chaste_interface_var_Na_Buffers__Na_Bj; - rResidual[18] = rCurrentGuess[18] - rY[19] - mDt*d_dt_chaste_interface_var_Na_Buffers__Na_Bsl; - rResidual[9] = rCurrentGuess[9] - rY[20] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL; - rResidual[7] = rCurrentGuess[7] - rY[21] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc; - rResidual[8] = rCurrentGuess[8] - rY[22] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm; - rResidual[3] = rCurrentGuess[3] - rY[23] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM; - rResidual[4] = rCurrentGuess[4] - rY[24] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c; - rResidual[5] = rCurrentGuess[5] - rY[25] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m; - rResidual[6] = rCurrentGuess[6] - rY[26] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB; - rResidual[14] = rCurrentGuess[14] - rY[27] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j; - rResidual[15] = rCurrentGuess[15] - rY[28] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl; - rResidual[12] = rCurrentGuess[12] - rY[29] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j; - rResidual[13] = rCurrentGuess[13] - rY[30] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl; - rResidual[23] = rCurrentGuess[23] - rY[31] - mDt*d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b; - rResidual[22] = rCurrentGuess[22] - rY[32] - mDt*d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr; - rResidual[20] = rCurrentGuess[20] - rY[33] - mDt*d_dt_chaste_interface_var_Na_Concentrations__Na_j; - rResidual[21] = rCurrentGuess[21] - rY[34] - mDt*d_dt_chaste_interface_var_Na_Concentrations__Na_sl; - rResidual[19] = rCurrentGuess[19] - rY[35] - mDt*d_dt_chaste_interface_var_Na_Concentrations__Na_i; - rResidual[16] = rCurrentGuess[16] - rY[36] - mDt*d_dt_chaste_interface_var_K_Concentration__K_i; - rResidual[1] = rCurrentGuess[1] - rY[37] - mDt*d_dt_chaste_interface_var_Ca_Concentrations__Ca_j; - rResidual[2] = rCurrentGuess[2] - rY[38] - mDt*d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl; - } - - void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[27], double rJacobian[27][27]) - { - std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: mV; Initial value: -81.4229700631461 - double var_chaste_interface__I_Na__m = rY[2]; - // Units: dimensionless; Initial value: 0.00381858135062259 - double var_chaste_interface__I_Na__h = rY[3]; - // Units: dimensionless; Initial value: 0.625086621635645 - double var_chaste_interface__I_Na__j = rY[4]; - // Units: dimensionless; Initial value: 0.62332507235506 - double var_chaste_interface__I_Ca__d = rY[11]; - // Units: dimensionless; Initial value: 2.93982287251302e-06 - double var_chaste_interface__I_Ca__f = rY[12]; - // Units: dimensionless; Initial value: 0.99511673495949 - - double var_chaste_interface__Ca_Concentrations__Ca_i = rCurrentGuess[0]; - double var_chaste_interface__Ca_Concentrations__Ca_j = rCurrentGuess[1]; - double var_chaste_interface__Ca_Concentrations__Ca_sl = rCurrentGuess[2]; - double var_chaste_interface__Cytosolic_Ca_Buffers__CaM = rCurrentGuess[3]; - double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c = rCurrentGuess[4]; - double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m = rCurrentGuess[5]; - double var_chaste_interface__Cytosolic_Ca_Buffers__SRB = rCurrentGuess[6]; - double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc = rCurrentGuess[7]; - double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm = rCurrentGuess[8]; - double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL = rCurrentGuess[9]; - double var_chaste_interface__I_Ca__f_Ca_Bj = rCurrentGuess[10]; - double var_chaste_interface__I_Ca__f_Ca_Bsl = rCurrentGuess[11]; - double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j = rCurrentGuess[12]; - double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl = rCurrentGuess[13]; - double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j = rCurrentGuess[14]; - double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl = rCurrentGuess[15]; - double var_chaste_interface__Na_Buffers__Na_Bj = rCurrentGuess[17]; - double var_chaste_interface__Na_Buffers__Na_Bsl = rCurrentGuess[18]; - double var_chaste_interface__Na_Concentrations__Na_j = rCurrentGuess[20]; - double var_chaste_interface__Na_Concentrations__Na_sl = rCurrentGuess[21]; - double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = rCurrentGuess[22]; - double var_chaste_interface__SR_Ca_Concentrations__Csqn_b = rCurrentGuess[23]; - double var_chaste_interface__SR_Fluxes__Ry_Ri = rCurrentGuess[24]; - double var_chaste_interface__SR_Fluxes__Ry_Ro = rCurrentGuess[25]; - double var_chaste_interface__SR_Fluxes__Ry_Rr = rCurrentGuess[26]; - - const double var_x0 = 34 * var_chaste_interface__Cytosolic_Ca_Buffers__CaM; - const double var_x1 = 100 * var_chaste_interface__Cytosolic_Ca_Buffers__SRB; - const double var_x2 = 32.700000000000003 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL; - const double var_x3 = 2.3700000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc; - const double var_x4 = 2.3700000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm; - const double var_x5 = 13.800000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c; - const double var_x6 = 13.800000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m; - const double var_x7 = 1 / M_PI; - const double var_x8 = 0.4794655196082917 * var_x7; - const double var_x9 = pow(var_chaste_interface__Ca_Concentrations__Ca_i, 0.78699999999999992); - const double var_x10 = pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, 1.7869999999999999); - const double var_x11 = 0.38742512113256738 * var_x10; - const double var_x12 = pow(var_chaste_interface__Ca_Concentrations__Ca_i, 1.7869999999999999); - const double var_x13 = 2814485.1633595936 * var_x12; - const double var_x14 = -31 + 0.10000000000000001 * mParameters[23]; - const double var_x15 = pow(2.6000000000000001, var_x14) * mParameters[2]; - const double var_x16 = var_x15 / (1 + var_x11 + var_x13); - const double var_x17 = var_x16 * var_x9; - const double var_x18 = var_x15 * (var_x13 - var_x11) / pow((3.5530476870814998e-7 + var_x12 + 1.3765399305573384e-7 * var_x10), 2); - const double var_x19 = var_x18 * var_x9; - const double var_x20 = 34 * var_chaste_interface__Ca_Concentrations__Ca_i; - const double var_x21 = 13.800000000000001 * var_chaste_interface__Ca_Concentrations__Ca_i; - const double var_x22 = 100 * var_chaste_interface__Ca_Concentrations__Ca_i; - const double var_x23 = 2.3700000000000001 * var_chaste_interface__Ca_Concentrations__Ca_i; - const double var_x24 = 32.700000000000003 * var_chaste_interface__Ca_Concentrations__Ca_i; - const double var_x25 = pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, 0.78699999999999992); - const double var_x26 = var_x16 * var_x25; - const double var_x27 = var_x18 * var_x25; - const double var_x28 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j; - const double var_x29 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j; - const double var_x30 = 145.53224458892851 * var_x7; - const double var_x31 = 1205.9369202226344 * mParameters[0]; - const double var_x32 = var_chaste_interface__SR_Fluxes__Ry_Ro * mParameters[1]; - const double var_x33 = 64.935064935064929 * var_x32; - const double var_x34 = 5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001); - const double var_x35 = pow(2.3500000000000001, var_x14); - const double var_x36 = 0.011844800000000001 * var_x35; - const double var_x37 = 1 / mParameters[9]; - const double var_x38 = var_x37 * mParameters[10] * mParameters[23]; - const double var_x39 = var_chaste_interface__membrane_potential__V_m / (mParameters[10] * mParameters[23]); - const double var_x40 = var_x39 * mParameters[9]; - const double var_x41 = exp(-0.72999999999999998 * var_x40); - const double var_x42 = pow(mParameters[8], 3); - const double var_x43 = var_x41 * var_x42; - const double var_x44 = pow(var_chaste_interface__Na_Concentrations__Na_j, 3); - const double var_x45 = var_x44 * mParameters[5]; - const double var_x46 = var_x42 * var_chaste_interface__Ca_Concentrations__Ca_j; - const double var_x47 = (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_j) * var_chaste_interface__Ca_Concentrations__Ca_j; - const double var_x48 = var_x42 * (1 + 0.00053869674493876331 * var_x44); - const double var_x49 = 1 / (var_x45 + var_x46 + 669921.875 * var_x47 + 1.3 * var_x44 + 0.0035899999999999999 * var_x48); - const double var_x50 = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2); - const double var_x51 = 1 + 2.2499999999999996e-8 / var_x50; - const double var_x52 = pow(1.5700000000000001, var_x14) * mParameters[20] / (1 + 0.32000000000000001 * var_x41); - const double var_x53 = var_x52 / var_x51; - const double var_x54 = var_x49 * var_x53; - const double var_x55 = var_x43 * var_x54; - const double var_x56 = -669921.875 - var_x42; - const double var_x57 = var_x56 - 373215529.24791086 * var_chaste_interface__Ca_Concentrations__Ca_j; - const double var_x58 = exp(0.27000000000000002 * var_x40); - const double var_x59 = var_x45 * var_x58 - var_x41 * var_x46; - const double var_x60 = var_x53 * var_x59 / pow((var_x47 + 1.9405247813411081e-6 * var_x44 + 5.3588338192419823e-9 * var_x48 + 1.4927113702623908e-6 * var_x45 + 1.4927113702623908e-6 * var_x46), 2); - const double var_x61 = 4.9020119168033731e-13 * var_x60; - const double var_x62 = var_x49 * var_x52 * var_x59 / (pow(var_x51, 2) * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 3)); - const double var_x63 = var_x39 * pow(mParameters[9], 2); - const double var_x64 = var_x63 * (1 - var_chaste_interface__I_Ca__f_Ca_Bj); - const double var_x65 = exp(2 * var_x40); - const double var_x66 = pow(1.8, var_x14) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f; - const double var_x67 = var_x66 * mParameters[11] / (-1 + var_x65); - const double var_x68 = var_x65 * var_x67; - const double var_x69 = var_x37 * mParameters[22]; - const double var_x70 = var_x69 * var_x7; - const double var_x71 = 88294470889864.781 * var_x70; - const double var_x72 = -0.34100000000000003 * mParameters[5]; - const double var_x73 = 0.34100000000000003 * var_x65; - const double var_x74 = var_x40 * mParameters[22]; - const double var_x75 = var_x67 * var_x7 * var_x74; - const double var_x76 = 100 * var_chaste_interface__Ca_Concentrations__Ca_j; - const double var_x77 = pow(var_chaste_interface__Na_Concentrations__Na_j, 2); - const double var_x78 = 3 * mParameters[5]; - const double var_x79 = 5.8017639429904805e-6 * var_x42; - const double var_x80 = -3.9000000000000004 * var_x77 - var_x77 * var_x78 - var_x77 * var_x79; - const double var_x81 = var_x58 * mParameters[5]; - const double var_x82 = var_x54 * var_x77 * var_x81; - const double var_x83 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl; - const double var_x84 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl; - const double var_x85 = 5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001); - const double var_x86 = 0.095835200000000009 * var_x35; - const double var_x87 = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3); - const double var_x88 = var_x87 * mParameters[5]; - const double var_x89 = var_x42 * var_chaste_interface__Ca_Concentrations__Ca_sl; - const double var_x90 = (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_sl) * var_chaste_interface__Ca_Concentrations__Ca_sl; - const double var_x91 = var_x42 * (1 + 0.00053869674493876331 * var_x87); - const double var_x92 = 1 / (var_x88 + var_x89 + 669921.875 * var_x90 + 1.3 * var_x87 + 0.0035899999999999999 * var_x91); - const double var_x93 = 1 + 2.2499999999999996e-8 / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2); - const double var_x94 = var_x52 / var_x93; - const double var_x95 = var_x92 * var_x94; - const double var_x96 = var_x43 * var_x95; - const double var_x97 = var_x56 - 373215529.24791086 * var_chaste_interface__Ca_Concentrations__Ca_sl; - const double var_x98 = var_x58 * var_x88 - var_x41 * var_x89; - const double var_x99 = var_x94 * var_x98 / pow((var_x90 + 1.9405247813411081e-6 * var_x87 + 5.3588338192419823e-9 * var_x91 + 1.4927113702623908e-6 * var_x88 + 1.4927113702623908e-6 * var_x89), 2); - const double var_x100 = 3.9661732781409103e-12 * var_x99; - const double var_x101 = var_x52 * var_x92 * var_x98 / (pow(var_x93, 2) * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 3)); - const double var_x102 = var_x63 * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl); - const double var_x103 = 2379535990481.856 * var_x70; - const double var_x104 = 100 * var_chaste_interface__Ca_Concentrations__Ca_sl; - const double var_x105 = pow(var_chaste_interface__Na_Concentrations__Na_sl, 2); - const double var_x106 = -3.9000000000000004 * var_x105 - var_x105 * var_x78 - var_x105 * var_x79; - const double var_x107 = var_x105 * var_x81 * var_x95; - const double var_x108 = -var_x21; - const double var_x109 = -var_x23; - const double var_x110 = -var_x76; - const double var_x111 = -var_x104; - const double var_x112 = 0.0001 * var_chaste_interface__Na_Concentrations__Na_j; - const double var_x113 = 0.0001 * var_chaste_interface__Na_Buffers__Na_Bj; - const double var_x114 = 0.0001 * var_chaste_interface__Na_Concentrations__Na_sl; - const double var_x115 = 0.0001 * var_chaste_interface__Na_Buffers__Na_Bsl; - const double var_x116 = var_x7 * mParameters[3]; - const double var_x117 = 0.23994508763098885 * var_x116; - const double var_x118 = 7.3530178752050587e-13 * var_x60; - const double var_x119 = var_x116 * var_x69; - const double var_x120 = -0.75 * mParameters[8]; - const double var_x121 = exp(var_x40); - const double var_x122 = 0.75 * var_x121; - const double var_x123 = var_x66 / (-1 + var_x121); - const double var_x124 = var_x116 * var_x123 * var_x74; - const double var_x125 = 3.2338732908121872 * var_x7; - const double var_x126 = var_x38 / var_chaste_interface__Na_Concentrations__Na_j; - const double var_x127 = mParameters[21] * mParameters[7] / ((1.5 + mParameters[7]) * (1 + 0.1245 * exp(-0.10000000000000001 * var_x40) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8])) * exp(-var_x40))); - const double var_x128 = pow(var_chaste_interface__I_Na__m, 3) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * mParameters[12]; - const double var_x129 = var_x121 * var_x123; - const double var_x130 = 5.9492599172113663e-12 * var_x99; - const double var_x131 = var_x38 / var_chaste_interface__Na_Concentrations__Na_sl; - const double var_x132 = 18.571428571428569 * mParameters[0]; - const double var_x133 = var_x32; - const double var_x134 = 100 * var_chaste_interface__SR_Ca_Concentrations__Csqn_b; - const double var_x135 = 100 * var_chaste_interface__SR_Ca_Concentrations__Ca_sr; - const double var_x136 = 1 / var_chaste_interface__SR_Ca_Concentrations__Ca_sr; - const double var_x137 = pow(var_x136, 2.5); - const double var_x138 = 1 + 0.13584112963311223 * var_x137; - const double var_x139 = 1 / var_x138; - const double var_x140 = 7 * var_x139; - const double var_x141 = 7.5 - var_x140; - const double var_x142 = 1 - var_chaste_interface__SR_Fluxes__Ry_Ri - var_chaste_interface__SR_Fluxes__Ry_Ro - var_chaste_interface__SR_Fluxes__Ry_Rr; - const double var_x143 = 1 / (15 - 14 * var_x139); - const double var_x144 = 20 * var_x143 * var_chaste_interface__Ca_Concentrations__Ca_j; - const double var_x145 = var_x136 * var_x137 / pow(var_x138, 2); - const double var_x146 = 2.3772197685794643 * var_x145 * var_chaste_interface__Ca_Concentrations__Ca_j; - const double var_x147 = var_x146 * var_chaste_interface__SR_Fluxes__Ry_Ro; - const double var_x148 = 0.21130842387373014 * var_x145 * var_x50 / pow((1 - 0.93333333333333335 * var_x139), 2); - const double var_x149 = 10 * var_x143 * var_x50; - const double var_x150 = -var_x149; - const double var_x151 = -7.5 + var_x140; - const double var_x152 = var_x144 * var_chaste_interface__SR_Fluxes__Ry_Rr; - const double var_x153 = var_x148 * var_chaste_interface__SR_Fluxes__Ry_Rr; - const double var_x154 = var_x151 * var_chaste_interface__Ca_Concentrations__Ca_j; - - - rJacobian[0][0] = 1.0 - (mDt * (-7.0788000000000011 + var_x0 + var_x1 + var_x2 + var_x3 + var_x4 + var_x5 + var_x6 - var_x8 + 3.4188518090540365e-8 * var_x19 - 270818.42237280885 * var_x17)); - rJacobian[0][1] = 0.0; - rJacobian[0][2] = -(mDt * (var_x8)); - rJacobian[0][3] = -(mDt * (0.23799999999999999 + var_x20)); - rJacobian[0][4] = -(mDt * (0.016159999999999997 + var_x21)); - rJacobian[0][5] = -(mDt * (0.015757 + var_x21)); - rJacobian[0][6] = -(mDt * (0.059999999999999998 + var_x22)); - rJacobian[0][7] = -(mDt * (0.003032 + var_x23)); - rJacobian[0][8] = -(mDt * (0.0063300000000000006 + var_x23)); - rJacobian[0][9] = -(mDt * (0.019599999999999999 + var_x24)); - rJacobian[0][10] = 0.0; - rJacobian[0][11] = 0.0; - rJacobian[0][12] = 0.0; - rJacobian[0][13] = 0.0; - rJacobian[0][14] = 0.0; - rJacobian[0][15] = 0.0; - rJacobian[0][16] = 0.0; - rJacobian[0][17] = 0.0; - rJacobian[0][18] = 0.0; - rJacobian[0][19] = 0.0; - rJacobian[0][20] = 0.0; - rJacobian[0][21] = 0.0; - rJacobian[0][22] = -(mDt * (0.037279237232671424 * var_x26 + 4.7061860318210743e-15 * var_x27)); - rJacobian[0][23] = 0.0; - rJacobian[0][24] = 0.0; - rJacobian[0][25] = 0.0; - rJacobian[0][26] = 0.0; - rJacobian[1][0] = 0.0; - rJacobian[1][1] = 1.0 - (mDt * (-75.37105751391465 + var_x28 + var_x29 - var_x30 - var_x31 - var_x33 - var_x71 * (0.22 * var_x55 - 9.8999999999999977e-9 * var_x62 - var_x57 * var_x61 + 3.0321500000000001e-5 * var_x38 / var_chaste_interface__Ca_Concentrations__Ca_j + 0.00029830680000000003 * var_x64 * var_x68 + var_x36 * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 0.60000000000000009) / var_x34 - var_x36 * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2.2000000000000002) / pow(var_x34, 2)))); - rJacobian[1][2] = -(mDt * (var_x30)); - rJacobian[1][3] = 0.0; - rJacobian[1][4] = 0.0; - rJacobian[1][5] = 0.0; - rJacobian[1][6] = 0.0; - rJacobian[1][7] = 0.0; - rJacobian[1][8] = 0.0; - rJacobian[1][9] = 0.0; - rJacobian[1][10] = -(mDt * (77240003134.453705 * var_x75 * (var_x72 + var_x73 * var_chaste_interface__Ca_Concentrations__Ca_j))); - rJacobian[1][11] = 0.0; - rJacobian[1][12] = -(mDt * (0.029999999999999999 + var_x76)); - rJacobian[1][13] = 0.0; - rJacobian[1][14] = -(mDt * (1.3 + var_x76)); - rJacobian[1][15] = 0.0; - rJacobian[1][16] = 0.0; - rJacobian[1][17] = 0.0; - rJacobian[1][18] = 0.0; - rJacobian[1][19] = 0.0; - rJacobian[1][20] = -(mDt * (-var_x71 * (-0.66000000000000003 * var_x82 - var_x61 * var_x80))); - rJacobian[1][21] = 0.0; - rJacobian[1][22] = -(mDt * (var_x31 + var_x33)); - rJacobian[1][23] = 0.0; - rJacobian[1][24] = 0.0; - rJacobian[1][25] = -(mDt * ((64.935064935064929 * var_chaste_interface__SR_Ca_Concentrations__Ca_sr - 64.935064935064929 * var_chaste_interface__Ca_Concentrations__Ca_j) * mParameters[1])); - rJacobian[1][26] = 0.0; - rJacobian[2][0] = -(mDt * (15.582629387269481 * var_x7)); - rJacobian[2][1] = -(mDt * (3.9220939916716238 * var_x7)); - rJacobian[2][2] = 1.0 - (mDt * (-165.10000000000002 + var_x83 + var_x84 - 19.504723378941105 * var_x7 - var_x103 * (1.78 * var_x96 - 8.0099999999999983e-8 * var_x101 - var_x100 * var_x97 + 0.00024532850000000001 * var_x38 / var_chaste_interface__Ca_Concentrations__Ca_sl + 3.3145199999999996e-5 * var_x102 * var_x68 + var_x86 * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 0.60000000000000009) / var_x85 - var_x86 * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2.2000000000000002) / pow(var_x85, 2)))); - rJacobian[2][3] = 0.0; - rJacobian[2][4] = 0.0; - rJacobian[2][5] = 0.0; - rJacobian[2][6] = 0.0; - rJacobian[2][7] = 0.0; - rJacobian[2][8] = 0.0; - rJacobian[2][9] = 0.0; - rJacobian[2][10] = 0.0; - rJacobian[2][11] = -(mDt * (231290898.27483633 * var_x75 * (var_x72 + var_x73 * var_chaste_interface__Ca_Concentrations__Ca_sl))); - rJacobian[2][12] = 0.0; - rJacobian[2][13] = -(mDt * (0.029999999999999999 + var_x104)); - rJacobian[2][14] = 0.0; - rJacobian[2][15] = -(mDt * (1.3 + var_x104)); - rJacobian[2][16] = 0.0; - rJacobian[2][17] = 0.0; - rJacobian[2][18] = 0.0; - rJacobian[2][19] = 0.0; - rJacobian[2][20] = 0.0; - rJacobian[2][21] = -(mDt * (-var_x103 * (-5.3399999999999999 * var_x107 - var_x100 * var_x106))); - rJacobian[2][22] = 0.0; - rJacobian[2][23] = 0.0; - rJacobian[2][24] = 0.0; - rJacobian[2][25] = 0.0; - rJacobian[2][26] = 0.0; - rJacobian[3][0] = -(mDt * (0.81600000000000006 - var_x0)); - rJacobian[3][1] = 0.0; - rJacobian[3][2] = 0.0; - rJacobian[3][3] = 1.0 - (mDt * (-0.23799999999999999 - var_x20)); - rJacobian[3][4] = 0.0; - rJacobian[3][5] = 0.0; - rJacobian[3][6] = 0.0; - rJacobian[3][7] = 0.0; - rJacobian[3][8] = 0.0; - rJacobian[3][9] = 0.0; - rJacobian[3][10] = 0.0; - rJacobian[3][11] = 0.0; - rJacobian[3][12] = 0.0; - rJacobian[3][13] = 0.0; - rJacobian[3][14] = 0.0; - rJacobian[3][15] = 0.0; - rJacobian[3][16] = 0.0; - rJacobian[3][17] = 0.0; - rJacobian[3][18] = 0.0; - rJacobian[3][19] = 0.0; - rJacobian[3][20] = 0.0; - rJacobian[3][21] = 0.0; - rJacobian[3][22] = 0.0; - rJacobian[3][23] = 0.0; - rJacobian[3][24] = 0.0; - rJacobian[3][25] = 0.0; - rJacobian[3][26] = 0.0; - rJacobian[4][0] = -(mDt * (1.9320000000000004 - var_x5 - var_x6)); - rJacobian[4][1] = 0.0; - rJacobian[4][2] = 0.0; - rJacobian[4][3] = 0.0; - rJacobian[4][4] = 1.0 - (mDt * (-0.00046000000000000001 + var_x108)); - rJacobian[4][5] = -(mDt * (var_x108)); - rJacobian[4][6] = 0.0; - rJacobian[4][7] = 0.0; - rJacobian[4][8] = 0.0; - rJacobian[4][9] = 0.0; - rJacobian[4][10] = 0.0; - rJacobian[4][11] = 0.0; - rJacobian[4][12] = 0.0; - rJacobian[4][13] = 0.0; - rJacobian[4][14] = 0.0; - rJacobian[4][15] = 0.0; - rJacobian[4][16] = 0.0; - rJacobian[4][17] = 0.0; - rJacobian[4][18] = 0.0; - rJacobian[4][19] = 0.0; - rJacobian[4][20] = 0.0; - rJacobian[4][21] = 0.0; - rJacobian[4][22] = 0.0; - rJacobian[4][23] = 0.0; - rJacobian[4][24] = 0.0; - rJacobian[4][25] = 0.0; - rJacobian[4][26] = 0.0; - rJacobian[5][0] = 0.0; - rJacobian[5][1] = 0.0; - rJacobian[5][2] = 0.0; - rJacobian[5][3] = 0.0; - rJacobian[5][4] = -(mDt * (-0.015699999999999999)); - rJacobian[5][5] = 1.0 - (mDt * (-0.015757)); - rJacobian[5][6] = 0.0; - rJacobian[5][7] = 0.0; - rJacobian[5][8] = 0.0; - rJacobian[5][9] = 0.0; - rJacobian[5][10] = 0.0; - rJacobian[5][11] = 0.0; - rJacobian[5][12] = 0.0; - rJacobian[5][13] = 0.0; - rJacobian[5][14] = 0.0; - rJacobian[5][15] = 0.0; - rJacobian[5][16] = 0.0; - rJacobian[5][17] = 0.0; - rJacobian[5][18] = 0.0; - rJacobian[5][19] = 0.0; - rJacobian[5][20] = 0.0; - rJacobian[5][21] = 0.0; - rJacobian[5][22] = 0.0; - rJacobian[5][23] = 0.0; - rJacobian[5][24] = 0.0; - rJacobian[5][25] = 0.0; - rJacobian[5][26] = 0.0; - rJacobian[6][0] = -(mDt * (1.71 - var_x1)); - rJacobian[6][1] = 0.0; - rJacobian[6][2] = 0.0; - rJacobian[6][3] = 0.0; - rJacobian[6][4] = 0.0; - rJacobian[6][5] = 0.0; - rJacobian[6][6] = 1.0 - (mDt * (-0.059999999999999998 - var_x22)); - rJacobian[6][7] = 0.0; - rJacobian[6][8] = 0.0; - rJacobian[6][9] = 0.0; - rJacobian[6][10] = 0.0; - rJacobian[6][11] = 0.0; - rJacobian[6][12] = 0.0; - rJacobian[6][13] = 0.0; - rJacobian[6][14] = 0.0; - rJacobian[6][15] = 0.0; - rJacobian[6][16] = 0.0; - rJacobian[6][17] = 0.0; - rJacobian[6][18] = 0.0; - rJacobian[6][19] = 0.0; - rJacobian[6][20] = 0.0; - rJacobian[6][21] = 0.0; - rJacobian[6][22] = 0.0; - rJacobian[6][23] = 0.0; - rJacobian[6][24] = 0.0; - rJacobian[6][25] = 0.0; - rJacobian[6][26] = 0.0; - rJacobian[7][0] = -(mDt * (0.33180000000000004 - var_x3 - var_x4)); - rJacobian[7][1] = 0.0; - rJacobian[7][2] = 0.0; - rJacobian[7][3] = 0.0; - rJacobian[7][4] = 0.0; - rJacobian[7][5] = 0.0; - rJacobian[7][6] = 0.0; - rJacobian[7][7] = 1.0 - (mDt * (-3.1999999999999999e-5 + var_x109)); - rJacobian[7][8] = -(mDt * (var_x109)); - rJacobian[7][9] = 0.0; - rJacobian[7][10] = 0.0; - rJacobian[7][11] = 0.0; - rJacobian[7][12] = 0.0; - rJacobian[7][13] = 0.0; - rJacobian[7][14] = 0.0; - rJacobian[7][15] = 0.0; - rJacobian[7][16] = 0.0; - rJacobian[7][17] = 0.0; - rJacobian[7][18] = 0.0; - rJacobian[7][19] = 0.0; - rJacobian[7][20] = 0.0; - rJacobian[7][21] = 0.0; - rJacobian[7][22] = 0.0; - rJacobian[7][23] = 0.0; - rJacobian[7][24] = 0.0; - rJacobian[7][25] = 0.0; - rJacobian[7][26] = 0.0; - rJacobian[8][0] = 0.0; - rJacobian[8][1] = 0.0; - rJacobian[8][2] = 0.0; - rJacobian[8][3] = 0.0; - rJacobian[8][4] = 0.0; - rJacobian[8][5] = 0.0; - rJacobian[8][6] = 0.0; - rJacobian[8][7] = -(mDt * (-0.0030000000000000001)); - rJacobian[8][8] = 1.0 - (mDt * (-0.0063300000000000006)); - rJacobian[8][9] = 0.0; - rJacobian[8][10] = 0.0; - rJacobian[8][11] = 0.0; - rJacobian[8][12] = 0.0; - rJacobian[8][13] = 0.0; - rJacobian[8][14] = 0.0; - rJacobian[8][15] = 0.0; - rJacobian[8][16] = 0.0; - rJacobian[8][17] = 0.0; - rJacobian[8][18] = 0.0; - rJacobian[8][19] = 0.0; - rJacobian[8][20] = 0.0; - rJacobian[8][21] = 0.0; - rJacobian[8][22] = 0.0; - rJacobian[8][23] = 0.0; - rJacobian[8][24] = 0.0; - rJacobian[8][25] = 0.0; - rJacobian[8][26] = 0.0; - rJacobian[9][0] = -(mDt * (2.2890000000000006 - var_x2)); - rJacobian[9][1] = 0.0; - rJacobian[9][2] = 0.0; - rJacobian[9][3] = 0.0; - rJacobian[9][4] = 0.0; - rJacobian[9][5] = 0.0; - rJacobian[9][6] = 0.0; - rJacobian[9][7] = 0.0; - rJacobian[9][8] = 0.0; - rJacobian[9][9] = 1.0 - (mDt * (-0.019599999999999999 - var_x24)); - rJacobian[9][10] = 0.0; - rJacobian[9][11] = 0.0; - rJacobian[9][12] = 0.0; - rJacobian[9][13] = 0.0; - rJacobian[9][14] = 0.0; - rJacobian[9][15] = 0.0; - rJacobian[9][16] = 0.0; - rJacobian[9][17] = 0.0; - rJacobian[9][18] = 0.0; - rJacobian[9][19] = 0.0; - rJacobian[9][20] = 0.0; - rJacobian[9][21] = 0.0; - rJacobian[9][22] = 0.0; - rJacobian[9][23] = 0.0; - rJacobian[9][24] = 0.0; - rJacobian[9][25] = 0.0; - rJacobian[9][26] = 0.0; - rJacobian[10][0] = 0.0; - rJacobian[10][1] = -(mDt * (1.7 - 1.7 * var_chaste_interface__I_Ca__f_Ca_Bj)); - rJacobian[10][2] = 0.0; - rJacobian[10][3] = 0.0; - rJacobian[10][4] = 0.0; - rJacobian[10][5] = 0.0; - rJacobian[10][6] = 0.0; - rJacobian[10][7] = 0.0; - rJacobian[10][8] = 0.0; - rJacobian[10][9] = 0.0; - rJacobian[10][10] = 1.0 - (mDt * (-0.011900000000000001 - 1.7 * var_chaste_interface__Ca_Concentrations__Ca_j)); - rJacobian[10][11] = 0.0; - rJacobian[10][12] = 0.0; - rJacobian[10][13] = 0.0; - rJacobian[10][14] = 0.0; - rJacobian[10][15] = 0.0; - rJacobian[10][16] = 0.0; - rJacobian[10][17] = 0.0; - rJacobian[10][18] = 0.0; - rJacobian[10][19] = 0.0; - rJacobian[10][20] = 0.0; - rJacobian[10][21] = 0.0; - rJacobian[10][22] = 0.0; - rJacobian[10][23] = 0.0; - rJacobian[10][24] = 0.0; - rJacobian[10][25] = 0.0; - rJacobian[10][26] = 0.0; - rJacobian[11][0] = 0.0; - rJacobian[11][1] = 0.0; - rJacobian[11][2] = -(mDt * (1.7 - 1.7 * var_chaste_interface__I_Ca__f_Ca_Bsl)); - rJacobian[11][3] = 0.0; - rJacobian[11][4] = 0.0; - rJacobian[11][5] = 0.0; - rJacobian[11][6] = 0.0; - rJacobian[11][7] = 0.0; - rJacobian[11][8] = 0.0; - rJacobian[11][9] = 0.0; - rJacobian[11][10] = 0.0; - rJacobian[11][11] = 1.0 - (mDt * (-0.011900000000000001 - 1.7 * var_chaste_interface__Ca_Concentrations__Ca_sl)); - rJacobian[11][12] = 0.0; - rJacobian[11][13] = 0.0; - rJacobian[11][14] = 0.0; - rJacobian[11][15] = 0.0; - rJacobian[11][16] = 0.0; - rJacobian[11][17] = 0.0; - rJacobian[11][18] = 0.0; - rJacobian[11][19] = 0.0; - rJacobian[11][20] = 0.0; - rJacobian[11][21] = 0.0; - rJacobian[11][22] = 0.0; - rJacobian[11][23] = 0.0; - rJacobian[11][24] = 0.0; - rJacobian[11][25] = 0.0; - rJacobian[11][26] = 0.0; - rJacobian[12][0] = 0.0; - rJacobian[12][1] = -(mDt * (19.897959183673468 - var_x28)); - rJacobian[12][2] = 0.0; - rJacobian[12][3] = 0.0; - rJacobian[12][4] = 0.0; - rJacobian[12][5] = 0.0; - rJacobian[12][6] = 0.0; - rJacobian[12][7] = 0.0; - rJacobian[12][8] = 0.0; - rJacobian[12][9] = 0.0; - rJacobian[12][10] = 0.0; - rJacobian[12][11] = 0.0; - rJacobian[12][12] = 1.0 - (mDt * (-0.029999999999999999 + var_x110)); - rJacobian[12][13] = 0.0; - rJacobian[12][14] = 0.0; - rJacobian[12][15] = 0.0; - rJacobian[12][16] = 0.0; - rJacobian[12][17] = 0.0; - rJacobian[12][18] = 0.0; - rJacobian[12][19] = 0.0; - rJacobian[12][20] = 0.0; - rJacobian[12][21] = 0.0; - rJacobian[12][22] = 0.0; - rJacobian[12][23] = 0.0; - rJacobian[12][24] = 0.0; - rJacobian[12][25] = 0.0; - rJacobian[12][26] = 0.0; - rJacobian[13][0] = 0.0; - rJacobian[13][1] = 0.0; - rJacobian[13][2] = -(mDt * (43.550000000000004 - var_x83)); - rJacobian[13][3] = 0.0; - rJacobian[13][4] = 0.0; - rJacobian[13][5] = 0.0; - rJacobian[13][6] = 0.0; - rJacobian[13][7] = 0.0; - rJacobian[13][8] = 0.0; - rJacobian[13][9] = 0.0; - rJacobian[13][10] = 0.0; - rJacobian[13][11] = 0.0; - rJacobian[13][12] = 0.0; - rJacobian[13][13] = 1.0 - (mDt * (-0.029999999999999999 + var_x111)); - rJacobian[13][14] = 0.0; - rJacobian[13][15] = 0.0; - rJacobian[13][16] = 0.0; - rJacobian[13][17] = 0.0; - rJacobian[13][18] = 0.0; - rJacobian[13][19] = 0.0; - rJacobian[13][20] = 0.0; - rJacobian[13][21] = 0.0; - rJacobian[13][22] = 0.0; - rJacobian[13][23] = 0.0; - rJacobian[13][24] = 0.0; - rJacobian[13][25] = 0.0; - rJacobian[13][26] = 0.0; - rJacobian[14][0] = 0.0; - rJacobian[14][1] = -(mDt * (55.473098330241186 - var_x29)); - rJacobian[14][2] = 0.0; - rJacobian[14][3] = 0.0; - rJacobian[14][4] = 0.0; - rJacobian[14][5] = 0.0; - rJacobian[14][6] = 0.0; - rJacobian[14][7] = 0.0; - rJacobian[14][8] = 0.0; - rJacobian[14][9] = 0.0; - rJacobian[14][10] = 0.0; - rJacobian[14][11] = 0.0; - rJacobian[14][12] = 0.0; - rJacobian[14][13] = 0.0; - rJacobian[14][14] = 1.0 - (mDt * (-1.3 + var_x110)); - rJacobian[14][15] = 0.0; - rJacobian[14][16] = 0.0; - rJacobian[14][17] = 0.0; - rJacobian[14][18] = 0.0; - rJacobian[14][19] = 0.0; - rJacobian[14][20] = 0.0; - rJacobian[14][21] = 0.0; - rJacobian[14][22] = 0.0; - rJacobian[14][23] = 0.0; - rJacobian[14][24] = 0.0; - rJacobian[14][25] = 0.0; - rJacobian[14][26] = 0.0; - rJacobian[15][0] = 0.0; - rJacobian[15][1] = 0.0; - rJacobian[15][2] = -(mDt * (121.55000000000001 - var_x84)); - rJacobian[15][3] = 0.0; - rJacobian[15][4] = 0.0; - rJacobian[15][5] = 0.0; - rJacobian[15][6] = 0.0; - rJacobian[15][7] = 0.0; - rJacobian[15][8] = 0.0; - rJacobian[15][9] = 0.0; - rJacobian[15][10] = 0.0; - rJacobian[15][11] = 0.0; - rJacobian[15][12] = 0.0; - rJacobian[15][13] = 0.0; - rJacobian[15][14] = 0.0; - rJacobian[15][15] = 1.0 - (mDt * (-1.3 + var_x111)); - rJacobian[15][16] = 0.0; - rJacobian[15][17] = 0.0; - rJacobian[15][18] = 0.0; - rJacobian[15][19] = 0.0; - rJacobian[15][20] = 0.0; - rJacobian[15][21] = 0.0; - rJacobian[15][22] = 0.0; - rJacobian[15][23] = 0.0; - rJacobian[15][24] = 0.0; - rJacobian[15][25] = 0.0; - rJacobian[15][26] = 0.0; - rJacobian[16][0] = 0.0; - rJacobian[16][1] = 0.0; - rJacobian[16][2] = 0.0; - rJacobian[16][3] = 0.0; - rJacobian[16][4] = 0.0; - rJacobian[16][5] = 0.0; - rJacobian[16][6] = 0.0; - rJacobian[16][7] = 0.0; - rJacobian[16][8] = 0.0; - rJacobian[16][9] = 0.0; - rJacobian[16][10] = 0.0; - rJacobian[16][11] = 0.0; - rJacobian[16][12] = 0.0; - rJacobian[16][13] = 0.0; - rJacobian[16][14] = 0.0; - rJacobian[16][15] = 0.0; - rJacobian[16][16] = 1.0; - rJacobian[16][17] = 0.0; - rJacobian[16][18] = 0.0; - rJacobian[16][19] = 0.0; - rJacobian[16][20] = 0.0; - rJacobian[16][21] = 0.0; - rJacobian[16][22] = 0.0; - rJacobian[16][23] = 0.0; - rJacobian[16][24] = 0.0; - rJacobian[16][25] = 0.0; - rJacobian[16][26] = 0.0; - rJacobian[17][0] = 0.0; - rJacobian[17][1] = 0.0; - rJacobian[17][2] = 0.0; - rJacobian[17][3] = 0.0; - rJacobian[17][4] = 0.0; - rJacobian[17][5] = 0.0; - rJacobian[17][6] = 0.0; - rJacobian[17][7] = 0.0; - rJacobian[17][8] = 0.0; - rJacobian[17][9] = 0.0; - rJacobian[17][10] = 0.0; - rJacobian[17][11] = 0.0; - rJacobian[17][12] = 0.0; - rJacobian[17][13] = 0.0; - rJacobian[17][14] = 0.0; - rJacobian[17][15] = 0.0; - rJacobian[17][16] = 0.0; - rJacobian[17][17] = 1.0 - (mDt * (-0.001 - var_x112)); - rJacobian[17][18] = 0.0; - rJacobian[17][19] = 0.0; - rJacobian[17][20] = -(mDt * (0.0007561 - var_x113)); - rJacobian[17][21] = 0.0; - rJacobian[17][22] = 0.0; - rJacobian[17][23] = 0.0; - rJacobian[17][24] = 0.0; - rJacobian[17][25] = 0.0; - rJacobian[17][26] = 0.0; - rJacobian[18][0] = 0.0; - rJacobian[18][1] = 0.0; - rJacobian[18][2] = 0.0; - rJacobian[18][3] = 0.0; - rJacobian[18][4] = 0.0; - rJacobian[18][5] = 0.0; - rJacobian[18][6] = 0.0; - rJacobian[18][7] = 0.0; - rJacobian[18][8] = 0.0; - rJacobian[18][9] = 0.0; - rJacobian[18][10] = 0.0; - rJacobian[18][11] = 0.0; - rJacobian[18][12] = 0.0; - rJacobian[18][13] = 0.0; - rJacobian[18][14] = 0.0; - rJacobian[18][15] = 0.0; - rJacobian[18][16] = 0.0; - rJacobian[18][17] = 0.0; - rJacobian[18][18] = 1.0 - (mDt * (-0.001 - var_x114)); - rJacobian[18][19] = 0.0; - rJacobian[18][20] = 0.0; - rJacobian[18][21] = -(mDt * (0.000165 - var_x115)); - rJacobian[18][22] = 0.0; - rJacobian[18][23] = 0.0; - rJacobian[18][24] = 0.0; - rJacobian[18][25] = 0.0; - rJacobian[18][26] = 0.0; - rJacobian[19][0] = 0.0; - rJacobian[19][1] = 0.0; - rJacobian[19][2] = 0.0; - rJacobian[19][3] = 0.0; - rJacobian[19][4] = 0.0; - rJacobian[19][5] = 0.0; - rJacobian[19][6] = 0.0; - rJacobian[19][7] = 0.0; - rJacobian[19][8] = 0.0; - rJacobian[19][9] = 0.0; - rJacobian[19][10] = 0.0; - rJacobian[19][11] = 0.0; - rJacobian[19][12] = 0.0; - rJacobian[19][13] = 0.0; - rJacobian[19][14] = 0.0; - rJacobian[19][15] = 0.0; - rJacobian[19][16] = 0.0; - rJacobian[19][17] = 0.0; - rJacobian[19][18] = 0.0; - rJacobian[19][19] = 1.0 - (mDt * (-var_x117)); - rJacobian[19][20] = 0.0; - rJacobian[19][21] = -(mDt * (var_x117)); - rJacobian[19][22] = 0.0; - rJacobian[19][23] = 0.0; - rJacobian[19][24] = 0.0; - rJacobian[19][25] = 0.0; - rJacobian[19][26] = 0.0; - rJacobian[20][0] = 0.0; - rJacobian[20][1] = -(mDt * (-176588941779729.56 * var_x119 * (1.4849999999999997e-8 * var_x62 - 0.33000000000000002 * var_x55 + var_x118 * var_x57))); - rJacobian[20][2] = 0.0; - rJacobian[20][3] = 0.0; - rJacobian[20][4] = 0.0; - rJacobian[20][5] = 0.0; - rJacobian[20][6] = 0.0; - rJacobian[20][7] = 0.0; - rJacobian[20][8] = 0.0; - rJacobian[20][9] = 0.0; - rJacobian[20][10] = -(mDt * (536388.91065592843 * var_x124 * (var_x120 + var_x122 * var_chaste_interface__Na_Concentrations__Na_j))); - rJacobian[20][11] = 0.0; - rJacobian[20][12] = 0.0; - rJacobian[20][13] = 0.0; - rJacobian[20][14] = 0.0; - rJacobian[20][15] = 0.0; - rJacobian[20][16] = 0.0; - rJacobian[20][17] = -(mDt * ((0.001 + var_x112) * mParameters[3])); - rJacobian[20][18] = 0.0; - rJacobian[20][19] = 0.0; - rJacobian[20][20] = 1.0 - (mDt * ((-0.0007561 + var_x113 - var_x125 - 176588941779729.56 * var_x70 * (0.98999999999999999 * var_x82 + 6.567e-5 * var_x126 + var_x118 * var_x80 + 0.11 * var_x126 * var_x128 + 2.2781249999999999e-9 * var_x129 * var_x64 + 9.0157776108189337e-5 * var_x127 / (pow((6.8301345536507063e-5 + pow(var_chaste_interface__Na_Concentrations__Na_j, (-4))), 2) * pow(var_chaste_interface__Na_Concentrations__Na_j, 5)))) * mParameters[3])); - rJacobian[20][21] = -(mDt * (var_x125 * mParameters[3])); - rJacobian[20][22] = 0.0; - rJacobian[20][23] = 0.0; - rJacobian[20][24] = 0.0; - rJacobian[20][25] = 0.0; - rJacobian[20][26] = 0.0; - rJacobian[21][0] = 0.0; - rJacobian[21][1] = 0.0; - rJacobian[21][2] = -(mDt * (-4759071980963.7119 * var_x119 * (1.2014999999999997e-7 * var_x101 - 2.6699999999999999 * var_x96 + var_x130 * var_x97))); - rJacobian[21][3] = 0.0; - rJacobian[21][4] = 0.0; - rJacobian[21][5] = 0.0; - rJacobian[21][6] = 0.0; - rJacobian[21][7] = 0.0; - rJacobian[21][8] = 0.0; - rJacobian[21][9] = 0.0; - rJacobian[21][10] = 0.0; - rJacobian[21][11] = -(mDt * (1606.1867935752523 * var_x124 * (var_x120 + var_x122 * var_chaste_interface__Na_Concentrations__Na_sl))); - rJacobian[21][12] = 0.0; - rJacobian[21][13] = 0.0; - rJacobian[21][14] = 0.0; - rJacobian[21][15] = 0.0; - rJacobian[21][16] = 0.0; - rJacobian[21][17] = 0.0; - rJacobian[21][18] = -(mDt * ((0.001 + var_x114) * mParameters[3])); - rJacobian[21][19] = -(mDt * (7.7982153480071377 * var_x116)); - rJacobian[21][20] = -(mDt * (0.087152885187388451 * var_x116)); - rJacobian[21][21] = 1.0 - (mDt * ((-0.000165 + var_x115 - 7.8853682331945256 * var_x7 - 4759071980963.7119 * var_x70 * (0.00053133 * var_x131 + 8.0099999999999998 * var_x107 + var_x106 * var_x130 + 2.5312499999999994e-10 * var_x102 * var_x129 + 0.89000000000000001 * var_x128 * var_x131 + 0.00072945837032989554 * var_x127 / (pow((6.8301345536507063e-5 + pow(var_chaste_interface__Na_Concentrations__Na_sl, (-4))), 2) * pow(var_chaste_interface__Na_Concentrations__Na_sl, 5)))) * mParameters[3])); - rJacobian[21][22] = 0.0; - rJacobian[21][23] = 0.0; - rJacobian[21][24] = 0.0; - rJacobian[21][25] = 0.0; - rJacobian[21][26] = 0.0; - rJacobian[22][0] = -(mDt * (5029484.9869235931 * var_x17 - 6.3492962168146398e-7 * var_x19)); - rJacobian[22][1] = -(mDt * (var_x132 + var_x133)); - rJacobian[22][2] = 0.0; - rJacobian[22][3] = 0.0; - rJacobian[22][4] = 0.0; - rJacobian[22][5] = 0.0; - rJacobian[22][6] = 0.0; - rJacobian[22][7] = 0.0; - rJacobian[22][8] = 0.0; - rJacobian[22][9] = 0.0; - rJacobian[22][10] = 0.0; - rJacobian[22][11] = 0.0; - rJacobian[22][12] = 0.0; - rJacobian[22][13] = 0.0; - rJacobian[22][14] = 0.0; - rJacobian[22][15] = 0.0; - rJacobian[22][16] = 0.0; - rJacobian[22][17] = 0.0; - rJacobian[22][18] = 0.0; - rJacobian[22][19] = 0.0; - rJacobian[22][20] = 0.0; - rJacobian[22][21] = 0.0; - rJacobian[22][22] = 1.0 - (mDt * (-260 + var_x134 - var_x132 - var_x133 - 0.69232869146389786 * var_x26 - 8.7400597733819945e-14 * var_x27)); - rJacobian[22][23] = -(mDt * (65 + var_x135)); - rJacobian[22][24] = 0.0; - rJacobian[22][25] = -(mDt * ((var_chaste_interface__Ca_Concentrations__Ca_j - var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * mParameters[1])); - rJacobian[22][26] = 0.0; - rJacobian[23][0] = 0.0; - rJacobian[23][1] = 0.0; - rJacobian[23][2] = 0.0; - rJacobian[23][3] = 0.0; - rJacobian[23][4] = 0.0; - rJacobian[23][5] = 0.0; - rJacobian[23][6] = 0.0; - rJacobian[23][7] = 0.0; - rJacobian[23][8] = 0.0; - rJacobian[23][9] = 0.0; - rJacobian[23][10] = 0.0; - rJacobian[23][11] = 0.0; - rJacobian[23][12] = 0.0; - rJacobian[23][13] = 0.0; - rJacobian[23][14] = 0.0; - rJacobian[23][15] = 0.0; - rJacobian[23][16] = 0.0; - rJacobian[23][17] = 0.0; - rJacobian[23][18] = 0.0; - rJacobian[23][19] = 0.0; - rJacobian[23][20] = 0.0; - rJacobian[23][21] = 0.0; - rJacobian[23][22] = -(mDt * (260 - var_x134)); - rJacobian[23][23] = 1.0 - (mDt * (-65 - var_x135)); - rJacobian[23][24] = 0.0; - rJacobian[23][25] = 0.0; - rJacobian[23][26] = 0.0; - rJacobian[24][0] = 0.0; - rJacobian[24][1] = -(mDt * (var_x141 * var_chaste_interface__SR_Fluxes__Ry_Ro + var_x142 * var_x144)); - rJacobian[24][2] = 0.0; - rJacobian[24][3] = 0.0; - rJacobian[24][4] = 0.0; - rJacobian[24][5] = 0.0; - rJacobian[24][6] = 0.0; - rJacobian[24][7] = 0.0; - rJacobian[24][8] = 0.0; - rJacobian[24][9] = 0.0; - rJacobian[24][10] = 0.0; - rJacobian[24][11] = 0.0; - rJacobian[24][12] = 0.0; - rJacobian[24][13] = 0.0; - rJacobian[24][14] = 0.0; - rJacobian[24][15] = 0.0; - rJacobian[24][16] = 0.0; - rJacobian[24][17] = 0.0; - rJacobian[24][18] = 0.0; - rJacobian[24][19] = 0.0; - rJacobian[24][20] = 0.0; - rJacobian[24][21] = 0.0; - rJacobian[24][22] = -(mDt * (-var_x147 + var_x142 * var_x148)); - rJacobian[24][23] = 0.0; - rJacobian[24][24] = 1.0 - (mDt * (-0.065000000000000002 + var_x150)); - rJacobian[24][25] = -(mDt * (var_x150 + var_x141 * var_chaste_interface__Ca_Concentrations__Ca_j)); - rJacobian[24][26] = -(mDt * (var_x150)); - rJacobian[25][0] = 0.0; - rJacobian[25][1] = -(mDt * (var_x152 + var_x151 * var_chaste_interface__SR_Fluxes__Ry_Ro)); - rJacobian[25][2] = 0.0; - rJacobian[25][3] = 0.0; - rJacobian[25][4] = 0.0; - rJacobian[25][5] = 0.0; - rJacobian[25][6] = 0.0; - rJacobian[25][7] = 0.0; - rJacobian[25][8] = 0.0; - rJacobian[25][9] = 0.0; - rJacobian[25][10] = 0.0; - rJacobian[25][11] = 0.0; - rJacobian[25][12] = 0.0; - rJacobian[25][13] = 0.0; - rJacobian[25][14] = 0.0; - rJacobian[25][15] = 0.0; - rJacobian[25][16] = 0.0; - rJacobian[25][17] = 0.0; - rJacobian[25][18] = 0.0; - rJacobian[25][19] = 0.0; - rJacobian[25][20] = 0.0; - rJacobian[25][21] = 0.0; - rJacobian[25][22] = -(mDt * (var_x147 + var_x153)); - rJacobian[25][23] = 0.0; - rJacobian[25][24] = -(mDt * (0.0050000000000000001)); - rJacobian[25][25] = 1.0 - (mDt * (-0.059999999999999998 + var_x154)); - rJacobian[25][26] = -(mDt * (var_x149)); - rJacobian[26][0] = 0.0; - rJacobian[26][1] = -(mDt * (-var_x152 + var_x151 * var_chaste_interface__SR_Fluxes__Ry_Rr)); - rJacobian[26][2] = 0.0; - rJacobian[26][3] = 0.0; - rJacobian[26][4] = 0.0; - rJacobian[26][5] = 0.0; - rJacobian[26][6] = 0.0; - rJacobian[26][7] = 0.0; - rJacobian[26][8] = 0.0; - rJacobian[26][9] = 0.0; - rJacobian[26][10] = 0.0; - rJacobian[26][11] = 0.0; - rJacobian[26][12] = 0.0; - rJacobian[26][13] = 0.0; - rJacobian[26][14] = 0.0; - rJacobian[26][15] = 0.0; - rJacobian[26][16] = 0.0; - rJacobian[26][17] = 0.0; - rJacobian[26][18] = 0.0; - rJacobian[26][19] = 0.0; - rJacobian[26][20] = 0.0; - rJacobian[26][21] = 0.0; - rJacobian[26][22] = -(mDt * (-var_x153 + var_x146 * var_chaste_interface__SR_Fluxes__Ry_Rr)); - rJacobian[26][23] = 0.0; - rJacobian[26][24] = -(mDt * (-0.0050000000000000001)); - rJacobian[26][25] = -(mDt * (0.055)); - rJacobian[26][26] = 1.0 - (mDt * (-0.0050000000000000001 + var_x150 + var_x154)); - } - - void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) - { - // Time units: millisecond - std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: mV; Initial value: -81.4229700631461 - double var_chaste_interface__I_Na__m = rY[2]; - // Units: dimensionless; Initial value: 0.00381858135062259 - double var_chaste_interface__I_Na__h = rY[3]; - // Units: dimensionless; Initial value: 0.625086621635645 - double var_chaste_interface__I_Na__j = rY[4]; - // Units: dimensionless; Initial value: 0.62332507235506 - double var_chaste_interface__I_Kr__x_kr = rY[5]; - // Units: dimensionless; Initial value: 0.021733554982663 - double var_chaste_interface__I_Ks__x_ks = rY[6]; - // Units: dimensionless; Initial value: 0.00428981903391989 - double var_chaste_interface__I_to__x_to_s = rY[7]; - // Units: dimensionless; Initial value: 0.000441539203559411 - double var_chaste_interface__I_to__y_to_s = rY[8]; - // Units: dimensionless; Initial value: 0.784875334693892 - double var_chaste_interface__I_to__x_to_f = rY[9]; - // Units: dimensionless; Initial value: 0.000441531250866821 - double var_chaste_interface__I_to__y_to_f = rY[10]; - // Units: dimensionless; Initial value: 0.999995817153572 - double var_chaste_interface__I_Ca__d = rY[11]; - // Units: dimensionless; Initial value: 2.93982287251302e-06 - double var_chaste_interface__I_Ca__f = rY[12]; - // Units: dimensionless; Initial value: 0.99511673495949 - double var_chaste_interface__I_Ca__f_Ca_Bj = rY[13]; - // Units: dimensionless; Initial value: 0.0246142436477748 - double var_chaste_interface__I_Ca__f_Ca_Bsl = rY[14]; - // Units: dimensionless; Initial value: 0.0152416826209301 - double var_chaste_interface__Na_Concentrations__Na_j = rY[33]; - // Units: mM; Initial value: 8.3215690202059 - double var_chaste_interface__Na_Concentrations__Na_sl = rY[34]; - // Units: mM; Initial value: 8.32094589677861 - double var_chaste_interface__Na_Concentrations__Na_i = rY[35]; - // Units: mM; Initial value: 8.32114502072456 - double var_chaste_interface__K_Concentration__K_i = rY[36]; - // Units: mM; Initial value: 120.0 - double var_chaste_interface__Ca_Concentrations__Ca_j = rY[37]; - // Units: mM; Initial value: 0.000175415190830688 - double var_chaste_interface__Ca_Concentrations__Ca_sl = rY[38]; - // Units: mM; Initial value: 0.000106544589194246 - - const double var_I_Ca__fcaCaMSL = 0; // dimensionless - const double var_I_Ca__fcaCaj = 0; // dimensionless - const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF - const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF - const double var_I_Kp__kp_kp = 1 / (1 + exp(7.4880000000000004 - 0.16722408026755853 * var_chaste_interface__membrane_potential__V_m)); // dimensionless - const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless - const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 - const double var_membrane_potential__i_Stim = var_membrane_potential__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF - const double var_parameters__Fjunc = 0.11; // dimensionless - const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless - const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless - const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * mParameters[18]; // mS_per_uF - const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless - const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF - const double var_parameters__GClB = 0.0089999999999999993; // mS_per_uF - const double var_parameters__GClCa = 0.0548125; // mS_per_uF - const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF - const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF - const double var_parameters__KdClCa = 0.10000000000000001; // mM - const double var_parameters__Kdact = 0.00014999999999999999; // mM - const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless - const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless - const double var_parameters__KmCai = 0.0035899999999999999; // mM - const double var_parameters__KmCao = 1.3; // mM - const double var_parameters__KmKo = 1.5; // mM - const double var_parameters__KmNai = 12.289999999999999; // mM - const double var_parameters__KmNaip = 11; // mM - const double var_parameters__KmNao = 87.5; // mM - const double var_parameters__KmPCa = 0.00050000000000000001; // mM - const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF - const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF - const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 - const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 - const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless - const double var_parameters__Q10CaL = 1.8; // dimensionless - const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless - const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless - const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV - const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless - const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF - const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF - const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF - const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless - const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF - const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF - const double var_parameters__eca_junc = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV - const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF - const double var_parameters__eca_sl = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV - const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF - const double var_parameters__ecl = log(mParameters[4] / mParameters[6]) / var_parameters__FoRT; // mV - const double var_I_ClCa__I_ClCa_junc = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_j); // uA_per_uF - const double var_I_ClCa__I_ClCa_sl = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_sl); // uA_per_uF - const double var_I_ClCa__I_ClCa = var_I_ClCa__I_ClCa_junc + var_I_ClCa__I_ClCa_sl; // uA_per_uF - const double var_I_ClCa__I_Clbk = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__GClB; // uA_per_uF - const double var_membrane_potential__I_Cl_tot = var_I_ClCa__I_ClCa + var_I_ClCa__I_Clbk; // uA_per_uF - const double var_parameters__ek = log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV - const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless - const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless - const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless - const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF - const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF - const double var_parameters__ena_junc = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV - const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF - const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF - const double var_parameters__ena_sl = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV - const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF - const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF - const double var_parameters__epi = 1; // dimensionless - const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * mParameters[15]) : (0.0014039999999999999 * mParameters[15])); // mS_per_uF - const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * mParameters[19]) : (0.037595999999999997 * mParameters[19])); // mS_per_uF - const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF - const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF - const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF - const double var_parameters__gkp = 0.002; // mS_per_uF - const double var_I_Kp__I_kp_junc = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fjunc * var_parameters__gkp; // uA_per_uF - const double var_I_Kp__I_kp_sl = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fsl * var_parameters__gkp; // uA_per_uF - const double var_I_Kp__I_kp = var_I_Kp__I_kp_junc + var_I_Kp__I_kp_sl; // uA_per_uF - const double var_parameters__ksat = 0.32000000000000001; // dimensionless - const double var_parameters__nu = 0.27000000000000002; // dimensionless - const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 - const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 - const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 - const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF - const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 - const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF - const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec - const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF - const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF - const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF - const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF - const double var_membrane_potential__I_Ca_tot = var_Ca_Concentrations__I_Ca_tot_junc + var_Ca_Concentrations__I_Ca_tot_sl; // uA_per_uF - const double var_parameters__pK = 1.35e-7; // cm_per_sec - const double var_I_Ca__ibark = (-0.75 * mParameters[7] + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pK / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_CaK = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * ((1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_parameters__Fjunc_CaL + (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_parameters__Fsl_CaL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibark; // uA_per_uF - const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec - const double var_I_Ca__ibarna_j = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF - const double var_I_Ca__ibarna_sl = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF - const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF - const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF - const double var_membrane_potential__I_Na_tot = var_Na_Concentrations__I_Na_tot_junc + var_Na_Concentrations__I_Na_tot_sl; // uA_per_uF - const double var_parameters__pNaK = 0.018329999999999999; // dimensionless - const double var_I_Ks__eks = log((mParameters[8] * var_parameters__pNaK + mParameters[7]) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV - const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF - const double var_K_Concentration__I_K_tot = -2 * var_I_NaK__I_nak + var_I_Ca__I_CaK + var_I_Ki__I_ki + var_I_Kp__I_kp + var_I_Kr__I_kr + var_I_Ks__I_ks + var_I_to__I_to; // uA_per_uF - const double var_membrane_potential__I_tot = var_K_Concentration__I_K_tot + var_membrane_potential__I_Ca_tot + var_membrane_potential__I_Cl_tot + var_membrane_potential__I_Na_tot; // uA_per_uF - const double d_dt_chaste_interface_var_membrane_potential__V_m = -var_membrane_potential__I_tot - var_membrane_potential__i_Stim; // mV / msec - - rY[0] += mDt*d_dt_chaste_interface_var_membrane_potential__V_m; - } - - void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) - { - // Time units: millisecond - std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: mV; Initial value: -81.4229700631461 - double var_chaste_interface__I_Na__m = rY[2]; - // Units: dimensionless; Initial value: 0.00381858135062259 - double var_chaste_interface__I_Na__h = rY[3]; - // Units: dimensionless; Initial value: 0.625086621635645 - double var_chaste_interface__I_Na__j = rY[4]; - // Units: dimensionless; Initial value: 0.62332507235506 - double var_chaste_interface__I_Kr__x_kr = rY[5]; - // Units: dimensionless; Initial value: 0.021733554982663 - double var_chaste_interface__I_Ks__x_ks = rY[6]; - // Units: dimensionless; Initial value: 0.00428981903391989 - double var_chaste_interface__I_to__x_to_s = rY[7]; - // Units: dimensionless; Initial value: 0.000441539203559411 - double var_chaste_interface__I_to__y_to_s = rY[8]; - // Units: dimensionless; Initial value: 0.784875334693892 - double var_chaste_interface__I_to__x_to_f = rY[9]; - // Units: dimensionless; Initial value: 0.000441531250866821 - double var_chaste_interface__I_to__y_to_f = rY[10]; - // Units: dimensionless; Initial value: 0.999995817153572 - double var_chaste_interface__I_Ca__d = rY[11]; - // Units: dimensionless; Initial value: 2.93982287251302e-06 - double var_chaste_interface__I_Ca__f = rY[12]; - // Units: dimensionless; Initial value: 0.99511673495949 - - const double var_I_Ca__dss = 1 / (1 + exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m)); - const double var_I_Ca__fss = 1 / (1 + exp(3.8888888888888888 + 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane_potential__V_m)); - const double var_I_Ca__taud = 28.571428571428569 * (1 - exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m)) * var_I_Ca__dss / (5 + var_chaste_interface__membrane_potential__V_m); - const double var_I_Ca__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane_potential__V_m), 2))); - const double var_I_Kr__tauxr = 230 / (1 + exp(2 + 0.050000000000000003 * var_chaste_interface__membrane_potential__V_m)) + 3300 / ((1 + exp(1.2222222222222223 + 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m)) * (1 + exp(-2.4444444444444446 - 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m))); - const double var_I_Kr__xrss = 1 / (1 + exp(-2 - 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); - const double var_I_Ks__tauxs = 990.10000000000002 / (1 + exp(-0.17252124645892353 - 0.070821529745042494 * var_chaste_interface__membrane_potential__V_m)); - const double var_I_Ks__xsss = 1 / (1 + exp(-0.26666666666666666 - 0.070175438596491224 * var_chaste_interface__membrane_potential__V_m)); - const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[14] - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); - const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * mParameters[14]) - 6.9480000000000002e-6 * exp(0.043909999999999998 * mParameters[14] - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * mParameters[14])))); - const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[14] - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * mParameters[14]) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * mParameters[14]))); - const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * mParameters[14]) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[14] - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * mParameters[14] - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[14] - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); - const double var_I_Na__hss = 0.01 * mParameters[13] + (1 - 0.01 * mParameters[13]) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * mParameters[14])), 2); - const double var_I_Na__jss = 0.01 * mParameters[13] + (1 - 0.01 * mParameters[13]) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * mParameters[14])), 2); - const double var_I_Na__mss = 1 / pow((1 + exp(-6.2967884828349945 - 0.11074197120708749 * var_chaste_interface__membrane_potential__V_m)), 2); - const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); - const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); - const double var_I_Na__taum = 0.12920000000000001 * exp(-8.682389366752302 * pow((1 + 0.021838829438742085 * var_chaste_interface__membrane_potential__V_m), 2)) + 0.064869999999999997 * exp(-0.0089012876052174655 * pow((-1 + 0.2073398299813394 * var_chaste_interface__membrane_potential__V_m), 2)); - const double var_I_to__tauxtof = 0.5 + 8.5 * exp(-0.81000000000000005 * pow((1 + 0.022222222222222223 * var_chaste_interface__membrane_potential__V_m), 2)); - const double var_I_to__tauxtos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__membrane_potential__V_m)); - const double var_I_to__tauytof = 7 + 85 * exp(-7.2727272727272725 * pow((1 + 0.025000000000000001 * var_chaste_interface__membrane_potential__V_m), 2)); - const double var_I_to__tauytos = 30 + 800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m)); - const double var_I_to__xtoss = 1 / (1 + exp(1.4615384615384615 - 0.076923076923076927 * var_chaste_interface__membrane_potential__V_m)); - const double var_I_to__ytoss = 1 / (1 + exp(3.8999999999999999 + 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); - - - rY[5] = (var_chaste_interface__I_Kr__x_kr + ((var_I_Kr__xrss / var_I_Kr__tauxr) * mDt)) / (1.0 - ((-1 / var_I_Kr__tauxr) * mDt)); - rY[6] = (var_chaste_interface__I_Ks__x_ks + ((var_I_Ks__xsss / var_I_Ks__tauxs) * mDt)) / (1.0 - ((-1 / var_I_Ks__tauxs) * mDt)); - rY[9] = (var_chaste_interface__I_to__x_to_f + ((var_I_to__xtoss / var_I_to__tauxtof) * mDt)) / (1.0 - ((-1 / var_I_to__tauxtof) * mDt)); - rY[7] = (var_chaste_interface__I_to__x_to_s + ((var_I_to__xtoss / var_I_to__tauxtos) * mDt)) / (1.0 - ((-1 / var_I_to__tauxtos) * mDt)); - rY[10] = (var_chaste_interface__I_to__y_to_f + ((var_I_to__ytoss / var_I_to__tauytof) * mDt)) / (1.0 - ((-1 / var_I_to__tauytof) * mDt)); - rY[8] = (var_chaste_interface__I_to__y_to_s + ((var_I_to__ytoss / var_I_to__tauytos) * mDt)) / (1.0 - ((-1 / var_I_to__tauytos) * mDt)); - rY[11] = (var_chaste_interface__I_Ca__d + ((var_I_Ca__dss / var_I_Ca__taud) * mDt)) / (1.0 - ((-1 / var_I_Ca__taud) * mDt)); - rY[12] = (var_chaste_interface__I_Ca__f + ((var_I_Ca__fss / var_I_Ca__tauf) * mDt)) / (1.0 - ((-1 / var_I_Ca__tauf) * mDt)); - rY[3] = (var_chaste_interface__I_Na__h + ((var_I_Na__hss / var_I_Na__tauh) * mDt)) / (1.0 - ((-1 / var_I_Na__tauh) * mDt)); - rY[4] = (var_chaste_interface__I_Na__j + ((var_I_Na__jss / var_I_Na__tauj) * mDt)) / (1.0 - ((-1 / var_I_Na__tauj) * mDt)); - rY[2] = (var_chaste_interface__I_Na__m + ((var_I_Na__mss / var_I_Na__taum) * mDt)) / (1.0 - ((-1 / var_I_Na__taum) * mDt)); - - double _guess[27] = {rY[1],rY[37],rY[38],rY[23],rY[24],rY[25],rY[26],rY[21],rY[22],rY[20],rY[13],rY[14],rY[29],rY[30],rY[27],rY[28],rY[36],rY[18],rY[19],rY[35],rY[33],rY[34],rY[32],rY[31],rY[17],rY[16],rY[15]}; - CardiacNewtonSolver<27,Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<27,Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler>::Instance(); - _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); - rY[1] = _guess[0]; - rY[37] = _guess[1]; - rY[38] = _guess[2]; - rY[23] = _guess[3]; - rY[24] = _guess[4]; - rY[25] = _guess[5]; - rY[26] = _guess[6]; - rY[21] = _guess[7]; - rY[22] = _guess[8]; - rY[20] = _guess[9]; - rY[13] = _guess[10]; - rY[14] = _guess[11]; - rY[29] = _guess[12]; - rY[30] = _guess[13]; - rY[27] = _guess[14]; - rY[28] = _guess[15]; - rY[36] = _guess[16]; - rY[18] = _guess[17]; - rY[19] = _guess[18]; - rY[35] = _guess[19]; - rY[33] = _guess[20]; - rY[34] = _guess[21]; - rY[32] = _guess[22]; - rY[31] = _guess[23]; - rY[17] = _guess[24]; - rY[16] = _guess[25]; - rY[15] = _guess[26]; - } - - std::vector Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) - { - // Inputs: - // Time units: millisecond - double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: mV; Initial value: -81.4229700631461 - double var_chaste_interface__Ca_Concentrations__Ca_i = rY[1]; - // Units: mM; Initial value: 8.72745589849657e-05 - double var_chaste_interface__I_Na__m = rY[2]; - // Units: dimensionless; Initial value: 0.00381858135062259 - double var_chaste_interface__I_Na__h = rY[3]; - // Units: dimensionless; Initial value: 0.625086621635645 - double var_chaste_interface__I_Na__j = rY[4]; - // Units: dimensionless; Initial value: 0.62332507235506 - double var_chaste_interface__I_Kr__x_kr = rY[5]; - // Units: dimensionless; Initial value: 0.021733554982663 - double var_chaste_interface__I_Ks__x_ks = rY[6]; - // Units: dimensionless; Initial value: 0.00428981903391989 - double var_chaste_interface__I_to__x_to_s = rY[7]; - // Units: dimensionless; Initial value: 0.000441539203559411 - double var_chaste_interface__I_to__y_to_s = rY[8]; - // Units: dimensionless; Initial value: 0.784875334693892 - double var_chaste_interface__I_to__x_to_f = rY[9]; - // Units: dimensionless; Initial value: 0.000441531250866821 - double var_chaste_interface__I_to__y_to_f = rY[10]; - // Units: dimensionless; Initial value: 0.999995817153572 - double var_chaste_interface__I_Ca__d = rY[11]; - // Units: dimensionless; Initial value: 2.93982287251302e-06 - double var_chaste_interface__I_Ca__f = rY[12]; - // Units: dimensionless; Initial value: 0.99511673495949 - double var_chaste_interface__I_Ca__f_Ca_Bj = rY[13]; - // Units: dimensionless; Initial value: 0.0246142436477748 - double var_chaste_interface__I_Ca__f_Ca_Bsl = rY[14]; - // Units: dimensionless; Initial value: 0.0152416826209301 - double var_chaste_interface__SR_Fluxes__Ry_Ro = rY[16]; - // Units: mM; Initial value: 7.37484660389498e-07 - double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = rY[32]; - // Units: mM; Initial value: 0.555180633859957 - double var_chaste_interface__Na_Concentrations__Na_j = rY[33]; - // Units: mM; Initial value: 8.3215690202059 - double var_chaste_interface__Na_Concentrations__Na_sl = rY[34]; - // Units: mM; Initial value: 8.32094589677861 - double var_chaste_interface__Na_Concentrations__Na_i = rY[35]; - // Units: mM; Initial value: 8.32114502072456 - double var_chaste_interface__K_Concentration__K_i = rY[36]; - // Units: mM; Initial value: 120.0 - double var_chaste_interface__Ca_Concentrations__Ca_j = rY[37]; - // Units: mM; Initial value: 0.000175415190830688 - double var_chaste_interface__Ca_Concentrations__Ca_sl = rY[38]; - // Units: mM; Initial value: 0.000106544589194246 - - // Mathematics - const double var_I_Ca__fcaCaMSL = 0; // dimensionless - const double var_I_Ca__fcaCaj = 0; // dimensionless - const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF - const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF - const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * mParameters[0]; // mM_per_msec - const double var_I_Ca__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane_potential__V_m), 2))); // msec - const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless - const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[14] - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); // dimensionless - const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * mParameters[14]) - 6.9480000000000002e-6 * exp(0.043909999999999998 * mParameters[14] - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * mParameters[14])))); // dimensionless - const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[14] - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * mParameters[14]) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * mParameters[14]))); // dimensionless - const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * mParameters[14]) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[14] - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * mParameters[14] - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[14] - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); // dimensionless - const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); // msec - const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); // msec - const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 - const double var_parameters__Cmem_converted = 1000000 * mParameters[22]; // uF - const double var_parameters__Fjunc = 0.11; // dimensionless - const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless - const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless - const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * mParameters[18]; // mS_per_uF - const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless - const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF - const double var_parameters__Kdact = 0.00014999999999999999; // mM - const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless - const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless - const double var_parameters__KmCai = 0.0035899999999999999; // mM - const double var_parameters__KmCao = 1.3; // mM - const double var_parameters__KmKo = 1.5; // mM - const double var_parameters__KmNai = 12.289999999999999; // mM - const double var_parameters__KmNaip = 11; // mM - const double var_parameters__KmNao = 87.5; // mM - const double var_parameters__KmPCa = 0.00050000000000000001; // mM - const double var_parameters__Kmf = 0.00024600000000000002; // mM - const double var_parameters__Kmr = 1.7; // mM - const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF - const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF - const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 - const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 - const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless - const double var_parameters__Q10CaL = 1.8; // dimensionless - const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless - const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless - const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless - const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV - const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless - const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF - const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF - const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF - const double var_I_NaK__I_nak_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NaK__I_nak; // uA_per_cm2 - const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless - const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF - const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF - const double var_I_PCa__I_pca = var_I_PCa__I_pca_junc + var_I_PCa__I_pca_sl; // uA_per_uF - const double var_I_PCa__I_pca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_PCa__I_pca; // uA_per_cm2 - const double var_parameters__ecl = log(mParameters[4] / mParameters[6]) / var_parameters__FoRT; // mV - const double var_parameters__ek = log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV - const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless - const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless - const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless - const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF - const double var_I_Ki__I_ki_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ki__I_ki; // uA_per_cm2 - const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF - const double var_I_Kr__I_kr_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Kr__I_kr; // uA_per_cm2 - const double var_parameters__ena_junc = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV - const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF - const double var_parameters__ena_sl = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV - const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF - const double var_I_Na__I_Na = var_I_Na__I_Na_junc + var_I_Na__I_Na_sl; // uA_per_uF - const double var_I_Na__I_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Na__I_Na; // uA_per_cm2 - const double var_parameters__epi = 1; // dimensionless - const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * mParameters[15]) : (0.0014039999999999999 * mParameters[15])); // mS_per_uF - const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * mParameters[19]) : (0.037595999999999997 * mParameters[19])); // mS_per_uF - const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF - const double var_I_to__I_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tof; // uA_per_cm2 - const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF - const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF - const double var_I_to__I_to_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_to; // uA_per_cm2 - const double var_I_to__I_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tos; // uA_per_cm2 - const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless - const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * mParameters[2] / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec - const double var_SR_Fluxes__J_SRCarel = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * mParameters[1]; // mM_per_msec - const double var_parameters__ksat = 0.32000000000000001; // dimensionless - const double var_parameters__nu = 0.27000000000000002; // dimensionless - const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 - const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 - const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 - const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF - const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 - const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF - const double var_I_NCX__I_ncx = var_I_NCX__I_ncx_junc + var_I_NCX__I_ncx_sl; // uA_per_uF - const double var_I_NCX__I_ncx_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NCX__I_ncx; // uA_per_cm2 - const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec - const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF - const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF - const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF - const double var_I_Ca__I_Ca = var_I_Ca__I_Ca_junc + var_I_Ca__I_Ca_sl; // uA_per_uF - const double var_I_Ca__I_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ca__I_Ca; // uA_per_cm2 - const double var_parameters__pNaK = 0.018329999999999999; // dimensionless - const double var_I_Ks__eks = log((mParameters[8] * var_parameters__pNaK + mParameters[7]) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV - const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF - const double var_I_Ks__I_ks_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ks__I_ks; // uA_per_cm2 - - std::vector dqs(26); - dqs[0] = var_SR_Fluxes__J_SRleak; - dqs[1] = var_SR_Fluxes__J_SRCarel; - dqs[2] = var_SR_Fluxes__J_serca; - dqs[3] = var_parameters__ecl; - dqs[4] = var_I_Ca__I_Ca_converted; - dqs[5] = var_I_Ca__tauf; - dqs[6] = var_I_PCa__I_pca_converted; - dqs[7] = var_parameters__Cmem_converted; - dqs[8] = var_I_Na__I_Na_converted; - dqs[9] = var_I_Na__tauh; - dqs[10] = var_I_Na__tauj; - dqs[11] = var_I_to__I_tof_converted; - dqs[12] = var_I_to__GtoFast; - dqs[13] = var_I_Ki__I_ki_converted; - dqs[14] = var_I_Ki__g_K1; - dqs[15] = var_I_Kr__I_kr_converted; - dqs[16] = var_I_Ks__I_ks_converted; - dqs[17] = var_I_Ks__GKs_total; - dqs[18] = var_I_to__I_tos_converted; - dqs[19] = var_I_to__GtoSlow; - dqs[20] = var_I_NCX__I_ncx_converted; - dqs[21] = var_I_NaK__I_nak_converted; - dqs[22] = var_membrane_potential__i_Stim_converted; - dqs[23] = var_I_to__I_to_converted; - dqs[24] = var_parameters__ek; - dqs[25] = var_chaste_interface__environment__time; - return dqs; - } - -template<> -void OdeSystemInformation::Initialise(void) -{ - this->mSystemName = "grandi_pasqualini_bers_2010_epi"; - this->mFreeVariableName = "time"; - this->mFreeVariableUnits = "msec"; - - // rY[0]: - this->mVariableNames.push_back("membrane_voltage"); - this->mVariableUnits.push_back("mV"); - this->mInitialConditions.push_back(-81.4229700631461); - - // rY[1]: - this->mVariableNames.push_back("cytosolic_calcium_concentration"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(8.72745589849657e-05); - - // rY[2]: - this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.00381858135062259); - - // rY[3]: - this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.625086621635645); - - // rY[4]: - this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.62332507235506); - - // rY[5]: - this->mVariableNames.push_back("I_Kr__x_kr"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.021733554982663); - - // rY[6]: - this->mVariableNames.push_back("I_Ks__x_ks"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.00428981903391989); - - // rY[7]: - this->mVariableNames.push_back("I_to__x_to_s"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.000441539203559411); - - // rY[8]: - this->mVariableNames.push_back("I_to__y_to_s"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.784875334693892); - - // rY[9]: - this->mVariableNames.push_back("I_to__x_to_f"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.000441531250866821); - - // rY[10]: - this->mVariableNames.push_back("I_to__y_to_f"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.999995817153572); - - // rY[11]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(2.93982287251302e-06); - - // rY[12]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.99511673495949); - - // rY[13]: - this->mVariableNames.push_back("I_Ca__f_Ca_Bj"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0246142436477748); - - // rY[14]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0152416826209301); - - // rY[15]: - this->mVariableNames.push_back("SR_Fluxes__Ry_Rr"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.891022230597263); - - // rY[16]: - this->mVariableNames.push_back("SR_Fluxes__Ry_Ro"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(7.37484660389498e-07); - - // rY[17]: - this->mVariableNames.push_back("SR_Fluxes__Ry_Ri"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(9.01984485847386e-08); - - // rY[18]: - this->mVariableNames.push_back("Na_Buffers__Na_Bj"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(3.43545459048316); - - // rY[19]: - this->mVariableNames.push_back("Na_Buffers__Na_Bsl"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.749601264899653); - - // rY[20]: - this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CL"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.00893708435270205); - - // rY[21]: - this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHc"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.117445983314504); - - // rY[22]: - this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHm"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.0105996734077994); - - // rY[23]: - this->mVariableNames.push_back("Cytosolic_Ca_Buffers__CaM"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.000295653619580701); - - // rY[24]: - this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_c"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.00192645052472679); - - // rY[25]: - this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_m"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.137557201546068); - - // rY[26]: - this->mVariableNames.push_back("Cytosolic_Ca_Buffers__SRB"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.00217414510791738); - - // rY[27]: - this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_j"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.00738583890572642); - - // rY[28]: - this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_sl"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.00988178900584875); - - // rY[29]: - this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_j"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.0734662466011574); - - // rY[30]: - this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_sl"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.114400081504523); - - // rY[31]: - this->mVariableNames.push_back("SR_Ca_Concentrations__Csqn_b"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(1.19772047585784); - - // rY[32]: - this->mVariableNames.push_back("JSR_calcium_concentration"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.555180633859957); - - // rY[33]: - this->mVariableNames.push_back("dyadic_space_sodium_concentration"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(8.3215690202059); - - // rY[34]: - this->mVariableNames.push_back("submembrane_space_sodium_concentration"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(8.32094589677861); - - // rY[35]: - this->mVariableNames.push_back("cytosolic_sodium_concentration"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(8.32114502072456); - - // rY[36]: - this->mVariableNames.push_back("cytosolic_potassium_concentration"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(120.0); - - // rY[37]: - this->mVariableNames.push_back("dyadic_space_calcium_concentration"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.000175415190830688); - - // rY[38]: - this->mVariableNames.push_back("submembrane_space_calcium_concentration"); - this->mVariableUnits.push_back("mM"); - this->mInitialConditions.push_back(0.000106544589194246); - - // mParameters[0]: - this->mParameterNames.push_back("SR_leak_current_max"); - this->mParameterUnits.push_back("per_msec"); - - // mParameters[1]: - this->mParameterNames.push_back("SR_release_current_max"); - this->mParameterUnits.push_back("per_msec"); - - // mParameters[2]: - this->mParameterNames.push_back("SR_uptake_current_max"); - this->mParameterUnits.push_back("mM_per_msec"); - - // mParameters[3]: - this->mParameterNames.push_back("concentration_clamp_onoff"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[4]: - this->mParameterNames.push_back("cytosolic_chloride_concentration"); - this->mParameterUnits.push_back("mM"); - - // mParameters[5]: - this->mParameterNames.push_back("extracellular_calcium_concentration"); - this->mParameterUnits.push_back("mM"); - - // mParameters[6]: - this->mParameterNames.push_back("extracellular_chloride_concentration"); - this->mParameterUnits.push_back("mM"); - - // mParameters[7]: - this->mParameterNames.push_back("extracellular_potassium_concentration"); - this->mParameterUnits.push_back("mM"); - - // mParameters[8]: - this->mParameterNames.push_back("extracellular_sodium_concentration"); - this->mParameterUnits.push_back("mM"); - - // mParameters[9]: - this->mParameterNames.push_back("faraday_constant"); - this->mParameterUnits.push_back("coulomb_per_mole"); - - // mParameters[10]: - this->mParameterNames.push_back("gas_constant"); - this->mParameterUnits.push_back("joule_per_kelvin_per_kilomole"); - - // mParameters[11]: - this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); - this->mParameterUnits.push_back("cm_per_sec"); - - // mParameters[12]: - this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); - this->mParameterUnits.push_back("mS_per_uF"); - - // mParameters[13]: - this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[14]: - this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); - this->mParameterUnits.push_back("mV"); - - // mParameters[15]: - this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance_scaling_factor"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[16]: - this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); - this->mParameterUnits.push_back("mS_per_uF"); - - // mParameters[17]: - this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("mS_per_uF"); - - // mParameters[18]: - this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[19]: - this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance_scaling_factor"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[20]: - this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); - this->mParameterUnits.push_back("uA_per_uF"); - - // mParameters[21]: - this->mParameterNames.push_back("membrane_sodium_potassium_pump_current_permeability"); - this->mParameterUnits.push_back("uA_per_uF"); - - // mParameters[22]: - this->mParameterNames.push_back("parameters__Cmem"); - this->mParameterUnits.push_back("farad"); - - // mParameters[23]: - this->mParameterNames.push_back("temperature"); - this->mParameterUnits.push_back("kelvin"); - - // Derived Quantity index [0]: - this->mDerivedQuantityNames.push_back("SR_leak_current"); - this->mDerivedQuantityUnits.push_back("mM_per_msec"); - - // Derived Quantity index [1]: - this->mDerivedQuantityNames.push_back("SR_release_current"); - this->mDerivedQuantityUnits.push_back("mM_per_msec"); - - // Derived Quantity index [2]: - this->mDerivedQuantityNames.push_back("SR_uptake_current"); - this->mDerivedQuantityUnits.push_back("mM_per_msec"); - - // Derived Quantity index [3]: - this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); - this->mDerivedQuantityUnits.push_back("mV"); - - // Derived Quantity index [4]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [5]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); - this->mDerivedQuantityUnits.push_back("msec"); - - // Derived Quantity index [6]: - this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [7]: - this->mDerivedQuantityNames.push_back("membrane_capacitance"); - this->mDerivedQuantityUnits.push_back("uF"); - - // Derived Quantity index [8]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [9]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); - this->mDerivedQuantityUnits.push_back("msec"); - - // Derived Quantity index [10]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); - this->mDerivedQuantityUnits.push_back("msec"); - - // Derived Quantity index [11]: - this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [12]: - this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current_conductance"); - this->mDerivedQuantityUnits.push_back("mS_per_uF"); - - // Derived Quantity index [13]: - this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [14]: - this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); - this->mDerivedQuantityUnits.push_back("mS_per_uF"); - - // Derived Quantity index [15]: - this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [16]: - this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [17]: - this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); - this->mDerivedQuantityUnits.push_back("mS_per_uF"); - - // Derived Quantity index [18]: - this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [19]: - this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current_conductance"); - this->mDerivedQuantityUnits.push_back("mS_per_uF"); - - // Derived Quantity index [20]: - this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [21]: - this->mDerivedQuantityNames.push_back("membrane_sodium_potassium_pump_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [22]: - this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [23]: - this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [24]: - this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); - this->mDerivedQuantityUnits.push_back("mV"); - - // Derived Quantity index [25]: - this->mDerivedQuantityNames.push_back("time"); - this->mDerivedQuantityUnits.push_back("msec"); - - this->mInitialised = true; -} - -// Serialization for Boost >= 1.36 -#include "SerializationExportWrapperForCpp.hpp" -CHASTE_CLASS_EXPORT(Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler) - diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010--sympy_1_11.cpp similarity index 88% rename from chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010--sympy_1_11.cpp index 98a9e6e4..5e19a917 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010--sympy_1_11.cpp @@ -494,154 +494,147 @@ const double var_x1 = 0.0625 + var_x0; const double var_x2 = 1 / (1 + var_x0); const double var_x3 = 0.0028985507246376812 * var_x1 * var_x2; - const double var_x4 = -var_x3 * var_chaste_interface__calcium_concentration__Cass; - const double var_x5 = -0.66666666666666663 * var_x0 * var_x2; + const double var_x4 = var_x3 * var_chaste_interface__calcium_concentration__Cass; + const double var_x5 = 0.66666666666666663 * var_x0 * var_x2; const double var_x6 = 1 + 0.0015873015873015873 * var_chaste_interface__calcium_concentration__CaJSR; const double var_x7 = pow(var_x6, (-2)); const double var_x8 = 1 / (1 + 79.365079365079367 * var_x7); const double var_x9 = var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2; - const double var_x10 = var_chaste_interface__calcium_fluxes__P_RyR * mParameters[0]; - const double var_x11 = var_x10 * var_x9; + const double var_x10 = var_x9 * mParameters[0]; + const double var_x11 = var_x10 * var_chaste_interface__calcium_fluxes__P_RyR; const double var_x12 = var_chaste_interface__environment__time < 3333330000000.0005; const double var_x13 = ((var_x12) ? (var_x11) : (10)); - const double var_x14 = -var_chaste_interface__calcium_concentration__Cass; - const double var_x15 = var_x14 + var_chaste_interface__calcium_concentration__CaJSR; - const double var_x16 = ((var_x12) ? (var_x11 * var_x15) : (10 * var_chaste_interface__calcium_concentration__CaJSR - 10 * var_chaste_interface__calcium_concentration__Cass)); - const double var_x17 = -var_chaste_interface__ryanodine_receptors__P_O1 - var_chaste_interface__ryanodine_receptors__P_O2; - const double var_x18 = ((var_x12) ? (var_x10 * var_x17) : (-10)); - const double var_x19 = ((var_x12) ? (var_x15 * var_x9 * mParameters[0]) : (0)); - const double var_x20 = ((var_x12) ? (var_x10 * var_x15) : (0)); - const double var_x21 = -var_x20 * var_x8; - const double var_x22 = ((var_x12) ? (3.0000000000000001e-5) : (0.10000000000000001)); - const double var_x23 = ((var_x12) ? (-0.029999999999999999) : (-100)); - const double var_x24 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); - const double var_x25 = 1000000 * var_x24; - const double var_x26 = 1 / (0.16974399999999998 + var_x25); - const double var_x27 = 1 - var_chaste_interface__calcium_fluxes__CaMKt; - const double var_x28 = 1 + 0.69999999999999996 / var_chaste_interface__calcium_concentration__Cass; - const double var_x29 = 1 / var_x28; - const double var_x30 = 0.050000000000000003 * var_x29; - const double var_x31 = var_x27 * var_x30 + var_chaste_interface__calcium_fluxes__CaMKt; - const double var_x32 = pow(var_x31, 2.5830000000000002); - const double var_x33 = 1 / (1.7590641847756086 + var_x32); - const double var_x34 = 1.5167893800000001 * var_x33; - const double var_x35 = 0.50590000000000002 + var_x32 * var_x34; - const double var_x36 = var_x26 * var_x35; - const double var_x37 = var_x36 * var_chaste_interface__calcium_concentration__Cai_converted; - const double var_x38 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 3); - const double var_x39 = var_x35 * var_x38 / pow((1.6974399999999999e-7 + var_x24), 2); - const double var_x40 = pow(var_x31, 1.5830000000000002); - const double var_x41 = pow(var_chaste_interface__calcium_concentration__Cass, (-2)); - const double var_x42 = var_x27 * var_x41 / pow(var_x28, 2); - const double var_x43 = pow(var_x31, 4.1660000000000004) / pow((1 + 0.56848408867329814 * var_x32), 2); - const double var_x44 = var_x26 * (-0.044315367702357472 * var_x42 * var_x43 + 0.13712534389890002 * var_x33 * var_x40 * var_x42); - const double var_x45 = 95238095.238095239 * var_x24; - const double var_x46 = 2.5830000000000002 - 0.12915000000000001 * var_x29; - const double var_x47 = var_x26 * (-0.49018713237495126 * var_x43 * var_x46 + var_x34 * var_x40 * var_x46); - const double var_x48 = 0.00059999999999999995 + var_chaste_interface__calcium_concentration__Cai_converted; - const double var_x49 = 1 + 6.5400000000000004e-5 / pow(var_x48, 2); - const double var_x50 = 1 / var_x49; - const double var_x51 = 0.001 * var_x50; - const double var_x52 = 1 / var_chaste_interface__calcium_concentration__Cai_converted; - const double var_x53 = 1 / (0.083232249999999994 + var_x25); - const double var_x54 = pow(mParameters[3], 3); - const double var_x55 = 1000 * var_x54; - const double var_x56 = -6.81472e+17 - var_x55 - 480000000000000.0 * mParameters[1]; - const double var_x57 = pow(var_chaste_interface__sodium_concentration__Nai, 3); - const double var_x58 = var_x54 * (1 + 5.7870370370370368e-13 * var_x57); - const double var_x59 = (1 + 277.77777777777777 * var_chaste_interface__calcium_concentration__Cai_converted) * mParameters[1]; - const double var_x60 = var_x57 * mParameters[1]; - const double var_x61 = exp(-0.024495140414072337 * var_chaste_interface__cell__V); - const double var_x62 = 1 / (1 + 0.27000000000000002 * var_x61); - const double var_x63 = exp(0.013189690992192795 * var_chaste_interface__cell__V); - const double var_x64 = var_x55 * var_chaste_interface__calcium_concentration__Cai_converted; - const double var_x65 = var_x62 * (var_x60 * var_x63 - var_x61 * var_x64) * mParameters[11]; - const double var_x66 = var_x65 / pow((2.0543764087152516e-15 * var_x57 + 5.282682193839219e-18 * var_x58 + 2.535687453042825e-6 * var_x59 + 1.4674117205108941e-18 * var_x60 + 1.4674117205108941e-15 * var_x54 * var_chaste_interface__calcium_concentration__Cai_converted + var_chaste_interface__calcium_concentration__Cai_converted), 2); - const double var_x67 = 1.4063880539705308e-37 * var_x66; - const double var_x68 = 1 / (var_x60 + var_x64 + 1400 * var_x57 + 1728000000000.0 * var_x59 + 3.6000000000000001 * var_x58 + 6.81472e+17 * var_chaste_interface__calcium_concentration__Cai_converted); - const double var_x69 = var_x62 * var_x68 * mParameters[11]; - const double var_x70 = var_x54 * var_x61 * var_x69; - const double var_x71 = pow(var_chaste_interface__sodium_concentration__Nai, 2); - const double var_x72 = var_x71 * mParameters[1]; - const double var_x73 = -3 * var_x72 - 4200 * var_x71 - 6.2500000000000002e-12 * var_x54 * var_x71; - const double var_x74 = var_x63 * var_x69 * var_x72; - const double var_x75 = 0.59999999999999998 + var_chaste_interface__calcium_concentration__Cass; - const double var_x76 = pow(var_x75, (-2)); - const double var_x77 = 1 / (1 + 65.399999999999991 * var_x76); - const double var_x78 = 0.075369662812530269 * var_chaste_interface__cell__V; - const double var_x79 = exp(-var_x78); - const double var_x80 = mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate / mParameters[5]; - const double var_x81 = 0.0023079445283571576 * var_x80 * var_chaste_interface__cell__V / (1 - var_x79); - const double var_x82 = var_x81 * (var_x14 + var_x79 * mParameters[1]); - const double var_x83 = fabs(var_x78) > 1.0000000000000001e-5; - const double var_x84 = exp(-1.0000000000000001e-5); - const double var_x85 = 3.062166450310111e-7 * var_x80 / (1 - var_x84); - const double var_x86 = var_x85 * (var_x14 + var_x84 * mParameters[1]); - const double var_x87 = ((var_x83) ? (-var_x82) : (-var_x86)); - const double var_x88 = 32.656617993405561 * mParameters[5]; - const double var_x89 = 3.5000000000000004 * var_x77; - const double var_x90 = ((var_x83) ? (var_x81 * var_chaste_interface__L_type_calcium_current__O) : (var_x85 * var_chaste_interface__L_type_calcium_current__O)); - const double var_x91 = var_x20 * var_x89; - const double var_x92 = 0.0025000000000000005 * var_x29; - const double var_x93 = 0.2857142857142857 * exp(-0.038580246913580245 * pow((-1 + 0.20000000000000001 * var_chaste_interface__cell__V), 2)); - const double var_x94 = -0.04926108374384236 * var_chaste_interface__cell__V; - const double var_x95 = 0.20000000000000001 * exp(0.12315270935960591 + var_x94); - const double var_x96 = -var_x95; - const double var_x97 = exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__cell__V); - const double var_x98 = 1 / (0.25 * var_x97 + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__cell__V)); - const double var_x99 = 3.802 * var_x98; - const double var_x100 = 2.0000000000000002e-5 * var_chaste_interface__cell__V; - const double var_x101 = -0.008539999999999999 - var_x100; - const double var_x102 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__cell__V) + 0.23000000000000001 * var_x97); - const double var_x103 = exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__cell__V); - const double var_x104 = 6.9999999999999997e-7 * var_x103; - const double var_x105 = exp(0.36945812807881773 + var_x94); - const double var_x106 = 0.22 * var_x105; - const double var_x107 = 3.802 / (0.20000000000000001 * var_x97 + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__cell__V)); - const double var_x108 = -var_x107; - const double var_x109 = 0.19170000000000001 * exp(-0.12315270935960591 + var_x94); - const double var_x110 = -var_x102 - var_x109; - const double var_x111 = var_x101 + var_x108; - const double var_x112 = -var_x104; - const double var_x113 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 - 0.060240963855421679 * var_chaste_interface__cell__V)); - const double var_x114 = 1.0526315789473684e-5 * var_x113; - const double var_x115 = 1.4e-8 * var_x103; - const double var_x116 = 0.001 * var_x113; - const double var_x117 = 0.008539999999999999 + var_x100; - const double var_x118 = 1.2097272727272726e-5 * var_x103 * var_x113 * var_x98 / (var_x105 * var_x117); - const double var_x119 = var_x113; - const double var_x120 = -var_chaste_interface__cell__V; - const double var_x121 = 1 / var_chaste_interface__potassium_concentration__Ki; - const double var_x122 = var_x121 * mParameters[2]; - const double var_x123 = log(var_x122); - const double var_x124 = 26.535875647668394 * var_x123; - const double var_x125 = 0.065313235986811116 * mParameters[5]; - const double var_x126 = var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8]; - const double var_x127 = 1 / (var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai); - const double var_x128 = var_x127 * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; - const double var_x129 = 1.7331439082928402 * var_x121; - const double var_x130 = exp(0.089599999999999999 * var_chaste_interface__cell__V - 2.3776144580310881 * var_x123); - const double var_x131 = 1 + var_x130; - const double var_x132 = var_x122 * mParameters[7] / (210 + mParameters[2]); - const double var_x133 = 1 / var_chaste_interface__sodium_concentration__Nai; - const double var_x134 = pow(var_x133, 2.3999999999999999); - const double var_x135 = var_x133 * var_x134 * mParameters[2] / ((1500 + mParameters[2]) * pow((7.44287265976699e-11 + var_x134), 2) * (1 + 0.1245 * exp(-0.0037684831406265135 * var_chaste_interface__cell__V) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[3])) * exp(-0.037684831406265135 * var_chaste_interface__cell__V))); - const double var_x136 = -0.022348 * exp(0.01176 * var_chaste_interface__cell__V); - const double var_x137 = 0.033500000000000002 * exp(0.0109 * var_chaste_interface__cell__V); - const double var_x138 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__cell__V); - const double var_x139 = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__cell__V); - const double var_x140 = 0.070300000000000001 * exp(0.14349999999999999 + 0.0287 * var_chaste_interface__cell__V); - const double var_x141 = pow(var_chaste_interface__calcium_concentration__Cass, 3); - const double var_x142 = 0.012149999999999999 * pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; - const double var_x143 = -0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4); - const double var_x144 = 0.0040499999999999998 * var_x141; - const double var_x145 = 4.2191641619115923e-37 * var_x66; - const double var_x146 = 1 / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki); - const double var_x147 = var_x146 * var_chaste_interface__fast_sodium_current__O_Na * mParameters[6]; + const double var_x14 = -var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR; + const double var_x15 = ((var_x12) ? (var_x11 * var_x14) : (10 * var_chaste_interface__calcium_concentration__CaJSR - 10 * var_chaste_interface__calcium_concentration__Cass)); + const double var_x16 = ((var_x12) ? (-var_x11) : (-10)); + const double var_x17 = ((var_x12) ? (var_x10 * var_x14) : (0)); + const double var_x18 = ((var_x12) ? (var_x14 * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[0]) : (0)); + const double var_x19 = -var_x18 * var_x8; + const double var_x20 = ((var_x12) ? (3.0000000000000001e-5) : (0.10000000000000001)); + const double var_x21 = ((var_x12) ? (-0.029999999999999999) : (-100)); + const double var_x22 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 3); + const double var_x23 = 1 - var_chaste_interface__calcium_fluxes__CaMKt; + const double var_x24 = 1 + 0.69999999999999996 / var_chaste_interface__calcium_concentration__Cass; + const double var_x25 = 1 / var_x24; + const double var_x26 = 0.050000000000000003 * var_x25; + const double var_x27 = var_x23 * var_x26 + var_chaste_interface__calcium_fluxes__CaMKt; + const double var_x28 = pow(var_x27, 2.5830000000000002); + const double var_x29 = 1 / (1.7590641847756086 + var_x28); + const double var_x30 = 1.5167893800000001 * var_x29; + const double var_x31 = 0.50590000000000002 + var_x28 * var_x30; + const double var_x32 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); + const double var_x33 = pow((1.6974399999999999e-7 + var_x32), (-2)); + const double var_x34 = 1000000 * var_x32; + const double var_x35 = 1 / (0.16974399999999998 + var_x34); + const double var_x36 = pow(var_x27, 1.5830000000000002); + const double var_x37 = pow(var_chaste_interface__calcium_concentration__Cass, (-2)); + const double var_x38 = var_x23 * var_x37 / pow(var_x24, 2); + const double var_x39 = pow(var_x27, 4.1660000000000004) / pow((1 + 0.56848408867329814 * var_x28), 2); + const double var_x40 = var_x35 * (-0.044315367702357472 * var_x38 * var_x39 + 0.13712534389890002 * var_x29 * var_x36 * var_x38); + const double var_x41 = 95238095.238095239 * var_x32; + const double var_x42 = 2.5830000000000002 - 0.12915000000000001 * var_x25; + const double var_x43 = var_x35 * (-0.49018713237495126 * var_x39 * var_x42 + var_x30 * var_x36 * var_x42); + const double var_x44 = 0.00059999999999999995 + var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x45 = 1 + 6.5400000000000004e-5 / pow(var_x44, 2); + const double var_x46 = 1 / var_x45; + const double var_x47 = 0.001 * var_x46; + const double var_x48 = 1 / var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x49 = 1 / (0.083232249999999994 + var_x34); + const double var_x50 = exp(-0.024495140414072337 * var_chaste_interface__cell__V); + const double var_x51 = pow(mParameters[3], 3); + const double var_x52 = 1 / (1 + 0.27000000000000002 * var_x50); + const double var_x53 = pow(var_chaste_interface__sodium_concentration__Nai, 3); + const double var_x54 = var_x53 * mParameters[1]; + const double var_x55 = (1 + 277.77777777777777 * var_chaste_interface__calcium_concentration__Cai_converted) * mParameters[1]; + const double var_x56 = var_x51 * (1 + 5.7870370370370368e-13 * var_x53); + const double var_x57 = 1000 * var_x51; + const double var_x58 = var_x57 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x59 = var_x52 * mParameters[11] / (var_x54 + var_x58 + 1400 * var_x53 + 1728000000000.0 * var_x55 + 3.6000000000000001 * var_x56 + 6.81472e+17 * var_chaste_interface__calcium_concentration__Cai_converted); + const double var_x60 = var_x50 * var_x51 * var_x59; + const double var_x61 = -6.81472e+17 - var_x57 - 480000000000000.0 * mParameters[1]; + const double var_x62 = exp(0.013189690992192795 * var_chaste_interface__cell__V); + const double var_x63 = -var_x50 * var_x58 + var_x53 * var_x62 * mParameters[1]; + const double var_x64 = var_x52 * var_x63 * mParameters[11] / pow((2.0543764087152516e-15 * var_x53 + 5.282682193839219e-18 * var_x56 + 2.535687453042825e-6 * var_x55 + 1.4674117205108941e-18 * var_x54 + 1.4674117205108941e-15 * var_x51 * var_chaste_interface__calcium_concentration__Cai_converted + var_chaste_interface__calcium_concentration__Cai_converted), 2); + const double var_x65 = 4.3065943149854847e-36 * var_x64; + const double var_x66 = 0.032656617993405558 * mParameters[5]; + const double var_x67 = var_x31 * var_x35; + const double var_x68 = pow(var_chaste_interface__sodium_concentration__Nai, 2); + const double var_x69 = var_x68 * mParameters[1]; + const double var_x70 = -3 * var_x69 - 4200 * var_x68 - 6.2500000000000002e-12 * var_x51 * var_x68; + const double var_x71 = var_x59 * var_x62 * var_x69; + const double var_x72 = 0.59999999999999998 + var_chaste_interface__calcium_concentration__Cass; + const double var_x73 = pow(var_x72, (-2)); + const double var_x74 = 1 / (1 + 65.399999999999991 * var_x73); + const double var_x75 = 0.075369662812530269 * var_chaste_interface__cell__V; + const double var_x76 = exp(-var_x75); + const double var_x77 = mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate / mParameters[5]; + const double var_x78 = 0.0023079445283571576 * var_x77 * var_chaste_interface__cell__V / (1 - var_x76); + const double var_x79 = var_x78 * (-var_chaste_interface__calcium_concentration__Cass + var_x76 * mParameters[1]); + const double var_x80 = fabs(var_x75) > 1.0000000000000001e-5; + const double var_x81 = exp(-1.0000000000000001e-5); + const double var_x82 = 3.062166450310111e-7 * var_x77 / (1 - var_x81); + const double var_x83 = var_x82 * (-var_chaste_interface__calcium_concentration__Cass + var_x81 * mParameters[1]); + const double var_x84 = ((var_x80) ? (-var_x79) : (-var_x83)); + const double var_x85 = 32.656617993405561 * mParameters[5]; + const double var_x86 = 3.5000000000000004 * var_x74; + const double var_x87 = ((var_x80) ? (var_x78 * var_chaste_interface__L_type_calcium_current__O) : (var_x82 * var_chaste_interface__L_type_calcium_current__O)); + const double var_x88 = var_x18 * var_x86; + const double var_x89 = 0.2857142857142857 * exp(-0.038580246913580245 * pow((-1 + 0.20000000000000001 * var_chaste_interface__cell__V), 2)); + const double var_x90 = 0.04926108374384236 * var_chaste_interface__cell__V; + const double var_x91 = 0.20000000000000001 * exp(0.12315270935960591 - var_x90); + const double var_x92 = exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__cell__V); + const double var_x93 = 1 / (0.25 * var_x92 + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__cell__V)); + const double var_x94 = 3.802 * var_x93; + const double var_x95 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__cell__V; + const double var_x96 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__cell__V) + 0.23000000000000001 * var_x92); + const double var_x97 = exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__cell__V); + const double var_x98 = 6.9999999999999997e-7 * var_x97; + const double var_x99 = exp(0.36945812807881773 - var_x90); + const double var_x100 = 0.22 * var_x99; + const double var_x101 = 3.802 / (0.20000000000000001 * var_x92 + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__cell__V)); + const double var_x102 = -var_x101; + const double var_x103 = 0.19170000000000001 * exp(-0.12315270935960591 - var_x90); + const double var_x104 = var_x103 + var_x96; + const double var_x105 = var_x101 + var_x95; + const double var_x106 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 - 0.060240963855421679 * var_chaste_interface__cell__V)); + const double var_x107 = 1.0526315789473684e-5 * var_x106; + const double var_x108 = 1.4e-8 * var_x97; + const double var_x109 = 0.001 * var_x106; + const double var_x110 = -var_x95; + const double var_x111 = 1.2097272727272726e-5 * var_x106 * var_x93 * var_x97 / (var_x95 * var_x99); + const double var_x112 = var_x106; + const double var_x113 = 1 / var_chaste_interface__potassium_concentration__Ki; + const double var_x114 = var_x113 * mParameters[2]; + const double var_x115 = log(var_x114); + const double var_x116 = -26.535875647668394 * var_x115 + var_chaste_interface__cell__V; + const double var_x117 = 0.065313235986811116 * mParameters[5]; + const double var_x118 = var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8]; + const double var_x119 = 1 / (var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai); + const double var_x120 = var_x119 * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; + const double var_x121 = 26.535875647668394 * var_x113; + const double var_x122 = exp(0.089599999999999999 * var_chaste_interface__cell__V - 2.3776144580310881 * var_x115); + const double var_x123 = 1 + var_x122; + const double var_x124 = 1 / (210 + mParameters[2]); + const double var_x125 = 1 / var_chaste_interface__sodium_concentration__Nai; + const double var_x126 = pow(var_x125, 2.3999999999999999); + const double var_x127 = var_x125 * var_x126 * mParameters[2] / ((1500 + mParameters[2]) * pow((7.44287265976699e-11 + var_x126), 2) * (1 + 0.1245 * exp(-0.0037684831406265135 * var_chaste_interface__cell__V) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[3])) * exp(-0.037684831406265135 * var_chaste_interface__cell__V))); + const double var_x128 = 0.022348 * exp(0.01176 * var_chaste_interface__cell__V); + const double var_x129 = -var_x128; + const double var_x130 = 0.033500000000000002 * exp(0.0109 * var_chaste_interface__cell__V); + const double var_x131 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__cell__V); + const double var_x132 = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__cell__V); + const double var_x133 = 0.070300000000000001 * exp(0.14349999999999999 + 0.0287 * var_chaste_interface__cell__V); + const double var_x134 = 0.012149999999999999 * pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; + const double var_x135 = pow(var_chaste_interface__calcium_concentration__Cass, 3); + const double var_x136 = 0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4); + const double var_x137 = 0.0040499999999999998 * var_x135; + const double var_x138 = 6.4598914724782277e-36 * var_x64; + const double var_x139 = 1 / (var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki); + const double var_x140 = var_x139 * var_chaste_interface__fast_sodium_current__O_Na * mParameters[6]; - rJacobian[0][0] = 1.0 - (mDt * (var_x4 - 0.00034782608695652176 * var_x1 / (0.0625 + 0.40000000000000002 * var_x0))); - rJacobian[0][1] = -(mDt * (var_x4)); + rJacobian[0][0] = 1.0 - (mDt * (-var_x4 - 0.00034782608695652176 * var_x1 / (0.0625 + 0.40000000000000002 * var_x0))); + rJacobian[0][1] = -(mDt * (-var_x4)); rJacobian[0][2] = 0.0; rJacobian[0][3] = 0.0; rJacobian[0][4] = 0.0; @@ -666,8 +659,8 @@ rJacobian[0][23] = 0.0; rJacobian[0][24] = 0.0; rJacobian[0][25] = 0.0; - rJacobian[1][0] = -(mDt * (var_x5)); - rJacobian[1][1] = 1.0 - (mDt * (-1.1986666666666668 + var_x5)); + rJacobian[1][0] = -(mDt * (-var_x5)); + rJacobian[1][1] = 1.0 - (mDt * (-1.1986666666666668 - var_x5)); rJacobian[1][2] = 0.0; rJacobian[1][3] = 0.0; rJacobian[1][4] = 0.0; @@ -694,12 +687,12 @@ rJacobian[1][25] = 0.0; rJacobian[2][0] = 0.0; rJacobian[2][1] = 0.0; - rJacobian[2][2] = 1.0 - (mDt * (var_x8 * (-0.050000000000000003 - var_x13) + 4.0000000000000003e-5 * (-var_x16 + 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaNSR - 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaJSR) / (pow(var_x6, 3) * pow((0.0126 + var_x7), 2)))); + rJacobian[2][2] = 1.0 - (mDt * (var_x8 * (-0.050000000000000003 - var_x13) + 4.0000000000000003e-5 * (-var_x15 + 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaNSR - 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaJSR) / (pow(var_x6, 3) * pow((0.0126 + var_x7), 2)))); rJacobian[2][3] = -(mDt * (0.050000000000000003 * var_x8)); rJacobian[2][4] = 0.0; - rJacobian[2][5] = -(mDt * (-var_x18 * var_x8)); + rJacobian[2][5] = -(mDt * (-var_x16 * var_x8)); rJacobian[2][6] = 0.0; - rJacobian[2][7] = -(mDt * (-var_x19 * var_x8)); + rJacobian[2][7] = -(mDt * (-var_x17 * var_x8)); rJacobian[2][8] = 0.0; rJacobian[2][9] = 0.0; rJacobian[2][10] = 0.0; @@ -715,16 +708,16 @@ rJacobian[2][20] = 0.0; rJacobian[2][21] = 0.0; rJacobian[2][22] = 0.0; - rJacobian[2][23] = -(mDt * (var_x21)); - rJacobian[2][24] = -(mDt * (var_x21)); + rJacobian[2][23] = -(mDt * (var_x19)); + rJacobian[2][24] = -(mDt * (var_x19)); rJacobian[2][25] = 0.0; rJacobian[3][0] = 0.0; rJacobian[3][1] = 0.0; rJacobian[3][2] = -(mDt * (0.016666666666666666)); - rJacobian[3][3] = 1.0 - (mDt * (-0.016666666666666666 - 95.238095238095241 * var_x22)); - rJacobian[3][4] = -(mDt * (190476190.47619048 * var_x37 - 95.238095238095241 * var_x23 - 190.47619047619048 * var_x39)); - rJacobian[3][5] = -(mDt * (var_x44 * var_x45)); - rJacobian[3][6] = -(mDt * (var_x45 * var_x47)); + rJacobian[3][3] = 1.0 - (mDt * (-0.016666666666666666 - 95.238095238095241 * var_x20)); + rJacobian[3][4] = -(mDt * (-95.238095238095241 * var_x21 + 190476190.47619048 * var_x31 * var_x35 * var_chaste_interface__calcium_concentration__Cai_converted - 190.47619047619048 * var_x22 * var_x31 * var_x33)); + rJacobian[3][5] = -(mDt * (var_x40 * var_x41)); + rJacobian[3][6] = -(mDt * (var_x41 * var_x43)); rJacobian[3][7] = 0.0; rJacobian[3][8] = 0.0; rJacobian[3][9] = 0.0; @@ -747,10 +740,10 @@ rJacobian[4][0] = 0.0; rJacobian[4][1] = 0.0; rJacobian[4][2] = 0.0; - rJacobian[4][3] = -(mDt * (var_x22 * var_x51)); - rJacobian[4][4] = 1.0 - (mDt * (var_x51 * (-125 + var_x23 + 2 * var_x39 - 2000000 * var_x37 + (-65.313235986811122 * var_x70 - 0.00030330018395124703 * var_x52 + var_x56 * var_x67 + 0.0062374140367404624 * var_x38 / pow((8.3232249999999994e-8 + var_x24), 2) - 6237.4140367404616 * var_x53 * var_chaste_interface__calcium_concentration__Cai_converted) * mParameters[5]) + 1.3080000000000001e-7 * (0.125 * var_chaste_interface__calcium_concentration__Cass - 125 * var_chaste_interface__calcium_concentration__Cai_converted - var_x25 * var_x36 - 0.032656617993405558 * (0.00069999999999999999 * var_chaste_interface__cell__V - 0.0092875564766839377 * log(0.001 * var_x52 * mParameters[1]) + 95500 * var_x24 * var_x53 - 2 * var_x65 * var_x68) * mParameters[5] + ((var_x12) ? (3.0000000000000001e-5 * var_chaste_interface__calcium_concentration__CaNSR - 0.029999999999999999 * var_chaste_interface__calcium_concentration__Cai_converted) : (0.10000000000000001 * var_chaste_interface__calcium_concentration__CaNSR - 100 * var_chaste_interface__calcium_concentration__Cai_converted))) / (pow(var_x48, 3) * pow(var_x49, 2)))); - rJacobian[4][5] = -(mDt * (var_x51 * (0.125 - var_x25 * var_x44))); - rJacobian[4][6] = -(mDt * (-1000 * var_x24 * var_x47 * var_x50)); + rJacobian[4][3] = -(mDt * (var_x20 * var_x47)); + rJacobian[4][4] = 1.0 - (mDt * (var_x47 * (-125 + var_x21 - var_x66 * (0.0092875564766839377 * var_x48 + 2000 * var_x60 - var_x61 * var_x65 + 191000 * var_x49 * var_chaste_interface__calcium_concentration__Cai_converted - 0.191 * var_x22 / pow((8.3232249999999994e-8 + var_x32), 2)) - 2000000 * var_x67 * var_chaste_interface__calcium_concentration__Cai_converted + 2 * var_x22 * var_x31 * var_x33) + 1.3080000000000001e-7 * (0.125 * var_chaste_interface__calcium_concentration__Cass - 125 * var_chaste_interface__calcium_concentration__Cai_converted - var_x34 * var_x67 - var_x66 * (0.00069999999999999999 * var_chaste_interface__cell__V - 0.0092875564766839377 * log(0.001 * var_x48 * mParameters[1]) + 95500 * var_x32 * var_x49 - 2 * var_x59 * var_x63) + ((var_x12) ? (3.0000000000000001e-5 * var_chaste_interface__calcium_concentration__CaNSR - 0.029999999999999999 * var_chaste_interface__calcium_concentration__Cai_converted) : (0.10000000000000001 * var_chaste_interface__calcium_concentration__CaNSR - 100 * var_chaste_interface__calcium_concentration__Cai_converted))) / (pow(var_x44, 3) * pow(var_x45, 2)))); + rJacobian[4][5] = -(mDt * (var_x47 * (0.125 - var_x34 * var_x40))); + rJacobian[4][6] = -(mDt * (-1000 * var_x32 * var_x43 * var_x46)); rJacobian[4][7] = 0.0; rJacobian[4][8] = 0.0; rJacobian[4][9] = 0.0; @@ -769,15 +762,15 @@ rJacobian[4][22] = 0.0; rJacobian[4][23] = 0.0; rJacobian[4][24] = 0.0; - rJacobian[4][25] = -(mDt * (var_x51 * (0.19593970796043336 * var_x74 + var_x67 * var_x73) * mParameters[5])); + rJacobian[4][25] = -(mDt * (-3.2656617993405561e-5 * var_x46 * (-6 * var_x71 - var_x65 * var_x70) * mParameters[5])); rJacobian[5][0] = 0.0; - rJacobian[5][1] = -(mDt * (-var_x77 * var_x87 * var_x88)); - rJacobian[5][2] = -(mDt * (var_x13 * var_x89)); + rJacobian[5][1] = -(mDt * (-var_x74 * var_x84 * var_x85)); + rJacobian[5][2] = -(mDt * (var_x13 * var_x86)); rJacobian[5][3] = 0.0; - rJacobian[5][4] = -(mDt * (125000 * var_x77)); - rJacobian[5][5] = 1.0 - (mDt * (var_x77 * (-125 + 3.5000000000000004 * var_x18 - var_x88 * var_x90) + 0.030581039755351685 * (125000 * var_chaste_interface__calcium_concentration__Cai_converted + 3.5000000000000004 * var_x16 - 125 * var_chaste_interface__calcium_concentration__Cass - var_x88 * ((var_x83) ? (-var_x82 * var_chaste_interface__L_type_calcium_current__O) : (-var_x86 * var_chaste_interface__L_type_calcium_current__O))) / (pow(var_x75, 3) * pow((0.015290519877675841 + var_x76), 2)))); + rJacobian[5][4] = -(mDt * (125000 * var_x74)); + rJacobian[5][5] = 1.0 - (mDt * (var_x74 * (-125 + 3.5000000000000004 * var_x16 - var_x85 * var_x87) + 0.030581039755351685 * (125000 * var_chaste_interface__calcium_concentration__Cai_converted + 3.5000000000000004 * var_x15 - 125 * var_chaste_interface__calcium_concentration__Cass - var_x85 * ((var_x80) ? (-var_x79 * var_chaste_interface__L_type_calcium_current__O) : (-var_x83 * var_chaste_interface__L_type_calcium_current__O))) / (pow(var_x72, 3) * pow((0.015290519877675841 + var_x73), 2)))); rJacobian[5][6] = 0.0; - rJacobian[5][7] = -(mDt * (var_x19 * var_x89)); + rJacobian[5][7] = -(mDt * (var_x17 * var_x86)); rJacobian[5][8] = 0.0; rJacobian[5][9] = 0.0; rJacobian[5][10] = 0.0; @@ -793,16 +786,16 @@ rJacobian[5][20] = 0.0; rJacobian[5][21] = 0.0; rJacobian[5][22] = 0.0; - rJacobian[5][23] = -(mDt * (var_x91)); - rJacobian[5][24] = -(mDt * (var_x91)); + rJacobian[5][23] = -(mDt * (var_x88)); + rJacobian[5][24] = -(mDt * (var_x88)); rJacobian[5][25] = 0.0; rJacobian[6][0] = 0.0; rJacobian[6][1] = 0.0; rJacobian[6][2] = 0.0; rJacobian[6][3] = 0.0; rJacobian[6][4] = 0.0; - rJacobian[6][5] = -(mDt * (0.00175 * var_x31 * var_x42 + 8.7500000000000013e-5 * var_x41 * pow(var_x27, 2) / pow(var_x28, 3))); - rJacobian[6][6] = 1.0 - (mDt * (-0.00020000000000000001 - var_x31 * var_x92 + var_x27 * var_x92 * (1 - var_x30))); + rJacobian[6][5] = -(mDt * (0.00175 * var_x27 * var_x38 + 8.7500000000000013e-5 * var_x37 * pow(var_x23, 2) / pow(var_x24, 3))); + rJacobian[6][6] = 1.0 - (mDt * (-0.00020000000000000001 - 0.0025000000000000005 * var_x25 * var_x27 + 0.0025000000000000005 * var_x23 * var_x25 * (1 - var_x26))); rJacobian[6][7] = 0.0; rJacobian[6][8] = 0.0; rJacobian[6][9] = 0.0; @@ -823,11 +816,11 @@ rJacobian[6][24] = 0.0; rJacobian[6][25] = 0.0; rJacobian[7][0] = 0.0; - rJacobian[7][1] = -(mDt * (-var_x87 * var_x93)); + rJacobian[7][1] = -(mDt * (-var_x84 * var_x89)); rJacobian[7][2] = 0.0; rJacobian[7][3] = 0.0; rJacobian[7][4] = 0.0; - rJacobian[7][5] = -(mDt * (-var_x90 * var_x93)); + rJacobian[7][5] = -(mDt * (-var_x87 * var_x89)); rJacobian[7][6] = 0.0; rJacobian[7][7] = 1.0 - (mDt * (-0.01)); rJacobian[7][8] = 0.0; @@ -856,14 +849,14 @@ rJacobian[8][5] = 0.0; rJacobian[8][6] = 0.0; rJacobian[8][7] = 0.0; - rJacobian[8][8] = 1.0 - (mDt * (var_x101 + var_x96 - var_x99)); - rJacobian[8][9] = -(mDt * (var_x102)); + rJacobian[8][8] = 1.0 - (mDt * (-var_x91 - var_x94 - var_x95)); + rJacobian[8][9] = -(mDt * (var_x96)); rJacobian[8][10] = 0.0; rJacobian[8][11] = 0.0; rJacobian[8][12] = 0.0; rJacobian[8][13] = 0.0; - rJacobian[8][14] = -(mDt * (var_x104)); - rJacobian[8][15] = -(mDt * (var_x106)); + rJacobian[8][14] = -(mDt * (var_x98)); + rJacobian[8][15] = -(mDt * (var_x100)); rJacobian[8][16] = 0.0; rJacobian[8][17] = 0.0; rJacobian[8][18] = 0.0; @@ -882,14 +875,14 @@ rJacobian[9][5] = 0.0; rJacobian[9][6] = 0.0; rJacobian[9][7] = 0.0; - rJacobian[9][8] = -(mDt * (var_x108 + var_x95)); - rJacobian[9][9] = 1.0 - (mDt * (var_x110 + var_x111)); - rJacobian[9][10] = -(mDt * (var_x108)); - rJacobian[9][11] = -(mDt * (var_x108)); - rJacobian[9][12] = -(mDt * (var_x104 + var_x108)); - rJacobian[9][13] = -(mDt * (var_x108)); - rJacobian[9][14] = -(mDt * (var_x108)); - rJacobian[9][15] = -(mDt * (var_x108)); + rJacobian[9][8] = -(mDt * (var_x102 + var_x91)); + rJacobian[9][9] = 1.0 - (mDt * (-var_x104 - var_x105)); + rJacobian[9][10] = -(mDt * (var_x102)); + rJacobian[9][11] = -(mDt * (var_x102)); + rJacobian[9][12] = -(mDt * (var_x102 + var_x98)); + rJacobian[9][13] = -(mDt * (var_x102)); + rJacobian[9][14] = -(mDt * (var_x102)); + rJacobian[9][15] = -(mDt * (var_x102)); rJacobian[9][16] = 0.0; rJacobian[9][17] = 0.0; rJacobian[9][18] = 0.0; @@ -910,11 +903,11 @@ rJacobian[10][7] = 0.0; rJacobian[10][8] = 0.0; rJacobian[10][9] = 0.0; - rJacobian[10][10] = 1.0 - (mDt * (var_x112 - var_x114)); - rJacobian[10][11] = -(mDt * (var_x115)); + rJacobian[10][10] = 1.0 - (mDt * (-var_x107 - var_x98)); + rJacobian[10][11] = -(mDt * (var_x108)); rJacobian[10][12] = 0.0; rJacobian[10][13] = 0.0; - rJacobian[10][14] = -(mDt * (var_x116)); + rJacobian[10][14] = -(mDt * (var_x109)); rJacobian[10][15] = 0.0; rJacobian[10][16] = 0.0; rJacobian[10][17] = 0.0; @@ -936,8 +929,8 @@ rJacobian[11][7] = 0.0; rJacobian[11][8] = 0.0; rJacobian[11][9] = 0.0; - rJacobian[11][10] = -(mDt * (var_x114)); - rJacobian[11][11] = 1.0 - (mDt * (-var_x115)); + rJacobian[11][10] = -(mDt * (var_x107)); + rJacobian[11][11] = 1.0 - (mDt * (-var_x108)); rJacobian[11][12] = 0.0; rJacobian[11][13] = 0.0; rJacobian[11][14] = 0.0; @@ -961,12 +954,12 @@ rJacobian[12][6] = 0.0; rJacobian[12][7] = 0.0; rJacobian[12][8] = 0.0; - rJacobian[12][9] = -(mDt * (var_x117)); + rJacobian[12][9] = -(mDt * (var_x95)); rJacobian[12][10] = 0.0; rJacobian[12][11] = 0.0; - rJacobian[12][12] = 1.0 - (mDt * (var_x110 + var_x112)); - rJacobian[12][13] = -(mDt * (var_x107)); - rJacobian[12][14] = -(mDt * (var_x95)); + rJacobian[12][12] = 1.0 - (mDt * (-var_x104 - var_x98)); + rJacobian[12][13] = -(mDt * (var_x101)); + rJacobian[12][14] = -(mDt * (var_x91)); rJacobian[12][15] = 0.0; rJacobian[12][16] = 0.0; rJacobian[12][17] = 0.0; @@ -986,14 +979,14 @@ rJacobian[13][5] = 0.0; rJacobian[13][6] = 0.0; rJacobian[13][7] = 0.0; - rJacobian[13][8] = -(mDt * (var_x101)); - rJacobian[13][9] = -(mDt * (var_x101)); - rJacobian[13][10] = -(mDt * (var_x101)); - rJacobian[13][11] = -(mDt * (var_x101)); - rJacobian[13][12] = -(mDt * (var_x101 + var_x109)); - rJacobian[13][13] = 1.0 - (mDt * (var_x111 + var_x112)); - rJacobian[13][14] = -(mDt * (var_x101)); - rJacobian[13][15] = -(mDt * (var_x101)); + rJacobian[13][8] = -(mDt * (var_x110)); + rJacobian[13][9] = -(mDt * (var_x110)); + rJacobian[13][10] = -(mDt * (var_x110)); + rJacobian[13][11] = -(mDt * (var_x110)); + rJacobian[13][12] = -(mDt * (var_x103 - var_x95)); + rJacobian[13][13] = 1.0 - (mDt * (-var_x105 - var_x98)); + rJacobian[13][14] = -(mDt * (var_x110)); + rJacobian[13][15] = -(mDt * (var_x110)); rJacobian[13][16] = 0.0; rJacobian[13][17] = 0.0; rJacobian[13][18] = 0.0; @@ -1012,14 +1005,14 @@ rJacobian[14][5] = 0.0; rJacobian[14][6] = 0.0; rJacobian[14][7] = 0.0; - rJacobian[14][8] = -(mDt * (var_x117)); + rJacobian[14][8] = -(mDt * (var_x95)); rJacobian[14][9] = 0.0; - rJacobian[14][10] = -(mDt * (var_x104)); + rJacobian[14][10] = -(mDt * (var_x98)); rJacobian[14][11] = 0.0; - rJacobian[14][12] = -(mDt * (var_x102)); + rJacobian[14][12] = -(mDt * (var_x96)); rJacobian[14][13] = 0.0; - rJacobian[14][14] = 1.0 - (mDt * (var_x112 + var_x96 - var_x116 - var_x118)); - rJacobian[14][15] = -(mDt * (var_x119)); + rJacobian[14][14] = 1.0 - (mDt * (-var_x109 - var_x111 - var_x91 - var_x98)); + rJacobian[14][15] = -(mDt * (var_x112)); rJacobian[14][16] = 0.0; rJacobian[14][17] = 0.0; rJacobian[14][18] = 0.0; @@ -1038,14 +1031,14 @@ rJacobian[15][5] = 0.0; rJacobian[15][6] = 0.0; rJacobian[15][7] = 0.0; - rJacobian[15][8] = -(mDt * (var_x99)); + rJacobian[15][8] = -(mDt * (var_x94)); rJacobian[15][9] = 0.0; rJacobian[15][10] = 0.0; rJacobian[15][11] = 0.0; rJacobian[15][12] = 0.0; rJacobian[15][13] = 0.0; - rJacobian[15][14] = -(mDt * (var_x118)); - rJacobian[15][15] = 1.0 - (mDt * (-var_x106 - var_x119)); + rJacobian[15][14] = -(mDt * (var_x111)); + rJacobian[15][15] = 1.0 - (mDt * (-var_x100 - var_x112)); rJacobian[15][16] = 0.0; rJacobian[15][17] = 0.0; rJacobian[15][18] = 0.0; @@ -1098,16 +1091,16 @@ rJacobian[17][13] = 0.0; rJacobian[17][14] = 0.0; rJacobian[17][15] = 0.0; - rJacobian[17][16] = -(mDt * (var_x125 * var_x126 * (var_x120 + var_x124))); - rJacobian[17][17] = 1.0 - (mDt * ((-1.7331439082928402 * var_x128 - 1.7331439082928402 * var_x132 / var_x131 - var_x126 * var_x129 * var_chaste_interface__non_inactivating_steady_state_K_I__iKss - var_x129 * pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * mParameters[10] - 0.43328597707321004 * var_x121 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur - 0.92671204776418159 * var_x121 * pow(var_chaste_interface__fast_transient_outward_K_I__ato_f, 3) * var_chaste_interface__fast_transient_outward_K_I__ito_f + 0.15528969418303848 * var_x130 * var_x132 * (-var_x124 + var_chaste_interface__cell__V) / pow(var_x131, 2)) * mParameters[5])); + rJacobian[17][16] = -(mDt * (-var_x116 * var_x117 * var_x118)); + rJacobian[17][17] = 1.0 - (mDt * (var_x117 * (-26.535875647668394 * var_x120 - var_x118 * var_x121 * var_chaste_interface__non_inactivating_steady_state_K_I__iKss - var_x121 * pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * mParameters[10] - 14.188732708808288 * var_x113 * pow(var_chaste_interface__fast_transient_outward_K_I__ato_f, 3) * var_chaste_interface__fast_transient_outward_K_I__ito_f - 6.6339689119170986 * var_x113 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur - 26.535875647668394 * var_x114 * var_x124 * mParameters[7] / var_x123 + 2.3776144580310881 * var_x113 * var_x116 * var_x122 * var_x124 * mParameters[2] * mParameters[7] / pow(var_x123, 2)))); rJacobian[17][18] = 0.0; rJacobian[17][19] = 0.0; rJacobian[17][20] = 0.0; - rJacobian[17][21] = -(mDt * (var_x125 * (var_x120 + 26.535875647668394 * log(var_x127 * (mParameters[2] + 0.020408163265306124 * mParameters[3]))) * mParameters[9])); + rJacobian[17][21] = -(mDt * (-var_x117 * (-26.535875647668394 * log(var_x119 * (mParameters[2] + 0.020408163265306124 * mParameters[3])) + var_chaste_interface__cell__V) * mParameters[9])); rJacobian[17][22] = 0.0; rJacobian[17][23] = 0.0; rJacobian[17][24] = 0.0; - rJacobian[17][25] = -(mDt * ((5.8007500451501034e-11 * var_x135 - 0.035370283842711021 * var_x128) * mParameters[5])); + rJacobian[17][25] = -(mDt * (var_x117 * (8.8814310874467535e-10 * var_x127 - 0.54154848260547739 * var_x120))); rJacobian[18][0] = 0.0; rJacobian[18][1] = 0.0; rJacobian[18][2] = 0.0; @@ -1126,10 +1119,10 @@ rJacobian[18][15] = 0.0; rJacobian[18][16] = 0.0; rJacobian[18][17] = 0.0; - rJacobian[18][18] = 1.0 - (mDt * (-0.023761000000000001 + var_x136 - 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__cell__V))); - rJacobian[18][19] = -(mDt * (0.036777999999999998 + var_x136)); - rJacobian[18][20] = -(mDt * (var_x136)); - rJacobian[18][21] = -(mDt * (var_x136)); + rJacobian[18][18] = 1.0 - (mDt * (-0.023761000000000001 - var_x128 - 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__cell__V))); + rJacobian[18][19] = -(mDt * (0.036777999999999998 - var_x128)); + rJacobian[18][20] = -(mDt * (var_x129)); + rJacobian[18][21] = -(mDt * (var_x129)); rJacobian[18][22] = 0.0; rJacobian[18][23] = 0.0; rJacobian[18][24] = 0.0; @@ -1153,9 +1146,9 @@ rJacobian[19][16] = 0.0; rJacobian[19][17] = 0.0; rJacobian[19][18] = -(mDt * (0.023761000000000001)); - rJacobian[19][19] = 1.0 - (mDt * (-0.036777999999999998 - var_x137)); + rJacobian[19][19] = 1.0 - (mDt * (-0.036777999999999998 - var_x130)); rJacobian[19][20] = 0.0; - rJacobian[19][21] = -(mDt * (var_x138)); + rJacobian[19][21] = -(mDt * (var_x131)); rJacobian[19][22] = 0.0; rJacobian[19][23] = 0.0; rJacobian[19][24] = 0.0; @@ -1180,8 +1173,8 @@ rJacobian[20][17] = 0.0; rJacobian[20][18] = 0.0; rJacobian[20][19] = 0.0; - rJacobian[20][20] = 1.0 - (mDt * (-var_x139)); - rJacobian[20][21] = -(mDt * (var_x140)); + rJacobian[20][20] = 1.0 - (mDt * (-var_x132)); + rJacobian[20][21] = -(mDt * (var_x133)); rJacobian[20][22] = 0.0; rJacobian[20][23] = 0.0; rJacobian[20][24] = 0.0; @@ -1205,9 +1198,9 @@ rJacobian[21][16] = 0.0; rJacobian[21][17] = 0.0; rJacobian[21][18] = 0.0; - rJacobian[21][19] = -(mDt * (var_x137)); - rJacobian[21][20] = -(mDt * (var_x139)); - rJacobian[21][21] = 1.0 - (mDt * (-var_x138 - var_x140)); + rJacobian[21][19] = -(mDt * (var_x130)); + rJacobian[21][20] = -(mDt * (var_x132)); + rJacobian[21][21] = 1.0 - (mDt * (-var_x131 - var_x133)); rJacobian[21][22] = 0.0; rJacobian[21][23] = 0.0; rJacobian[21][24] = 0.0; @@ -1243,7 +1236,7 @@ rJacobian[23][2] = 0.0; rJacobian[23][3] = 0.0; rJacobian[23][4] = 0.0; - rJacobian[23][5] = -(mDt * (-var_x142 + 0.024299999999999999 * var_x141 * (1 + var_x17 - var_chaste_interface__ryanodine_receptors__P_C2))); + rJacobian[23][5] = -(mDt * (-var_x134 + 0.024299999999999999 * var_x135 * (1 - var_x9 - var_chaste_interface__ryanodine_receptors__P_C2))); rJacobian[23][6] = 0.0; rJacobian[23][7] = 0.0; rJacobian[23][8] = 0.0; @@ -1260,16 +1253,16 @@ rJacobian[23][19] = 0.0; rJacobian[23][20] = 0.0; rJacobian[23][21] = 0.0; - rJacobian[23][22] = -(mDt * (0.00080000000000000004 + var_x143)); - rJacobian[23][23] = 1.0 - (mDt * (-0.080249999999999988 + var_x143 - var_x144)); - rJacobian[23][24] = -(mDt * (0.96499999999999997 + var_x143)); + rJacobian[23][22] = -(mDt * (0.00080000000000000004 - var_x136)); + rJacobian[23][23] = 1.0 - (mDt * (-0.080249999999999988 - var_x136 - var_x137)); + rJacobian[23][24] = -(mDt * (0.96499999999999997 - var_x136)); rJacobian[23][25] = 0.0; rJacobian[24][0] = 0.0; rJacobian[24][1] = 0.0; rJacobian[24][2] = 0.0; rJacobian[24][3] = 0.0; rJacobian[24][4] = 0.0; - rJacobian[24][5] = -(mDt * (var_x142)); + rJacobian[24][5] = -(mDt * (var_x134)); rJacobian[24][6] = 0.0; rJacobian[24][7] = 0.0; rJacobian[24][8] = 0.0; @@ -1287,14 +1280,14 @@ rJacobian[24][20] = 0.0; rJacobian[24][21] = 0.0; rJacobian[24][22] = 0.0; - rJacobian[24][23] = -(mDt * (var_x144)); + rJacobian[24][23] = -(mDt * (var_x137)); rJacobian[24][24] = 1.0 - (mDt * (-0.96499999999999997)); rJacobian[24][25] = 0.0; rJacobian[25][0] = 0.0; rJacobian[25][1] = 0.0; rJacobian[25][2] = 0.0; rJacobian[25][3] = 0.0; - rJacobian[25][4] = -(mDt * ((195.93970796043337 * var_x70 - var_x145 * var_x56) * mParameters[5])); + rJacobian[25][4] = -(mDt * (var_x117 * (3000 * var_x60 - var_x138 * var_x61))); rJacobian[25][5] = 0.0; rJacobian[25][6] = 0.0; rJacobian[25][7] = 0.0; @@ -1305,9 +1298,9 @@ rJacobian[25][12] = 0.0; rJacobian[25][13] = 0.0; rJacobian[25][14] = 0.0; - rJacobian[25][15] = -(mDt * (var_x125 * (var_x120 + 26.535875647668394 * log(var_x146 * (mParameters[3] + 0.1111111111111111 * mParameters[2]))) * mParameters[6])); + rJacobian[25][15] = -(mDt * (-var_x117 * (-26.535875647668394 * log(var_x139 * (mParameters[3] + 0.1111111111111111 * mParameters[2])) + var_chaste_interface__cell__V) * mParameters[6])); rJacobian[25][16] = 0.0; - rJacobian[25][17] = -(mDt * ((-0.0005006860179512649 * var_x146 - 0.19257154536587112 * var_x147) * mParameters[5])); + rJacobian[25][17] = -(mDt * (var_x117 * (-2.9484306275187104 * var_x140 - 0.0076659196315486469 * var_x139))); rJacobian[25][18] = 0.0; rJacobian[25][19] = 0.0; rJacobian[25][20] = 0.0; @@ -1315,7 +1308,7 @@ rJacobian[25][22] = 0.0; rJacobian[25][23] = 0.0; rJacobian[25][24] = 0.0; - rJacobian[25][25] = 1.0 - (mDt * ((-1.7331439082928402 * var_x147 - 0.004506174161561384 * var_x146 - 0.58781912388130009 * var_x74 - 8.7011250677251544e-11 * var_x135 - var_x145 * var_x73) * mParameters[5])); + rJacobian[25][25] = 1.0 - (mDt * (var_x117 * (-9 * var_x71 - 0.068993276683937815 * var_x139 - 1.332214663117013e-9 * var_x127 - 26.535875647668394 * var_x140 - var_x138 * var_x70))); } void Cellli_mouse_2010FromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010--sympy_1_13.cpp new file mode 100644 index 00000000..3ce708ed --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010--sympy_1_13.cpp @@ -0,0 +1,1873 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: Li_Mouse_2010 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEuler) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "li_mouse_2010.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Cellli_mouse_2010FromCellMLBackwardEuler::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -15 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 3; // millisecond + const double var_chaste_interface__cell__stim_offset = 0; // millisecond + const double var_chaste_interface__cell__stim_period = 333.33300000000003; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_offset + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellli_mouse_2010FromCellMLBackwardEuler::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellli_mouse_2010FromCellMLBackwardEuler::Cellli_mouse_2010FromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<26>( + 36, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 4.5; // (var_calcium_fluxes__v1) [per_millisecond] + this->mParameters[1] = 1400; // (var_cell__Cao) [micromolar] + this->mParameters[2] = 5400; // (var_cell__Ko) [micromolar] + this->mParameters[3] = 134000; // (var_cell__Nao) [micromolar] + this->mParameters[4] = 2.5; // (var_L_type_calcium_current__P_CaL) [per_millisecond] + this->mParameters[5] = 1; // (var_cell__Cm) [microF_per_cm2] + this->mParameters[6] = 16; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[7] = 0.34999999999999998; // (var_time_independent_K_I__g_K1) [milliS_per_microF] + this->mParameters[8] = 0.059499999999999997; // (var_non_inactivating_steady_state_K_I__g_Kss) [milliS_per_microF] + this->mParameters[9] = 0.016500000000000001; // (var_rapid_delayed_rectifier_K_I__g_Kr) [milliS_per_microF] + this->mParameters[10] = 0.0057499999999999999; // (var_slow_delayed_rectifier_K_I__g_Ks) [milliS_per_microF] + this->mParameters[11] = 3.9390000000000001; // (var_sodium_calcium_exchange_current__V_max_NCX) [picoA_per_picoF] + } + + Cellli_mouse_2010FromCellMLBackwardEuler::~Cellli_mouse_2010FromCellMLBackwardEuler() + { + } + + + void Cellli_mouse_2010FromCellMLBackwardEuler::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 36; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellli_mouse_2010FromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 9.499150681398009e-05 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.0954184301907784 + double var_chaste_interface__L_type_calcium_current__O = rY[10]; + // Units: dimensionless; Initial value: 1.23713515513533e-06 + double var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + double var_chaste_interface__sodium_concentration__Nai = rY[13]; + // Units: micromolar; Initial value: 12364.7482121793 + double var_chaste_interface__fast_sodium_current__O_Na = rY[14]; + // Units: dimensionless; Initial value: 1.46826771436314e-06 + double var_chaste_interface__potassium_concentration__Ki = rY[22]; + // Units: micromolar; Initial value: 115599.50642567 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; + // Units: dimensionless; Initial value: 0.00346258606821817 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; + // Units: dimensionless; Initial value: 0.955684946168062 + double var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + double var_chaste_interface__non_inactivating_steady_state_K_I__iKss = rY[26]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_K_I__O_K = rY[27]; + // Units: dimensionless; Initial value: 0.0131742086125972 + double var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + double var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; + // Units: dimensionless; Initial value: 0.0142335908879204 + double var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; + // Units: dimensionless; Initial value: 0.996989882138174 + double var_chaste_interface__slow_transient_outward_K_I__ato_s = rY[34]; + // Units: dimensionless; Initial value: 0.0443263407760382 + double var_chaste_interface__slow_transient_outward_K_I__ito_s = rY[35]; + // Units: dimensionless; Initial value: 0.887568880831388 + + const double var_calcium_activated_chloride_current__E_Cl = -40; // millivolt + const double var_calcium_activated_chloride_current__Km_Cl = 10; // micromolar + const double var_calcium_activated_chloride_current__g_ClCa = 10; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.00069999999999999999; // milliS_per_microF + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__Km_pCa = 0.28849999999999998; // micromolar + const double var_calcium_pump_current__i_pCa_max = 0.095500000000000002; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_cell__Acap = 0.00013866; // cm2 + const double var_cell__F = 96.5; // coulomb_per_millimole + const double var_cell__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_cell__T = 308; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_cell__R * var_cell__T * log(mParameters[1] / var_calcium_concentration__Cai) / var_cell__F; // millivolt + const double var_L_type_calcium_current__FVRT = var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T); // dimensionless + const double var_L_type_calcium_current__FVRT_Ca = 2 * var_L_type_calcium_current__FVRT; // dimensionless + const double var_calcium_activated_chloride_current__O_ClCa = 0.20000000000000001 / (1 + exp(5.9871794871794881 - 0.12820512820512822 * var_chaste_interface__cell__V)); // dimensionless + const double var_calcium_activated_chloride_current__i_ClCa = (-var_calcium_activated_chloride_current__E_Cl + var_chaste_interface__cell__V) * var_calcium_activated_chloride_current__O_ClCa * var_calcium_activated_chloride_current__g_ClCa * var_calcium_concentration__Cai / (var_calcium_activated_chloride_current__Km_Cl + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__cell__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_cell__Vss = 2.1999999999999998e-8; // microlitre + const double var_L_type_calcium_current__i_CaL = ((fabs(var_L_type_calcium_current__FVRT_Ca) > 1.0000000000000001e-5) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-var_L_type_calcium_current__FVRT_Ca)) * var_L_type_calcium_current__FVRT_Ca * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-2.0000000000000002e-5 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-1.0000000000000001e-5)) * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-1.0000000000000001e-5)) * var_cell__Acap * mParameters[5]))); // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_fast_transient_outward_K_I__g_Kto_f = 0.53469999999999995; // milliS_per_microF + const double var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * log(mParameters[2] / var_chaste_interface__potassium_concentration__Ki) / var_cell__F; // millivolt + const double var_fast_transient_outward_K_I__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_K_I__ato_f, 3) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_fast_transient_outward_K_I__g_Kto_f * var_chaste_interface__fast_transient_outward_K_I__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_K_I__i_Kss = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8] * var_chaste_interface__non_inactivating_steady_state_K_I__iKss; // picoA_per_picoF + const double var_non_inactivating_steady_state_K_I__i_Kss_converted = HeartConfig::Instance()->GetCapacitance() * var_non_inactivating_steady_state_K_I__i_Kss; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_I__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[10]; // picoA_per_picoF + const double var_slow_delayed_rectifier_K_I__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_I__i_Ks; // uA_per_cm2 + const double var_slow_transient_outward_K_I__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_K_I__i_Kto_s = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__slow_transient_outward_K_I__ato_s * var_slow_transient_outward_K_I__g_Kto_s * var_chaste_interface__slow_transient_outward_K_I__ito_s; // picoA_per_picoF + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mAllo = 0; // micromolar + const double var_sodium_calcium_exchange_current__K_mCai = 3.6000000000000001; // micromolar + const double var_sodium_calcium_exchange_current__K_mCao = 1400; // micromolar + const double var_sodium_calcium_exchange_current__K_mNai = 12000; // micromolar + const double var_sodium_calcium_exchange_current__K_mNao = 88000; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.27000000000000002; // dimensionless + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log((1 * mParameters[3] + 0.1111111111111111 * mParameters[2]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[6]; // picoA_per_picoF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_K_I__i_Kr = (-var_cell__R * var_cell__T * log((1 * mParameters[2] + 0.020408163265306124 * mParameters[3]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_cell__F + var_chaste_interface__cell__V) * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_K_I__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_I__i_Kr; // uA_per_cm2 + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NCX = (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - pow(mParameters[3], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * mParameters[11] / ((1 + pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (pow(mParameters[3], 3) * var_calcium_concentration__Cai + pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + pow(mParameters[3], 3) * (1 + pow(var_chaste_interface__sodium_concentration__Nai, 3) / pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + pow(var_sodium_calcium_exchange_current__K_mNai, 3) * (1 + var_calcium_concentration__Cai / var_sodium_calcium_exchange_current__K_mCai) * mParameters[1])); // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NCX_converted = HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchange_current__i_NCX; // uA_per_cm2 + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 16600; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 2.4860000000000002; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[3]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[2] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 2.3999999999999999)) * (mParameters[2] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double var_time_independent_K_I__i_K1 = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[2] * mParameters[7] / ((1 + exp(0.089599999999999999 * var_chaste_interface__cell__V - 0.089599999999999999 * var_fast_transient_outward_K_I__E_K)) * (210 + mParameters[2])); // picoA_per_picoF + const double var_time_independent_K_I__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_K_I__i_K1; // uA_per_cm2 + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur = 0.25; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__i_Kur = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur * var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur; // picoA_per_picoF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_calcium_activated_chloride_current__i_ClCa + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Cab + HeartConfig::Instance()->GetCapacitance() * var_calcium_pump_current__i_pCa + HeartConfig::Instance()->GetCapacitance() * var_fast_transient_outward_K_I__i_Kto_f + HeartConfig::Instance()->GetCapacitance() * var_slow_transient_outward_K_I__i_Kto_s + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Nab + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump_current__i_NaK + HeartConfig::Instance()->GetCapacitance() * var_ultra_rapidly_activating_delayed_rectifier_K_I__i_Kur + var_L_type_calcium_current__i_CaL_converted + var_fast_sodium_current__i_Na_converted + var_non_inactivating_steady_state_K_I__i_Kss_converted + var_rapid_delayed_rectifier_K_I__i_Kr_converted + var_slow_delayed_rectifier_K_I__i_Ks_converted + var_sodium_calcium_exchange_current__i_NCX_converted + var_time_independent_K_I__i_K1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellli_mouse_2010FromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[26], double rResidual[26]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + double var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; + // Units: dimensionless; Initial value: 0.00346258606821817 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; + // Units: dimensionless; Initial value: 0.955684946168062 + double var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + double var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + double var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; + // Units: dimensionless; Initial value: 0.0142335908879204 + double var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; + // Units: dimensionless; Initial value: 0.996989882138174 + double var_chaste_interface__slow_transient_outward_K_I__ato_s = rY[34]; + // Units: dimensionless; Initial value: 0.0443263407760382 + double var_chaste_interface__slow_transient_outward_K_I__ito_s = rY[35]; + // Units: dimensionless; Initial value: 0.887568880831388 + + //output_nonlinear_state_assignments + double var_chaste_interface__L_type_calcium_current__I = rCurrentGuess[0]; + double var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[1]; + double var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[2]; + double var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[3]; + double var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[4]; + double var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[5]; + double var_chaste_interface__calcium_fluxes__CaMKt = rCurrentGuess[6]; + double var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[7]; + double var_chaste_interface__fast_sodium_current__C_Na1 = rCurrentGuess[8]; + double var_chaste_interface__fast_sodium_current__C_Na2 = rCurrentGuess[9]; + double var_chaste_interface__fast_sodium_current__I1_Na = rCurrentGuess[10]; + double var_chaste_interface__fast_sodium_current__I2_Na = rCurrentGuess[11]; + double var_chaste_interface__fast_sodium_current__IC_Na2 = rCurrentGuess[12]; + double var_chaste_interface__fast_sodium_current__IC_Na3 = rCurrentGuess[13]; + double var_chaste_interface__fast_sodium_current__IF_Na = rCurrentGuess[14]; + double var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[15]; + double var_chaste_interface__non_inactivating_steady_state_K_I__iKss = rCurrentGuess[16]; + double var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[17]; + double var_chaste_interface__rapid_delayed_rectifier_K_I__C_K1 = rCurrentGuess[18]; + double var_chaste_interface__rapid_delayed_rectifier_K_I__C_K2 = rCurrentGuess[19]; + double var_chaste_interface__rapid_delayed_rectifier_K_I__I_K = rCurrentGuess[20]; + double var_chaste_interface__rapid_delayed_rectifier_K_I__O_K = rCurrentGuess[21]; + double var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[22]; + double var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[23]; + double var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[24]; + double var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[25]; + + //output_equations + const double d_dt_chaste_interface_var_non_inactivating_steady_state_K_I__iKss = 0; // 1 / millisecond + const double var_L_type_calcium_current__K_L = 0.29999999999999999; // micromolar + const double var_L_type_calcium_current__C = 1 - var_chaste_interface__L_type_calcium_current__I - var_chaste_interface__L_type_calcium_current__O; // dimensionless + const double var_L_type_calcium_current__V_L = 0; // millivolt + const double var_L_type_calcium_current__a = 0.0625; // dimensionless + const double var_L_type_calcium_current__b = 0.40000000000000002; // dimensionless + const double var_L_type_calcium_current__delta_V_L = 6.4489000000000001; // millivolt + const double var_L_type_calcium_current__i_CaL_max = 7; // picoA_per_picoF + const double var_L_type_calcium_current__phi_L = 1.798; // dimensionless + const double var_L_type_calcium_current__t_L = 1.5; // millisecond + const double var_L_type_calcium_current__alpha_m = var_L_type_calcium_current__phi_L / var_L_type_calcium_current__t_L; // per_millisecond + const double var_L_type_calcium_current__tau_L = 1150; // millisecond + const double var_calcium_background_current__g_Cab = 0.00069999999999999999; // milliS_per_microF + const double var_calcium_concentration__Bmax = 109; // micromolar + const double var_calcium_concentration__CSQN_tot = 50000; // micromolar + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_concentration__Kd = 0.59999999999999998; // micromolar + const double var_calcium_concentration__Bi = 1 / (1 + var_calcium_concentration__Bmax * var_calcium_concentration__Kd / pow((var_calcium_concentration__Cai + var_calcium_concentration__Kd), 2)); // dimensionless + const double var_calcium_concentration__Bss = 1 / (1 + var_calcium_concentration__Bmax * var_calcium_concentration__Kd / pow((var_chaste_interface__calcium_concentration__Cass + var_calcium_concentration__Kd), 2)); // dimensionless + const double var_calcium_concentration__Km_CSQN = 630; // micromolar + const double var_calcium_concentration__BJSR = 1 / (1 + var_calcium_concentration__CSQN_tot * var_calcium_concentration__Km_CSQN / pow((var_chaste_interface__calcium_concentration__CaJSR + var_calcium_concentration__Km_CSQN), 2)); // dimensionless + const double var_calcium_fluxes__CaMKb = 0.050000000000000003 * (1 - var_chaste_interface__calcium_fluxes__CaMKt) / (1 + 0.69999999999999996 / var_chaste_interface__calcium_concentration__Cass); // dimensionless + const double var_calcium_fluxes__CaMKa = var_calcium_fluxes__CaMKb + var_chaste_interface__calcium_fluxes__CaMKt; // dimensionless + const double var_calcium_fluxes__Km_up = 0.41199999999999998; // micromolar + const double var_calcium_fluxes__P_ryr_const1 = -0.01; // per_millisecond + const double var_calcium_fluxes__P_ryr_const2 = -2; // per_millisecond + const double var_calcium_fluxes__off_rate = 0.00020000000000000001; // per_millisecond + const double var_calcium_fluxes__on_rate = 0.050000000000000003; // per_millisecond + const double d_dt_chaste_interface_var_calcium_fluxes__CaMKt = -var_chaste_interface__calcium_fluxes__CaMKt * var_calcium_fluxes__off_rate + (var_calcium_fluxes__CaMKb + var_chaste_interface__calcium_fluxes__CaMKt) * var_calcium_fluxes__CaMKb * var_calcium_fluxes__on_rate; // 1 / millisecond + const double var_calcium_fluxes__tau_tr = 20; // millisecond + const double var_calcium_fluxes__J_tr = (-var_chaste_interface__calcium_concentration__CaJSR + var_chaste_interface__calcium_concentration__CaNSR) / var_calcium_fluxes__tau_tr; // micromolar_per_millisecond + const double var_calcium_fluxes__tau_xfer = 8; // millisecond + const double var_calcium_fluxes__J_xfer = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__Cass) / var_calcium_fluxes__tau_xfer; // micromolar_per_millisecond + const double var_calcium_fluxes__v1_caff = 10; // per_millisecond + const double var_calcium_fluxes__v2 = 3.0000000000000001e-5; // per_millisecond + const double var_calcium_fluxes__v2_caff = 0.10000000000000001; // per_millisecond + const double var_calcium_fluxes__vmup_init = 0.50590000000000002; // micromolar_per_millisecond + const double var_calcium_fluxes__vmup = (1 + 2.9982000000000002 * pow(var_calcium_fluxes__CaMKa, 2.5830000000000002) / (1.7590641847756086 + pow(var_calcium_fluxes__CaMKa, 2.5830000000000002))) * var_calcium_fluxes__vmup_init; // micromolar_per_millisecond + const double var_calcium_fluxes__J_serca = pow(var_calcium_concentration__Cai, 2) * var_calcium_fluxes__vmup / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_fluxes__Km_up, 2)); // micromolar_per_millisecond + const double var_calcium_pump_current__Km_pCa = 0.28849999999999998; // micromolar + const double var_calcium_pump_current__i_pCa_max = 0.095500000000000002; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_cell__Acap = 0.00013866; // cm2 + const double var_cell__F = 96.5; // coulomb_per_millimole + const double var_cell__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_cell__T = 308; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_cell__R * var_cell__T * log(mParameters[1] / var_calcium_concentration__Cai) / var_cell__F; // millivolt + const double var_L_type_calcium_current__FVRT = var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T); // dimensionless + const double var_L_type_calcium_current__FVRT_Ca = 2 * var_L_type_calcium_current__FVRT; // dimensionless + const double var_L_type_calcium_current__expVL = exp((-var_L_type_calcium_current__V_L + var_chaste_interface__cell__V) / var_L_type_calcium_current__delta_V_L); // dimensionless + const double var_L_type_calcium_current__alpha_p = var_L_type_calcium_current__expVL / ((1 + var_L_type_calcium_current__expVL) * var_L_type_calcium_current__t_L); // per_millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__O = var_L_type_calcium_current__C * var_L_type_calcium_current__alpha_p - var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__alpha_m; // 1 / millisecond + const double var_L_type_calcium_current__epsilon_m = (var_L_type_calcium_current__a + var_L_type_calcium_current__expVL) * var_L_type_calcium_current__b / ((var_L_type_calcium_current__b * var_L_type_calcium_current__expVL + var_L_type_calcium_current__a) * var_L_type_calcium_current__tau_L); // per_millisecond + const double var_L_type_calcium_current__epsilon_p = (var_L_type_calcium_current__a + var_L_type_calcium_current__expVL) / ((1 + var_L_type_calcium_current__expVL) * var_L_type_calcium_current__K_L * var_L_type_calcium_current__tau_L); // per_micromolar_millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I = -var_chaste_interface__L_type_calcium_current__I * var_L_type_calcium_current__epsilon_m + var_L_type_calcium_current__C * var_L_type_calcium_current__epsilon_p * var_chaste_interface__calcium_concentration__Cass; // 1 / millisecond + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__cell__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_cell__VJSR = 7.7000000000000001e-8; // microlitre + const double var_cell__VNSR = 2.3099999999999999e-7; // microlitre + const double var_cell__Vmyo = 2.1999999999999999e-5; // microlitre + const double var_cell__Vss = 2.1999999999999998e-8; // microlitre + const double var_L_type_calcium_current__i_CaL = ((fabs(var_L_type_calcium_current__FVRT_Ca) > 1.0000000000000001e-5) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-var_L_type_calcium_current__FVRT_Ca)) * var_L_type_calcium_current__FVRT_Ca * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-2.0000000000000002e-5 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-1.0000000000000001e-5)) * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-1.0000000000000001e-5)) * var_cell__Acap * mParameters[5]))); // picoA_per_picoF + const double d_dt_chaste_interface_var_calcium_fluxes__P_RyR = var_chaste_interface__calcium_fluxes__P_RyR * var_calcium_fluxes__P_ryr_const1 + var_L_type_calcium_current__i_CaL * var_calcium_fluxes__P_ryr_const2 * exp(-0.038580246913580245 * pow((-1 + 0.20000000000000001 * var_chaste_interface__cell__V), 2)) / var_L_type_calcium_current__i_CaL_max; // 1 / millisecond + const double var_cell__prepulses_number = 10000000000.0; // dimensionless + const double var_chaste_interface__cell__stim_period = 333.33300000000003; // millisecond + const double var_calcium_fluxes__J_leak = ((var_chaste_interface__environment__time < var_cell__prepulses_number * var_chaste_interface__cell__stim_period) ? ((-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__CaNSR) * var_calcium_fluxes__v2) : ((-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__CaNSR) * var_calcium_fluxes__v2_caff)); // micromolar_per_millisecond + const double d_dt_chaste_interface_var_calcium_concentration__CaNSR = (-var_calcium_fluxes__J_leak + var_calcium_fluxes__J_serca) * var_cell__Vmyo / var_cell__VNSR - var_calcium_fluxes__J_tr * var_cell__VJSR / var_cell__VNSR; // micromolar / millisecond + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // picoA_per_picoF + const double var_fast_sodium_current__C_Na3 = 1 - var_chaste_interface__fast_sodium_current__C_Na1 - var_chaste_interface__fast_sodium_current__C_Na2 - var_chaste_interface__fast_sodium_current__I1_Na - var_chaste_interface__fast_sodium_current__I2_Na - var_chaste_interface__fast_sodium_current__IC_Na2 - var_chaste_interface__fast_sodium_current__IC_Na3 - var_chaste_interface__fast_sodium_current__IF_Na - var_chaste_interface__fast_sodium_current__O_Na; // dimensionless + const double var_fast_sodium_current__alpha_Na11 = 3.802 / (0.20000000000000001 * exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__cell__V) + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__cell__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na12 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__cell__V) + 0.23000000000000001 * exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__cell__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na13 = 3.802 / (0.25 * exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__cell__V) + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__cell__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na2 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 - 0.060240963855421679 * var_chaste_interface__cell__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na3 = 6.9999999999999997e-7 * exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__cell__V); // per_millisecond + const double var_fast_sodium_current__alpha_Na4 = 0.001 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__alpha_Na5 = 1.0526315789473684e-5 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__beta_Na11 = 0.19170000000000001 * exp(-0.12315270935960591 - 0.04926108374384236 * var_chaste_interface__cell__V); // per_millisecond + const double var_fast_sodium_current__beta_Na12 = 0.20000000000000001 * exp(0.12315270935960591 - 0.04926108374384236 * var_chaste_interface__cell__V); // per_millisecond + const double var_fast_sodium_current__beta_Na13 = 0.22 * exp(0.36945812807881773 - 0.04926108374384236 * var_chaste_interface__cell__V); // per_millisecond + const double var_fast_sodium_current__beta_Na3 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__cell__V; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na1 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na2 = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 + var_fast_sodium_current__C_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na2 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na3 = var_fast_sodium_current__C_Na3 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na3; // 1 / millisecond + const double var_fast_sodium_current__beta_Na2 = var_fast_sodium_current__alpha_Na13 * var_fast_sodium_current__alpha_Na2 * var_fast_sodium_current__alpha_Na3 / (var_fast_sodium_current__beta_Na13 * var_fast_sodium_current__beta_Na3); // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__O_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13; // 1 / millisecond + const double var_fast_sodium_current__beta_Na4 = var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IF_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2; // 1 / millisecond + const double var_fast_sodium_current__beta_Na5 = 0.02 * var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I1_Na = var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I2_Na = var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5; // 1 / millisecond + const double var_fast_transient_outward_K_I__g_Kto_f = 0.53469999999999995; // milliS_per_microF + const double var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * log(mParameters[2] / var_chaste_interface__potassium_concentration__Ki) / var_cell__F; // millivolt + const double var_fast_transient_outward_K_I__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_K_I__ato_f, 3) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_fast_transient_outward_K_I__g_Kto_f * var_chaste_interface__fast_transient_outward_K_I__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_K_I__i_Kss = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8] * var_chaste_interface__non_inactivating_steady_state_K_I__iKss; // picoA_per_picoF + const double var_rapid_delayed_rectifier_K_I__C_K0 = 1 - var_chaste_interface__rapid_delayed_rectifier_K_I__C_K1 - var_chaste_interface__rapid_delayed_rectifier_K_I__C_K2 - var_chaste_interface__rapid_delayed_rectifier_K_I__I_K - var_chaste_interface__rapid_delayed_rectifier_K_I__O_K; // dimensionless + const double var_rapid_delayed_rectifier_K_I__alpha_a0 = 0.022348 * exp(0.01176 * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__alpha_a1 = 0.033500000000000002 * exp(0.0109 * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__alpha_i = 0.070300000000000001 * exp(0.14349999999999999 + 0.0287 * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__beta_a0 = 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__beta_a1 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__beta_i = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__cell__V); // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__I_K = var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * var_rapid_delayed_rectifier_K_I__alpha_i - var_chaste_interface__rapid_delayed_rectifier_K_I__I_K * var_rapid_delayed_rectifier_K_I__beta_i; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__O_K = var_chaste_interface__rapid_delayed_rectifier_K_I__C_K2 * var_rapid_delayed_rectifier_K_I__alpha_a1 + var_chaste_interface__rapid_delayed_rectifier_K_I__I_K * var_rapid_delayed_rectifier_K_I__beta_i - var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * var_rapid_delayed_rectifier_K_I__alpha_i - var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * var_rapid_delayed_rectifier_K_I__beta_a1; // 1 / millisecond + const double var_rapid_delayed_rectifier_K_I__kb = 0.036777999999999998; // per_millisecond + const double var_rapid_delayed_rectifier_K_I__kf = 0.023761000000000001; // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__C_K1 = var_rapid_delayed_rectifier_K_I__C_K0 * var_rapid_delayed_rectifier_K_I__alpha_a0 + var_chaste_interface__rapid_delayed_rectifier_K_I__C_K2 * var_rapid_delayed_rectifier_K_I__kb - var_chaste_interface__rapid_delayed_rectifier_K_I__C_K1 * var_rapid_delayed_rectifier_K_I__beta_a0 - var_chaste_interface__rapid_delayed_rectifier_K_I__C_K1 * var_rapid_delayed_rectifier_K_I__kf; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__C_K2 = var_chaste_interface__rapid_delayed_rectifier_K_I__C_K1 * var_rapid_delayed_rectifier_K_I__kf + var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * var_rapid_delayed_rectifier_K_I__beta_a1 - var_chaste_interface__rapid_delayed_rectifier_K_I__C_K2 * var_rapid_delayed_rectifier_K_I__alpha_a1 - var_chaste_interface__rapid_delayed_rectifier_K_I__C_K2 * var_rapid_delayed_rectifier_K_I__kb; // 1 / millisecond + const double var_calcium_fluxes__J_rel = ((var_chaste_interface__environment__time < var_cell__prepulses_number * var_chaste_interface__cell__stim_period) ? ((-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[0]) : ((-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * var_calcium_fluxes__v1_caff)); // micromolar_per_millisecond + const double d_dt_chaste_interface_var_calcium_concentration__CaJSR = (-var_calcium_fluxes__J_rel + var_calcium_fluxes__J_tr) * var_calcium_concentration__BJSR; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cass = (var_calcium_fluxes__J_rel * var_cell__VJSR / var_cell__Vss - var_calcium_fluxes__J_xfer * var_cell__Vmyo / var_cell__Vss - 0.5 * var_L_type_calcium_current__i_CaL * var_cell__Acap * mParameters[5] / (var_cell__F * var_cell__Vss)) * var_calcium_concentration__Bss; // micromolar / millisecond + const double var_ryanodine_receptors__P_C1 = 1 - var_chaste_interface__ryanodine_receptors__P_C2 - var_chaste_interface__ryanodine_receptors__P_O1 - var_chaste_interface__ryanodine_receptors__P_O2; // dimensionless + const double var_ryanodine_receptors__k_minus_a = 0.071249999999999994; // per_millisecond + const double var_ryanodine_receptors__k_minus_b = 0.96499999999999997; // per_millisecond + const double var_ryanodine_receptors__k_minus_c = 0.00080000000000000004; // per_millisecond + const double var_ryanodine_receptors__k_plus_a = 0.0060749999999999997; // micromolar4_per_millisecond + const double var_ryanodine_receptors__k_plus_b = 0.0040499999999999998; // micromolar3_per_millisecond + const double var_ryanodine_receptors__k_plus_c = 0.0089999999999999993; // per_millisecond + const double d_dt_chaste_interface_var_ryanodine_receptors__P_C2 = var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_c - var_chaste_interface__ryanodine_receptors__P_C2 * var_ryanodine_receptors__k_minus_c; // 1 / millisecond + const double var_ryanodine_receptors__m = 3; // dimensionless + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O2 = -var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b + pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__m) * var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_b; // 1 / millisecond + const double var_ryanodine_receptors__n = 4; // dimensionless + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O1 = var_chaste_interface__ryanodine_receptors__P_C2 * var_ryanodine_receptors__k_minus_c + var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b - var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_minus_a - var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_c + pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__n) * var_ryanodine_receptors__P_C1 * var_ryanodine_receptors__k_plus_a - pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__m) * var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_b; // 1 / millisecond + const double var_slow_delayed_rectifier_K_I__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[10]; // picoA_per_picoF + const double var_slow_transient_outward_K_I__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_K_I__i_Kto_s = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__slow_transient_outward_K_I__ato_s * var_slow_transient_outward_K_I__g_Kto_s * var_chaste_interface__slow_transient_outward_K_I__ito_s; // picoA_per_picoF + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mAllo = 0; // micromolar + const double var_sodium_calcium_exchange_current__K_mCai = 3.6000000000000001; // micromolar + const double var_sodium_calcium_exchange_current__K_mCao = 1400; // micromolar + const double var_sodium_calcium_exchange_current__K_mNai = 12000; // micromolar + const double var_sodium_calcium_exchange_current__K_mNao = 88000; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.27000000000000002; // dimensionless + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log((1 * mParameters[3] + 0.1111111111111111 * mParameters[2]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[6]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_K_I__i_Kr = (-var_cell__R * var_cell__T * log((1 * mParameters[2] + 0.020408163265306124 * mParameters[3]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_cell__F + var_chaste_interface__cell__V) * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NCX = (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - pow(mParameters[3], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * mParameters[11] / ((1 + pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (pow(mParameters[3], 3) * var_calcium_concentration__Cai + pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + pow(mParameters[3], 3) * (1 + pow(var_chaste_interface__sodium_concentration__Nai, 3) / pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + pow(var_sodium_calcium_exchange_current__K_mNai, 3) * (1 + var_calcium_concentration__Cai / var_sodium_calcium_exchange_current__K_mCai) * mParameters[1])); // picoA_per_picoF + const double var_calcium_concentration__Cai_orig_deriv = (-var_calcium_fluxes__J_serca - 0.5 * (-2 * var_sodium_calcium_exchange_current__i_NCX + var_calcium_background_current__i_Cab + var_calcium_pump_current__i_pCa) * var_cell__Acap * mParameters[5] / (var_cell__F * var_cell__Vmyo) + var_calcium_fluxes__J_leak + var_calcium_fluxes__J_xfer) * var_calcium_concentration__Bi; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cai_converted = 0.001 * var_calcium_concentration__Cai_orig_deriv; // millimolar / millisecond + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 16600; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 2.4860000000000002; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[3]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[2] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 2.3999999999999999)) * (mParameters[2] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double d_dt_chaste_interface_var_sodium_concentration__Nai = (-var_fast_sodium_current__i_Na - var_sodium_background_current__i_Nab - 3 * var_sodium_calcium_exchange_current__i_NCX - 3 * var_sodium_potassium_pump_current__i_NaK) * var_cell__Acap * mParameters[5] / (var_cell__F * var_cell__Vmyo); // micromolar / millisecond + const double var_time_independent_K_I__i_K1 = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[2] * mParameters[7] / ((1 + exp(0.089599999999999999 * var_chaste_interface__cell__V - 0.089599999999999999 * var_fast_transient_outward_K_I__E_K)) * (210 + mParameters[2])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur = 0.25; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__i_Kur = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur * var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_potassium_concentration__Ki = (-var_cell__i_Stim - var_fast_transient_outward_K_I__i_Kto_f - var_non_inactivating_steady_state_K_I__i_Kss - var_rapid_delayed_rectifier_K_I__i_Kr - var_slow_delayed_rectifier_K_I__i_Ks - var_slow_transient_outward_K_I__i_Kto_s - var_time_independent_K_I__i_K1 - var_ultra_rapidly_activating_delayed_rectifier_K_I__i_Kur + 2 * var_sodium_potassium_pump_current__i_NaK) * var_cell__Acap * mParameters[5] / (var_cell__F * var_cell__Vmyo); // micromolar / millisecond + + rResidual[4] = rCurrentGuess[4] - rY[1] - mDt*d_dt_chaste_interface_var_calcium_concentration__Cai_converted; + rResidual[5] = rCurrentGuess[5] - rY[2] - mDt*d_dt_chaste_interface_var_calcium_concentration__Cass; + rResidual[2] = rCurrentGuess[2] - rY[3] - mDt*d_dt_chaste_interface_var_calcium_concentration__CaJSR; + rResidual[3] = rCurrentGuess[3] - rY[4] - mDt*d_dt_chaste_interface_var_calcium_concentration__CaNSR; + rResidual[7] = rCurrentGuess[7] - rY[5] - mDt*d_dt_chaste_interface_var_calcium_fluxes__P_RyR; + rResidual[6] = rCurrentGuess[6] - rY[6] - mDt*d_dt_chaste_interface_var_calcium_fluxes__CaMKt; + rResidual[23] = rCurrentGuess[23] - rY[7] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_O1; + rResidual[24] = rCurrentGuess[24] - rY[8] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_O2; + rResidual[22] = rCurrentGuess[22] - rY[9] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_C2; + rResidual[1] = rCurrentGuess[1] - rY[10] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__O; + rResidual[0] = rCurrentGuess[0] - rY[11] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I; + rResidual[25] = rCurrentGuess[25] - rY[13] - mDt*d_dt_chaste_interface_var_sodium_concentration__Nai; + rResidual[15] = rCurrentGuess[15] - rY[14] - mDt*d_dt_chaste_interface_var_fast_sodium_current__O_Na; + rResidual[8] = rCurrentGuess[8] - rY[15] - mDt*d_dt_chaste_interface_var_fast_sodium_current__C_Na1; + rResidual[9] = rCurrentGuess[9] - rY[16] - mDt*d_dt_chaste_interface_var_fast_sodium_current__C_Na2; + rResidual[10] = rCurrentGuess[10] - rY[17] - mDt*d_dt_chaste_interface_var_fast_sodium_current__I1_Na; + rResidual[11] = rCurrentGuess[11] - rY[18] - mDt*d_dt_chaste_interface_var_fast_sodium_current__I2_Na; + rResidual[14] = rCurrentGuess[14] - rY[19] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IF_Na; + rResidual[12] = rCurrentGuess[12] - rY[20] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IC_Na2; + rResidual[13] = rCurrentGuess[13] - rY[21] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IC_Na3; + rResidual[17] = rCurrentGuess[17] - rY[22] - mDt*d_dt_chaste_interface_var_potassium_concentration__Ki; + rResidual[16] = rCurrentGuess[16] - rY[26] - mDt*d_dt_chaste_interface_var_non_inactivating_steady_state_K_I__iKss; + rResidual[21] = rCurrentGuess[21] - rY[27] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__O_K; + rResidual[18] = rCurrentGuess[18] - rY[28] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__C_K1; + rResidual[19] = rCurrentGuess[19] - rY[29] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__C_K2; + rResidual[20] = rCurrentGuess[20] - rY[30] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__I_K; + } + + void Cellli_mouse_2010FromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[26], double rJacobian[26][26]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + double var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; + // Units: dimensionless; Initial value: 0.00346258606821817 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; + // Units: dimensionless; Initial value: 0.955684946168062 + double var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + double var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + double var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; + // Units: dimensionless; Initial value: 0.0142335908879204 + double var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; + // Units: dimensionless; Initial value: 0.996989882138174 + + double var_chaste_interface__L_type_calcium_current__I = rCurrentGuess[0]; + double var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[1]; + double var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[2]; + double var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[3]; + double var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[4]; + double var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[5]; + double var_chaste_interface__calcium_fluxes__CaMKt = rCurrentGuess[6]; + double var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[7]; + double var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[15]; + double var_chaste_interface__non_inactivating_steady_state_K_I__iKss = rCurrentGuess[16]; + double var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[17]; + double var_chaste_interface__rapid_delayed_rectifier_K_I__O_K = rCurrentGuess[21]; + double var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[22]; + double var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[23]; + double var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[24]; + double var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[25]; + + const double var_x0 = exp(0.15506520491866829 * var_chaste_interface__cell__V); + const double var_x1 = 0.0625 + var_x0; + const double var_x2 = 1 / (1 + var_x0); + const double var_x3 = 0.0028985507246376812 * var_x1 * var_x2; + const double var_x4 = var_x3 * var_chaste_interface__calcium_concentration__Cass; + const double var_x5 = 0.66666666666666663 * var_x0 * var_x2; + const double var_x6 = 1 + 0.0015873015873015873 * var_chaste_interface__calcium_concentration__CaJSR; + const double var_x7 = pow(var_x6, (-2)); + const double var_x8 = 1 / (1 + 79.365079365079367 * var_x7); + const double var_x9 = var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2; + const double var_x10 = var_x9 * mParameters[0]; + const double var_x11 = var_x10 * var_chaste_interface__calcium_fluxes__P_RyR; + const double var_x12 = var_chaste_interface__environment__time < 3333330000000.0005; + const double var_x13 = ((var_x12) ? (var_x11) : (10)); + const double var_x14 = -var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR; + const double var_x15 = ((var_x12) ? (var_x11 * var_x14) : (10 * var_chaste_interface__calcium_concentration__CaJSR - 10 * var_chaste_interface__calcium_concentration__Cass)); + const double var_x16 = ((var_x12) ? (-var_x11) : (-10)); + const double var_x17 = ((var_x12) ? (var_x10 * var_x14) : (0)); + const double var_x18 = ((var_x12) ? (var_x14 * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[0]) : (0)); + const double var_x19 = -var_x18 * var_x8; + const double var_x20 = ((var_x12) ? (3.0000000000000001e-5) : (0.10000000000000001)); + const double var_x21 = ((var_x12) ? (-0.029999999999999999) : (-100)); + const double var_x22 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 3); + const double var_x23 = 1 - var_chaste_interface__calcium_fluxes__CaMKt; + const double var_x24 = 1 + 0.69999999999999996 / var_chaste_interface__calcium_concentration__Cass; + const double var_x25 = 1 / var_x24; + const double var_x26 = 0.050000000000000003 * var_x25; + const double var_x27 = var_x23 * var_x26 + var_chaste_interface__calcium_fluxes__CaMKt; + const double var_x28 = pow(var_x27, 2.5830000000000002); + const double var_x29 = 1 / (1.7590641847756086 + var_x28); + const double var_x30 = 1.5167893800000001 * var_x29; + const double var_x31 = 0.50590000000000002 + var_x28 * var_x30; + const double var_x32 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); + const double var_x33 = pow((1.6974399999999999e-7 + var_x32), (-2)); + const double var_x34 = 1000000 * var_x32; + const double var_x35 = 1 / (0.16974399999999998 + var_x34); + const double var_x36 = pow(var_x27, 1.5830000000000002); + const double var_x37 = pow(var_chaste_interface__calcium_concentration__Cass, (-2)); + const double var_x38 = var_x23 * var_x37 / pow(var_x24, 2); + const double var_x39 = pow(var_x27, 4.1660000000000004) / pow((1 + 0.56848408867329814 * var_x28), 2); + const double var_x40 = var_x35 * (-0.044315367702357472 * var_x38 * var_x39 + 0.13712534389890002 * var_x29 * var_x36 * var_x38); + const double var_x41 = 95238095.238095239 * var_x32; + const double var_x42 = 2.5830000000000002 - 0.12915000000000001 * var_x25; + const double var_x43 = var_x35 * (-0.49018713237495126 * var_x39 * var_x42 + var_x30 * var_x36 * var_x42); + const double var_x44 = 0.00059999999999999995 + var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x45 = 1 + 6.5400000000000004e-5 / pow(var_x44, 2); + const double var_x46 = 1 / var_x45; + const double var_x47 = 0.001 * var_x46; + const double var_x48 = 1 / var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x49 = 1 / (0.083232249999999994 + var_x34); + const double var_x50 = exp(-0.024495140414072337 * var_chaste_interface__cell__V); + const double var_x51 = pow(mParameters[3], 3); + const double var_x52 = 1 / (1 + 0.27000000000000002 * var_x50); + const double var_x53 = pow(var_chaste_interface__sodium_concentration__Nai, 3); + const double var_x54 = var_x53 * mParameters[1]; + const double var_x55 = (1 + 277.77777777777777 * var_chaste_interface__calcium_concentration__Cai_converted) * mParameters[1]; + const double var_x56 = var_x51 * (1 + 5.7870370370370368e-13 * var_x53); + const double var_x57 = 1000 * var_x51; + const double var_x58 = var_x57 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x59 = var_x52 * mParameters[11] / (var_x54 + var_x58 + 1400 * var_x53 + 1728000000000.0 * var_x55 + 3.6000000000000001 * var_x56 + 6.81472e+17 * var_chaste_interface__calcium_concentration__Cai_converted); + const double var_x60 = var_x50 * var_x51 * var_x59; + const double var_x61 = -6.81472e+17 - var_x57 - 480000000000000.0 * mParameters[1]; + const double var_x62 = exp(0.013189690992192795 * var_chaste_interface__cell__V); + const double var_x63 = -var_x50 * var_x58 + var_x53 * var_x62 * mParameters[1]; + const double var_x64 = var_x52 * var_x63 * mParameters[11] / pow((2.0543764087152516e-15 * var_x53 + 5.282682193839219e-18 * var_x56 + 2.535687453042825e-6 * var_x55 + 1.4674117205108941e-18 * var_x54 + 1.4674117205108941e-15 * var_x51 * var_chaste_interface__calcium_concentration__Cai_converted + var_chaste_interface__calcium_concentration__Cai_converted), 2); + const double var_x65 = 4.3065943149854847e-36 * var_x64; + const double var_x66 = 0.032656617993405558 * mParameters[5]; + const double var_x67 = var_x31 * var_x35; + const double var_x68 = pow(var_chaste_interface__sodium_concentration__Nai, 2); + const double var_x69 = var_x68 * mParameters[1]; + const double var_x70 = -3 * var_x69 - 4200 * var_x68 - 6.2500000000000002e-12 * var_x51 * var_x68; + const double var_x71 = var_x59 * var_x62 * var_x69; + const double var_x72 = 0.59999999999999998 + var_chaste_interface__calcium_concentration__Cass; + const double var_x73 = pow(var_x72, (-2)); + const double var_x74 = 1 / (1 + 65.399999999999991 * var_x73); + const double var_x75 = 0.075369662812530269 * var_chaste_interface__cell__V; + const double var_x76 = exp(-var_x75); + const double var_x77 = mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate / mParameters[5]; + const double var_x78 = 0.0023079445283571576 * var_x77 * var_chaste_interface__cell__V / (1 - var_x76); + const double var_x79 = var_x78 * (-var_chaste_interface__calcium_concentration__Cass + var_x76 * mParameters[1]); + const double var_x80 = fabs(var_x75) > 1.0000000000000001e-5; + const double var_x81 = exp(-1.0000000000000001e-5); + const double var_x82 = 3.062166450310111e-7 * var_x77 / (1 - var_x81); + const double var_x83 = var_x82 * (-var_chaste_interface__calcium_concentration__Cass + var_x81 * mParameters[1]); + const double var_x84 = ((var_x80) ? (-var_x79) : (-var_x83)); + const double var_x85 = 32.656617993405561 * mParameters[5]; + const double var_x86 = 3.5000000000000004 * var_x74; + const double var_x87 = ((var_x80) ? (var_x78 * var_chaste_interface__L_type_calcium_current__O) : (var_x82 * var_chaste_interface__L_type_calcium_current__O)); + const double var_x88 = var_x18 * var_x86; + const double var_x89 = 0.2857142857142857 * exp(-0.038580246913580245 * pow((-1 + 0.20000000000000001 * var_chaste_interface__cell__V), 2)); + const double var_x90 = 0.04926108374384236 * var_chaste_interface__cell__V; + const double var_x91 = 0.20000000000000001 * exp(0.12315270935960591 - var_x90); + const double var_x92 = exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__cell__V); + const double var_x93 = 1 / (0.25 * var_x92 + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__cell__V)); + const double var_x94 = 3.802 * var_x93; + const double var_x95 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__cell__V; + const double var_x96 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__cell__V) + 0.23000000000000001 * var_x92); + const double var_x97 = exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__cell__V); + const double var_x98 = 6.9999999999999997e-7 * var_x97; + const double var_x99 = exp(0.36945812807881773 - var_x90); + const double var_x100 = 0.22 * var_x99; + const double var_x101 = 3.802 / (0.20000000000000001 * var_x92 + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__cell__V)); + const double var_x102 = -var_x101; + const double var_x103 = 0.19170000000000001 * exp(-0.12315270935960591 - var_x90); + const double var_x104 = var_x103 + var_x96; + const double var_x105 = var_x101 + var_x95; + const double var_x106 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 - 0.060240963855421679 * var_chaste_interface__cell__V)); + const double var_x107 = 1.0526315789473684e-5 * var_x106; + const double var_x108 = 1.4e-8 * var_x97; + const double var_x109 = 0.001 * var_x106; + const double var_x110 = -var_x95; + const double var_x111 = 1.2097272727272726e-5 * var_x106 * var_x93 * var_x97 / (var_x95 * var_x99); + const double var_x112 = 1 * var_x106; + const double var_x113 = 1 / var_chaste_interface__potassium_concentration__Ki; + const double var_x114 = var_x113 * mParameters[2]; + const double var_x115 = log(var_x114); + const double var_x116 = -26.535875647668394 * var_x115 + var_chaste_interface__cell__V; + const double var_x117 = 0.065313235986811116 * mParameters[5]; + const double var_x118 = var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8]; + const double var_x119 = 1 / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai); + const double var_x120 = var_x119 * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; + const double var_x121 = 26.535875647668394 * var_x113; + const double var_x122 = exp(0.089599999999999999 * var_chaste_interface__cell__V - 2.3776144580310881 * var_x115); + const double var_x123 = 1 + var_x122; + const double var_x124 = 1 / (210 + mParameters[2]); + const double var_x125 = 1 / var_chaste_interface__sodium_concentration__Nai; + const double var_x126 = pow(var_x125, 2.3999999999999999); + const double var_x127 = var_x125 * var_x126 * mParameters[2] / ((1500 + mParameters[2]) * pow((7.44287265976699e-11 + var_x126), 2) * (1 + 0.1245 * exp(-0.0037684831406265135 * var_chaste_interface__cell__V) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[3])) * exp(-0.037684831406265135 * var_chaste_interface__cell__V))); + const double var_x128 = 0.022348 * exp(0.01176 * var_chaste_interface__cell__V); + const double var_x129 = -var_x128; + const double var_x130 = 0.033500000000000002 * exp(0.0109 * var_chaste_interface__cell__V); + const double var_x131 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__cell__V); + const double var_x132 = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__cell__V); + const double var_x133 = 0.070300000000000001 * exp(0.14349999999999999 + 0.0287 * var_chaste_interface__cell__V); + const double var_x134 = 0.012149999999999999 * pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; + const double var_x135 = pow(var_chaste_interface__calcium_concentration__Cass, 3); + const double var_x136 = 0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4); + const double var_x137 = 0.0040499999999999998 * var_x135; + const double var_x138 = 6.4598914724782277e-36 * var_x64; + const double var_x139 = 1 / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki); + const double var_x140 = var_x139 * var_chaste_interface__fast_sodium_current__O_Na * mParameters[6]; + + + rJacobian[0][0] = 1.0 - (mDt * (-var_x4 - 0.00034782608695652176 * var_x1 / (0.0625 + 0.40000000000000002 * var_x0))); + rJacobian[0][1] = -(mDt * (-var_x4)); + rJacobian[0][2] = 0.0; + rJacobian[0][3] = 0.0; + rJacobian[0][4] = 0.0; + rJacobian[0][5] = -(mDt * (var_x3 * (1 - var_chaste_interface__L_type_calcium_current__I - var_chaste_interface__L_type_calcium_current__O))); + rJacobian[0][6] = 0.0; + rJacobian[0][7] = 0.0; + rJacobian[0][8] = 0.0; + rJacobian[0][9] = 0.0; + rJacobian[0][10] = 0.0; + rJacobian[0][11] = 0.0; + rJacobian[0][12] = 0.0; + rJacobian[0][13] = 0.0; + rJacobian[0][14] = 0.0; + rJacobian[0][15] = 0.0; + rJacobian[0][16] = 0.0; + rJacobian[0][17] = 0.0; + rJacobian[0][18] = 0.0; + rJacobian[0][19] = 0.0; + rJacobian[0][20] = 0.0; + rJacobian[0][21] = 0.0; + rJacobian[0][22] = 0.0; + rJacobian[0][23] = 0.0; + rJacobian[0][24] = 0.0; + rJacobian[0][25] = 0.0; + rJacobian[1][0] = -(mDt * (-var_x5)); + rJacobian[1][1] = 1.0 - (mDt * (-1.1986666666666668 - var_x5)); + rJacobian[1][2] = 0.0; + rJacobian[1][3] = 0.0; + rJacobian[1][4] = 0.0; + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = 0.0; + rJacobian[1][8] = 0.0; + rJacobian[1][9] = 0.0; + rJacobian[1][10] = 0.0; + rJacobian[1][11] = 0.0; + rJacobian[1][12] = 0.0; + rJacobian[1][13] = 0.0; + rJacobian[1][14] = 0.0; + rJacobian[1][15] = 0.0; + rJacobian[1][16] = 0.0; + rJacobian[1][17] = 0.0; + rJacobian[1][18] = 0.0; + rJacobian[1][19] = 0.0; + rJacobian[1][20] = 0.0; + rJacobian[1][21] = 0.0; + rJacobian[1][22] = 0.0; + rJacobian[1][23] = 0.0; + rJacobian[1][24] = 0.0; + rJacobian[1][25] = 0.0; + rJacobian[2][0] = 0.0; + rJacobian[2][1] = 0.0; + rJacobian[2][2] = 1.0 - (mDt * (var_x8 * (-0.050000000000000003 - var_x13) + 4.0000000000000003e-5 * (-var_x15 + 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaNSR - 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaJSR) / (pow(var_x6, 3) * pow((0.0126 + var_x7), 2)))); + rJacobian[2][3] = -(mDt * (0.050000000000000003 * var_x8)); + rJacobian[2][4] = 0.0; + rJacobian[2][5] = -(mDt * (-var_x16 * var_x8)); + rJacobian[2][6] = 0.0; + rJacobian[2][7] = -(mDt * (-var_x17 * var_x8)); + rJacobian[2][8] = 0.0; + rJacobian[2][9] = 0.0; + rJacobian[2][10] = 0.0; + rJacobian[2][11] = 0.0; + rJacobian[2][12] = 0.0; + rJacobian[2][13] = 0.0; + rJacobian[2][14] = 0.0; + rJacobian[2][15] = 0.0; + rJacobian[2][16] = 0.0; + rJacobian[2][17] = 0.0; + rJacobian[2][18] = 0.0; + rJacobian[2][19] = 0.0; + rJacobian[2][20] = 0.0; + rJacobian[2][21] = 0.0; + rJacobian[2][22] = 0.0; + rJacobian[2][23] = -(mDt * (var_x19)); + rJacobian[2][24] = -(mDt * (var_x19)); + rJacobian[2][25] = 0.0; + rJacobian[3][0] = 0.0; + rJacobian[3][1] = 0.0; + rJacobian[3][2] = -(mDt * (0.016666666666666666)); + rJacobian[3][3] = 1.0 - (mDt * (-0.016666666666666666 - 95.238095238095241 * var_x20)); + rJacobian[3][4] = -(mDt * (-95.238095238095241 * var_x21 + 190476190.47619048 * var_x31 * var_x35 * var_chaste_interface__calcium_concentration__Cai_converted - 190.47619047619048 * var_x22 * var_x31 * var_x33)); + rJacobian[3][5] = -(mDt * (var_x40 * var_x41)); + rJacobian[3][6] = -(mDt * (var_x41 * var_x43)); + rJacobian[3][7] = 0.0; + rJacobian[3][8] = 0.0; + rJacobian[3][9] = 0.0; + rJacobian[3][10] = 0.0; + rJacobian[3][11] = 0.0; + rJacobian[3][12] = 0.0; + rJacobian[3][13] = 0.0; + rJacobian[3][14] = 0.0; + rJacobian[3][15] = 0.0; + rJacobian[3][16] = 0.0; + rJacobian[3][17] = 0.0; + rJacobian[3][18] = 0.0; + rJacobian[3][19] = 0.0; + rJacobian[3][20] = 0.0; + rJacobian[3][21] = 0.0; + rJacobian[3][22] = 0.0; + rJacobian[3][23] = 0.0; + rJacobian[3][24] = 0.0; + rJacobian[3][25] = 0.0; + rJacobian[4][0] = 0.0; + rJacobian[4][1] = 0.0; + rJacobian[4][2] = 0.0; + rJacobian[4][3] = -(mDt * (var_x20 * var_x47)); + rJacobian[4][4] = 1.0 - (mDt * (var_x47 * (-125 + var_x21 - var_x66 * (0.0092875564766839377 * var_x48 + 2000 * var_x60 - var_x61 * var_x65 + 191000 * var_x49 * var_chaste_interface__calcium_concentration__Cai_converted - 0.191 * var_x22 / pow((8.3232249999999994e-8 + var_x32), 2)) - 2000000 * var_x67 * var_chaste_interface__calcium_concentration__Cai_converted + 2 * var_x22 * var_x31 * var_x33) + 1.3080000000000001e-7 * (0.125 * var_chaste_interface__calcium_concentration__Cass - 125 * var_chaste_interface__calcium_concentration__Cai_converted - var_x34 * var_x67 - var_x66 * (0.00069999999999999999 * var_chaste_interface__cell__V - 0.0092875564766839377 * log(0.001 * var_x48 * mParameters[1]) + 95500 * var_x32 * var_x49 - 2 * var_x59 * var_x63) + ((var_x12) ? (3.0000000000000001e-5 * var_chaste_interface__calcium_concentration__CaNSR - 0.029999999999999999 * var_chaste_interface__calcium_concentration__Cai_converted) : (0.10000000000000001 * var_chaste_interface__calcium_concentration__CaNSR - 100 * var_chaste_interface__calcium_concentration__Cai_converted))) / (pow(var_x44, 3) * pow(var_x45, 2)))); + rJacobian[4][5] = -(mDt * (var_x47 * (0.125 - var_x34 * var_x40))); + rJacobian[4][6] = -(mDt * (-1000 * var_x32 * var_x43 * var_x46)); + rJacobian[4][7] = 0.0; + rJacobian[4][8] = 0.0; + rJacobian[4][9] = 0.0; + rJacobian[4][10] = 0.0; + rJacobian[4][11] = 0.0; + rJacobian[4][12] = 0.0; + rJacobian[4][13] = 0.0; + rJacobian[4][14] = 0.0; + rJacobian[4][15] = 0.0; + rJacobian[4][16] = 0.0; + rJacobian[4][17] = 0.0; + rJacobian[4][18] = 0.0; + rJacobian[4][19] = 0.0; + rJacobian[4][20] = 0.0; + rJacobian[4][21] = 0.0; + rJacobian[4][22] = 0.0; + rJacobian[4][23] = 0.0; + rJacobian[4][24] = 0.0; + rJacobian[4][25] = -(mDt * (-3.2656617993405561e-5 * var_x46 * (-6 * var_x71 - var_x65 * var_x70) * mParameters[5])); + rJacobian[5][0] = 0.0; + rJacobian[5][1] = -(mDt * (-var_x74 * var_x84 * var_x85)); + rJacobian[5][2] = -(mDt * (var_x13 * var_x86)); + rJacobian[5][3] = 0.0; + rJacobian[5][4] = -(mDt * (125000 * var_x74)); + rJacobian[5][5] = 1.0 - (mDt * (var_x74 * (-125 + 3.5000000000000004 * var_x16 - var_x85 * var_x87) + 0.030581039755351685 * (125000 * var_chaste_interface__calcium_concentration__Cai_converted + 3.5000000000000004 * var_x15 - 125 * var_chaste_interface__calcium_concentration__Cass - var_x85 * ((var_x80) ? (-var_x79 * var_chaste_interface__L_type_calcium_current__O) : (-var_x83 * var_chaste_interface__L_type_calcium_current__O))) / (pow(var_x72, 3) * pow((0.015290519877675841 + var_x73), 2)))); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = -(mDt * (var_x17 * var_x86)); + rJacobian[5][8] = 0.0; + rJacobian[5][9] = 0.0; + rJacobian[5][10] = 0.0; + rJacobian[5][11] = 0.0; + rJacobian[5][12] = 0.0; + rJacobian[5][13] = 0.0; + rJacobian[5][14] = 0.0; + rJacobian[5][15] = 0.0; + rJacobian[5][16] = 0.0; + rJacobian[5][17] = 0.0; + rJacobian[5][18] = 0.0; + rJacobian[5][19] = 0.0; + rJacobian[5][20] = 0.0; + rJacobian[5][21] = 0.0; + rJacobian[5][22] = 0.0; + rJacobian[5][23] = -(mDt * (var_x88)); + rJacobian[5][24] = -(mDt * (var_x88)); + rJacobian[5][25] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = -(mDt * (0.00175 * var_x27 * var_x38 + 8.7500000000000013e-5 * var_x37 * pow(var_x23, 2) / pow(var_x24, 3))); + rJacobian[6][6] = 1.0 - (mDt * (-0.00020000000000000001 - 0.0025000000000000005 * var_x25 * var_x27 + 0.0025000000000000005 * var_x23 * var_x25 * (1 - var_x26))); + rJacobian[6][7] = 0.0; + rJacobian[6][8] = 0.0; + rJacobian[6][9] = 0.0; + rJacobian[6][10] = 0.0; + rJacobian[6][11] = 0.0; + rJacobian[6][12] = 0.0; + rJacobian[6][13] = 0.0; + rJacobian[6][14] = 0.0; + rJacobian[6][15] = 0.0; + rJacobian[6][16] = 0.0; + rJacobian[6][17] = 0.0; + rJacobian[6][18] = 0.0; + rJacobian[6][19] = 0.0; + rJacobian[6][20] = 0.0; + rJacobian[6][21] = 0.0; + rJacobian[6][22] = 0.0; + rJacobian[6][23] = 0.0; + rJacobian[6][24] = 0.0; + rJacobian[6][25] = 0.0; + rJacobian[7][0] = 0.0; + rJacobian[7][1] = -(mDt * (-var_x84 * var_x89)); + rJacobian[7][2] = 0.0; + rJacobian[7][3] = 0.0; + rJacobian[7][4] = 0.0; + rJacobian[7][5] = -(mDt * (-var_x87 * var_x89)); + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (-0.01)); + rJacobian[7][8] = 0.0; + rJacobian[7][9] = 0.0; + rJacobian[7][10] = 0.0; + rJacobian[7][11] = 0.0; + rJacobian[7][12] = 0.0; + rJacobian[7][13] = 0.0; + rJacobian[7][14] = 0.0; + rJacobian[7][15] = 0.0; + rJacobian[7][16] = 0.0; + rJacobian[7][17] = 0.0; + rJacobian[7][18] = 0.0; + rJacobian[7][19] = 0.0; + rJacobian[7][20] = 0.0; + rJacobian[7][21] = 0.0; + rJacobian[7][22] = 0.0; + rJacobian[7][23] = 0.0; + rJacobian[7][24] = 0.0; + rJacobian[7][25] = 0.0; + rJacobian[8][0] = 0.0; + rJacobian[8][1] = 0.0; + rJacobian[8][2] = 0.0; + rJacobian[8][3] = 0.0; + rJacobian[8][4] = 0.0; + rJacobian[8][5] = 0.0; + rJacobian[8][6] = 0.0; + rJacobian[8][7] = 0.0; + rJacobian[8][8] = 1.0 - (mDt * (-var_x91 - var_x94 - var_x95)); + rJacobian[8][9] = -(mDt * (var_x96)); + rJacobian[8][10] = 0.0; + rJacobian[8][11] = 0.0; + rJacobian[8][12] = 0.0; + rJacobian[8][13] = 0.0; + rJacobian[8][14] = -(mDt * (var_x98)); + rJacobian[8][15] = -(mDt * (var_x100)); + rJacobian[8][16] = 0.0; + rJacobian[8][17] = 0.0; + rJacobian[8][18] = 0.0; + rJacobian[8][19] = 0.0; + rJacobian[8][20] = 0.0; + rJacobian[8][21] = 0.0; + rJacobian[8][22] = 0.0; + rJacobian[8][23] = 0.0; + rJacobian[8][24] = 0.0; + rJacobian[8][25] = 0.0; + rJacobian[9][0] = 0.0; + rJacobian[9][1] = 0.0; + rJacobian[9][2] = 0.0; + rJacobian[9][3] = 0.0; + rJacobian[9][4] = 0.0; + rJacobian[9][5] = 0.0; + rJacobian[9][6] = 0.0; + rJacobian[9][7] = 0.0; + rJacobian[9][8] = -(mDt * (var_x102 + var_x91)); + rJacobian[9][9] = 1.0 - (mDt * (-var_x104 - var_x105)); + rJacobian[9][10] = -(mDt * (var_x102)); + rJacobian[9][11] = -(mDt * (var_x102)); + rJacobian[9][12] = -(mDt * (var_x102 + var_x98)); + rJacobian[9][13] = -(mDt * (var_x102)); + rJacobian[9][14] = -(mDt * (var_x102)); + rJacobian[9][15] = -(mDt * (var_x102)); + rJacobian[9][16] = 0.0; + rJacobian[9][17] = 0.0; + rJacobian[9][18] = 0.0; + rJacobian[9][19] = 0.0; + rJacobian[9][20] = 0.0; + rJacobian[9][21] = 0.0; + rJacobian[9][22] = 0.0; + rJacobian[9][23] = 0.0; + rJacobian[9][24] = 0.0; + rJacobian[9][25] = 0.0; + rJacobian[10][0] = 0.0; + rJacobian[10][1] = 0.0; + rJacobian[10][2] = 0.0; + rJacobian[10][3] = 0.0; + rJacobian[10][4] = 0.0; + rJacobian[10][5] = 0.0; + rJacobian[10][6] = 0.0; + rJacobian[10][7] = 0.0; + rJacobian[10][8] = 0.0; + rJacobian[10][9] = 0.0; + rJacobian[10][10] = 1.0 - (mDt * (-var_x107 - var_x98)); + rJacobian[10][11] = -(mDt * (var_x108)); + rJacobian[10][12] = 0.0; + rJacobian[10][13] = 0.0; + rJacobian[10][14] = -(mDt * (var_x109)); + rJacobian[10][15] = 0.0; + rJacobian[10][16] = 0.0; + rJacobian[10][17] = 0.0; + rJacobian[10][18] = 0.0; + rJacobian[10][19] = 0.0; + rJacobian[10][20] = 0.0; + rJacobian[10][21] = 0.0; + rJacobian[10][22] = 0.0; + rJacobian[10][23] = 0.0; + rJacobian[10][24] = 0.0; + rJacobian[10][25] = 0.0; + rJacobian[11][0] = 0.0; + rJacobian[11][1] = 0.0; + rJacobian[11][2] = 0.0; + rJacobian[11][3] = 0.0; + rJacobian[11][4] = 0.0; + rJacobian[11][5] = 0.0; + rJacobian[11][6] = 0.0; + rJacobian[11][7] = 0.0; + rJacobian[11][8] = 0.0; + rJacobian[11][9] = 0.0; + rJacobian[11][10] = -(mDt * (var_x107)); + rJacobian[11][11] = 1.0 - (mDt * (-var_x108)); + rJacobian[11][12] = 0.0; + rJacobian[11][13] = 0.0; + rJacobian[11][14] = 0.0; + rJacobian[11][15] = 0.0; + rJacobian[11][16] = 0.0; + rJacobian[11][17] = 0.0; + rJacobian[11][18] = 0.0; + rJacobian[11][19] = 0.0; + rJacobian[11][20] = 0.0; + rJacobian[11][21] = 0.0; + rJacobian[11][22] = 0.0; + rJacobian[11][23] = 0.0; + rJacobian[11][24] = 0.0; + rJacobian[11][25] = 0.0; + rJacobian[12][0] = 0.0; + rJacobian[12][1] = 0.0; + rJacobian[12][2] = 0.0; + rJacobian[12][3] = 0.0; + rJacobian[12][4] = 0.0; + rJacobian[12][5] = 0.0; + rJacobian[12][6] = 0.0; + rJacobian[12][7] = 0.0; + rJacobian[12][8] = 0.0; + rJacobian[12][9] = -(mDt * (var_x95)); + rJacobian[12][10] = 0.0; + rJacobian[12][11] = 0.0; + rJacobian[12][12] = 1.0 - (mDt * (-var_x104 - var_x98)); + rJacobian[12][13] = -(mDt * (var_x101)); + rJacobian[12][14] = -(mDt * (var_x91)); + rJacobian[12][15] = 0.0; + rJacobian[12][16] = 0.0; + rJacobian[12][17] = 0.0; + rJacobian[12][18] = 0.0; + rJacobian[12][19] = 0.0; + rJacobian[12][20] = 0.0; + rJacobian[12][21] = 0.0; + rJacobian[12][22] = 0.0; + rJacobian[12][23] = 0.0; + rJacobian[12][24] = 0.0; + rJacobian[12][25] = 0.0; + rJacobian[13][0] = 0.0; + rJacobian[13][1] = 0.0; + rJacobian[13][2] = 0.0; + rJacobian[13][3] = 0.0; + rJacobian[13][4] = 0.0; + rJacobian[13][5] = 0.0; + rJacobian[13][6] = 0.0; + rJacobian[13][7] = 0.0; + rJacobian[13][8] = -(mDt * (var_x110)); + rJacobian[13][9] = -(mDt * (var_x110)); + rJacobian[13][10] = -(mDt * (var_x110)); + rJacobian[13][11] = -(mDt * (var_x110)); + rJacobian[13][12] = -(mDt * (var_x103 - var_x95)); + rJacobian[13][13] = 1.0 - (mDt * (-var_x105 - var_x98)); + rJacobian[13][14] = -(mDt * (var_x110)); + rJacobian[13][15] = -(mDt * (var_x110)); + rJacobian[13][16] = 0.0; + rJacobian[13][17] = 0.0; + rJacobian[13][18] = 0.0; + rJacobian[13][19] = 0.0; + rJacobian[13][20] = 0.0; + rJacobian[13][21] = 0.0; + rJacobian[13][22] = 0.0; + rJacobian[13][23] = 0.0; + rJacobian[13][24] = 0.0; + rJacobian[13][25] = 0.0; + rJacobian[14][0] = 0.0; + rJacobian[14][1] = 0.0; + rJacobian[14][2] = 0.0; + rJacobian[14][3] = 0.0; + rJacobian[14][4] = 0.0; + rJacobian[14][5] = 0.0; + rJacobian[14][6] = 0.0; + rJacobian[14][7] = 0.0; + rJacobian[14][8] = -(mDt * (var_x95)); + rJacobian[14][9] = 0.0; + rJacobian[14][10] = -(mDt * (var_x98)); + rJacobian[14][11] = 0.0; + rJacobian[14][12] = -(mDt * (var_x96)); + rJacobian[14][13] = 0.0; + rJacobian[14][14] = 1.0 - (mDt * (-var_x109 - var_x111 - var_x91 - var_x98)); + rJacobian[14][15] = -(mDt * (var_x112)); + rJacobian[14][16] = 0.0; + rJacobian[14][17] = 0.0; + rJacobian[14][18] = 0.0; + rJacobian[14][19] = 0.0; + rJacobian[14][20] = 0.0; + rJacobian[14][21] = 0.0; + rJacobian[14][22] = 0.0; + rJacobian[14][23] = 0.0; + rJacobian[14][24] = 0.0; + rJacobian[14][25] = 0.0; + rJacobian[15][0] = 0.0; + rJacobian[15][1] = 0.0; + rJacobian[15][2] = 0.0; + rJacobian[15][3] = 0.0; + rJacobian[15][4] = 0.0; + rJacobian[15][5] = 0.0; + rJacobian[15][6] = 0.0; + rJacobian[15][7] = 0.0; + rJacobian[15][8] = -(mDt * (var_x94)); + rJacobian[15][9] = 0.0; + rJacobian[15][10] = 0.0; + rJacobian[15][11] = 0.0; + rJacobian[15][12] = 0.0; + rJacobian[15][13] = 0.0; + rJacobian[15][14] = -(mDt * (var_x111)); + rJacobian[15][15] = 1.0 - (mDt * (-var_x100 - var_x112)); + rJacobian[15][16] = 0.0; + rJacobian[15][17] = 0.0; + rJacobian[15][18] = 0.0; + rJacobian[15][19] = 0.0; + rJacobian[15][20] = 0.0; + rJacobian[15][21] = 0.0; + rJacobian[15][22] = 0.0; + rJacobian[15][23] = 0.0; + rJacobian[15][24] = 0.0; + rJacobian[15][25] = 0.0; + rJacobian[16][0] = 0.0; + rJacobian[16][1] = 0.0; + rJacobian[16][2] = 0.0; + rJacobian[16][3] = 0.0; + rJacobian[16][4] = 0.0; + rJacobian[16][5] = 0.0; + rJacobian[16][6] = 0.0; + rJacobian[16][7] = 0.0; + rJacobian[16][8] = 0.0; + rJacobian[16][9] = 0.0; + rJacobian[16][10] = 0.0; + rJacobian[16][11] = 0.0; + rJacobian[16][12] = 0.0; + rJacobian[16][13] = 0.0; + rJacobian[16][14] = 0.0; + rJacobian[16][15] = 0.0; + rJacobian[16][16] = 1.0; + rJacobian[16][17] = 0.0; + rJacobian[16][18] = 0.0; + rJacobian[16][19] = 0.0; + rJacobian[16][20] = 0.0; + rJacobian[16][21] = 0.0; + rJacobian[16][22] = 0.0; + rJacobian[16][23] = 0.0; + rJacobian[16][24] = 0.0; + rJacobian[16][25] = 0.0; + rJacobian[17][0] = 0.0; + rJacobian[17][1] = 0.0; + rJacobian[17][2] = 0.0; + rJacobian[17][3] = 0.0; + rJacobian[17][4] = 0.0; + rJacobian[17][5] = 0.0; + rJacobian[17][6] = 0.0; + rJacobian[17][7] = 0.0; + rJacobian[17][8] = 0.0; + rJacobian[17][9] = 0.0; + rJacobian[17][10] = 0.0; + rJacobian[17][11] = 0.0; + rJacobian[17][12] = 0.0; + rJacobian[17][13] = 0.0; + rJacobian[17][14] = 0.0; + rJacobian[17][15] = 0.0; + rJacobian[17][16] = -(mDt * (-var_x116 * var_x117 * var_x118)); + rJacobian[17][17] = 1.0 - (mDt * (var_x117 * (-26.535875647668394 * var_x120 - var_x118 * var_x121 * var_chaste_interface__non_inactivating_steady_state_K_I__iKss - var_x121 * pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * mParameters[10] - 14.188732708808288 * var_x113 * pow(var_chaste_interface__fast_transient_outward_K_I__ato_f, 3) * var_chaste_interface__fast_transient_outward_K_I__ito_f - 6.6339689119170986 * var_x113 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur - 26.535875647668394 * var_x114 * var_x124 * mParameters[7] / var_x123 + 2.3776144580310881 * var_x113 * var_x116 * var_x122 * var_x124 * mParameters[2] * mParameters[7] / pow(var_x123, 2)))); + rJacobian[17][18] = 0.0; + rJacobian[17][19] = 0.0; + rJacobian[17][20] = 0.0; + rJacobian[17][21] = -(mDt * (-var_x117 * (-26.535875647668394 * log(var_x119 * (1 * mParameters[2] + 0.020408163265306124 * mParameters[3])) + var_chaste_interface__cell__V) * mParameters[9])); + rJacobian[17][22] = 0.0; + rJacobian[17][23] = 0.0; + rJacobian[17][24] = 0.0; + rJacobian[17][25] = -(mDt * (var_x117 * (8.8814310874467535e-10 * var_x127 - 0.54154848260547739 * var_x120))); + rJacobian[18][0] = 0.0; + rJacobian[18][1] = 0.0; + rJacobian[18][2] = 0.0; + rJacobian[18][3] = 0.0; + rJacobian[18][4] = 0.0; + rJacobian[18][5] = 0.0; + rJacobian[18][6] = 0.0; + rJacobian[18][7] = 0.0; + rJacobian[18][8] = 0.0; + rJacobian[18][9] = 0.0; + rJacobian[18][10] = 0.0; + rJacobian[18][11] = 0.0; + rJacobian[18][12] = 0.0; + rJacobian[18][13] = 0.0; + rJacobian[18][14] = 0.0; + rJacobian[18][15] = 0.0; + rJacobian[18][16] = 0.0; + rJacobian[18][17] = 0.0; + rJacobian[18][18] = 1.0 - (mDt * (-0.023761000000000001 - var_x128 - 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__cell__V))); + rJacobian[18][19] = -(mDt * (0.036777999999999998 - var_x128)); + rJacobian[18][20] = -(mDt * (var_x129)); + rJacobian[18][21] = -(mDt * (var_x129)); + rJacobian[18][22] = 0.0; + rJacobian[18][23] = 0.0; + rJacobian[18][24] = 0.0; + rJacobian[18][25] = 0.0; + rJacobian[19][0] = 0.0; + rJacobian[19][1] = 0.0; + rJacobian[19][2] = 0.0; + rJacobian[19][3] = 0.0; + rJacobian[19][4] = 0.0; + rJacobian[19][5] = 0.0; + rJacobian[19][6] = 0.0; + rJacobian[19][7] = 0.0; + rJacobian[19][8] = 0.0; + rJacobian[19][9] = 0.0; + rJacobian[19][10] = 0.0; + rJacobian[19][11] = 0.0; + rJacobian[19][12] = 0.0; + rJacobian[19][13] = 0.0; + rJacobian[19][14] = 0.0; + rJacobian[19][15] = 0.0; + rJacobian[19][16] = 0.0; + rJacobian[19][17] = 0.0; + rJacobian[19][18] = -(mDt * (0.023761000000000001)); + rJacobian[19][19] = 1.0 - (mDt * (-0.036777999999999998 - var_x130)); + rJacobian[19][20] = 0.0; + rJacobian[19][21] = -(mDt * (var_x131)); + rJacobian[19][22] = 0.0; + rJacobian[19][23] = 0.0; + rJacobian[19][24] = 0.0; + rJacobian[19][25] = 0.0; + rJacobian[20][0] = 0.0; + rJacobian[20][1] = 0.0; + rJacobian[20][2] = 0.0; + rJacobian[20][3] = 0.0; + rJacobian[20][4] = 0.0; + rJacobian[20][5] = 0.0; + rJacobian[20][6] = 0.0; + rJacobian[20][7] = 0.0; + rJacobian[20][8] = 0.0; + rJacobian[20][9] = 0.0; + rJacobian[20][10] = 0.0; + rJacobian[20][11] = 0.0; + rJacobian[20][12] = 0.0; + rJacobian[20][13] = 0.0; + rJacobian[20][14] = 0.0; + rJacobian[20][15] = 0.0; + rJacobian[20][16] = 0.0; + rJacobian[20][17] = 0.0; + rJacobian[20][18] = 0.0; + rJacobian[20][19] = 0.0; + rJacobian[20][20] = 1.0 - (mDt * (-var_x132)); + rJacobian[20][21] = -(mDt * (var_x133)); + rJacobian[20][22] = 0.0; + rJacobian[20][23] = 0.0; + rJacobian[20][24] = 0.0; + rJacobian[20][25] = 0.0; + rJacobian[21][0] = 0.0; + rJacobian[21][1] = 0.0; + rJacobian[21][2] = 0.0; + rJacobian[21][3] = 0.0; + rJacobian[21][4] = 0.0; + rJacobian[21][5] = 0.0; + rJacobian[21][6] = 0.0; + rJacobian[21][7] = 0.0; + rJacobian[21][8] = 0.0; + rJacobian[21][9] = 0.0; + rJacobian[21][10] = 0.0; + rJacobian[21][11] = 0.0; + rJacobian[21][12] = 0.0; + rJacobian[21][13] = 0.0; + rJacobian[21][14] = 0.0; + rJacobian[21][15] = 0.0; + rJacobian[21][16] = 0.0; + rJacobian[21][17] = 0.0; + rJacobian[21][18] = 0.0; + rJacobian[21][19] = -(mDt * (var_x130)); + rJacobian[21][20] = -(mDt * (var_x132)); + rJacobian[21][21] = 1.0 - (mDt * (-var_x131 - var_x133)); + rJacobian[21][22] = 0.0; + rJacobian[21][23] = 0.0; + rJacobian[21][24] = 0.0; + rJacobian[21][25] = 0.0; + rJacobian[22][0] = 0.0; + rJacobian[22][1] = 0.0; + rJacobian[22][2] = 0.0; + rJacobian[22][3] = 0.0; + rJacobian[22][4] = 0.0; + rJacobian[22][5] = 0.0; + rJacobian[22][6] = 0.0; + rJacobian[22][7] = 0.0; + rJacobian[22][8] = 0.0; + rJacobian[22][9] = 0.0; + rJacobian[22][10] = 0.0; + rJacobian[22][11] = 0.0; + rJacobian[22][12] = 0.0; + rJacobian[22][13] = 0.0; + rJacobian[22][14] = 0.0; + rJacobian[22][15] = 0.0; + rJacobian[22][16] = 0.0; + rJacobian[22][17] = 0.0; + rJacobian[22][18] = 0.0; + rJacobian[22][19] = 0.0; + rJacobian[22][20] = 0.0; + rJacobian[22][21] = 0.0; + rJacobian[22][22] = 1.0 - (mDt * (-0.00080000000000000004)); + rJacobian[22][23] = -(mDt * (0.0089999999999999993)); + rJacobian[22][24] = 0.0; + rJacobian[22][25] = 0.0; + rJacobian[23][0] = 0.0; + rJacobian[23][1] = 0.0; + rJacobian[23][2] = 0.0; + rJacobian[23][3] = 0.0; + rJacobian[23][4] = 0.0; + rJacobian[23][5] = -(mDt * (-var_x134 + 0.024299999999999999 * var_x135 * (1 - var_x9 - var_chaste_interface__ryanodine_receptors__P_C2))); + rJacobian[23][6] = 0.0; + rJacobian[23][7] = 0.0; + rJacobian[23][8] = 0.0; + rJacobian[23][9] = 0.0; + rJacobian[23][10] = 0.0; + rJacobian[23][11] = 0.0; + rJacobian[23][12] = 0.0; + rJacobian[23][13] = 0.0; + rJacobian[23][14] = 0.0; + rJacobian[23][15] = 0.0; + rJacobian[23][16] = 0.0; + rJacobian[23][17] = 0.0; + rJacobian[23][18] = 0.0; + rJacobian[23][19] = 0.0; + rJacobian[23][20] = 0.0; + rJacobian[23][21] = 0.0; + rJacobian[23][22] = -(mDt * (0.00080000000000000004 - var_x136)); + rJacobian[23][23] = 1.0 - (mDt * (-0.080249999999999988 - var_x136 - var_x137)); + rJacobian[23][24] = -(mDt * (0.96499999999999997 - var_x136)); + rJacobian[23][25] = 0.0; + rJacobian[24][0] = 0.0; + rJacobian[24][1] = 0.0; + rJacobian[24][2] = 0.0; + rJacobian[24][3] = 0.0; + rJacobian[24][4] = 0.0; + rJacobian[24][5] = -(mDt * (var_x134)); + rJacobian[24][6] = 0.0; + rJacobian[24][7] = 0.0; + rJacobian[24][8] = 0.0; + rJacobian[24][9] = 0.0; + rJacobian[24][10] = 0.0; + rJacobian[24][11] = 0.0; + rJacobian[24][12] = 0.0; + rJacobian[24][13] = 0.0; + rJacobian[24][14] = 0.0; + rJacobian[24][15] = 0.0; + rJacobian[24][16] = 0.0; + rJacobian[24][17] = 0.0; + rJacobian[24][18] = 0.0; + rJacobian[24][19] = 0.0; + rJacobian[24][20] = 0.0; + rJacobian[24][21] = 0.0; + rJacobian[24][22] = 0.0; + rJacobian[24][23] = -(mDt * (var_x137)); + rJacobian[24][24] = 1.0 - (mDt * (-0.96499999999999997)); + rJacobian[24][25] = 0.0; + rJacobian[25][0] = 0.0; + rJacobian[25][1] = 0.0; + rJacobian[25][2] = 0.0; + rJacobian[25][3] = 0.0; + rJacobian[25][4] = -(mDt * (var_x117 * (3000 * var_x60 - var_x138 * var_x61))); + rJacobian[25][5] = 0.0; + rJacobian[25][6] = 0.0; + rJacobian[25][7] = 0.0; + rJacobian[25][8] = 0.0; + rJacobian[25][9] = 0.0; + rJacobian[25][10] = 0.0; + rJacobian[25][11] = 0.0; + rJacobian[25][12] = 0.0; + rJacobian[25][13] = 0.0; + rJacobian[25][14] = 0.0; + rJacobian[25][15] = -(mDt * (-var_x117 * (-26.535875647668394 * log(var_x139 * (1 * mParameters[3] + 0.1111111111111111 * mParameters[2])) + var_chaste_interface__cell__V) * mParameters[6])); + rJacobian[25][16] = 0.0; + rJacobian[25][17] = -(mDt * (var_x117 * (-2.9484306275187104 * var_x140 - 0.0076659196315486469 * var_x139))); + rJacobian[25][18] = 0.0; + rJacobian[25][19] = 0.0; + rJacobian[25][20] = 0.0; + rJacobian[25][21] = 0.0; + rJacobian[25][22] = 0.0; + rJacobian[25][23] = 0.0; + rJacobian[25][24] = 0.0; + rJacobian[25][25] = 1.0 - (mDt * (var_x117 * (-9 * var_x71 - 0.068993276683937815 * var_x139 - 1.332214663117013e-9 * var_x127 - 26.535875647668394 * var_x140 - var_x138 * var_x70))); + } + + void Cellli_mouse_2010FromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 9.499150681398009e-05 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.0954184301907784 + double var_chaste_interface__L_type_calcium_current__O = rY[10]; + // Units: dimensionless; Initial value: 1.23713515513533e-06 + double var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + double var_chaste_interface__sodium_concentration__Nai = rY[13]; + // Units: micromolar; Initial value: 12364.7482121793 + double var_chaste_interface__fast_sodium_current__O_Na = rY[14]; + // Units: dimensionless; Initial value: 1.46826771436314e-06 + double var_chaste_interface__potassium_concentration__Ki = rY[22]; + // Units: micromolar; Initial value: 115599.50642567 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; + // Units: dimensionless; Initial value: 0.00346258606821817 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; + // Units: dimensionless; Initial value: 0.955684946168062 + double var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + double var_chaste_interface__non_inactivating_steady_state_K_I__iKss = rY[26]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_K_I__O_K = rY[27]; + // Units: dimensionless; Initial value: 0.0131742086125972 + double var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + double var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; + // Units: dimensionless; Initial value: 0.0142335908879204 + double var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; + // Units: dimensionless; Initial value: 0.996989882138174 + double var_chaste_interface__slow_transient_outward_K_I__ato_s = rY[34]; + // Units: dimensionless; Initial value: 0.0443263407760382 + double var_chaste_interface__slow_transient_outward_K_I__ito_s = rY[35]; + // Units: dimensionless; Initial value: 0.887568880831388 + + const double var_calcium_activated_chloride_current__E_Cl = -40; // millivolt + const double var_calcium_activated_chloride_current__Km_Cl = 10; // micromolar + const double var_calcium_activated_chloride_current__g_ClCa = 10; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.00069999999999999999; // milliS_per_microF + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__Km_pCa = 0.28849999999999998; // micromolar + const double var_calcium_pump_current__i_pCa_max = 0.095500000000000002; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_cell__Acap = 0.00013866; // cm2 + const double var_cell__F = 96.5; // coulomb_per_millimole + const double var_cell__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_cell__T = 308; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_cell__R * var_cell__T * log(mParameters[1] / var_calcium_concentration__Cai) / var_cell__F; // millivolt + const double var_L_type_calcium_current__FVRT = var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T); // dimensionless + const double var_L_type_calcium_current__FVRT_Ca = 2 * var_L_type_calcium_current__FVRT; // dimensionless + const double var_calcium_activated_chloride_current__O_ClCa = 0.20000000000000001 / (1 + exp(5.9871794871794881 - 0.12820512820512822 * var_chaste_interface__cell__V)); // dimensionless + const double var_calcium_activated_chloride_current__i_ClCa = (-var_calcium_activated_chloride_current__E_Cl + var_chaste_interface__cell__V) * var_calcium_activated_chloride_current__O_ClCa * var_calcium_activated_chloride_current__g_ClCa * var_calcium_concentration__Cai / (var_calcium_activated_chloride_current__Km_Cl + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__cell__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_cell__Vss = 2.1999999999999998e-8; // microlitre + const double var_L_type_calcium_current__i_CaL = ((fabs(var_L_type_calcium_current__FVRT_Ca) > 1.0000000000000001e-5) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-var_L_type_calcium_current__FVRT_Ca)) * var_L_type_calcium_current__FVRT_Ca * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-2.0000000000000002e-5 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-1.0000000000000001e-5)) * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-1.0000000000000001e-5)) * var_cell__Acap * mParameters[5]))); // picoA_per_picoF + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // picoA_per_picoF + const double var_fast_transient_outward_K_I__g_Kto_f = 0.53469999999999995; // milliS_per_microF + const double var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * log(mParameters[2] / var_chaste_interface__potassium_concentration__Ki) / var_cell__F; // millivolt + const double var_fast_transient_outward_K_I__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_K_I__ato_f, 3) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_fast_transient_outward_K_I__g_Kto_f * var_chaste_interface__fast_transient_outward_K_I__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_K_I__i_Kss = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8] * var_chaste_interface__non_inactivating_steady_state_K_I__iKss; // picoA_per_picoF + const double var_slow_delayed_rectifier_K_I__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[10]; // picoA_per_picoF + const double var_slow_transient_outward_K_I__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_K_I__i_Kto_s = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__slow_transient_outward_K_I__ato_s * var_slow_transient_outward_K_I__g_Kto_s * var_chaste_interface__slow_transient_outward_K_I__ito_s; // picoA_per_picoF + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mAllo = 0; // micromolar + const double var_sodium_calcium_exchange_current__K_mCai = 3.6000000000000001; // micromolar + const double var_sodium_calcium_exchange_current__K_mCao = 1400; // micromolar + const double var_sodium_calcium_exchange_current__K_mNai = 12000; // micromolar + const double var_sodium_calcium_exchange_current__K_mNao = 88000; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.27000000000000002; // dimensionless + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log((1 * mParameters[3] + 0.1111111111111111 * mParameters[2]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[6]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_K_I__i_Kr = (-var_cell__R * var_cell__T * log((1 * mParameters[2] + 0.020408163265306124 * mParameters[3]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_cell__F + var_chaste_interface__cell__V) * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NCX = (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - pow(mParameters[3], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * mParameters[11] / ((1 + pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (pow(mParameters[3], 3) * var_calcium_concentration__Cai + pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + pow(mParameters[3], 3) * (1 + pow(var_chaste_interface__sodium_concentration__Nai, 3) / pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + pow(var_sodium_calcium_exchange_current__K_mNai, 3) * (1 + var_calcium_concentration__Cai / var_sodium_calcium_exchange_current__K_mCai) * mParameters[1])); // picoA_per_picoF + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 16600; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 2.4860000000000002; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[3]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[2] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 2.3999999999999999)) * (mParameters[2] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double var_time_independent_K_I__i_K1 = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[2] * mParameters[7] / ((1 + exp(0.089599999999999999 * var_chaste_interface__cell__V - 0.089599999999999999 * var_fast_transient_outward_K_I__E_K)) * (210 + mParameters[2])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur = 0.25; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__i_Kur = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur * var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_cell__V = -var_L_type_calcium_current__i_CaL - var_calcium_activated_chloride_current__i_ClCa - var_calcium_background_current__i_Cab - var_calcium_pump_current__i_pCa - var_cell__i_Stim - var_fast_sodium_current__i_Na - var_fast_transient_outward_K_I__i_Kto_f - var_non_inactivating_steady_state_K_I__i_Kss - var_rapid_delayed_rectifier_K_I__i_Kr - var_slow_delayed_rectifier_K_I__i_Ks - var_slow_transient_outward_K_I__i_Kto_s - var_sodium_background_current__i_Nab - var_sodium_calcium_exchange_current__i_NCX - var_sodium_potassium_pump_current__i_NaK - var_time_independent_K_I__i_K1 - var_ultra_rapidly_activating_delayed_rectifier_K_I__i_Kur; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_cell__V; + } + + void Cellli_mouse_2010FromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + double var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; + // Units: dimensionless; Initial value: 0.00346258606821817 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; + // Units: dimensionless; Initial value: 0.955684946168062 + double var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + double var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + double var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; + // Units: dimensionless; Initial value: 0.0142335908879204 + double var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; + // Units: dimensionless; Initial value: 0.996989882138174 + double var_chaste_interface__slow_transient_outward_K_I__ato_s = rY[34]; + // Units: dimensionless; Initial value: 0.0443263407760382 + double var_chaste_interface__slow_transient_outward_K_I__ito_s = rY[35]; + // Units: dimensionless; Initial value: 0.887568880831388 + + const double var_L_type_calcium_current__const5 = 8.1999999999999993; + const double var_L_type_calcium_current__y_gate_tau_const1 = 8; + const double var_L_type_calcium_current__y_gate_tau_const2 = 315; + const double var_L_type_calcium_current__y_gate_inf = 1 / (1 + exp((33 + var_chaste_interface__cell__V) / var_L_type_calcium_current__const5)) + 0.10000000000000001 / (1 + exp(6.666666666666667 - 0.16666666666666666 * var_chaste_interface__cell__V)); + const double var_L_type_calcium_current__y_gate_tau = var_L_type_calcium_current__y_gate_tau_const2 / (1 + exp(7.5 + 0.25 * var_chaste_interface__cell__V)) + var_L_type_calcium_current__y_gate_tau_const1; + const double var_fast_transient_outward_K_I__alpha_a = 0.18064 * exp(1.6096500000000002 + 0.035770000000000003 * var_chaste_interface__cell__V); + const double var_fast_transient_outward_K_I__beta_a = 0.39560000000000001 * exp(-2.8066499999999999 - 0.062370000000000002 * var_chaste_interface__cell__V); + const double var_fast_transient_outward_K_I__itof_iss = 1 / (1 + exp(10.279999999999999 + 0.20000000000000001 * var_chaste_interface__cell__V)); + const double var_fast_transient_outward_K_I__tau_ito_f = 9.6645000000000003 + 10.936199999999999 / (1 + exp(10.279999999999999 + 0.20000000000000001 * var_chaste_interface__cell__V)); + const double var_non_inactivating_steady_state_K_I__tau_Kss = 13.17 + 39.299999999999997 * exp(-0.050000000000000003 * var_chaste_interface__cell__V); + const double var_slow_delayed_rectifier_K_I__alpha_n = (((var_chaste_interface__cell__V >= -26.500000781250002) && (var_chaste_interface__cell__V <= -26.499999218749998)) ? (-3.7604140624912359e-12 / (1 - exp(9.9999999999766942e-8)) + 640000.00000149151 * (26.500000781250002 + var_chaste_interface__cell__V) * (3.7604140624912359e-12 / (1 - exp(9.9999999999766942e-8)) + 3.7604140624912359e-12 / (1 - exp(-9.9999999999766942e-8)))) : (4.8133299999999997e-6 * (26.5 + var_chaste_interface__cell__V) / (1 - exp(-3.3919999999999999 - 0.128 * var_chaste_interface__cell__V)))); + const double var_slow_delayed_rectifier_K_I__beta_n = 9.5333299999999997e-5 * exp(-1.0069999999999999 - 0.037999999999999999 * var_chaste_interface__cell__V); + const double var_slow_transient_outward_K_I__tau_ta_s = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__cell__V); + const double var_slow_transient_outward_K_I__tau_ti_s = 270 + 1050 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__cell__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__ass = 1 / (1 + exp(-0.64479166666666676 - 0.10416666666666667 * var_chaste_interface__cell__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__iss = 1 / (1 + exp(7.7962962962962958 + 0.18518518518518517 * var_chaste_interface__cell__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_aur = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__cell__V); + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_i_const = 643; + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_iur = 1000 / (1 + exp(7.7962962962962958 + 0.18518518518518517 * var_chaste_interface__cell__V)) + var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_i_const; + + + rY[12] = (var_chaste_interface__L_type_calcium_current__y_gate + ((var_L_type_calcium_current__y_gate_inf / var_L_type_calcium_current__y_gate_tau) * mDt)) / (1.0 - ((-1 / var_L_type_calcium_current__y_gate_tau) * mDt)); + rY[32] = (var_chaste_interface__fast_transient_outward_K_I__ato_f + ((1 * var_fast_transient_outward_K_I__alpha_a) * mDt)) / (1.0 - ((-var_fast_transient_outward_K_I__alpha_a - var_fast_transient_outward_K_I__beta_a) * mDt)); + rY[33] = (var_chaste_interface__fast_transient_outward_K_I__ito_f + ((var_fast_transient_outward_K_I__itof_iss / var_fast_transient_outward_K_I__tau_ito_f) * mDt)) / (1.0 - ((-1 / var_fast_transient_outward_K_I__tau_ito_f) * mDt)); + rY[25] = (var_chaste_interface__non_inactivating_steady_state_K_I__aKss + ((var_ultra_rapidly_activating_delayed_rectifier_K_I__ass / var_non_inactivating_steady_state_K_I__tau_Kss) * mDt)) / (1.0 - ((-1 / var_non_inactivating_steady_state_K_I__tau_Kss) * mDt)); + rY[31] = (var_chaste_interface__slow_delayed_rectifier_K_I__nKs + ((1 * var_slow_delayed_rectifier_K_I__alpha_n) * mDt)) / (1.0 - ((-var_slow_delayed_rectifier_K_I__alpha_n - var_slow_delayed_rectifier_K_I__beta_n) * mDt)); + rY[34] = (var_chaste_interface__slow_transient_outward_K_I__ato_s + ((var_ultra_rapidly_activating_delayed_rectifier_K_I__ass / var_slow_transient_outward_K_I__tau_ta_s) * mDt)) / (1.0 - ((-1 / var_slow_transient_outward_K_I__tau_ta_s) * mDt)); + rY[35] = (var_chaste_interface__slow_transient_outward_K_I__ito_s + ((var_ultra_rapidly_activating_delayed_rectifier_K_I__iss / var_slow_transient_outward_K_I__tau_ti_s) * mDt)) / (1.0 - ((-1 / var_slow_transient_outward_K_I__tau_ti_s) * mDt)); + rY[23] = (var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur + ((var_ultra_rapidly_activating_delayed_rectifier_K_I__ass / var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_aur) * mDt)) / (1.0 - ((-1 / var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_aur) * mDt)); + rY[24] = (var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur + ((var_ultra_rapidly_activating_delayed_rectifier_K_I__iss / var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_iur) * mDt)) / (1.0 - ((-1 / var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_iur) * mDt)); + + double _guess[26] = {rY[11],rY[10],rY[3],rY[4],rY[1],rY[2],rY[6],rY[5],rY[15],rY[16],rY[17],rY[18],rY[20],rY[21],rY[19],rY[14],rY[26],rY[22],rY[28],rY[29],rY[30],rY[27],rY[9],rY[7],rY[8],rY[13]}; + CardiacNewtonSolver<26,Cellli_mouse_2010FromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<26,Cellli_mouse_2010FromCellMLBackwardEuler>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[11] = _guess[0]; + rY[10] = _guess[1]; + rY[3] = _guess[2]; + rY[4] = _guess[3]; + rY[1] = _guess[4]; + rY[2] = _guess[5]; + rY[6] = _guess[6]; + rY[5] = _guess[7]; + rY[15] = _guess[8]; + rY[16] = _guess[9]; + rY[17] = _guess[10]; + rY[18] = _guess[11]; + rY[20] = _guess[12]; + rY[21] = _guess[13]; + rY[19] = _guess[14]; + rY[14] = _guess[15]; + rY[26] = _guess[16]; + rY[22] = _guess[17]; + rY[28] = _guess[18]; + rY[29] = _guess[19]; + rY[30] = _guess[20]; + rY[27] = _guess[21]; + rY[9] = _guess[22]; + rY[7] = _guess[23]; + rY[8] = _guess[24]; + rY[13] = _guess[25]; + } + + std::vector Cellli_mouse_2010FromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 9.499150681398009e-05 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.0954184301907784 + double var_chaste_interface__calcium_concentration__CaJSR = rY[3]; + // Units: micromolar; Initial value: 171.167969039613 + double var_chaste_interface__calcium_fluxes__P_RyR = rY[5]; + // Units: dimensionless; Initial value: 0.000280539508743811 + double var_chaste_interface__ryanodine_receptors__P_O1 = rY[7]; + // Units: dimensionless; Initial value: 0.00571393383393735 + double var_chaste_interface__ryanodine_receptors__P_O2 = rY[8]; + // Units: dimensionless; Initial value: 2.09864618235341e-08 + double var_chaste_interface__L_type_calcium_current__O = rY[10]; + // Units: dimensionless; Initial value: 1.23713515513533e-06 + double var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + double var_chaste_interface__sodium_concentration__Nai = rY[13]; + // Units: micromolar; Initial value: 12364.7482121793 + double var_chaste_interface__fast_sodium_current__O_Na = rY[14]; + // Units: dimensionless; Initial value: 1.46826771436314e-06 + double var_chaste_interface__potassium_concentration__Ki = rY[22]; + // Units: micromolar; Initial value: 115599.50642567 + double var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + double var_chaste_interface__non_inactivating_steady_state_K_I__iKss = rY[26]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_K_I__O_K = rY[27]; + // Units: dimensionless; Initial value: 0.0131742086125972 + double var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + + // Mathematics + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_fluxes__v1_caff = 10; // per_millisecond + const double var_cell__Acap = 0.00013866; // cm2 + const double var_cell__F = 96.5; // coulomb_per_millimole + const double var_cell__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_cell__T = 308; // kelvin + const double var_L_type_calcium_current__FVRT = var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T); // dimensionless + const double var_L_type_calcium_current__FVRT_Ca = 2 * var_L_type_calcium_current__FVRT; // dimensionless + const double var_cell__Vss = 2.1999999999999998e-8; // microlitre + const double var_L_type_calcium_current__i_CaL = ((fabs(var_L_type_calcium_current__FVRT_Ca) > 1.0000000000000001e-5) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-var_L_type_calcium_current__FVRT_Ca)) * var_L_type_calcium_current__FVRT_Ca * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-2.0000000000000002e-5 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-1.0000000000000001e-5)) * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-1.0000000000000001e-5)) * var_cell__Acap * mParameters[5]))); // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_cell__prepulses_number = 10000000000.0; // dimensionless + const double var_chaste_interface__cell__stim_period = 333.33300000000003; // millisecond + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * log(mParameters[2] / var_chaste_interface__potassium_concentration__Ki) / var_cell__F; // millivolt + const double var_non_inactivating_steady_state_K_I__i_Kss = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8] * var_chaste_interface__non_inactivating_steady_state_K_I__iKss; // picoA_per_picoF + const double var_non_inactivating_steady_state_K_I__i_Kss_converted = HeartConfig::Instance()->GetCapacitance() * var_non_inactivating_steady_state_K_I__i_Kss; // uA_per_cm2 + const double var_calcium_fluxes__J_rel = ((var_chaste_interface__environment__time < var_cell__prepulses_number * var_chaste_interface__cell__stim_period) ? ((-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[0]) : ((-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * var_calcium_fluxes__v1_caff)); // micromolar_per_millisecond + const double var_slow_delayed_rectifier_K_I__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[10]; // picoA_per_picoF + const double var_slow_delayed_rectifier_K_I__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_I__i_Ks; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__K_mAllo = 0; // micromolar + const double var_sodium_calcium_exchange_current__K_mCai = 3.6000000000000001; // micromolar + const double var_sodium_calcium_exchange_current__K_mCao = 1400; // micromolar + const double var_sodium_calcium_exchange_current__K_mNai = 12000; // micromolar + const double var_sodium_calcium_exchange_current__K_mNao = 88000; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.27000000000000002; // dimensionless + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log((1 * mParameters[3] + 0.1111111111111111 * mParameters[2]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[6]; // picoA_per_picoF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_K_I__i_Kr = (-var_cell__R * var_cell__T * log((1 * mParameters[2] + 0.020408163265306124 * mParameters[3]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_cell__F + var_chaste_interface__cell__V) * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_K_I__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_I__i_Kr; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__i_NCX = (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - pow(mParameters[3], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * mParameters[11] / ((1 + pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (pow(mParameters[3], 3) * var_calcium_concentration__Cai + pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + pow(mParameters[3], 3) * (1 + pow(var_chaste_interface__sodium_concentration__Nai, 3) / pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + pow(var_sodium_calcium_exchange_current__K_mNai, 3) * (1 + var_calcium_concentration__Cai / var_sodium_calcium_exchange_current__K_mCai) * mParameters[1])); // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NCX_converted = HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchange_current__i_NCX; // uA_per_cm2 + const double var_time_independent_K_I__i_K1 = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[2] * mParameters[7] / ((1 + exp(0.089599999999999999 * var_chaste_interface__cell__V - 0.089599999999999999 * var_fast_transient_outward_K_I__E_K)) * (210 + mParameters[2])); // picoA_per_picoF + const double var_time_independent_K_I__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_K_I__i_K1; // uA_per_cm2 + + std::vector dqs(11); + dqs[0] = var_calcium_fluxes__J_rel; + dqs[1] = var_chaste_interface__calcium_concentration__Cai_converted; + dqs[2] = var_L_type_calcium_current__i_CaL_converted; + dqs[3] = var_fast_sodium_current__i_Na_converted; + dqs[4] = var_time_independent_K_I__i_K1_converted; + dqs[5] = var_non_inactivating_steady_state_K_I__i_Kss_converted; + dqs[6] = var_rapid_delayed_rectifier_K_I__i_Kr_converted; + dqs[7] = var_slow_delayed_rectifier_K_I__i_Ks_converted; + dqs[8] = var_sodium_calcium_exchange_current__i_NCX_converted; + dqs[9] = var_cell__i_Stim_converted; + dqs[10] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "Li_Mouse_2010"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-78.9452115785979); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.499150681398009e-05); + + // rY[2]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(0.0954184301907784); + + // rY[3]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(171.167969039613); + + // rY[4]: + this->mVariableNames.push_back("calcium_concentration__CaNSR"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(404.825013216286); + + // rY[5]: + this->mVariableNames.push_back("calcium_fluxes__P_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000280539508743811); + + // rY[6]: + this->mVariableNames.push_back("calcium_fluxes__CaMKt"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.729027738385079); + + // rY[7]: + this->mVariableNames.push_back("ryanodine_receptors__P_O1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00571393383393735); + + // rY[8]: + this->mVariableNames.push_back("ryanodine_receptors__P_O2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.09864618235341e-08); + + // rY[9]: + this->mVariableNames.push_back("ryanodine_receptors__P_C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.565182571165673); + + // rY[10]: + this->mVariableNames.push_back("L_type_calcium_current__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.23713515513533e-06); + + // rY[11]: + this->mVariableNames.push_back("L_type_calcium_current__I"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.427651445872853); + + // rY[12]: + this->mVariableNames.push_back("L_type_calcium_current__y_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.845044436980163); + + // rY[13]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(12364.7482121793); + + // rY[14]: + this->mVariableNames.push_back("fast_sodium_current__O_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.46826771436314e-06); + + // rY[15]: + this->mVariableNames.push_back("fast_sodium_current__C_Na1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000420472760277688); + + // rY[16]: + this->mVariableNames.push_back("fast_sodium_current__C_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0240114508843199); + + // rY[17]: + this->mVariableNames.push_back("fast_sodium_current__I1_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000517471697712382); + + // rY[18]: + this->mVariableNames.push_back("fast_sodium_current__I2_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.45406116958509e-05); + + // rY[19]: + this->mVariableNames.push_back("fast_sodium_current__IF_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000306123648969581); + + // rY[20]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0174528857380179); + + // rY[21]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.402980726914811); + + // rY[22]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(115599.50642567); + + // rY[23]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_K_I__aur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00346258606821817); + + // rY[24]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_K_I__iur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.955684946168062); + + // rY[25]: + this->mVariableNames.push_back("non_inactivating_steady_state_K_I__aKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.287585636847048); + + // rY[26]: + this->mVariableNames.push_back("non_inactivating_steady_state_K_I__iKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[27]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_I__O_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0131742086125972); + + // rY[28]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_I__C_K1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0011733433957123); + + // rY[29]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_I__C_K2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00105586824723736); + + // rY[30]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_I__I_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00140618453684944); + + // rY[31]: + this->mVariableNames.push_back("slow_delayed_rectifier_K_I__nKs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00336735013094628); + + // rY[32]: + this->mVariableNames.push_back("fast_transient_outward_K_I__ato_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0142335908879204); + + // rY[33]: + this->mVariableNames.push_back("fast_transient_outward_K_I__ito_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.996989882138174); + + // rY[34]: + this->mVariableNames.push_back("slow_transient_outward_K_I__ato_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0443263407760382); + + // rY[35]: + this->mVariableNames.push_back("slow_transient_outward_K_I__ito_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.887568880831388); + + // mParameters[0]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[3]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_non_inactivating_steady_state_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("micromolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_non_inactivating_steady_state_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellli_mouse_2010FromCellMLBackwardEuler) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010--sympy_1_14.cpp new file mode 100644 index 00000000..08735ad9 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/li_mouse_2010--sympy_1_14.cpp @@ -0,0 +1,1876 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: Li_Mouse_2010 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEuler) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "li_mouse_2010.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Cellli_mouse_2010FromCellMLBackwardEuler::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -15 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 3; // millisecond + const double var_chaste_interface__cell__stim_offset = 0; // millisecond + const double var_chaste_interface__cell__stim_period = 333.33300000000003; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_offset + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellli_mouse_2010FromCellMLBackwardEuler::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellli_mouse_2010FromCellMLBackwardEuler::Cellli_mouse_2010FromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<26>( + 36, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 4.5; // (var_calcium_fluxes__v1) [per_millisecond] + this->mParameters[1] = 1400; // (var_cell__Cao) [micromolar] + this->mParameters[2] = 5400; // (var_cell__Ko) [micromolar] + this->mParameters[3] = 134000; // (var_cell__Nao) [micromolar] + this->mParameters[4] = 2.5; // (var_L_type_calcium_current__P_CaL) [per_millisecond] + this->mParameters[5] = 1; // (var_cell__Cm) [microF_per_cm2] + this->mParameters[6] = 16; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[7] = 0.34999999999999998; // (var_time_independent_K_I__g_K1) [milliS_per_microF] + this->mParameters[8] = 0.059499999999999997; // (var_non_inactivating_steady_state_K_I__g_Kss) [milliS_per_microF] + this->mParameters[9] = 0.016500000000000001; // (var_rapid_delayed_rectifier_K_I__g_Kr) [milliS_per_microF] + this->mParameters[10] = 0.0057499999999999999; // (var_slow_delayed_rectifier_K_I__g_Ks) [milliS_per_microF] + this->mParameters[11] = 3.9390000000000001; // (var_sodium_calcium_exchange_current__V_max_NCX) [picoA_per_picoF] + } + + Cellli_mouse_2010FromCellMLBackwardEuler::~Cellli_mouse_2010FromCellMLBackwardEuler() + { + } + + + void Cellli_mouse_2010FromCellMLBackwardEuler::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 36; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellli_mouse_2010FromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 9.499150681398009e-05 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.0954184301907784 + double var_chaste_interface__L_type_calcium_current__O = rY[10]; + // Units: dimensionless; Initial value: 1.23713515513533e-06 + double var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + double var_chaste_interface__sodium_concentration__Nai = rY[13]; + // Units: micromolar; Initial value: 12364.7482121793 + double var_chaste_interface__fast_sodium_current__O_Na = rY[14]; + // Units: dimensionless; Initial value: 1.46826771436314e-06 + double var_chaste_interface__potassium_concentration__Ki = rY[22]; + // Units: micromolar; Initial value: 115599.50642567 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; + // Units: dimensionless; Initial value: 0.00346258606821817 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; + // Units: dimensionless; Initial value: 0.955684946168062 + double var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + double var_chaste_interface__non_inactivating_steady_state_K_I__iKss = rY[26]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_K_I__O_K = rY[27]; + // Units: dimensionless; Initial value: 0.0131742086125972 + double var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + double var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; + // Units: dimensionless; Initial value: 0.0142335908879204 + double var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; + // Units: dimensionless; Initial value: 0.996989882138174 + double var_chaste_interface__slow_transient_outward_K_I__ato_s = rY[34]; + // Units: dimensionless; Initial value: 0.0443263407760382 + double var_chaste_interface__slow_transient_outward_K_I__ito_s = rY[35]; + // Units: dimensionless; Initial value: 0.887568880831388 + + const double var_calcium_activated_chloride_current__E_Cl = -40; // millivolt + const double var_calcium_activated_chloride_current__Km_Cl = 10; // micromolar + const double var_calcium_activated_chloride_current__g_ClCa = 10; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.00069999999999999999; // milliS_per_microF + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__Km_pCa = 0.28849999999999998; // micromolar + const double var_calcium_pump_current__i_pCa_max = 0.095500000000000002; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_cell__Acap = 0.00013866; // cm2 + const double var_cell__F = 96.5; // coulomb_per_millimole + const double var_cell__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_cell__T = 308; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_cell__R * var_cell__T * log(mParameters[1] / var_calcium_concentration__Cai) / var_cell__F; // millivolt + const double var_L_type_calcium_current__FVRT = var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T); // dimensionless + const double var_L_type_calcium_current__FVRT_Ca = 2 * var_L_type_calcium_current__FVRT; // dimensionless + const double var_calcium_activated_chloride_current__O_ClCa = 0.20000000000000001 / (1 + exp(5.9871794871794881 - 0.12820512820512822 * var_chaste_interface__cell__V)); // dimensionless + const double var_calcium_activated_chloride_current__i_ClCa = (-var_calcium_activated_chloride_current__E_Cl + var_chaste_interface__cell__V) * var_calcium_activated_chloride_current__O_ClCa * var_calcium_activated_chloride_current__g_ClCa * var_calcium_concentration__Cai / (var_calcium_activated_chloride_current__Km_Cl + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__cell__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_cell__Vss = 2.1999999999999998e-8; // microlitre + const double var_L_type_calcium_current__i_CaL = ((fabs(var_L_type_calcium_current__FVRT_Ca) > 1.0000000000000001e-5) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-var_L_type_calcium_current__FVRT_Ca)) * var_L_type_calcium_current__FVRT_Ca * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-2.0000000000000002e-5 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-1.0000000000000001e-5)) * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-1.0000000000000001e-5)) * var_cell__Acap * mParameters[5]))); // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_fast_transient_outward_K_I__g_Kto_f = 0.53469999999999995; // milliS_per_microF + const double var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * log(mParameters[2] / var_chaste_interface__potassium_concentration__Ki) / var_cell__F; // millivolt + const double var_fast_transient_outward_K_I__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_K_I__ato_f, 3) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_fast_transient_outward_K_I__g_Kto_f * var_chaste_interface__fast_transient_outward_K_I__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_K_I__i_Kss = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8] * var_chaste_interface__non_inactivating_steady_state_K_I__iKss; // picoA_per_picoF + const double var_non_inactivating_steady_state_K_I__i_Kss_converted = HeartConfig::Instance()->GetCapacitance() * var_non_inactivating_steady_state_K_I__i_Kss; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_I__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[10]; // picoA_per_picoF + const double var_slow_delayed_rectifier_K_I__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_I__i_Ks; // uA_per_cm2 + const double var_slow_transient_outward_K_I__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_K_I__i_Kto_s = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__slow_transient_outward_K_I__ato_s * var_slow_transient_outward_K_I__g_Kto_s * var_chaste_interface__slow_transient_outward_K_I__ito_s; // picoA_per_picoF + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mAllo = 0; // micromolar + const double var_sodium_calcium_exchange_current__K_mCai = 3.6000000000000001; // micromolar + const double var_sodium_calcium_exchange_current__K_mCao = 1400; // micromolar + const double var_sodium_calcium_exchange_current__K_mNai = 12000; // micromolar + const double var_sodium_calcium_exchange_current__K_mNao = 88000; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.27000000000000002; // dimensionless + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log((1 * mParameters[3] + 0.1111111111111111 * mParameters[2]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[6]; // picoA_per_picoF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_K_I__i_Kr = (-var_cell__R * var_cell__T * log((1 * mParameters[2] + 0.020408163265306124 * mParameters[3]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_cell__F + var_chaste_interface__cell__V) * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_K_I__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_I__i_Kr; // uA_per_cm2 + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NCX = (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - pow(mParameters[3], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * mParameters[11] / ((1 + pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (pow(mParameters[3], 3) * var_calcium_concentration__Cai + pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + pow(mParameters[3], 3) * (1 + pow(var_chaste_interface__sodium_concentration__Nai, 3) / pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + pow(var_sodium_calcium_exchange_current__K_mNai, 3) * (1 + var_calcium_concentration__Cai / var_sodium_calcium_exchange_current__K_mCai) * mParameters[1])); // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NCX_converted = HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchange_current__i_NCX; // uA_per_cm2 + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 16600; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 2.4860000000000002; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[3]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[2] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 2.3999999999999999)) * (mParameters[2] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double var_time_independent_K_I__i_K1 = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[2] * mParameters[7] / ((1 + exp(0.089599999999999999 * var_chaste_interface__cell__V - 0.089599999999999999 * var_fast_transient_outward_K_I__E_K)) * (210 + mParameters[2])); // picoA_per_picoF + const double var_time_independent_K_I__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_K_I__i_K1; // uA_per_cm2 + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur = 0.25; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__i_Kur = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur * var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur; // picoA_per_picoF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_calcium_activated_chloride_current__i_ClCa + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Cab + HeartConfig::Instance()->GetCapacitance() * var_calcium_pump_current__i_pCa + HeartConfig::Instance()->GetCapacitance() * var_fast_transient_outward_K_I__i_Kto_f + HeartConfig::Instance()->GetCapacitance() * var_slow_transient_outward_K_I__i_Kto_s + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Nab + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump_current__i_NaK + HeartConfig::Instance()->GetCapacitance() * var_ultra_rapidly_activating_delayed_rectifier_K_I__i_Kur + var_L_type_calcium_current__i_CaL_converted + var_fast_sodium_current__i_Na_converted + var_non_inactivating_steady_state_K_I__i_Kss_converted + var_rapid_delayed_rectifier_K_I__i_Kr_converted + var_slow_delayed_rectifier_K_I__i_Ks_converted + var_sodium_calcium_exchange_current__i_NCX_converted + var_time_independent_K_I__i_K1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellli_mouse_2010FromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[26], double rResidual[26]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + double var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; + // Units: dimensionless; Initial value: 0.00346258606821817 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; + // Units: dimensionless; Initial value: 0.955684946168062 + double var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + double var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + double var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; + // Units: dimensionless; Initial value: 0.0142335908879204 + double var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; + // Units: dimensionless; Initial value: 0.996989882138174 + double var_chaste_interface__slow_transient_outward_K_I__ato_s = rY[34]; + // Units: dimensionless; Initial value: 0.0443263407760382 + double var_chaste_interface__slow_transient_outward_K_I__ito_s = rY[35]; + // Units: dimensionless; Initial value: 0.887568880831388 + + //output_nonlinear_state_assignments + double var_chaste_interface__L_type_calcium_current__I = rCurrentGuess[0]; + double var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[1]; + double var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[2]; + double var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[3]; + double var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[4]; + double var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[5]; + double var_chaste_interface__calcium_fluxes__CaMKt = rCurrentGuess[6]; + double var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[7]; + double var_chaste_interface__fast_sodium_current__C_Na1 = rCurrentGuess[8]; + double var_chaste_interface__fast_sodium_current__C_Na2 = rCurrentGuess[9]; + double var_chaste_interface__fast_sodium_current__I1_Na = rCurrentGuess[10]; + double var_chaste_interface__fast_sodium_current__I2_Na = rCurrentGuess[11]; + double var_chaste_interface__fast_sodium_current__IC_Na2 = rCurrentGuess[12]; + double var_chaste_interface__fast_sodium_current__IC_Na3 = rCurrentGuess[13]; + double var_chaste_interface__fast_sodium_current__IF_Na = rCurrentGuess[14]; + double var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[15]; + double var_chaste_interface__non_inactivating_steady_state_K_I__iKss = rCurrentGuess[16]; + double var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[17]; + double var_chaste_interface__rapid_delayed_rectifier_K_I__C_K1 = rCurrentGuess[18]; + double var_chaste_interface__rapid_delayed_rectifier_K_I__C_K2 = rCurrentGuess[19]; + double var_chaste_interface__rapid_delayed_rectifier_K_I__I_K = rCurrentGuess[20]; + double var_chaste_interface__rapid_delayed_rectifier_K_I__O_K = rCurrentGuess[21]; + double var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[22]; + double var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[23]; + double var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[24]; + double var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[25]; + + //output_equations + const double d_dt_chaste_interface_var_non_inactivating_steady_state_K_I__iKss = 0; // 1 / millisecond + const double var_L_type_calcium_current__K_L = 0.29999999999999999; // micromolar + const double var_L_type_calcium_current__C = 1 - var_chaste_interface__L_type_calcium_current__I - var_chaste_interface__L_type_calcium_current__O; // dimensionless + const double var_L_type_calcium_current__V_L = 0; // millivolt + const double var_L_type_calcium_current__a = 0.0625; // dimensionless + const double var_L_type_calcium_current__b = 0.40000000000000002; // dimensionless + const double var_L_type_calcium_current__delta_V_L = 6.4489000000000001; // millivolt + const double var_L_type_calcium_current__i_CaL_max = 7; // picoA_per_picoF + const double var_L_type_calcium_current__phi_L = 1.798; // dimensionless + const double var_L_type_calcium_current__t_L = 1.5; // millisecond + const double var_L_type_calcium_current__alpha_m = var_L_type_calcium_current__phi_L / var_L_type_calcium_current__t_L; // per_millisecond + const double var_L_type_calcium_current__tau_L = 1150; // millisecond + const double var_calcium_background_current__g_Cab = 0.00069999999999999999; // milliS_per_microF + const double var_calcium_concentration__Bmax = 109; // micromolar + const double var_calcium_concentration__CSQN_tot = 50000; // micromolar + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_concentration__Kd = 0.59999999999999998; // micromolar + const double var_calcium_concentration__Bi = 1 / (1 + var_calcium_concentration__Bmax * var_calcium_concentration__Kd / pow((var_calcium_concentration__Cai + var_calcium_concentration__Kd), 2)); // dimensionless + const double var_calcium_concentration__Bss = 1 / (1 + var_calcium_concentration__Bmax * var_calcium_concentration__Kd / pow((var_chaste_interface__calcium_concentration__Cass + var_calcium_concentration__Kd), 2)); // dimensionless + const double var_calcium_concentration__Km_CSQN = 630; // micromolar + const double var_calcium_concentration__BJSR = 1 / (1 + var_calcium_concentration__CSQN_tot * var_calcium_concentration__Km_CSQN / pow((var_chaste_interface__calcium_concentration__CaJSR + var_calcium_concentration__Km_CSQN), 2)); // dimensionless + const double var_calcium_fluxes__CaMKb = 0.050000000000000003 * (1 - var_chaste_interface__calcium_fluxes__CaMKt) / (1 + 0.69999999999999996 / var_chaste_interface__calcium_concentration__Cass); // dimensionless + const double var_calcium_fluxes__CaMKa = var_calcium_fluxes__CaMKb + var_chaste_interface__calcium_fluxes__CaMKt; // dimensionless + const double var_calcium_fluxes__Km_up = 0.41199999999999998; // micromolar + const double var_calcium_fluxes__P_ryr_const1 = -0.01; // per_millisecond + const double var_calcium_fluxes__P_ryr_const2 = -2; // per_millisecond + const double var_calcium_fluxes__off_rate = 0.00020000000000000001; // per_millisecond + const double var_calcium_fluxes__on_rate = 0.050000000000000003; // per_millisecond + const double d_dt_chaste_interface_var_calcium_fluxes__CaMKt = -var_chaste_interface__calcium_fluxes__CaMKt * var_calcium_fluxes__off_rate + (var_calcium_fluxes__CaMKb + var_chaste_interface__calcium_fluxes__CaMKt) * var_calcium_fluxes__CaMKb * var_calcium_fluxes__on_rate; // 1 / millisecond + const double var_calcium_fluxes__tau_tr = 20; // millisecond + const double var_calcium_fluxes__J_tr = (-var_chaste_interface__calcium_concentration__CaJSR + var_chaste_interface__calcium_concentration__CaNSR) / var_calcium_fluxes__tau_tr; // micromolar_per_millisecond + const double var_calcium_fluxes__tau_xfer = 8; // millisecond + const double var_calcium_fluxes__J_xfer = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__Cass) / var_calcium_fluxes__tau_xfer; // micromolar_per_millisecond + const double var_calcium_fluxes__v1_caff = 10; // per_millisecond + const double var_calcium_fluxes__v2 = 3.0000000000000001e-5; // per_millisecond + const double var_calcium_fluxes__v2_caff = 0.10000000000000001; // per_millisecond + const double var_calcium_fluxes__vmup_init = 0.50590000000000002; // micromolar_per_millisecond + const double var_calcium_fluxes__vmup = (1 + 2.9982000000000002 * pow(var_calcium_fluxes__CaMKa, 2.5830000000000002) / (1.7590641847756086 + pow(var_calcium_fluxes__CaMKa, 2.5830000000000002))) * var_calcium_fluxes__vmup_init; // micromolar_per_millisecond + const double var_calcium_fluxes__J_serca = pow(var_calcium_concentration__Cai, 2) * var_calcium_fluxes__vmup / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_fluxes__Km_up, 2)); // micromolar_per_millisecond + const double var_calcium_pump_current__Km_pCa = 0.28849999999999998; // micromolar + const double var_calcium_pump_current__i_pCa_max = 0.095500000000000002; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_cell__Acap = 0.00013866; // cm2 + const double var_cell__F = 96.5; // coulomb_per_millimole + const double var_cell__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_cell__T = 308; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_cell__R * var_cell__T * log(mParameters[1] / var_calcium_concentration__Cai) / var_cell__F; // millivolt + const double var_L_type_calcium_current__FVRT = var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T); // dimensionless + const double var_L_type_calcium_current__FVRT_Ca = 2 * var_L_type_calcium_current__FVRT; // dimensionless + const double var_L_type_calcium_current__expVL = exp((-var_L_type_calcium_current__V_L + var_chaste_interface__cell__V) / var_L_type_calcium_current__delta_V_L); // dimensionless + const double var_L_type_calcium_current__alpha_p = var_L_type_calcium_current__expVL / ((1 + var_L_type_calcium_current__expVL) * var_L_type_calcium_current__t_L); // per_millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__O = var_L_type_calcium_current__C * var_L_type_calcium_current__alpha_p - var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__alpha_m; // 1 / millisecond + const double var_L_type_calcium_current__epsilon_m = (var_L_type_calcium_current__a + var_L_type_calcium_current__expVL) * var_L_type_calcium_current__b / ((var_L_type_calcium_current__b * var_L_type_calcium_current__expVL + var_L_type_calcium_current__a) * var_L_type_calcium_current__tau_L); // per_millisecond + const double var_L_type_calcium_current__epsilon_p = (var_L_type_calcium_current__a + var_L_type_calcium_current__expVL) / ((1 + var_L_type_calcium_current__expVL) * var_L_type_calcium_current__K_L * var_L_type_calcium_current__tau_L); // per_micromolar_millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I = -var_chaste_interface__L_type_calcium_current__I * var_L_type_calcium_current__epsilon_m + var_L_type_calcium_current__C * var_L_type_calcium_current__epsilon_p * var_chaste_interface__calcium_concentration__Cass; // 1 / millisecond + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__cell__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_cell__VJSR = 7.7000000000000001e-8; // microlitre + const double var_cell__VNSR = 2.3099999999999999e-7; // microlitre + const double var_cell__Vmyo = 2.1999999999999999e-5; // microlitre + const double var_cell__Vss = 2.1999999999999998e-8; // microlitre + const double var_L_type_calcium_current__i_CaL = ((fabs(var_L_type_calcium_current__FVRT_Ca) > 1.0000000000000001e-5) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-var_L_type_calcium_current__FVRT_Ca)) * var_L_type_calcium_current__FVRT_Ca * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-2.0000000000000002e-5 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-1.0000000000000001e-5)) * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-1.0000000000000001e-5)) * var_cell__Acap * mParameters[5]))); // picoA_per_picoF + const double d_dt_chaste_interface_var_calcium_fluxes__P_RyR = var_chaste_interface__calcium_fluxes__P_RyR * var_calcium_fluxes__P_ryr_const1 + var_L_type_calcium_current__i_CaL * var_calcium_fluxes__P_ryr_const2 * exp(-0.0015432098765432098 * pow((-5 + var_chaste_interface__cell__V), 2)) / var_L_type_calcium_current__i_CaL_max; // 1 / millisecond + const double var_cell__prepulses_number = 10000000000.0; // dimensionless + const double var_chaste_interface__cell__stim_period = 333.33300000000003; // millisecond + const double var_calcium_fluxes__J_leak = ((var_chaste_interface__environment__time < var_cell__prepulses_number * var_chaste_interface__cell__stim_period) ? ((-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__CaNSR) * var_calcium_fluxes__v2) : ((-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__CaNSR) * var_calcium_fluxes__v2_caff)); // micromolar_per_millisecond + const double d_dt_chaste_interface_var_calcium_concentration__CaNSR = (-var_calcium_fluxes__J_leak + var_calcium_fluxes__J_serca) * var_cell__Vmyo / var_cell__VNSR - var_calcium_fluxes__J_tr * var_cell__VJSR / var_cell__VNSR; // micromolar / millisecond + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // picoA_per_picoF + const double var_fast_sodium_current__C_Na3 = 1 - var_chaste_interface__fast_sodium_current__C_Na1 - var_chaste_interface__fast_sodium_current__C_Na2 - var_chaste_interface__fast_sodium_current__I1_Na - var_chaste_interface__fast_sodium_current__I2_Na - var_chaste_interface__fast_sodium_current__IC_Na2 - var_chaste_interface__fast_sodium_current__IC_Na3 - var_chaste_interface__fast_sodium_current__IF_Na - var_chaste_interface__fast_sodium_current__O_Na; // dimensionless + const double var_fast_sodium_current__alpha_Na11 = 3.802 / (0.20000000000000001 * exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__cell__V) + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__cell__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na12 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__cell__V) + 0.23000000000000001 * exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__cell__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na13 = 3.802 / (0.25 * exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__cell__V) + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__cell__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na2 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 - 0.060240963855421679 * var_chaste_interface__cell__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na3 = 6.9999999999999997e-7 * exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__cell__V); // per_millisecond + const double var_fast_sodium_current__alpha_Na4 = 0.001 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__alpha_Na5 = 1.0526315789473684e-5 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__beta_Na11 = 0.19170000000000001 * exp(-0.12315270935960591 - 0.04926108374384236 * var_chaste_interface__cell__V); // per_millisecond + const double var_fast_sodium_current__beta_Na12 = 0.20000000000000001 * exp(0.12315270935960591 - 0.04926108374384236 * var_chaste_interface__cell__V); // per_millisecond + const double var_fast_sodium_current__beta_Na13 = 0.22 * exp(0.36945812807881773 - 0.04926108374384236 * var_chaste_interface__cell__V); // per_millisecond + const double var_fast_sodium_current__beta_Na3 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__cell__V; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na1 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na2 = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 + var_fast_sodium_current__C_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na2 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na3 = var_fast_sodium_current__C_Na3 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na3; // 1 / millisecond + const double var_fast_sodium_current__beta_Na2 = var_fast_sodium_current__alpha_Na13 * var_fast_sodium_current__alpha_Na2 * var_fast_sodium_current__alpha_Na3 / (var_fast_sodium_current__beta_Na13 * var_fast_sodium_current__beta_Na3); // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__O_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13; // 1 / millisecond + const double var_fast_sodium_current__beta_Na4 = var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IF_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2; // 1 / millisecond + const double var_fast_sodium_current__beta_Na5 = 0.02 * var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I1_Na = var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I2_Na = var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5; // 1 / millisecond + const double var_fast_transient_outward_K_I__g_Kto_f = 0.53469999999999995; // milliS_per_microF + const double var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * log(mParameters[2] / var_chaste_interface__potassium_concentration__Ki) / var_cell__F; // millivolt + const double var_fast_transient_outward_K_I__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_K_I__ato_f, 3) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_fast_transient_outward_K_I__g_Kto_f * var_chaste_interface__fast_transient_outward_K_I__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_K_I__i_Kss = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8] * var_chaste_interface__non_inactivating_steady_state_K_I__iKss; // picoA_per_picoF + const double var_rapid_delayed_rectifier_K_I__C_K0 = 1 - var_chaste_interface__rapid_delayed_rectifier_K_I__C_K1 - var_chaste_interface__rapid_delayed_rectifier_K_I__C_K2 - var_chaste_interface__rapid_delayed_rectifier_K_I__I_K - var_chaste_interface__rapid_delayed_rectifier_K_I__O_K; // dimensionless + const double var_rapid_delayed_rectifier_K_I__alpha_a0 = 0.022348 * exp(0.01176 * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__alpha_a1 = 0.033500000000000002 * exp(0.0109 * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__alpha_i = 0.070300000000000001 * exp(0.14349999999999999 + 0.0287 * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__beta_a0 = 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__beta_a1 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__cell__V); // per_millisecond + const double var_rapid_delayed_rectifier_K_I__beta_i = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__cell__V); // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__I_K = var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * var_rapid_delayed_rectifier_K_I__alpha_i - var_chaste_interface__rapid_delayed_rectifier_K_I__I_K * var_rapid_delayed_rectifier_K_I__beta_i; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__O_K = var_chaste_interface__rapid_delayed_rectifier_K_I__C_K2 * var_rapid_delayed_rectifier_K_I__alpha_a1 + var_chaste_interface__rapid_delayed_rectifier_K_I__I_K * var_rapid_delayed_rectifier_K_I__beta_i - var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * var_rapid_delayed_rectifier_K_I__alpha_i - var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * var_rapid_delayed_rectifier_K_I__beta_a1; // 1 / millisecond + const double var_rapid_delayed_rectifier_K_I__kb = 0.036777999999999998; // per_millisecond + const double var_rapid_delayed_rectifier_K_I__kf = 0.023761000000000001; // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__C_K1 = var_rapid_delayed_rectifier_K_I__C_K0 * var_rapid_delayed_rectifier_K_I__alpha_a0 + var_chaste_interface__rapid_delayed_rectifier_K_I__C_K2 * var_rapid_delayed_rectifier_K_I__kb - var_chaste_interface__rapid_delayed_rectifier_K_I__C_K1 * var_rapid_delayed_rectifier_K_I__beta_a0 - var_chaste_interface__rapid_delayed_rectifier_K_I__C_K1 * var_rapid_delayed_rectifier_K_I__kf; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__C_K2 = var_chaste_interface__rapid_delayed_rectifier_K_I__C_K1 * var_rapid_delayed_rectifier_K_I__kf + var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * var_rapid_delayed_rectifier_K_I__beta_a1 - var_chaste_interface__rapid_delayed_rectifier_K_I__C_K2 * var_rapid_delayed_rectifier_K_I__alpha_a1 - var_chaste_interface__rapid_delayed_rectifier_K_I__C_K2 * var_rapid_delayed_rectifier_K_I__kb; // 1 / millisecond + const double var_calcium_fluxes__J_rel = ((var_chaste_interface__environment__time < var_cell__prepulses_number * var_chaste_interface__cell__stim_period) ? ((-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[0]) : ((-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * var_calcium_fluxes__v1_caff)); // micromolar_per_millisecond + const double d_dt_chaste_interface_var_calcium_concentration__CaJSR = (-var_calcium_fluxes__J_rel + var_calcium_fluxes__J_tr) * var_calcium_concentration__BJSR; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cass = (var_calcium_fluxes__J_rel * var_cell__VJSR / var_cell__Vss - var_calcium_fluxes__J_xfer * var_cell__Vmyo / var_cell__Vss - 0.5 * var_L_type_calcium_current__i_CaL * var_cell__Acap * mParameters[5] / (var_cell__F * var_cell__Vss)) * var_calcium_concentration__Bss; // micromolar / millisecond + const double var_ryanodine_receptors__P_C1 = 1 - var_chaste_interface__ryanodine_receptors__P_C2 - var_chaste_interface__ryanodine_receptors__P_O1 - var_chaste_interface__ryanodine_receptors__P_O2; // dimensionless + const double var_ryanodine_receptors__k_minus_a = 0.071249999999999994; // per_millisecond + const double var_ryanodine_receptors__k_minus_b = 0.96499999999999997; // per_millisecond + const double var_ryanodine_receptors__k_minus_c = 0.00080000000000000004; // per_millisecond + const double var_ryanodine_receptors__k_plus_a = 0.0060749999999999997; // micromolar4_per_millisecond + const double var_ryanodine_receptors__k_plus_b = 0.0040499999999999998; // micromolar3_per_millisecond + const double var_ryanodine_receptors__k_plus_c = 0.0089999999999999993; // per_millisecond + const double d_dt_chaste_interface_var_ryanodine_receptors__P_C2 = var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_c - var_chaste_interface__ryanodine_receptors__P_C2 * var_ryanodine_receptors__k_minus_c; // 1 / millisecond + const double var_ryanodine_receptors__m = 3; // dimensionless + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O2 = -var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b + pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__m) * var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_b; // 1 / millisecond + const double var_ryanodine_receptors__n = 4; // dimensionless + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O1 = var_chaste_interface__ryanodine_receptors__P_C2 * var_ryanodine_receptors__k_minus_c + var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b - var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_minus_a - var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_c + pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__n) * var_ryanodine_receptors__P_C1 * var_ryanodine_receptors__k_plus_a - pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__m) * var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_b; // 1 / millisecond + const double var_slow_delayed_rectifier_K_I__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[10]; // picoA_per_picoF + const double var_slow_transient_outward_K_I__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_K_I__i_Kto_s = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__slow_transient_outward_K_I__ato_s * var_slow_transient_outward_K_I__g_Kto_s * var_chaste_interface__slow_transient_outward_K_I__ito_s; // picoA_per_picoF + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mAllo = 0; // micromolar + const double var_sodium_calcium_exchange_current__K_mCai = 3.6000000000000001; // micromolar + const double var_sodium_calcium_exchange_current__K_mCao = 1400; // micromolar + const double var_sodium_calcium_exchange_current__K_mNai = 12000; // micromolar + const double var_sodium_calcium_exchange_current__K_mNao = 88000; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.27000000000000002; // dimensionless + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log((1 * mParameters[3] + 0.1111111111111111 * mParameters[2]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[6]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_K_I__i_Kr = (-var_cell__R * var_cell__T * log((1 * mParameters[2] + 0.020408163265306124 * mParameters[3]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_cell__F + var_chaste_interface__cell__V) * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NCX = (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - pow(mParameters[3], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * mParameters[11] / ((1 + pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (pow(mParameters[3], 3) * var_calcium_concentration__Cai + pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + pow(mParameters[3], 3) * (1 + pow(var_chaste_interface__sodium_concentration__Nai, 3) / pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + pow(var_sodium_calcium_exchange_current__K_mNai, 3) * (1 + var_calcium_concentration__Cai / var_sodium_calcium_exchange_current__K_mCai) * mParameters[1])); // picoA_per_picoF + const double var_calcium_concentration__Cai_orig_deriv = (-var_calcium_fluxes__J_serca - 0.5 * (-2 * var_sodium_calcium_exchange_current__i_NCX + var_calcium_background_current__i_Cab + var_calcium_pump_current__i_pCa) * var_cell__Acap * mParameters[5] / (var_cell__F * var_cell__Vmyo) + var_calcium_fluxes__J_leak + var_calcium_fluxes__J_xfer) * var_calcium_concentration__Bi; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cai_converted = 0.001 * var_calcium_concentration__Cai_orig_deriv; // millimolar / millisecond + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 16600; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 2.4860000000000002; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[3]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[2] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 2.3999999999999999)) * (mParameters[2] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double d_dt_chaste_interface_var_sodium_concentration__Nai = (-var_fast_sodium_current__i_Na - var_sodium_background_current__i_Nab - 3 * var_sodium_calcium_exchange_current__i_NCX - 3 * var_sodium_potassium_pump_current__i_NaK) * var_cell__Acap * mParameters[5] / (var_cell__F * var_cell__Vmyo); // micromolar / millisecond + const double var_time_independent_K_I__i_K1 = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[2] * mParameters[7] / ((1 + exp(0.089599999999999999 * var_chaste_interface__cell__V - 0.089599999999999999 * var_fast_transient_outward_K_I__E_K)) * (210 + mParameters[2])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur = 0.25; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__i_Kur = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur * var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_potassium_concentration__Ki = (-var_cell__i_Stim - var_fast_transient_outward_K_I__i_Kto_f - var_non_inactivating_steady_state_K_I__i_Kss - var_rapid_delayed_rectifier_K_I__i_Kr - var_slow_delayed_rectifier_K_I__i_Ks - var_slow_transient_outward_K_I__i_Kto_s - var_time_independent_K_I__i_K1 - var_ultra_rapidly_activating_delayed_rectifier_K_I__i_Kur + 2 * var_sodium_potassium_pump_current__i_NaK) * var_cell__Acap * mParameters[5] / (var_cell__F * var_cell__Vmyo); // micromolar / millisecond + + rResidual[4] = rCurrentGuess[4] - rY[1] - mDt*d_dt_chaste_interface_var_calcium_concentration__Cai_converted; + rResidual[5] = rCurrentGuess[5] - rY[2] - mDt*d_dt_chaste_interface_var_calcium_concentration__Cass; + rResidual[2] = rCurrentGuess[2] - rY[3] - mDt*d_dt_chaste_interface_var_calcium_concentration__CaJSR; + rResidual[3] = rCurrentGuess[3] - rY[4] - mDt*d_dt_chaste_interface_var_calcium_concentration__CaNSR; + rResidual[7] = rCurrentGuess[7] - rY[5] - mDt*d_dt_chaste_interface_var_calcium_fluxes__P_RyR; + rResidual[6] = rCurrentGuess[6] - rY[6] - mDt*d_dt_chaste_interface_var_calcium_fluxes__CaMKt; + rResidual[23] = rCurrentGuess[23] - rY[7] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_O1; + rResidual[24] = rCurrentGuess[24] - rY[8] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_O2; + rResidual[22] = rCurrentGuess[22] - rY[9] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_C2; + rResidual[1] = rCurrentGuess[1] - rY[10] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__O; + rResidual[0] = rCurrentGuess[0] - rY[11] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I; + rResidual[25] = rCurrentGuess[25] - rY[13] - mDt*d_dt_chaste_interface_var_sodium_concentration__Nai; + rResidual[15] = rCurrentGuess[15] - rY[14] - mDt*d_dt_chaste_interface_var_fast_sodium_current__O_Na; + rResidual[8] = rCurrentGuess[8] - rY[15] - mDt*d_dt_chaste_interface_var_fast_sodium_current__C_Na1; + rResidual[9] = rCurrentGuess[9] - rY[16] - mDt*d_dt_chaste_interface_var_fast_sodium_current__C_Na2; + rResidual[10] = rCurrentGuess[10] - rY[17] - mDt*d_dt_chaste_interface_var_fast_sodium_current__I1_Na; + rResidual[11] = rCurrentGuess[11] - rY[18] - mDt*d_dt_chaste_interface_var_fast_sodium_current__I2_Na; + rResidual[14] = rCurrentGuess[14] - rY[19] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IF_Na; + rResidual[12] = rCurrentGuess[12] - rY[20] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IC_Na2; + rResidual[13] = rCurrentGuess[13] - rY[21] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IC_Na3; + rResidual[17] = rCurrentGuess[17] - rY[22] - mDt*d_dt_chaste_interface_var_potassium_concentration__Ki; + rResidual[16] = rCurrentGuess[16] - rY[26] - mDt*d_dt_chaste_interface_var_non_inactivating_steady_state_K_I__iKss; + rResidual[21] = rCurrentGuess[21] - rY[27] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__O_K; + rResidual[18] = rCurrentGuess[18] - rY[28] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__C_K1; + rResidual[19] = rCurrentGuess[19] - rY[29] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__C_K2; + rResidual[20] = rCurrentGuess[20] - rY[30] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_K_I__I_K; + } + + void Cellli_mouse_2010FromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[26], double rJacobian[26][26]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + double var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; + // Units: dimensionless; Initial value: 0.00346258606821817 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; + // Units: dimensionless; Initial value: 0.955684946168062 + double var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + double var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + double var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; + // Units: dimensionless; Initial value: 0.0142335908879204 + double var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; + // Units: dimensionless; Initial value: 0.996989882138174 + + double var_chaste_interface__L_type_calcium_current__I = rCurrentGuess[0]; + double var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[1]; + double var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[2]; + double var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[3]; + double var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[4]; + double var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[5]; + double var_chaste_interface__calcium_fluxes__CaMKt = rCurrentGuess[6]; + double var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[7]; + double var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[15]; + double var_chaste_interface__non_inactivating_steady_state_K_I__iKss = rCurrentGuess[16]; + double var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[17]; + double var_chaste_interface__rapid_delayed_rectifier_K_I__O_K = rCurrentGuess[21]; + double var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[22]; + double var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[23]; + double var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[24]; + double var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[25]; + + const double var_x0 = exp(0.15506520491866829 * var_chaste_interface__cell__V); + const double var_x1 = 0.0625 + var_x0; + const double var_x2 = 1 / (1 + var_x0); + const double var_x3 = 0.0028985507246376812 * var_x1 * var_x2; + const double var_x4 = var_x3 * var_chaste_interface__calcium_concentration__Cass; + const double var_x5 = 0.66666666666666663 * var_x0 * var_x2; + const double var_x6 = 630 + var_chaste_interface__calcium_concentration__CaJSR; + const double var_x7 = 1 + 31500000 / pow(var_x6, 2); + const double var_x8 = 1 / var_x7; + const double var_x9 = var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2; + const double var_x10 = var_x9 * mParameters[0]; + const double var_x11 = var_x10 * var_chaste_interface__calcium_fluxes__P_RyR; + const double var_x12 = var_chaste_interface__environment__time < 3333330000000.0005; + const double var_x13 = ((var_x12) ? (var_x11) : (10)); + const double var_x14 = -var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR; + const double var_x15 = ((var_x12) ? (var_x11 * var_x14) : (10 * var_chaste_interface__calcium_concentration__CaJSR - 10 * var_chaste_interface__calcium_concentration__Cass)); + const double var_x16 = ((var_x12) ? (-var_x11) : (-10)); + const double var_x17 = ((var_x12) ? (var_x10 * var_x14) : (0)); + const double var_x18 = ((var_x12) ? (var_x14 * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[0]) : (0)); + const double var_x19 = -var_x18 * var_x8; + const double var_x20 = ((var_x12) ? (3.0000000000000001e-5) : (0.10000000000000001)); + const double var_x21 = ((var_x12) ? (-0.029999999999999999) : (-100)); + const double var_x22 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 3); + const double var_x23 = 1 - var_chaste_interface__calcium_fluxes__CaMKt; + const double var_x24 = 1 + 0.69999999999999996 / var_chaste_interface__calcium_concentration__Cass; + const double var_x25 = 1 / var_x24; + const double var_x26 = 0.050000000000000003 * var_x25; + const double var_x27 = var_x23 * var_x26 + var_chaste_interface__calcium_fluxes__CaMKt; + const double var_x28 = pow(var_x27, 2.5830000000000002); + const double var_x29 = 1.7590641847756086 + var_x28; + const double var_x30 = 1 / var_x29; + const double var_x31 = 1.5167893800000001 * var_x30; + const double var_x32 = 0.50590000000000002 + var_x28 * var_x31; + const double var_x33 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); + const double var_x34 = 1000000 * var_x33; + const double var_x35 = 0.16974399999999998 + var_x34; + const double var_x36 = pow(var_x35, (-2)); + const double var_x37 = 1 / var_x35; + const double var_x38 = pow(var_x27, 1.5830000000000002); + const double var_x39 = pow(var_chaste_interface__calcium_concentration__Cass, (-2)); + const double var_x40 = var_x23 * var_x39 / pow(var_x24, 2); + const double var_x41 = 0.13712534389890002 * var_x40; + const double var_x42 = pow(var_x27, 4.1660000000000004) / pow(var_x29, 2); + const double var_x43 = var_x37 * (-var_x41 * var_x42 + var_x30 * var_x38 * var_x41); + const double var_x44 = 95238095.238095239 * var_x33; + const double var_x45 = 2.5830000000000002 - 0.12915000000000001 * var_x25; + const double var_x46 = var_x37 * (-1.5167893800000001 * var_x42 * var_x45 + var_x31 * var_x38 * var_x45); + const double var_x47 = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x48 = 0.59999999999999998 + var_x47; + const double var_x49 = 1 + 65.399999999999991 / pow(var_x48, 2); + const double var_x50 = 1 / var_x49; + const double var_x51 = 0.001 * var_x50; + const double var_x52 = 1 / var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x53 = 0.083232249999999994 + var_x34; + const double var_x54 = 1 / var_x53; + const double var_x55 = exp(-0.024495140414072337 * var_chaste_interface__cell__V); + const double var_x56 = pow(mParameters[3], 3); + const double var_x57 = 1 / (1 + 0.27000000000000002 * var_x55); + const double var_x58 = pow(var_chaste_interface__sodium_concentration__Nai, 3); + const double var_x59 = var_x47 * var_x56; + const double var_x60 = var_x59 + 1400 * var_x58 + 6.81472e+17 * var_chaste_interface__calcium_concentration__Cai_converted + var_x58 * mParameters[1] + 1728000000000.0 * (1 + 277.77777777777777 * var_chaste_interface__calcium_concentration__Cai_converted) * mParameters[1] + 3.6000000000000001 * var_x56 * (1 + 5.7870370370370368e-13 * var_x58); + const double var_x61 = var_x57 * mParameters[11] / var_x60; + const double var_x62 = var_x55 * var_x56 * var_x61; + const double var_x63 = -6.81472e+17 - 480000000000000.0 * mParameters[1] - 1000 * var_x56; + const double var_x64 = exp(0.013189690992192795 * var_chaste_interface__cell__V); + const double var_x65 = -var_x55 * var_x59 + var_x58 * var_x64 * mParameters[1]; + const double var_x66 = 2 * var_x65; + const double var_x67 = var_x57 * mParameters[11] / pow(var_x60, 2); + const double var_x68 = var_x66 * var_x67; + const double var_x69 = 0.032656617993405558 * mParameters[5]; + const double var_x70 = var_x32 * var_x37; + const double var_x71 = pow(var_chaste_interface__sodium_concentration__Nai, 2); + const double var_x72 = var_x71 * mParameters[1]; + const double var_x73 = -3 * var_x72 - 4200 * var_x71 - 6.2500000000000002e-12 * var_x56 * var_x71; + const double var_x74 = var_x61 * var_x64 * var_x72; + const double var_x75 = 0.59999999999999998 + var_chaste_interface__calcium_concentration__Cass; + const double var_x76 = 1 + 65.399999999999991 / pow(var_x75, 2); + const double var_x77 = 1 / var_x76; + const double var_x78 = 0.075369662812530269 * var_chaste_interface__cell__V; + const double var_x79 = exp(-var_x78); + const double var_x80 = mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate / mParameters[5]; + const double var_x81 = 0.0023079445283571576 * var_x80 * var_chaste_interface__cell__V / (1 - var_x79); + const double var_x82 = var_x81 * (-var_chaste_interface__calcium_concentration__Cass + var_x79 * mParameters[1]); + const double var_x83 = fabs(var_x78) > 1.0000000000000001e-5; + const double var_x84 = exp(-1.0000000000000001e-5); + const double var_x85 = 3.062166450310111e-7 * var_x80 / (1 - var_x84); + const double var_x86 = var_x85 * (-var_chaste_interface__calcium_concentration__Cass + var_x84 * mParameters[1]); + const double var_x87 = ((var_x83) ? (-var_x82) : (-var_x86)); + const double var_x88 = 32.656617993405561 * mParameters[5]; + const double var_x89 = 3.5000000000000004 * var_x77; + const double var_x90 = ((var_x83) ? (var_x81 * var_chaste_interface__L_type_calcium_current__O) : (var_x85 * var_chaste_interface__L_type_calcium_current__O)); + const double var_x91 = var_x18 * var_x89; + const double var_x92 = 0.2857142857142857 * exp(-0.0015432098765432098 * pow((-5 + var_chaste_interface__cell__V), 2)); + const double var_x93 = 0.04926108374384236 * var_chaste_interface__cell__V; + const double var_x94 = 0.20000000000000001 * exp(0.12315270935960591 - var_x93); + const double var_x95 = exp(-0.016666666666666666 - 0.0066666666666666671 * var_chaste_interface__cell__V); + const double var_x96 = 1 / (0.25 * var_x95 + 0.1027 * exp(-0.20833333333333334 - 0.083333333333333329 * var_chaste_interface__cell__V)); + const double var_x97 = 3.802 * var_x96; + const double var_x98 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__cell__V; + const double var_x99 = 3.802 / (0.1027 * exp(-0.16666666666666666 - 0.066666666666666666 * var_chaste_interface__cell__V) + 0.23000000000000001 * var_x95); + const double var_x100 = exp(-0.90909090909090906 - 0.12987012987012986 * var_chaste_interface__cell__V); + const double var_x101 = 6.9999999999999997e-7 * var_x100; + const double var_x102 = exp(0.36945812807881773 - var_x93); + const double var_x103 = 0.22 * var_x102; + const double var_x104 = 3.802 / (0.20000000000000001 * var_x95 + 0.1027 * exp(-0.14705882352941177 - 0.058823529411764705 * var_chaste_interface__cell__V)); + const double var_x105 = -var_x104; + const double var_x106 = 0.19170000000000001 * exp(-0.12315270935960591 - var_x93); + const double var_x107 = var_x106 + var_x99; + const double var_x108 = var_x104 + var_x98; + const double var_x109 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 - 0.060240963855421679 * var_chaste_interface__cell__V)); + const double var_x110 = 1.0526315789473684e-5 * var_x109; + const double var_x111 = 1.4e-8 * var_x100; + const double var_x112 = 0.001 * var_x109; + const double var_x113 = -var_x98; + const double var_x114 = 1.2097272727272726e-5 * var_x100 * var_x109 * var_x96 / (var_x102 * var_x98); + const double var_x115 = 1 * var_x109; + const double var_x116 = 1 / var_chaste_interface__potassium_concentration__Ki; + const double var_x117 = var_x116 * mParameters[2]; + const double var_x118 = log(var_x117); + const double var_x119 = -26.535875647668394 * var_x118 + var_chaste_interface__cell__V; + const double var_x120 = 0.065313235986811116 * mParameters[5]; + const double var_x121 = var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8]; + const double var_x122 = 1 / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai); + const double var_x123 = var_x122 * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; + const double var_x124 = 26.535875647668394 * var_x116; + const double var_x125 = exp(0.089599999999999999 * var_chaste_interface__cell__V - 2.3776144580310881 * var_x118); + const double var_x126 = 1 + var_x125; + const double var_x127 = 1 / (210 + mParameters[2]); + const double var_x128 = 1 / var_chaste_interface__sodium_concentration__Nai; + const double var_x129 = pow(var_x128, 2.3999999999999999); + const double var_x130 = var_x128 * var_x129 * mParameters[2] / (pow((1 + 13435672565.051065 * var_x129), 2) * (1500 + mParameters[2]) * (1 + 0.1245 * exp(-0.0037684831406265135 * var_chaste_interface__cell__V) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[3])) * exp(-0.037684831406265135 * var_chaste_interface__cell__V))); + const double var_x131 = 0.022348 * exp(0.01176 * var_chaste_interface__cell__V); + const double var_x132 = -var_x131; + const double var_x133 = 0.033500000000000002 * exp(0.0109 * var_chaste_interface__cell__V); + const double var_x134 = 6.8899999999999994e-5 * exp(-0.041779999999999998 * var_chaste_interface__cell__V); + const double var_x135 = 0.0064970000000000002 * exp(-0.16339999999999999 - 0.032680000000000001 * var_chaste_interface__cell__V); + const double var_x136 = 0.070300000000000001 * exp(0.14349999999999999 + 0.0287 * var_chaste_interface__cell__V); + const double var_x137 = 0.012149999999999999 * pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; + const double var_x138 = pow(var_chaste_interface__calcium_concentration__Cass, 3); + const double var_x139 = 0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4); + const double var_x140 = 0.0040499999999999998 * var_x138; + const double var_x141 = 3 * var_x65 * var_x67; + const double var_x142 = 1 / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki); + const double var_x143 = var_x142 * var_chaste_interface__fast_sodium_current__O_Na * mParameters[6]; + + + rJacobian[0][0] = 1.0 - (mDt * (-var_x4 - 0.00034782608695652176 * var_x1 / (0.0625 + 0.40000000000000002 * var_x0))); + rJacobian[0][1] = -(mDt * (-var_x4)); + rJacobian[0][2] = 0.0; + rJacobian[0][3] = 0.0; + rJacobian[0][4] = 0.0; + rJacobian[0][5] = -(mDt * (var_x3 * (1 - var_chaste_interface__L_type_calcium_current__I - var_chaste_interface__L_type_calcium_current__O))); + rJacobian[0][6] = 0.0; + rJacobian[0][7] = 0.0; + rJacobian[0][8] = 0.0; + rJacobian[0][9] = 0.0; + rJacobian[0][10] = 0.0; + rJacobian[0][11] = 0.0; + rJacobian[0][12] = 0.0; + rJacobian[0][13] = 0.0; + rJacobian[0][14] = 0.0; + rJacobian[0][15] = 0.0; + rJacobian[0][16] = 0.0; + rJacobian[0][17] = 0.0; + rJacobian[0][18] = 0.0; + rJacobian[0][19] = 0.0; + rJacobian[0][20] = 0.0; + rJacobian[0][21] = 0.0; + rJacobian[0][22] = 0.0; + rJacobian[0][23] = 0.0; + rJacobian[0][24] = 0.0; + rJacobian[0][25] = 0.0; + rJacobian[1][0] = -(mDt * (-var_x5)); + rJacobian[1][1] = 1.0 - (mDt * (-1.1986666666666668 - var_x5)); + rJacobian[1][2] = 0.0; + rJacobian[1][3] = 0.0; + rJacobian[1][4] = 0.0; + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = 0.0; + rJacobian[1][8] = 0.0; + rJacobian[1][9] = 0.0; + rJacobian[1][10] = 0.0; + rJacobian[1][11] = 0.0; + rJacobian[1][12] = 0.0; + rJacobian[1][13] = 0.0; + rJacobian[1][14] = 0.0; + rJacobian[1][15] = 0.0; + rJacobian[1][16] = 0.0; + rJacobian[1][17] = 0.0; + rJacobian[1][18] = 0.0; + rJacobian[1][19] = 0.0; + rJacobian[1][20] = 0.0; + rJacobian[1][21] = 0.0; + rJacobian[1][22] = 0.0; + rJacobian[1][23] = 0.0; + rJacobian[1][24] = 0.0; + rJacobian[1][25] = 0.0; + rJacobian[2][0] = 0.0; + rJacobian[2][1] = 0.0; + rJacobian[2][2] = 1.0 - (mDt * (var_x8 * (-0.050000000000000003 - var_x13) + 63000000 * (-var_x15 + 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaNSR - 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaJSR) / (pow(var_x6, 3) * pow(var_x7, 2)))); + rJacobian[2][3] = -(mDt * (0.050000000000000003 * var_x8)); + rJacobian[2][4] = 0.0; + rJacobian[2][5] = -(mDt * (-var_x16 * var_x8)); + rJacobian[2][6] = 0.0; + rJacobian[2][7] = -(mDt * (-var_x17 * var_x8)); + rJacobian[2][8] = 0.0; + rJacobian[2][9] = 0.0; + rJacobian[2][10] = 0.0; + rJacobian[2][11] = 0.0; + rJacobian[2][12] = 0.0; + rJacobian[2][13] = 0.0; + rJacobian[2][14] = 0.0; + rJacobian[2][15] = 0.0; + rJacobian[2][16] = 0.0; + rJacobian[2][17] = 0.0; + rJacobian[2][18] = 0.0; + rJacobian[2][19] = 0.0; + rJacobian[2][20] = 0.0; + rJacobian[2][21] = 0.0; + rJacobian[2][22] = 0.0; + rJacobian[2][23] = -(mDt * (var_x19)); + rJacobian[2][24] = -(mDt * (var_x19)); + rJacobian[2][25] = 0.0; + rJacobian[3][0] = 0.0; + rJacobian[3][1] = 0.0; + rJacobian[3][2] = -(mDt * (0.016666666666666666)); + rJacobian[3][3] = 1.0 - (mDt * (-0.016666666666666666 - 95.238095238095241 * var_x20)); + rJacobian[3][4] = -(mDt * (-95.238095238095241 * var_x21 + 190476190.47619048 * var_x32 * var_x37 * var_chaste_interface__calcium_concentration__Cai_converted - 190476190476190.47 * var_x22 * var_x32 * var_x36)); + rJacobian[3][5] = -(mDt * (var_x43 * var_x44)); + rJacobian[3][6] = -(mDt * (var_x44 * var_x46)); + rJacobian[3][7] = 0.0; + rJacobian[3][8] = 0.0; + rJacobian[3][9] = 0.0; + rJacobian[3][10] = 0.0; + rJacobian[3][11] = 0.0; + rJacobian[3][12] = 0.0; + rJacobian[3][13] = 0.0; + rJacobian[3][14] = 0.0; + rJacobian[3][15] = 0.0; + rJacobian[3][16] = 0.0; + rJacobian[3][17] = 0.0; + rJacobian[3][18] = 0.0; + rJacobian[3][19] = 0.0; + rJacobian[3][20] = 0.0; + rJacobian[3][21] = 0.0; + rJacobian[3][22] = 0.0; + rJacobian[3][23] = 0.0; + rJacobian[3][24] = 0.0; + rJacobian[3][25] = 0.0; + rJacobian[4][0] = 0.0; + rJacobian[4][1] = 0.0; + rJacobian[4][2] = 0.0; + rJacobian[4][3] = -(mDt * (var_x20 * var_x51)); + rJacobian[4][4] = 1.0 - (mDt * (var_x51 * (-125 + var_x21 - var_x69 * (0.0092875564766839377 * var_x52 + 2000 * var_x62 - var_x63 * var_x68 + 191000 * var_x54 * var_chaste_interface__calcium_concentration__Cai_converted - 191000000000.0 * var_x22 / pow(var_x53, 2)) - 2000000 * var_x70 * var_chaste_interface__calcium_concentration__Cai_converted + 1999999999999.9998 * var_x22 * var_x32 * var_x36) + 130.79999999999998 * (0.125 * var_chaste_interface__calcium_concentration__Cass - 125 * var_chaste_interface__calcium_concentration__Cai_converted - var_x34 * var_x70 - var_x69 * (0.00069999999999999999 * var_chaste_interface__cell__V - 0.0092875564766839377 * log(0.001 * var_x52 * mParameters[1]) - var_x61 * var_x66 + 95500 * var_x33 * var_x54) + ((var_x12) ? (3.0000000000000001e-5 * var_chaste_interface__calcium_concentration__CaNSR - 0.029999999999999999 * var_chaste_interface__calcium_concentration__Cai_converted) : (0.10000000000000001 * var_chaste_interface__calcium_concentration__CaNSR - 100 * var_chaste_interface__calcium_concentration__Cai_converted))) / (pow(var_x48, 3) * pow(var_x49, 2)))); + rJacobian[4][5] = -(mDt * (var_x51 * (0.125 - var_x34 * var_x43))); + rJacobian[4][6] = -(mDt * (-1000 * var_x33 * var_x46 * var_x50)); + rJacobian[4][7] = 0.0; + rJacobian[4][8] = 0.0; + rJacobian[4][9] = 0.0; + rJacobian[4][10] = 0.0; + rJacobian[4][11] = 0.0; + rJacobian[4][12] = 0.0; + rJacobian[4][13] = 0.0; + rJacobian[4][14] = 0.0; + rJacobian[4][15] = 0.0; + rJacobian[4][16] = 0.0; + rJacobian[4][17] = 0.0; + rJacobian[4][18] = 0.0; + rJacobian[4][19] = 0.0; + rJacobian[4][20] = 0.0; + rJacobian[4][21] = 0.0; + rJacobian[4][22] = 0.0; + rJacobian[4][23] = 0.0; + rJacobian[4][24] = 0.0; + rJacobian[4][25] = -(mDt * (-3.2656617993405561e-5 * var_x50 * (-6 * var_x74 - var_x68 * var_x73) * mParameters[5])); + rJacobian[5][0] = 0.0; + rJacobian[5][1] = -(mDt * (-var_x77 * var_x87 * var_x88)); + rJacobian[5][2] = -(mDt * (var_x13 * var_x89)); + rJacobian[5][3] = 0.0; + rJacobian[5][4] = -(mDt * (125000 * var_x77)); + rJacobian[5][5] = 1.0 - (mDt * (var_x77 * (-125 + 3.5000000000000004 * var_x16 - var_x88 * var_x90) + 130.79999999999998 * (125000 * var_chaste_interface__calcium_concentration__Cai_converted + 3.5000000000000004 * var_x15 - 125 * var_chaste_interface__calcium_concentration__Cass - var_x88 * ((var_x83) ? (-var_x82 * var_chaste_interface__L_type_calcium_current__O) : (-var_x86 * var_chaste_interface__L_type_calcium_current__O))) / (pow(var_x75, 3) * pow(var_x76, 2)))); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = -(mDt * (var_x17 * var_x89)); + rJacobian[5][8] = 0.0; + rJacobian[5][9] = 0.0; + rJacobian[5][10] = 0.0; + rJacobian[5][11] = 0.0; + rJacobian[5][12] = 0.0; + rJacobian[5][13] = 0.0; + rJacobian[5][14] = 0.0; + rJacobian[5][15] = 0.0; + rJacobian[5][16] = 0.0; + rJacobian[5][17] = 0.0; + rJacobian[5][18] = 0.0; + rJacobian[5][19] = 0.0; + rJacobian[5][20] = 0.0; + rJacobian[5][21] = 0.0; + rJacobian[5][22] = 0.0; + rJacobian[5][23] = -(mDt * (var_x91)); + rJacobian[5][24] = -(mDt * (var_x91)); + rJacobian[5][25] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = -(mDt * (0.00175 * var_x27 * var_x40 + 8.7500000000000013e-5 * var_x39 * pow(var_x23, 2) / pow(var_x24, 3))); + rJacobian[6][6] = 1.0 - (mDt * (-0.00020000000000000001 - 0.0025000000000000005 * var_x25 * var_x27 + 0.0025000000000000005 * var_x23 * var_x25 * (1 - var_x26))); + rJacobian[6][7] = 0.0; + rJacobian[6][8] = 0.0; + rJacobian[6][9] = 0.0; + rJacobian[6][10] = 0.0; + rJacobian[6][11] = 0.0; + rJacobian[6][12] = 0.0; + rJacobian[6][13] = 0.0; + rJacobian[6][14] = 0.0; + rJacobian[6][15] = 0.0; + rJacobian[6][16] = 0.0; + rJacobian[6][17] = 0.0; + rJacobian[6][18] = 0.0; + rJacobian[6][19] = 0.0; + rJacobian[6][20] = 0.0; + rJacobian[6][21] = 0.0; + rJacobian[6][22] = 0.0; + rJacobian[6][23] = 0.0; + rJacobian[6][24] = 0.0; + rJacobian[6][25] = 0.0; + rJacobian[7][0] = 0.0; + rJacobian[7][1] = -(mDt * (-var_x87 * var_x92)); + rJacobian[7][2] = 0.0; + rJacobian[7][3] = 0.0; + rJacobian[7][4] = 0.0; + rJacobian[7][5] = -(mDt * (-var_x90 * var_x92)); + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (-0.01)); + rJacobian[7][8] = 0.0; + rJacobian[7][9] = 0.0; + rJacobian[7][10] = 0.0; + rJacobian[7][11] = 0.0; + rJacobian[7][12] = 0.0; + rJacobian[7][13] = 0.0; + rJacobian[7][14] = 0.0; + rJacobian[7][15] = 0.0; + rJacobian[7][16] = 0.0; + rJacobian[7][17] = 0.0; + rJacobian[7][18] = 0.0; + rJacobian[7][19] = 0.0; + rJacobian[7][20] = 0.0; + rJacobian[7][21] = 0.0; + rJacobian[7][22] = 0.0; + rJacobian[7][23] = 0.0; + rJacobian[7][24] = 0.0; + rJacobian[7][25] = 0.0; + rJacobian[8][0] = 0.0; + rJacobian[8][1] = 0.0; + rJacobian[8][2] = 0.0; + rJacobian[8][3] = 0.0; + rJacobian[8][4] = 0.0; + rJacobian[8][5] = 0.0; + rJacobian[8][6] = 0.0; + rJacobian[8][7] = 0.0; + rJacobian[8][8] = 1.0 - (mDt * (-var_x94 - var_x97 - var_x98)); + rJacobian[8][9] = -(mDt * (var_x99)); + rJacobian[8][10] = 0.0; + rJacobian[8][11] = 0.0; + rJacobian[8][12] = 0.0; + rJacobian[8][13] = 0.0; + rJacobian[8][14] = -(mDt * (var_x101)); + rJacobian[8][15] = -(mDt * (var_x103)); + rJacobian[8][16] = 0.0; + rJacobian[8][17] = 0.0; + rJacobian[8][18] = 0.0; + rJacobian[8][19] = 0.0; + rJacobian[8][20] = 0.0; + rJacobian[8][21] = 0.0; + rJacobian[8][22] = 0.0; + rJacobian[8][23] = 0.0; + rJacobian[8][24] = 0.0; + rJacobian[8][25] = 0.0; + rJacobian[9][0] = 0.0; + rJacobian[9][1] = 0.0; + rJacobian[9][2] = 0.0; + rJacobian[9][3] = 0.0; + rJacobian[9][4] = 0.0; + rJacobian[9][5] = 0.0; + rJacobian[9][6] = 0.0; + rJacobian[9][7] = 0.0; + rJacobian[9][8] = -(mDt * (var_x105 + var_x94)); + rJacobian[9][9] = 1.0 - (mDt * (-var_x107 - var_x108)); + rJacobian[9][10] = -(mDt * (var_x105)); + rJacobian[9][11] = -(mDt * (var_x105)); + rJacobian[9][12] = -(mDt * (var_x101 + var_x105)); + rJacobian[9][13] = -(mDt * (var_x105)); + rJacobian[9][14] = -(mDt * (var_x105)); + rJacobian[9][15] = -(mDt * (var_x105)); + rJacobian[9][16] = 0.0; + rJacobian[9][17] = 0.0; + rJacobian[9][18] = 0.0; + rJacobian[9][19] = 0.0; + rJacobian[9][20] = 0.0; + rJacobian[9][21] = 0.0; + rJacobian[9][22] = 0.0; + rJacobian[9][23] = 0.0; + rJacobian[9][24] = 0.0; + rJacobian[9][25] = 0.0; + rJacobian[10][0] = 0.0; + rJacobian[10][1] = 0.0; + rJacobian[10][2] = 0.0; + rJacobian[10][3] = 0.0; + rJacobian[10][4] = 0.0; + rJacobian[10][5] = 0.0; + rJacobian[10][6] = 0.0; + rJacobian[10][7] = 0.0; + rJacobian[10][8] = 0.0; + rJacobian[10][9] = 0.0; + rJacobian[10][10] = 1.0 - (mDt * (-var_x101 - var_x110)); + rJacobian[10][11] = -(mDt * (var_x111)); + rJacobian[10][12] = 0.0; + rJacobian[10][13] = 0.0; + rJacobian[10][14] = -(mDt * (var_x112)); + rJacobian[10][15] = 0.0; + rJacobian[10][16] = 0.0; + rJacobian[10][17] = 0.0; + rJacobian[10][18] = 0.0; + rJacobian[10][19] = 0.0; + rJacobian[10][20] = 0.0; + rJacobian[10][21] = 0.0; + rJacobian[10][22] = 0.0; + rJacobian[10][23] = 0.0; + rJacobian[10][24] = 0.0; + rJacobian[10][25] = 0.0; + rJacobian[11][0] = 0.0; + rJacobian[11][1] = 0.0; + rJacobian[11][2] = 0.0; + rJacobian[11][3] = 0.0; + rJacobian[11][4] = 0.0; + rJacobian[11][5] = 0.0; + rJacobian[11][6] = 0.0; + rJacobian[11][7] = 0.0; + rJacobian[11][8] = 0.0; + rJacobian[11][9] = 0.0; + rJacobian[11][10] = -(mDt * (var_x110)); + rJacobian[11][11] = 1.0 - (mDt * (-var_x111)); + rJacobian[11][12] = 0.0; + rJacobian[11][13] = 0.0; + rJacobian[11][14] = 0.0; + rJacobian[11][15] = 0.0; + rJacobian[11][16] = 0.0; + rJacobian[11][17] = 0.0; + rJacobian[11][18] = 0.0; + rJacobian[11][19] = 0.0; + rJacobian[11][20] = 0.0; + rJacobian[11][21] = 0.0; + rJacobian[11][22] = 0.0; + rJacobian[11][23] = 0.0; + rJacobian[11][24] = 0.0; + rJacobian[11][25] = 0.0; + rJacobian[12][0] = 0.0; + rJacobian[12][1] = 0.0; + rJacobian[12][2] = 0.0; + rJacobian[12][3] = 0.0; + rJacobian[12][4] = 0.0; + rJacobian[12][5] = 0.0; + rJacobian[12][6] = 0.0; + rJacobian[12][7] = 0.0; + rJacobian[12][8] = 0.0; + rJacobian[12][9] = -(mDt * (var_x98)); + rJacobian[12][10] = 0.0; + rJacobian[12][11] = 0.0; + rJacobian[12][12] = 1.0 - (mDt * (-var_x101 - var_x107)); + rJacobian[12][13] = -(mDt * (var_x104)); + rJacobian[12][14] = -(mDt * (var_x94)); + rJacobian[12][15] = 0.0; + rJacobian[12][16] = 0.0; + rJacobian[12][17] = 0.0; + rJacobian[12][18] = 0.0; + rJacobian[12][19] = 0.0; + rJacobian[12][20] = 0.0; + rJacobian[12][21] = 0.0; + rJacobian[12][22] = 0.0; + rJacobian[12][23] = 0.0; + rJacobian[12][24] = 0.0; + rJacobian[12][25] = 0.0; + rJacobian[13][0] = 0.0; + rJacobian[13][1] = 0.0; + rJacobian[13][2] = 0.0; + rJacobian[13][3] = 0.0; + rJacobian[13][4] = 0.0; + rJacobian[13][5] = 0.0; + rJacobian[13][6] = 0.0; + rJacobian[13][7] = 0.0; + rJacobian[13][8] = -(mDt * (var_x113)); + rJacobian[13][9] = -(mDt * (var_x113)); + rJacobian[13][10] = -(mDt * (var_x113)); + rJacobian[13][11] = -(mDt * (var_x113)); + rJacobian[13][12] = -(mDt * (var_x106 - var_x98)); + rJacobian[13][13] = 1.0 - (mDt * (-var_x101 - var_x108)); + rJacobian[13][14] = -(mDt * (var_x113)); + rJacobian[13][15] = -(mDt * (var_x113)); + rJacobian[13][16] = 0.0; + rJacobian[13][17] = 0.0; + rJacobian[13][18] = 0.0; + rJacobian[13][19] = 0.0; + rJacobian[13][20] = 0.0; + rJacobian[13][21] = 0.0; + rJacobian[13][22] = 0.0; + rJacobian[13][23] = 0.0; + rJacobian[13][24] = 0.0; + rJacobian[13][25] = 0.0; + rJacobian[14][0] = 0.0; + rJacobian[14][1] = 0.0; + rJacobian[14][2] = 0.0; + rJacobian[14][3] = 0.0; + rJacobian[14][4] = 0.0; + rJacobian[14][5] = 0.0; + rJacobian[14][6] = 0.0; + rJacobian[14][7] = 0.0; + rJacobian[14][8] = -(mDt * (var_x98)); + rJacobian[14][9] = 0.0; + rJacobian[14][10] = -(mDt * (var_x101)); + rJacobian[14][11] = 0.0; + rJacobian[14][12] = -(mDt * (var_x99)); + rJacobian[14][13] = 0.0; + rJacobian[14][14] = 1.0 - (mDt * (-var_x101 - var_x112 - var_x114 - var_x94)); + rJacobian[14][15] = -(mDt * (var_x115)); + rJacobian[14][16] = 0.0; + rJacobian[14][17] = 0.0; + rJacobian[14][18] = 0.0; + rJacobian[14][19] = 0.0; + rJacobian[14][20] = 0.0; + rJacobian[14][21] = 0.0; + rJacobian[14][22] = 0.0; + rJacobian[14][23] = 0.0; + rJacobian[14][24] = 0.0; + rJacobian[14][25] = 0.0; + rJacobian[15][0] = 0.0; + rJacobian[15][1] = 0.0; + rJacobian[15][2] = 0.0; + rJacobian[15][3] = 0.0; + rJacobian[15][4] = 0.0; + rJacobian[15][5] = 0.0; + rJacobian[15][6] = 0.0; + rJacobian[15][7] = 0.0; + rJacobian[15][8] = -(mDt * (var_x97)); + rJacobian[15][9] = 0.0; + rJacobian[15][10] = 0.0; + rJacobian[15][11] = 0.0; + rJacobian[15][12] = 0.0; + rJacobian[15][13] = 0.0; + rJacobian[15][14] = -(mDt * (var_x114)); + rJacobian[15][15] = 1.0 - (mDt * (-var_x103 - var_x115)); + rJacobian[15][16] = 0.0; + rJacobian[15][17] = 0.0; + rJacobian[15][18] = 0.0; + rJacobian[15][19] = 0.0; + rJacobian[15][20] = 0.0; + rJacobian[15][21] = 0.0; + rJacobian[15][22] = 0.0; + rJacobian[15][23] = 0.0; + rJacobian[15][24] = 0.0; + rJacobian[15][25] = 0.0; + rJacobian[16][0] = 0.0; + rJacobian[16][1] = 0.0; + rJacobian[16][2] = 0.0; + rJacobian[16][3] = 0.0; + rJacobian[16][4] = 0.0; + rJacobian[16][5] = 0.0; + rJacobian[16][6] = 0.0; + rJacobian[16][7] = 0.0; + rJacobian[16][8] = 0.0; + rJacobian[16][9] = 0.0; + rJacobian[16][10] = 0.0; + rJacobian[16][11] = 0.0; + rJacobian[16][12] = 0.0; + rJacobian[16][13] = 0.0; + rJacobian[16][14] = 0.0; + rJacobian[16][15] = 0.0; + rJacobian[16][16] = 1.0; + rJacobian[16][17] = 0.0; + rJacobian[16][18] = 0.0; + rJacobian[16][19] = 0.0; + rJacobian[16][20] = 0.0; + rJacobian[16][21] = 0.0; + rJacobian[16][22] = 0.0; + rJacobian[16][23] = 0.0; + rJacobian[16][24] = 0.0; + rJacobian[16][25] = 0.0; + rJacobian[17][0] = 0.0; + rJacobian[17][1] = 0.0; + rJacobian[17][2] = 0.0; + rJacobian[17][3] = 0.0; + rJacobian[17][4] = 0.0; + rJacobian[17][5] = 0.0; + rJacobian[17][6] = 0.0; + rJacobian[17][7] = 0.0; + rJacobian[17][8] = 0.0; + rJacobian[17][9] = 0.0; + rJacobian[17][10] = 0.0; + rJacobian[17][11] = 0.0; + rJacobian[17][12] = 0.0; + rJacobian[17][13] = 0.0; + rJacobian[17][14] = 0.0; + rJacobian[17][15] = 0.0; + rJacobian[17][16] = -(mDt * (-var_x119 * var_x120 * var_x121)); + rJacobian[17][17] = 1.0 - (mDt * (var_x120 * (-26.535875647668394 * var_x123 - var_x121 * var_x124 * var_chaste_interface__non_inactivating_steady_state_K_I__iKss - var_x124 * pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * mParameters[10] - 14.188732708808288 * var_x116 * pow(var_chaste_interface__fast_transient_outward_K_I__ato_f, 3) * var_chaste_interface__fast_transient_outward_K_I__ito_f - 6.6339689119170986 * var_x116 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur - 26.535875647668394 * var_x117 * var_x127 * mParameters[7] / var_x126 + 2.3776144580310881 * var_x116 * var_x119 * var_x125 * var_x127 * mParameters[2] * mParameters[7] / pow(var_x126, 2)))); + rJacobian[17][18] = 0.0; + rJacobian[17][19] = 0.0; + rJacobian[17][20] = 0.0; + rJacobian[17][21] = -(mDt * (-var_x120 * (-26.535875647668394 * log(var_x122 * (1 * mParameters[2] + 0.020408163265306124 * mParameters[3])) + var_chaste_interface__cell__V) * mParameters[9])); + rJacobian[17][22] = 0.0; + rJacobian[17][23] = 0.0; + rJacobian[17][24] = 0.0; + rJacobian[17][25] = -(mDt * (var_x120 * (160325193584.24136 * var_x130 - 0.54154848260547739 * var_x123))); + rJacobian[18][0] = 0.0; + rJacobian[18][1] = 0.0; + rJacobian[18][2] = 0.0; + rJacobian[18][3] = 0.0; + rJacobian[18][4] = 0.0; + rJacobian[18][5] = 0.0; + rJacobian[18][6] = 0.0; + rJacobian[18][7] = 0.0; + rJacobian[18][8] = 0.0; + rJacobian[18][9] = 0.0; + rJacobian[18][10] = 0.0; + rJacobian[18][11] = 0.0; + rJacobian[18][12] = 0.0; + rJacobian[18][13] = 0.0; + rJacobian[18][14] = 0.0; + rJacobian[18][15] = 0.0; + rJacobian[18][16] = 0.0; + rJacobian[18][17] = 0.0; + rJacobian[18][18] = 1.0 - (mDt * (-0.023761000000000001 - var_x131 - 0.047002000000000002 * exp(-0.063100000000000003 * var_chaste_interface__cell__V))); + rJacobian[18][19] = -(mDt * (0.036777999999999998 - var_x131)); + rJacobian[18][20] = -(mDt * (var_x132)); + rJacobian[18][21] = -(mDt * (var_x132)); + rJacobian[18][22] = 0.0; + rJacobian[18][23] = 0.0; + rJacobian[18][24] = 0.0; + rJacobian[18][25] = 0.0; + rJacobian[19][0] = 0.0; + rJacobian[19][1] = 0.0; + rJacobian[19][2] = 0.0; + rJacobian[19][3] = 0.0; + rJacobian[19][4] = 0.0; + rJacobian[19][5] = 0.0; + rJacobian[19][6] = 0.0; + rJacobian[19][7] = 0.0; + rJacobian[19][8] = 0.0; + rJacobian[19][9] = 0.0; + rJacobian[19][10] = 0.0; + rJacobian[19][11] = 0.0; + rJacobian[19][12] = 0.0; + rJacobian[19][13] = 0.0; + rJacobian[19][14] = 0.0; + rJacobian[19][15] = 0.0; + rJacobian[19][16] = 0.0; + rJacobian[19][17] = 0.0; + rJacobian[19][18] = -(mDt * (0.023761000000000001)); + rJacobian[19][19] = 1.0 - (mDt * (-0.036777999999999998 - var_x133)); + rJacobian[19][20] = 0.0; + rJacobian[19][21] = -(mDt * (var_x134)); + rJacobian[19][22] = 0.0; + rJacobian[19][23] = 0.0; + rJacobian[19][24] = 0.0; + rJacobian[19][25] = 0.0; + rJacobian[20][0] = 0.0; + rJacobian[20][1] = 0.0; + rJacobian[20][2] = 0.0; + rJacobian[20][3] = 0.0; + rJacobian[20][4] = 0.0; + rJacobian[20][5] = 0.0; + rJacobian[20][6] = 0.0; + rJacobian[20][7] = 0.0; + rJacobian[20][8] = 0.0; + rJacobian[20][9] = 0.0; + rJacobian[20][10] = 0.0; + rJacobian[20][11] = 0.0; + rJacobian[20][12] = 0.0; + rJacobian[20][13] = 0.0; + rJacobian[20][14] = 0.0; + rJacobian[20][15] = 0.0; + rJacobian[20][16] = 0.0; + rJacobian[20][17] = 0.0; + rJacobian[20][18] = 0.0; + rJacobian[20][19] = 0.0; + rJacobian[20][20] = 1.0 - (mDt * (-var_x135)); + rJacobian[20][21] = -(mDt * (var_x136)); + rJacobian[20][22] = 0.0; + rJacobian[20][23] = 0.0; + rJacobian[20][24] = 0.0; + rJacobian[20][25] = 0.0; + rJacobian[21][0] = 0.0; + rJacobian[21][1] = 0.0; + rJacobian[21][2] = 0.0; + rJacobian[21][3] = 0.0; + rJacobian[21][4] = 0.0; + rJacobian[21][5] = 0.0; + rJacobian[21][6] = 0.0; + rJacobian[21][7] = 0.0; + rJacobian[21][8] = 0.0; + rJacobian[21][9] = 0.0; + rJacobian[21][10] = 0.0; + rJacobian[21][11] = 0.0; + rJacobian[21][12] = 0.0; + rJacobian[21][13] = 0.0; + rJacobian[21][14] = 0.0; + rJacobian[21][15] = 0.0; + rJacobian[21][16] = 0.0; + rJacobian[21][17] = 0.0; + rJacobian[21][18] = 0.0; + rJacobian[21][19] = -(mDt * (var_x133)); + rJacobian[21][20] = -(mDt * (var_x135)); + rJacobian[21][21] = 1.0 - (mDt * (-var_x134 - var_x136)); + rJacobian[21][22] = 0.0; + rJacobian[21][23] = 0.0; + rJacobian[21][24] = 0.0; + rJacobian[21][25] = 0.0; + rJacobian[22][0] = 0.0; + rJacobian[22][1] = 0.0; + rJacobian[22][2] = 0.0; + rJacobian[22][3] = 0.0; + rJacobian[22][4] = 0.0; + rJacobian[22][5] = 0.0; + rJacobian[22][6] = 0.0; + rJacobian[22][7] = 0.0; + rJacobian[22][8] = 0.0; + rJacobian[22][9] = 0.0; + rJacobian[22][10] = 0.0; + rJacobian[22][11] = 0.0; + rJacobian[22][12] = 0.0; + rJacobian[22][13] = 0.0; + rJacobian[22][14] = 0.0; + rJacobian[22][15] = 0.0; + rJacobian[22][16] = 0.0; + rJacobian[22][17] = 0.0; + rJacobian[22][18] = 0.0; + rJacobian[22][19] = 0.0; + rJacobian[22][20] = 0.0; + rJacobian[22][21] = 0.0; + rJacobian[22][22] = 1.0 - (mDt * (-0.00080000000000000004)); + rJacobian[22][23] = -(mDt * (0.0089999999999999993)); + rJacobian[22][24] = 0.0; + rJacobian[22][25] = 0.0; + rJacobian[23][0] = 0.0; + rJacobian[23][1] = 0.0; + rJacobian[23][2] = 0.0; + rJacobian[23][3] = 0.0; + rJacobian[23][4] = 0.0; + rJacobian[23][5] = -(mDt * (-var_x137 + 0.024299999999999999 * var_x138 * (1 - var_x9 - var_chaste_interface__ryanodine_receptors__P_C2))); + rJacobian[23][6] = 0.0; + rJacobian[23][7] = 0.0; + rJacobian[23][8] = 0.0; + rJacobian[23][9] = 0.0; + rJacobian[23][10] = 0.0; + rJacobian[23][11] = 0.0; + rJacobian[23][12] = 0.0; + rJacobian[23][13] = 0.0; + rJacobian[23][14] = 0.0; + rJacobian[23][15] = 0.0; + rJacobian[23][16] = 0.0; + rJacobian[23][17] = 0.0; + rJacobian[23][18] = 0.0; + rJacobian[23][19] = 0.0; + rJacobian[23][20] = 0.0; + rJacobian[23][21] = 0.0; + rJacobian[23][22] = -(mDt * (0.00080000000000000004 - var_x139)); + rJacobian[23][23] = 1.0 - (mDt * (-0.080249999999999988 - var_x139 - var_x140)); + rJacobian[23][24] = -(mDt * (0.96499999999999997 - var_x139)); + rJacobian[23][25] = 0.0; + rJacobian[24][0] = 0.0; + rJacobian[24][1] = 0.0; + rJacobian[24][2] = 0.0; + rJacobian[24][3] = 0.0; + rJacobian[24][4] = 0.0; + rJacobian[24][5] = -(mDt * (var_x137)); + rJacobian[24][6] = 0.0; + rJacobian[24][7] = 0.0; + rJacobian[24][8] = 0.0; + rJacobian[24][9] = 0.0; + rJacobian[24][10] = 0.0; + rJacobian[24][11] = 0.0; + rJacobian[24][12] = 0.0; + rJacobian[24][13] = 0.0; + rJacobian[24][14] = 0.0; + rJacobian[24][15] = 0.0; + rJacobian[24][16] = 0.0; + rJacobian[24][17] = 0.0; + rJacobian[24][18] = 0.0; + rJacobian[24][19] = 0.0; + rJacobian[24][20] = 0.0; + rJacobian[24][21] = 0.0; + rJacobian[24][22] = 0.0; + rJacobian[24][23] = -(mDt * (var_x140)); + rJacobian[24][24] = 1.0 - (mDt * (-0.96499999999999997)); + rJacobian[24][25] = 0.0; + rJacobian[25][0] = 0.0; + rJacobian[25][1] = 0.0; + rJacobian[25][2] = 0.0; + rJacobian[25][3] = 0.0; + rJacobian[25][4] = -(mDt * (var_x120 * (3000 * var_x62 - var_x141 * var_x63))); + rJacobian[25][5] = 0.0; + rJacobian[25][6] = 0.0; + rJacobian[25][7] = 0.0; + rJacobian[25][8] = 0.0; + rJacobian[25][9] = 0.0; + rJacobian[25][10] = 0.0; + rJacobian[25][11] = 0.0; + rJacobian[25][12] = 0.0; + rJacobian[25][13] = 0.0; + rJacobian[25][14] = 0.0; + rJacobian[25][15] = -(mDt * (-var_x120 * (-26.535875647668394 * log(var_x142 * (1 * mParameters[3] + 0.1111111111111111 * mParameters[2])) + var_chaste_interface__cell__V) * mParameters[6])); + rJacobian[25][16] = 0.0; + rJacobian[25][17] = -(mDt * (var_x120 * (-2.9484306275187104 * var_x143 - 0.0076659196315486469 * var_x142))); + rJacobian[25][18] = 0.0; + rJacobian[25][19] = 0.0; + rJacobian[25][20] = 0.0; + rJacobian[25][21] = 0.0; + rJacobian[25][22] = 0.0; + rJacobian[25][23] = 0.0; + rJacobian[25][24] = 0.0; + rJacobian[25][25] = 1.0 - (mDt * (var_x120 * (-9 * var_x74 - 0.068993276683937815 * var_x142 - 26.535875647668394 * var_x143 - 240487790376.36206 * var_x130 - var_x141 * var_x73))); + } + + void Cellli_mouse_2010FromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 9.499150681398009e-05 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.0954184301907784 + double var_chaste_interface__L_type_calcium_current__O = rY[10]; + // Units: dimensionless; Initial value: 1.23713515513533e-06 + double var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + double var_chaste_interface__sodium_concentration__Nai = rY[13]; + // Units: micromolar; Initial value: 12364.7482121793 + double var_chaste_interface__fast_sodium_current__O_Na = rY[14]; + // Units: dimensionless; Initial value: 1.46826771436314e-06 + double var_chaste_interface__potassium_concentration__Ki = rY[22]; + // Units: micromolar; Initial value: 115599.50642567 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; + // Units: dimensionless; Initial value: 0.00346258606821817 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; + // Units: dimensionless; Initial value: 0.955684946168062 + double var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + double var_chaste_interface__non_inactivating_steady_state_K_I__iKss = rY[26]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_K_I__O_K = rY[27]; + // Units: dimensionless; Initial value: 0.0131742086125972 + double var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + double var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; + // Units: dimensionless; Initial value: 0.0142335908879204 + double var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; + // Units: dimensionless; Initial value: 0.996989882138174 + double var_chaste_interface__slow_transient_outward_K_I__ato_s = rY[34]; + // Units: dimensionless; Initial value: 0.0443263407760382 + double var_chaste_interface__slow_transient_outward_K_I__ito_s = rY[35]; + // Units: dimensionless; Initial value: 0.887568880831388 + + const double var_calcium_activated_chloride_current__E_Cl = -40; // millivolt + const double var_calcium_activated_chloride_current__Km_Cl = 10; // micromolar + const double var_calcium_activated_chloride_current__g_ClCa = 10; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.00069999999999999999; // milliS_per_microF + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__Km_pCa = 0.28849999999999998; // micromolar + const double var_calcium_pump_current__i_pCa_max = 0.095500000000000002; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_cell__Acap = 0.00013866; // cm2 + const double var_cell__F = 96.5; // coulomb_per_millimole + const double var_cell__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_cell__T = 308; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_cell__R * var_cell__T * log(mParameters[1] / var_calcium_concentration__Cai) / var_cell__F; // millivolt + const double var_L_type_calcium_current__FVRT = var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T); // dimensionless + const double var_L_type_calcium_current__FVRT_Ca = 2 * var_L_type_calcium_current__FVRT; // dimensionless + const double var_calcium_activated_chloride_current__O_ClCa = 0.20000000000000001 / (1 + exp(5.9871794871794881 - 0.12820512820512822 * var_chaste_interface__cell__V)); // dimensionless + const double var_calcium_activated_chloride_current__i_ClCa = (-var_calcium_activated_chloride_current__E_Cl + var_chaste_interface__cell__V) * var_calcium_activated_chloride_current__O_ClCa * var_calcium_activated_chloride_current__g_ClCa * var_calcium_concentration__Cai / (var_calcium_activated_chloride_current__Km_Cl + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__cell__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_cell__Vss = 2.1999999999999998e-8; // microlitre + const double var_L_type_calcium_current__i_CaL = ((fabs(var_L_type_calcium_current__FVRT_Ca) > 1.0000000000000001e-5) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-var_L_type_calcium_current__FVRT_Ca)) * var_L_type_calcium_current__FVRT_Ca * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-2.0000000000000002e-5 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-1.0000000000000001e-5)) * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-1.0000000000000001e-5)) * var_cell__Acap * mParameters[5]))); // picoA_per_picoF + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // picoA_per_picoF + const double var_fast_transient_outward_K_I__g_Kto_f = 0.53469999999999995; // milliS_per_microF + const double var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * log(mParameters[2] / var_chaste_interface__potassium_concentration__Ki) / var_cell__F; // millivolt + const double var_fast_transient_outward_K_I__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_K_I__ato_f, 3) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_fast_transient_outward_K_I__g_Kto_f * var_chaste_interface__fast_transient_outward_K_I__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_K_I__i_Kss = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8] * var_chaste_interface__non_inactivating_steady_state_K_I__iKss; // picoA_per_picoF + const double var_slow_delayed_rectifier_K_I__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[10]; // picoA_per_picoF + const double var_slow_transient_outward_K_I__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_K_I__i_Kto_s = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__slow_transient_outward_K_I__ato_s * var_slow_transient_outward_K_I__g_Kto_s * var_chaste_interface__slow_transient_outward_K_I__ito_s; // picoA_per_picoF + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mAllo = 0; // micromolar + const double var_sodium_calcium_exchange_current__K_mCai = 3.6000000000000001; // micromolar + const double var_sodium_calcium_exchange_current__K_mCao = 1400; // micromolar + const double var_sodium_calcium_exchange_current__K_mNai = 12000; // micromolar + const double var_sodium_calcium_exchange_current__K_mNao = 88000; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.27000000000000002; // dimensionless + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log((1 * mParameters[3] + 0.1111111111111111 * mParameters[2]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[6]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_K_I__i_Kr = (-var_cell__R * var_cell__T * log((1 * mParameters[2] + 0.020408163265306124 * mParameters[3]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_cell__F + var_chaste_interface__cell__V) * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NCX = (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - pow(mParameters[3], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * mParameters[11] / ((1 + pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (pow(mParameters[3], 3) * var_calcium_concentration__Cai + pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + pow(mParameters[3], 3) * (1 + pow(var_chaste_interface__sodium_concentration__Nai, 3) / pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + pow(var_sodium_calcium_exchange_current__K_mNai, 3) * (1 + var_calcium_concentration__Cai / var_sodium_calcium_exchange_current__K_mCai) * mParameters[1])); // picoA_per_picoF + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 16600; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 2.4860000000000002; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[3]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[2] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 2.3999999999999999)) * (mParameters[2] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double var_time_independent_K_I__i_K1 = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[2] * mParameters[7] / ((1 + exp(0.089599999999999999 * var_chaste_interface__cell__V - 0.089599999999999999 * var_fast_transient_outward_K_I__E_K)) * (210 + mParameters[2])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur = 0.25; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__i_Kur = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur * var_ultra_rapidly_activating_delayed_rectifier_K_I__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_cell__V = -var_L_type_calcium_current__i_CaL - var_calcium_activated_chloride_current__i_ClCa - var_calcium_background_current__i_Cab - var_calcium_pump_current__i_pCa - var_cell__i_Stim - var_fast_sodium_current__i_Na - var_fast_transient_outward_K_I__i_Kto_f - var_non_inactivating_steady_state_K_I__i_Kss - var_rapid_delayed_rectifier_K_I__i_Kr - var_slow_delayed_rectifier_K_I__i_Ks - var_slow_transient_outward_K_I__i_Kto_s - var_sodium_background_current__i_Nab - var_sodium_calcium_exchange_current__i_NCX - var_sodium_potassium_pump_current__i_NaK - var_time_independent_K_I__i_K1 - var_ultra_rapidly_activating_delayed_rectifier_K_I__i_Kur; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_cell__V; + } + + void Cellli_mouse_2010FromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + double var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur = rY[23]; + // Units: dimensionless; Initial value: 0.00346258606821817 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur = rY[24]; + // Units: dimensionless; Initial value: 0.955684946168062 + double var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + double var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + double var_chaste_interface__fast_transient_outward_K_I__ato_f = rY[32]; + // Units: dimensionless; Initial value: 0.0142335908879204 + double var_chaste_interface__fast_transient_outward_K_I__ito_f = rY[33]; + // Units: dimensionless; Initial value: 0.996989882138174 + double var_chaste_interface__slow_transient_outward_K_I__ato_s = rY[34]; + // Units: dimensionless; Initial value: 0.0443263407760382 + double var_chaste_interface__slow_transient_outward_K_I__ito_s = rY[35]; + // Units: dimensionless; Initial value: 0.887568880831388 + + const double var_L_type_calcium_current__const5 = 8.1999999999999993; + const double var_L_type_calcium_current__y_gate_tau_const1 = 8; + const double var_L_type_calcium_current__y_gate_tau_const2 = 315; + const double var_L_type_calcium_current__y_gate_inf = 1 / (1 + exp((33 + var_chaste_interface__cell__V) / var_L_type_calcium_current__const5)) + 0.10000000000000001 / (1 + exp(6.666666666666667 - 0.16666666666666666 * var_chaste_interface__cell__V)); + const double var_L_type_calcium_current__y_gate_tau = var_L_type_calcium_current__y_gate_tau_const2 / (1 + exp(7.5 + 0.25 * var_chaste_interface__cell__V)) + var_L_type_calcium_current__y_gate_tau_const1; + const double var_fast_transient_outward_K_I__alpha_a = 0.18064 * exp(1.6096500000000002 + 0.035770000000000003 * var_chaste_interface__cell__V); + const double var_fast_transient_outward_K_I__beta_a = 0.39560000000000001 * exp(-2.8066499999999999 - 0.062370000000000002 * var_chaste_interface__cell__V); + const double var_fast_transient_outward_K_I__itof_iss = 1 / (1 + exp(10.279999999999999 + 0.20000000000000001 * var_chaste_interface__cell__V)); + const double var_fast_transient_outward_K_I__tau_ito_f = 9.6645000000000003 + 10.936199999999999 / (1 + exp(10.279999999999999 + 0.20000000000000001 * var_chaste_interface__cell__V)); + const double var_non_inactivating_steady_state_K_I__tau_Kss = 13.17 + 39.299999999999997 * exp(-0.050000000000000003 * var_chaste_interface__cell__V); + const double var_slow_delayed_rectifier_K_I__alpha_n = (((var_chaste_interface__cell__V >= -26.500000781250002) && (var_chaste_interface__cell__V <= -26.499999218749998)) ? (-3.7604140624912359e-12 / (1 - exp(9.9999999999766942e-8)) + 640000.00000149151 * (26.500000781250002 + var_chaste_interface__cell__V) * (3.7604140624912359e-12 / (1 - exp(9.9999999999766942e-8)) + 3.7604140624912359e-12 / (1 - exp(-9.9999999999766942e-8)))) : (4.8133299999999997e-6 * (26.5 + var_chaste_interface__cell__V) / (1 - exp(-3.3919999999999999 - 0.128 * var_chaste_interface__cell__V)))); + const double var_slow_delayed_rectifier_K_I__beta_n = 9.5333299999999997e-5 * exp(-1.0069999999999999 - 0.037999999999999999 * var_chaste_interface__cell__V); + const double var_slow_transient_outward_K_I__tau_ta_s = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__cell__V); + const double var_slow_transient_outward_K_I__tau_ti_s = 270 + 1050 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__cell__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__ass = 1 / (1 + exp(-0.64479166666666676 - 0.10416666666666667 * var_chaste_interface__cell__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__iss = 1 / (1 + exp(7.7962962962962958 + 0.18518518518518517 * var_chaste_interface__cell__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_aur = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__cell__V); + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_i_const = 643; + const double var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_iur = 1000 / (1 + exp(7.7962962962962958 + 0.18518518518518517 * var_chaste_interface__cell__V)) + var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_i_const; + + + rY[12] = (var_chaste_interface__L_type_calcium_current__y_gate + ((var_L_type_calcium_current__y_gate_inf / var_L_type_calcium_current__y_gate_tau) * mDt)) / (1.0 - ((-1 / var_L_type_calcium_current__y_gate_tau) * mDt)); + rY[32] = (var_chaste_interface__fast_transient_outward_K_I__ato_f + ((1 * var_fast_transient_outward_K_I__alpha_a) * mDt)) / (1.0 - ((-var_fast_transient_outward_K_I__alpha_a - var_fast_transient_outward_K_I__beta_a) * mDt)); + rY[33] = (var_chaste_interface__fast_transient_outward_K_I__ito_f + ((var_fast_transient_outward_K_I__itof_iss / var_fast_transient_outward_K_I__tau_ito_f) * mDt)) / (1.0 - ((-1 / var_fast_transient_outward_K_I__tau_ito_f) * mDt)); + rY[25] = (var_chaste_interface__non_inactivating_steady_state_K_I__aKss + ((var_ultra_rapidly_activating_delayed_rectifier_K_I__ass / var_non_inactivating_steady_state_K_I__tau_Kss) * mDt)) / (1.0 - ((-1 / var_non_inactivating_steady_state_K_I__tau_Kss) * mDt)); + rY[31] = (var_chaste_interface__slow_delayed_rectifier_K_I__nKs + ((1 * var_slow_delayed_rectifier_K_I__alpha_n) * mDt)) / (1.0 - ((-var_slow_delayed_rectifier_K_I__alpha_n - var_slow_delayed_rectifier_K_I__beta_n) * mDt)); + rY[34] = (var_chaste_interface__slow_transient_outward_K_I__ato_s + ((var_ultra_rapidly_activating_delayed_rectifier_K_I__ass / var_slow_transient_outward_K_I__tau_ta_s) * mDt)) / (1.0 - ((-1 / var_slow_transient_outward_K_I__tau_ta_s) * mDt)); + rY[35] = (var_chaste_interface__slow_transient_outward_K_I__ito_s + ((var_ultra_rapidly_activating_delayed_rectifier_K_I__iss / var_slow_transient_outward_K_I__tau_ti_s) * mDt)) / (1.0 - ((-1 / var_slow_transient_outward_K_I__tau_ti_s) * mDt)); + rY[23] = (var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__aur + ((var_ultra_rapidly_activating_delayed_rectifier_K_I__ass / var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_aur) * mDt)) / (1.0 - ((-1 / var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_aur) * mDt)); + rY[24] = (var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_K_I__iur + ((var_ultra_rapidly_activating_delayed_rectifier_K_I__iss / var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_iur) * mDt)) / (1.0 - ((-1 / var_ultra_rapidly_activating_delayed_rectifier_K_I__tau_iur) * mDt)); + + double _guess[26] = {rY[11],rY[10],rY[3],rY[4],rY[1],rY[2],rY[6],rY[5],rY[15],rY[16],rY[17],rY[18],rY[20],rY[21],rY[19],rY[14],rY[26],rY[22],rY[28],rY[29],rY[30],rY[27],rY[9],rY[7],rY[8],rY[13]}; + CardiacNewtonSolver<26,Cellli_mouse_2010FromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<26,Cellli_mouse_2010FromCellMLBackwardEuler>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[11] = _guess[0]; + rY[10] = _guess[1]; + rY[3] = _guess[2]; + rY[4] = _guess[3]; + rY[1] = _guess[4]; + rY[2] = _guess[5]; + rY[6] = _guess[6]; + rY[5] = _guess[7]; + rY[15] = _guess[8]; + rY[16] = _guess[9]; + rY[17] = _guess[10]; + rY[18] = _guess[11]; + rY[20] = _guess[12]; + rY[21] = _guess[13]; + rY[19] = _guess[14]; + rY[14] = _guess[15]; + rY[26] = _guess[16]; + rY[22] = _guess[17]; + rY[28] = _guess[18]; + rY[29] = _guess[19]; + rY[30] = _guess[20]; + rY[27] = _guess[21]; + rY[9] = _guess[22]; + rY[7] = _guess[23]; + rY[8] = _guess[24]; + rY[13] = _guess[25]; + } + + std::vector Cellli_mouse_2010FromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -78.9452115785979 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 9.499150681398009e-05 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.0954184301907784 + double var_chaste_interface__calcium_concentration__CaJSR = rY[3]; + // Units: micromolar; Initial value: 171.167969039613 + double var_chaste_interface__calcium_fluxes__P_RyR = rY[5]; + // Units: dimensionless; Initial value: 0.000280539508743811 + double var_chaste_interface__ryanodine_receptors__P_O1 = rY[7]; + // Units: dimensionless; Initial value: 0.00571393383393735 + double var_chaste_interface__ryanodine_receptors__P_O2 = rY[8]; + // Units: dimensionless; Initial value: 2.09864618235341e-08 + double var_chaste_interface__L_type_calcium_current__O = rY[10]; + // Units: dimensionless; Initial value: 1.23713515513533e-06 + double var_chaste_interface__L_type_calcium_current__y_gate = rY[12]; + // Units: dimensionless; Initial value: 0.845044436980163 + double var_chaste_interface__sodium_concentration__Nai = rY[13]; + // Units: micromolar; Initial value: 12364.7482121793 + double var_chaste_interface__fast_sodium_current__O_Na = rY[14]; + // Units: dimensionless; Initial value: 1.46826771436314e-06 + double var_chaste_interface__potassium_concentration__Ki = rY[22]; + // Units: micromolar; Initial value: 115599.50642567 + double var_chaste_interface__non_inactivating_steady_state_K_I__aKss = rY[25]; + // Units: dimensionless; Initial value: 0.287585636847048 + double var_chaste_interface__non_inactivating_steady_state_K_I__iKss = rY[26]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_K_I__O_K = rY[27]; + // Units: dimensionless; Initial value: 0.0131742086125972 + double var_chaste_interface__slow_delayed_rectifier_K_I__nKs = rY[31]; + // Units: dimensionless; Initial value: 0.00336735013094628 + + // Mathematics + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_fluxes__v1_caff = 10; // per_millisecond + const double var_cell__Acap = 0.00013866; // cm2 + const double var_cell__F = 96.5; // coulomb_per_millimole + const double var_cell__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_cell__T = 308; // kelvin + const double var_L_type_calcium_current__FVRT = var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T); // dimensionless + const double var_L_type_calcium_current__FVRT_Ca = 2 * var_L_type_calcium_current__FVRT; // dimensionless + const double var_cell__Vss = 2.1999999999999998e-8; // microlitre + const double var_L_type_calcium_current__i_CaL = ((fabs(var_L_type_calcium_current__FVRT_Ca) > 1.0000000000000001e-5) ? (-2 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-var_L_type_calcium_current__FVRT_Ca)) * var_L_type_calcium_current__FVRT_Ca * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-var_L_type_calcium_current__FVRT_Ca)) * var_cell__Acap * mParameters[5])) : (-2.0000000000000002e-5 * (-var_chaste_interface__calcium_concentration__Cass + mParameters[1] * exp(-1.0000000000000001e-5)) * var_chaste_interface__L_type_calcium_current__O * mParameters[4] * var_chaste_interface__L_type_calcium_current__y_gate * var_cell__F * var_cell__Vss / ((1 - exp(-1.0000000000000001e-5)) * var_cell__Acap * mParameters[5]))); // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_cell__prepulses_number = 10000000000.0; // dimensionless + const double var_chaste_interface__cell__stim_period = 333.33300000000003; // millisecond + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_transient_outward_K_I__E_K = var_cell__R * var_cell__T * log(mParameters[2] / var_chaste_interface__potassium_concentration__Ki) / var_cell__F; // millivolt + const double var_non_inactivating_steady_state_K_I__i_Kss = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * var_chaste_interface__non_inactivating_steady_state_K_I__aKss * mParameters[8] * var_chaste_interface__non_inactivating_steady_state_K_I__iKss; // picoA_per_picoF + const double var_non_inactivating_steady_state_K_I__i_Kss_converted = HeartConfig::Instance()->GetCapacitance() * var_non_inactivating_steady_state_K_I__i_Kss; // uA_per_cm2 + const double var_calcium_fluxes__J_rel = ((var_chaste_interface__environment__time < var_cell__prepulses_number * var_chaste_interface__cell__stim_period) ? ((-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[0]) : ((-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * var_calcium_fluxes__v1_caff)); // micromolar_per_millisecond + const double var_slow_delayed_rectifier_K_I__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_I__nKs, 2) * (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[10]; // picoA_per_picoF + const double var_slow_delayed_rectifier_K_I__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_I__i_Ks; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__K_mAllo = 0; // micromolar + const double var_sodium_calcium_exchange_current__K_mCai = 3.6000000000000001; // micromolar + const double var_sodium_calcium_exchange_current__K_mCao = 1400; // micromolar + const double var_sodium_calcium_exchange_current__K_mNai = 12000; // micromolar + const double var_sodium_calcium_exchange_current__K_mNao = 88000; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.27000000000000002; // dimensionless + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log((1 * mParameters[3] + 0.1111111111111111 * mParameters[2]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[6]; // picoA_per_picoF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_K_I__i_Kr = (-var_cell__R * var_cell__T * log((1 * mParameters[2] + 0.020408163265306124 * mParameters[3]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_cell__F + var_chaste_interface__cell__V) * var_chaste_interface__rapid_delayed_rectifier_K_I__O_K * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_K_I__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_I__i_Kr; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__i_NCX = (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] * exp(var_cell__F * var_chaste_interface__cell__V * var_sodium_calcium_exchange_current__eta / (var_cell__R * var_cell__T)) - pow(mParameters[3], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * mParameters[11] / ((1 + pow(var_sodium_calcium_exchange_current__K_mAllo, 2) / pow(var_calcium_concentration__Cai, 2)) * (1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * (pow(mParameters[3], 3) * var_calcium_concentration__Cai + pow(var_sodium_calcium_exchange_current__K_mNao, 3) * var_calcium_concentration__Cai + pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[1] + pow(var_chaste_interface__sodium_concentration__Nai, 3) * var_sodium_calcium_exchange_current__K_mCao + pow(mParameters[3], 3) * (1 + pow(var_chaste_interface__sodium_concentration__Nai, 3) / pow(var_sodium_calcium_exchange_current__K_mNai, 3)) * var_sodium_calcium_exchange_current__K_mCai + pow(var_sodium_calcium_exchange_current__K_mNai, 3) * (1 + var_calcium_concentration__Cai / var_sodium_calcium_exchange_current__K_mCai) * mParameters[1])); // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NCX_converted = HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchange_current__i_NCX; // uA_per_cm2 + const double var_time_independent_K_I__i_K1 = (-var_fast_transient_outward_K_I__E_K + var_chaste_interface__cell__V) * mParameters[2] * mParameters[7] / ((1 + exp(0.089599999999999999 * var_chaste_interface__cell__V - 0.089599999999999999 * var_fast_transient_outward_K_I__E_K)) * (210 + mParameters[2])); // picoA_per_picoF + const double var_time_independent_K_I__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_K_I__i_K1; // uA_per_cm2 + + std::vector dqs(11); + dqs[0] = var_calcium_fluxes__J_rel; + dqs[1] = var_chaste_interface__calcium_concentration__Cai_converted; + dqs[2] = var_L_type_calcium_current__i_CaL_converted; + dqs[3] = var_fast_sodium_current__i_Na_converted; + dqs[4] = var_time_independent_K_I__i_K1_converted; + dqs[5] = var_non_inactivating_steady_state_K_I__i_Kss_converted; + dqs[6] = var_rapid_delayed_rectifier_K_I__i_Kr_converted; + dqs[7] = var_slow_delayed_rectifier_K_I__i_Ks_converted; + dqs[8] = var_sodium_calcium_exchange_current__i_NCX_converted; + dqs[9] = var_cell__i_Stim_converted; + dqs[10] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "Li_Mouse_2010"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-78.9452115785979); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.499150681398009e-05); + + // rY[2]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(0.0954184301907784); + + // rY[3]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(171.167969039613); + + // rY[4]: + this->mVariableNames.push_back("calcium_concentration__CaNSR"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(404.825013216286); + + // rY[5]: + this->mVariableNames.push_back("calcium_fluxes__P_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000280539508743811); + + // rY[6]: + this->mVariableNames.push_back("calcium_fluxes__CaMKt"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.729027738385079); + + // rY[7]: + this->mVariableNames.push_back("ryanodine_receptors__P_O1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00571393383393735); + + // rY[8]: + this->mVariableNames.push_back("ryanodine_receptors__P_O2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.09864618235341e-08); + + // rY[9]: + this->mVariableNames.push_back("ryanodine_receptors__P_C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.565182571165673); + + // rY[10]: + this->mVariableNames.push_back("L_type_calcium_current__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.23713515513533e-06); + + // rY[11]: + this->mVariableNames.push_back("L_type_calcium_current__I"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.427651445872853); + + // rY[12]: + this->mVariableNames.push_back("L_type_calcium_current__y_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.845044436980163); + + // rY[13]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(12364.7482121793); + + // rY[14]: + this->mVariableNames.push_back("fast_sodium_current__O_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.46826771436314e-06); + + // rY[15]: + this->mVariableNames.push_back("fast_sodium_current__C_Na1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000420472760277688); + + // rY[16]: + this->mVariableNames.push_back("fast_sodium_current__C_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0240114508843199); + + // rY[17]: + this->mVariableNames.push_back("fast_sodium_current__I1_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000517471697712382); + + // rY[18]: + this->mVariableNames.push_back("fast_sodium_current__I2_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.45406116958509e-05); + + // rY[19]: + this->mVariableNames.push_back("fast_sodium_current__IF_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000306123648969581); + + // rY[20]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0174528857380179); + + // rY[21]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.402980726914811); + + // rY[22]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(115599.50642567); + + // rY[23]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_K_I__aur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00346258606821817); + + // rY[24]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_K_I__iur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.955684946168062); + + // rY[25]: + this->mVariableNames.push_back("non_inactivating_steady_state_K_I__aKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.287585636847048); + + // rY[26]: + this->mVariableNames.push_back("non_inactivating_steady_state_K_I__iKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[27]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_I__O_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0131742086125972); + + // rY[28]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_I__C_K1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0011733433957123); + + // rY[29]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_I__C_K2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00105586824723736); + + // rY[30]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_I__I_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00140618453684944); + + // rY[31]: + this->mVariableNames.push_back("slow_delayed_rectifier_K_I__nKs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00336735013094628); + + // rY[32]: + this->mVariableNames.push_back("fast_transient_outward_K_I__ato_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0142335908879204); + + // rY[33]: + this->mVariableNames.push_back("fast_transient_outward_K_I__ito_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.996989882138174); + + // rY[34]: + this->mVariableNames.push_back("slow_transient_outward_K_I__ato_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0443263407760382); + + // rY[35]: + this->mVariableNames.push_back("slow_transient_outward_K_I__ito_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.887568880831388); + + // mParameters[0]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[3]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_non_inactivating_steady_state_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("micromolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_non_inactivating_steady_state_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellli_mouse_2010FromCellMLBackwardEuler) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_11.cpp similarity index 90% rename from chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_11.cpp index 63a7cd0c..d38a8fbe 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_11.cpp @@ -661,7 +661,7 @@ class Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEul for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return -0.022348 * exp(0.01176 * var_chaste_interface__membrane__V); + return 0.022348 * exp(0.01176 * var_chaste_interface__membrane__V); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -1092,120 +1092,114 @@ std::shared_ptr + +#include "CardiacNewtonSolver.hpp" +#include "bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + +class Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<47; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= -26.500000781250002) && (var_chaste_interface__membrane__V <= -26.499999218749998)) ? (-3.7604140624912359e-12 / (1 - exp(9.9999999999766942e-8)) + 640000.00000149151 * (26.500000781250002 + var_chaste_interface__membrane__V) * (3.7604140624912359e-12 / (1 - exp(9.9999999999766942e-8)) + 3.7604140624912359e-12 / (1 - exp(-9.9999999999766942e-8)))) : (4.8133299999999997e-6 * (26.5 + var_chaste_interface__membrane__V) / (1 - exp(-3.3919999999999999 - 0.128 * var_chaste_interface__membrane__V)))); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[29] < 2){ + double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[29] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[29] >= 2){ + EXCEPTION("Lookup table 29 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[47]; + + // Lookup tables + double (*_lookup_table_0)[47]; + int _lookup_table_0_num_misshit_piecewise[47] = {0}; + +}; + +std::shared_ptr Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::mpInstance; + + + boost::shared_ptr Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 0.5; // millisecond + const double var_chaste_interface__membrane__stim_period = 71.430000000000007; // millisecond + const double var_chaste_interface__membrane__stim_start = 0; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<32>( + 41, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1.7399999999999999e-5; // (var_calcium_fluxes__v2) [per_millisecond] + this->mParameters[1] = 4.5; // (var_calcium_fluxes__v1) [per_millisecond] + this->mParameters[2] = 0.45000000000000001; // (var_calcium_fluxes__v3) [micromolar_per_millisecond] + this->mParameters[3] = 1; // (var_sodium_concentration__conc_clamp) [dimensionless] + this->mParameters[4] = 1800; // (var_membrane__Cao) [micromolar] + this->mParameters[5] = 5400; // (var_membrane__Ko) [micromolar] + this->mParameters[6] = 140000; // (var_membrane__Nao) [micromolar] + this->mParameters[7] = 0.1729; // (var_L_type_calcium_current__g_CaL) [milliS_per_microF] + this->mParameters[8] = 1; // (var_membrane__Cm) [microF_per_cm2] + this->mParameters[9] = 13; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[10] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[11] = 0.29380000000000001; // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = 0.050000000000000003; // (var_non_inactivating_steady_state_potassium_current__g_Kss) [milliS_per_microF] + this->mParameters[13] = 0.078; // (var_rapid_delayed_rectifier_potassium_current__g_Kr) [milliS_per_microF] + this->mParameters[14] = 0.0057499999999999999; // (var_slow_delayed_rectifier_potassium_current__g_Ks) [milliS_per_microF] + this->mParameters[15] = 292.80000000000001; // (var_sodium_calcium_exchange_current__k_NaCa) [picoA_per_picoF] + this->mParameters[16] = 0.40670000000000001; // (var_fast_transient_outward_potassium_current__g_Kto_f) [milliS_per_microF] + } + + Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::~Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt() + { + } + + AbstractLookupTableCollection* Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::GetLookupTableCollection() + { + return Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance(); + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 41; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + // Lookup table indexing + const bool _oob_0 = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__i_pCa = 1 * pow(var_calcium_concentration__Cai, 2) / (0.25 + pow(var_calcium_concentration__Cai, 2)); // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = (-63 + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // uA_per_cm2 + const double var_calcium_activated_chloride_current__i_ClCa = 2 * _lt_0_row[0] * (40 + var_chaste_interface__membrane__V) * var_calcium_concentration__Cai / (10 + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_calcium_background_current__i_Cab = 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(mParameters[4] / var_calcium_concentration__Cai); // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = 25.674321243523316 * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki); // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // uA_per_cm2 + const double var_non_inactivating_steady_state_potassium_current__i_Kss_converted = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // uA_per_cm2 + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[14]; // uA_per_cm2 + const double var_slow_transient_outward_potassium_current__i_Kto_s = 0; // picoA_per_picoF + const double var_fast_sodium_current__E_Na = 25.674321243523316 * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)); // millivolt + const double var_fast_sodium_current__i_Na_converted = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = (-25.674321243523316 * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // uA_per_cm2 + const double var_sodium_background_current__i_Nab = 0.0025999999999999999 * var_chaste_interface__membrane__V - 0.0025999999999999999 * var_fast_sodium_current__E_Na; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = 1 * _lt_0_row[3] * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * _lt_0_row[1] - pow(mParameters[6], 3) * var_calcium_concentration__Cai * _lt_0_row[2]) * HeartConfig::Instance()->GetCapacitance() * mParameters[15] / ((1380 + mParameters[4]) * (669921875000000.0 + pow(mParameters[6], 3))); // uA_per_cm2 + const double var_sodium_potassium_pump_current__i_NaK = 0.88 * mParameters[5] / ((1 + 3043189.1166997822 * pow((1 / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (1500 + mParameters[5]) * (1 + _lt_0_row[5] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * _lt_0_row[4])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1_converted = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // uA_per_cm2 + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = 0.16 * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_calcium_activated_chloride_current__i_ClCa + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Cab + HeartConfig::Instance()->GetCapacitance() * var_calcium_pump_current__i_pCa + HeartConfig::Instance()->GetCapacitance() * var_slow_transient_outward_potassium_current__i_Kto_s + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Nab + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump_current__i_NaK + HeartConfig::Instance()->GetCapacitance() * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur + var_L_type_calcium_current__i_CaL_converted + var_fast_sodium_current__i_Na_converted + var_fast_transient_outward_potassium_current__i_Kto_f_converted + var_non_inactivating_steady_state_potassium_current__i_Kss_converted + var_rapid_delayed_rectifier_potassium_current__i_Kr_converted + var_slow_delayed_rectifier_potassium_current__i_Ks_converted + var_sodium_calcium_exchange_current__i_NaCa_converted + var_time_independent_potassium_current__i_K1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rResidual[32]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + + //output_nonlinear_state_assignments + double var_chaste_interface__L_type_calcium_current__C2 = rCurrentGuess[0]; + double var_chaste_interface__L_type_calcium_current__C3 = rCurrentGuess[1]; + double var_chaste_interface__L_type_calcium_current__C4 = rCurrentGuess[2]; + double var_chaste_interface__L_type_calcium_current__I1 = rCurrentGuess[3]; + double var_chaste_interface__L_type_calcium_current__I2 = rCurrentGuess[4]; + double var_chaste_interface__L_type_calcium_current__I3 = rCurrentGuess[5]; + double var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[6]; + double var_chaste_interface__calcium_buffering__HTRPN_Ca = rCurrentGuess[7]; + double var_chaste_interface__calcium_buffering__LTRPN_Ca = rCurrentGuess[8]; + double var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[9]; + double var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[10]; + double var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[11]; + double var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[12]; + double var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[13]; + double var_chaste_interface__fast_sodium_current__C_Na1 = rCurrentGuess[14]; + double var_chaste_interface__fast_sodium_current__C_Na2 = rCurrentGuess[15]; + double var_chaste_interface__fast_sodium_current__I1_Na = rCurrentGuess[16]; + double var_chaste_interface__fast_sodium_current__I2_Na = rCurrentGuess[17]; + double var_chaste_interface__fast_sodium_current__IC_Na2 = rCurrentGuess[18]; + double var_chaste_interface__fast_sodium_current__IC_Na3 = rCurrentGuess[19]; + double var_chaste_interface__fast_sodium_current__IF_Na = rCurrentGuess[20]; + double var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[21]; + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rCurrentGuess[22]; + double var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[23]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 = rCurrentGuess[24]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 = rCurrentGuess[25]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K = rCurrentGuess[26]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rCurrentGuess[27]; + double var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[28]; + double var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[29]; + double var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[30]; + double var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[31]; + + // Lookup table indexing + const bool _oob_0 = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + //output_equations + const double d_dt_chaste_interface_var_non_inactivating_steady_state_potassium_current__iKss = 0; // 1 / millisecond + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_L_type_calcium_current__gamma = 0.23324 * var_chaste_interface__calcium_concentration__Cass / (20 + var_chaste_interface__calcium_concentration__Cass); // per_millisecond + const double d_dt_chaste_interface_var_calcium_buffering__HTRPN_Ca = -3.1999999999999999e-5 * var_chaste_interface__calcium_buffering__HTRPN_Ca + 0.0023700000000000001 * (140 - var_chaste_interface__calcium_buffering__HTRPN_Ca) * var_calcium_concentration__Cai; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_buffering__LTRPN_Ca = -0.019599999999999999 * var_chaste_interface__calcium_buffering__LTRPN_Ca + 0.0327 * (70 - var_chaste_interface__calcium_buffering__LTRPN_Ca) * var_calcium_concentration__Cai; // micromolar / millisecond + const double var_calcium_fluxes__J_tr = 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaNSR - 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaJSR; // micromolar_per_millisecond + const double var_calcium_fluxes__J_xfer = 0.125 * var_chaste_interface__calcium_concentration__Cass - 0.125 * var_calcium_concentration__Cai; // micromolar_per_millisecond + const double var_calcium_fluxes__J_leak = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0]; // micromolar_per_millisecond + const double var_calcium_fluxes__J_up = pow(var_calcium_concentration__Cai, 2) * mParameters[2] / (0.25 + pow(var_calcium_concentration__Cai, 2)); // micromolar_per_millisecond + const double var_calcium_pump_current__i_pCa = 1 * pow(var_calcium_concentration__Cai, 2) / (0.25 + pow(var_calcium_concentration__Cai, 2)); // picoA_per_picoF + const double var_fast_sodium_current__C_Na3 = 1 - var_chaste_interface__fast_sodium_current__C_Na1 - var_chaste_interface__fast_sodium_current__C_Na2 - var_chaste_interface__fast_sodium_current__I1_Na - var_chaste_interface__fast_sodium_current__I2_Na - var_chaste_interface__fast_sodium_current__IC_Na2 - var_chaste_interface__fast_sodium_current__IC_Na3 - var_chaste_interface__fast_sodium_current__IF_Na - var_chaste_interface__fast_sodium_current__O_Na; // dimensionless + const double var_L_type_calcium_current__Kpcf = _lt_0_row[6]; // per_millisecond + const double var_L_type_calcium_current__alpha = _lt_0_row[7]; // per_millisecond + const double var_L_type_calcium_current__beta = _lt_0_row[8]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C2 = -var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__beta + 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__beta + 4 * (1 - var_chaste_interface__L_type_calcium_current__C2 - var_chaste_interface__L_type_calcium_current__C3 - var_chaste_interface__L_type_calcium_current__C4 - var_chaste_interface__L_type_calcium_current__I1 - var_chaste_interface__L_type_calcium_current__I2 - var_chaste_interface__L_type_calcium_current__I3 - var_chaste_interface__L_type_calcium_current__O) * var_L_type_calcium_current__alpha - 3 * var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__alpha; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C3 = 3 * var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__alpha + 3 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__beta - 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__alpha - 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C4 = -var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha + 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__alpha + 4 * var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__beta + 0.002 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__beta + 0.0080000000000000002 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__beta + 2.0000000000000002e-5 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__beta - 3 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__beta - 0.002 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf - 1 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma - 0.01 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I1 = -0.00050000000000000001 * var_chaste_interface__L_type_calcium_current__I1 + var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__gamma + 0.001 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha - 0.001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf + 0.01 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma - 0.040000000000000001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I2 = 0.00050000000000000001 * var_chaste_interface__L_type_calcium_current__I3 - var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__gamma + 0.001 * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O + 0.002 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf - 0.001 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - 0.0080000000000000002 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I3 = -0.00050000000000000001 * var_chaste_interface__L_type_calcium_current__I3 + var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__gamma + 0.001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf - 0.001 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha - 0.002 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__beta + 1 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__O = 0.00050000000000000001 * var_chaste_interface__L_type_calcium_current__I1 + var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha - var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__gamma + 0.001 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - 4 * var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__beta - 0.001 * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O; // 1 / millisecond + const double var_L_type_calcium_current__i_CaL = (-63 + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double d_dt_chaste_interface_var_calcium_fluxes__P_RyR = -0.040000000000000001 * var_chaste_interface__calcium_fluxes__P_RyR - 0.014285714285714287 * var_L_type_calcium_current__i_CaL * _lt_0_row[9]; // 1 / millisecond + const double var_calcium_background_current__i_Cab = 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(mParameters[4] / var_calcium_concentration__Cai); // picoA_per_picoF + const double var_fast_sodium_current__alpha_Na11 = _lt_0_row[10]; // per_millisecond + const double var_fast_sodium_current__alpha_Na12 = _lt_0_row[11]; // per_millisecond + const double var_fast_sodium_current__alpha_Na13 = _lt_0_row[12]; // per_millisecond + const double var_fast_sodium_current__alpha_Na2 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 + 0.060240963855421679 * mParameters[10] - 0.060240963855421679 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na3 = _lt_0_row[13]; // per_millisecond + const double var_fast_sodium_current__alpha_Na4 = 0.001 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__alpha_Na5 = 1.0526315789473684e-5 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__beta_Na11 = _lt_0_row[14]; // per_millisecond + const double var_fast_sodium_current__beta_Na12 = _lt_0_row[15]; // per_millisecond + const double var_fast_sodium_current__beta_Na13 = _lt_0_row[16]; // per_millisecond + const double var_fast_sodium_current__beta_Na3 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__membrane__V; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na1 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na2 = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 + var_fast_sodium_current__C_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na2 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na3 = var_fast_sodium_current__C_Na3 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na3; // 1 / millisecond + const double var_fast_sodium_current__beta_Na2 = var_fast_sodium_current__alpha_Na13 * var_fast_sodium_current__alpha_Na2 * var_fast_sodium_current__alpha_Na3 / (var_fast_sodium_current__beta_Na13 * var_fast_sodium_current__beta_Na3); // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__O_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13; // 1 / millisecond + const double var_fast_sodium_current__beta_Na4 = var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IF_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2; // 1 / millisecond + const double var_fast_sodium_current__beta_Na5 = 0.02 * var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I1_Na = var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I2_Na = var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5; // 1 / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__CaNSR = 12.316491897044804 * var_calcium_fluxes__J_up - 12.316491897044804 * var_calcium_fluxes__J_leak - 0.057197330791229732 * var_calcium_fluxes__J_tr; // micromolar / millisecond + const double var_fast_transient_outward_potassium_current__E_K = 25.674321243523316 * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki); // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__alpha_a1 = _lt_0_row[23]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__alpha_i = _lt_0_row[24]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_a1 = _lt_0_row[25]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_i = _lt_0_row[26]; // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__I_K = var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__alpha_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K * var_rapid_delayed_rectifier_potassium_current__beta_i; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__O_K = var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__alpha_a1 + var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K * var_rapid_delayed_rectifier_potassium_current__beta_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__alpha_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__beta_a1; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K1 = 0.036777999999999998 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 - 0.023761000000000001 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 + 0.022348 * (1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K) * _lt_0_row[27] - 0.047002000000000002 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * _lt_0_row[28]; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K2 = 0.023761000000000001 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 - 0.036777999999999998 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 + var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__beta_a1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__alpha_a1; // 1 / millisecond + const double var_calcium_fluxes__J_rel = (-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; // micromolar_per_millisecond + const double d_dt_chaste_interface_var_calcium_concentration__CaJSR = (-var_calcium_fluxes__J_rel + var_calcium_fluxes__J_tr) / (1 + 18.75 / pow((1 + 0.00125 * var_chaste_interface__calcium_concentration__CaJSR), 2)); // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cass = (80.808080808080803 * var_calcium_fluxes__J_rel - 17400.6734006734 * var_calcium_fluxes__J_xfer - 535.23141606043157 * var_L_type_calcium_current__i_CaL * mParameters[8]) / (1 + 11.899999999999999 / pow((0.23799999999999999 + var_chaste_interface__calcium_concentration__Cass), 2)); // micromolar / millisecond + const double d_dt_chaste_interface_var_ryanodine_receptors__P_C2 = 0.0089999999999999993 * var_chaste_interface__ryanodine_receptors__P_O1 - 0.00080000000000000004 * var_chaste_interface__ryanodine_receptors__P_C2; // 1 / millisecond + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O2 = -0.96499999999999997 * var_chaste_interface__ryanodine_receptors__P_O2 + 0.0040499999999999998 * pow(var_chaste_interface__calcium_concentration__Cass, 3) * var_chaste_interface__ryanodine_receptors__P_O1; // 1 / millisecond + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O1 = 0.00080000000000000004 * var_chaste_interface__ryanodine_receptors__P_C2 + 0.96499999999999997 * var_chaste_interface__ryanodine_receptors__P_O2 - 0.080249999999999988 * var_chaste_interface__ryanodine_receptors__P_O1 + 0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4) * (1 - var_chaste_interface__ryanodine_receptors__P_C2 - var_chaste_interface__ryanodine_receptors__P_O1 - var_chaste_interface__ryanodine_receptors__P_O2) - 0.0040499999999999998 * pow(var_chaste_interface__calcium_concentration__Cass, 3) * var_chaste_interface__ryanodine_receptors__P_O1; // 1 / millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_transient_outward_potassium_current__i_Kto_s = 0; // picoA_per_picoF + const double var_fast_sodium_current__E_Na = 25.674321243523316 * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)); // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-25.674321243523316 * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = 0.0025999999999999999 * var_chaste_interface__membrane__V - 0.0025999999999999999 * var_fast_sodium_current__E_Na; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * _lt_0_row[3] * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * _lt_0_row[1] - pow(mParameters[6], 3) * var_calcium_concentration__Cai * _lt_0_row[2]) * mParameters[15] / ((1380 + mParameters[4]) * (669921875000000.0 + pow(mParameters[6], 3))); // picoA_per_picoF + const double d_dt_chaste_interface_var_calcium_concentration__Cai_converted = 0.001 * (-var_calcium_fluxes__J_up + 0.019599999999999999 * var_chaste_interface__calcium_buffering__LTRPN_Ca + 3.1999999999999999e-5 * var_chaste_interface__calcium_buffering__HTRPN_Ca - 0.0327 * (70 - var_chaste_interface__calcium_buffering__LTRPN_Ca) * var_calcium_concentration__Cai - 0.0023700000000000001 * (140 - var_chaste_interface__calcium_buffering__HTRPN_Ca) * var_calcium_concentration__Cai - 0.03075923579139864 * (-2 * var_sodium_calcium_exchange_current__i_NaCa + var_calcium_background_current__i_Cab + var_calcium_pump_current__i_pCa) * mParameters[8] + var_calcium_fluxes__J_leak + var_calcium_fluxes__J_xfer) / (1 + 11.899999999999999 / pow((0.23799999999999999 + var_calcium_concentration__Cai), 2)); // millimolar / millisecond + const double var_sodium_potassium_pump_current__i_NaK = 0.88 * mParameters[5] / ((1 + 3043189.1166997822 * pow((1 / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (1500 + mParameters[5]) * (1 + _lt_0_row[5] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * _lt_0_row[4])); // picoA_per_picoF + const double d_dt_chaste_interface_var_sodium_concentration__Nai = -0.061518471582797281 * (3 * var_sodium_calcium_exchange_current__i_NaCa + 3 * var_sodium_potassium_pump_current__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Nab) * mParameters[8] * mParameters[3]; // micromolar / millisecond + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = 0.16 * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_potassium_concentration__Ki = -0.061518471582797281 * (-2 * var_sodium_potassium_pump_current__i_NaK + var_fast_transient_outward_potassium_current__i_Kto_f + var_non_inactivating_steady_state_potassium_current__i_Kss + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_slow_delayed_rectifier_potassium_current__i_Ks + var_slow_transient_outward_potassium_current__i_Kto_s + var_time_independent_potassium_current__i_K1 + var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur) * mParameters[8] * mParameters[3]; // micromolar / millisecond + + rResidual[11] = rCurrentGuess[11] - rY[1] - mDt*d_dt_chaste_interface_var_calcium_concentration__Cai_converted; + rResidual[12] = rCurrentGuess[12] - rY[2] - mDt*d_dt_chaste_interface_var_calcium_concentration__Cass; + rResidual[9] = rCurrentGuess[9] - rY[3] - mDt*d_dt_chaste_interface_var_calcium_concentration__CaJSR; + rResidual[10] = rCurrentGuess[10] - rY[4] - mDt*d_dt_chaste_interface_var_calcium_concentration__CaNSR; + rResidual[13] = rCurrentGuess[13] - rY[5] - mDt*d_dt_chaste_interface_var_calcium_fluxes__P_RyR; + rResidual[8] = rCurrentGuess[8] - rY[6] - mDt*d_dt_chaste_interface_var_calcium_buffering__LTRPN_Ca; + rResidual[7] = rCurrentGuess[7] - rY[7] - mDt*d_dt_chaste_interface_var_calcium_buffering__HTRPN_Ca; + rResidual[29] = rCurrentGuess[29] - rY[8] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_O1; + rResidual[30] = rCurrentGuess[30] - rY[9] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_O2; + rResidual[28] = rCurrentGuess[28] - rY[10] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_C2; + rResidual[6] = rCurrentGuess[6] - rY[11] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__O; + rResidual[0] = rCurrentGuess[0] - rY[12] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__C2; + rResidual[1] = rCurrentGuess[1] - rY[13] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__C3; + rResidual[2] = rCurrentGuess[2] - rY[14] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__C4; + rResidual[3] = rCurrentGuess[3] - rY[15] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I1; + rResidual[4] = rCurrentGuess[4] - rY[16] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I2; + rResidual[5] = rCurrentGuess[5] - rY[17] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I3; + rResidual[31] = rCurrentGuess[31] - rY[18] - mDt*d_dt_chaste_interface_var_sodium_concentration__Nai; + rResidual[21] = rCurrentGuess[21] - rY[19] - mDt*d_dt_chaste_interface_var_fast_sodium_current__O_Na; + rResidual[14] = rCurrentGuess[14] - rY[20] - mDt*d_dt_chaste_interface_var_fast_sodium_current__C_Na1; + rResidual[15] = rCurrentGuess[15] - rY[21] - mDt*d_dt_chaste_interface_var_fast_sodium_current__C_Na2; + rResidual[16] = rCurrentGuess[16] - rY[22] - mDt*d_dt_chaste_interface_var_fast_sodium_current__I1_Na; + rResidual[17] = rCurrentGuess[17] - rY[23] - mDt*d_dt_chaste_interface_var_fast_sodium_current__I2_Na; + rResidual[20] = rCurrentGuess[20] - rY[24] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IF_Na; + rResidual[18] = rCurrentGuess[18] - rY[25] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IC_Na2; + rResidual[19] = rCurrentGuess[19] - rY[26] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IC_Na3; + rResidual[23] = rCurrentGuess[23] - rY[27] - mDt*d_dt_chaste_interface_var_potassium_concentration__Ki; + rResidual[22] = rCurrentGuess[22] - rY[36] - mDt*d_dt_chaste_interface_var_non_inactivating_steady_state_potassium_current__iKss; + rResidual[27] = rCurrentGuess[27] - rY[37] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__O_K; + rResidual[24] = rCurrentGuess[24] - rY[38] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K1; + rResidual[25] = rCurrentGuess[25] - rY[39] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K2; + rResidual[26] = rCurrentGuess[26] - rY[40] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__I_K; + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rJacobian[32][32]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + + // Lookup table indexing + const bool _oob_0 = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + double var_chaste_interface__L_type_calcium_current__C4 = rCurrentGuess[2]; + double var_chaste_interface__L_type_calcium_current__I2 = rCurrentGuess[4]; + double var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[6]; + double var_chaste_interface__calcium_buffering__HTRPN_Ca = rCurrentGuess[7]; + double var_chaste_interface__calcium_buffering__LTRPN_Ca = rCurrentGuess[8]; + double var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[9]; + double var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[10]; + double var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[11]; + double var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[12]; + double var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[13]; + double var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[21]; + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rCurrentGuess[22]; + double var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[23]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rCurrentGuess[27]; + double var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[28]; + double var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[29]; + double var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[30]; + double var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[31]; + + const double var_x0 = _lt_0_row[37]; + const double var_x1 = _lt_0_row[38]; + const double var_x2 = var_x1 * (_lt_0_row[39]) / (1 + 0.12 * var_x1); + const double var_x3 = 0.10000000000000001 * var_x0; + const double var_x4 = -1.6000000000000001 * var_x2; + const double var_x5 = 0.80000000000000004 * var_x2; + const double var_x6 = 0.15000000000000002 * var_x0; + const double var_x7 = _lt_0_row[40]; + const double var_x8 = 0.026000000000000002 * var_x7; + const double var_x9 = 13 - 13 * var_x7; + const double var_x10 = 1 / (20 + var_chaste_interface__calcium_concentration__Cass); + const double var_x11 = 0.23324 * var_x10; + const double var_x12 = var_x11 * var_chaste_interface__calcium_concentration__Cass; + const double var_x13 = var_x12 * var_x9; + const double var_x14 = 0.40000000000000002 * var_x2; + const double var_x15 = 0.00093296000000000004 * var_x10 * var_x2; + const double var_x16 = var_x15 * var_chaste_interface__calcium_concentration__Cass; + const double var_x17 = 0.00040000000000000002 * var_x0; + const double var_x18 = 0.0001 * var_x0; + const double var_x19 = 0.20000000000000001 * var_x0; + const double var_x20 = var_chaste_interface__calcium_concentration__Cass / pow((1 + 0.050000000000000003 * var_chaste_interface__calcium_concentration__Cass), 2); + const double var_x21 = -var_x15 * var_chaste_interface__L_type_calcium_current__C4 + 2.3324000000000003e-6 * var_x2 * var_x20 * var_chaste_interface__L_type_calcium_current__C4; + const double var_x22 = var_x9 * var_chaste_interface__L_type_calcium_current__C4; + const double var_x23 = 0.00058310000000000002 * var_x20; + const double var_x24 = var_x22 * var_x23 - var_x11 * var_x22; + const double var_x25 = 0.013000000000000001 * var_x7; + const double var_x26 = -var_x25; + const double var_x27 = 0.00040000000000000002 * var_x2; + const double var_x28 = var_x23 * var_chaste_interface__L_type_calcium_current__O - var_x11 * var_chaste_interface__L_type_calcium_current__O; + const double var_x29 = 0.013000000000000001 - var_x25; + const double var_x30 = var_x23 * var_chaste_interface__L_type_calcium_current__I2 - var_x11 * var_chaste_interface__L_type_calcium_current__I2; + const double var_x31 = 2.3700000000000001 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x32 = 3.1999999999999999e-5 + var_x31; + const double var_x33 = 2.3700000000000001 * var_chaste_interface__calcium_buffering__HTRPN_Ca; + const double var_x34 = 32.699999999999996 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x35 = 0.019599999999999999 + var_x34; + const double var_x36 = 32.699999999999996 * var_chaste_interface__calcium_buffering__LTRPN_Ca; + const double var_x37 = 1 + 0.00125 * var_chaste_interface__calcium_concentration__CaJSR; + const double var_x38 = pow(var_x37, (-2)); + const double var_x39 = 1 / (1 + 18.75 * var_x38); + const double var_x40 = var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2; + const double var_x41 = var_x40 * mParameters[1]; + const double var_x42 = var_x41 * var_chaste_interface__calcium_fluxes__P_RyR; + const double var_x43 = -var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR; + const double var_x44 = var_x39 * var_x43; + const double var_x45 = var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; + const double var_x46 = -var_x44 * var_x45; + const double var_x47 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); + const double var_x48 = 1000000 * var_x47; + const double var_x49 = 1 / (0.25 + var_x48); + const double var_x50 = var_x49 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x51 = pow((2.4999999999999999e-7 + var_x47), (-2)); + const double var_x52 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 3); + const double var_x53 = var_x51 * var_x52; + const double var_x54 = 0.00023799999999999998 + var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x55 = 1 + 1.19e-5 / pow(var_x54, 2); + const double var_x56 = 1 / var_x55; + const double var_x57 = 0.001 * var_x56; + const double var_x58 = 1 / var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x59 = 2000000 * var_x50; + const double var_x60 = _lt_0_row[2]; + const double var_x61 = pow(mParameters[6], 3); + const double var_x62 = var_x60 * var_x61; + const double var_x63 = mParameters[15] / ((1 + 0.10000000000000001 * var_x60) * (1380 + mParameters[4]) * (669921875000000.0 + var_x61)); + const double var_x64 = var_x62 * var_x63; + const double var_x65 = 0.03075923579139864 * mParameters[8]; + const double var_x66 = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x67 = var_x48 * var_x49; + const double var_x68 = _lt_0_row[1]; + const double var_x69 = var_x63 * var_x68 * pow(var_chaste_interface__sodium_concentration__Nai, 2) * mParameters[4]; + const double var_x70 = 0.23799999999999999 + var_chaste_interface__calcium_concentration__Cass; + const double var_x71 = pow(var_x70, (-2)); + const double var_x72 = 1 / (1 + 11.899999999999999 * var_x71); + const double var_x73 = (-63 + var_chaste_interface__membrane__V) * mParameters[7]; + const double var_x74 = 535.23141606043157 * var_x73 * mParameters[8]; + const double var_x75 = 80.808080808080803 * var_x42; + const double var_x76 = 80.808080808080803 * var_x43 * var_x72; + const double var_x77 = var_x45 * var_x76; + const double var_x78 = 0.04926108374384236 * var_chaste_interface__membrane__V; + const double var_x79 = 0.20000000000000001 * exp(0.12315270935960591 - var_x78); + const double var_x80 = _lt_0_row[41]; + const double var_x81 = 1 / (0.25 * var_x80 + _lt_0_row[42]); + const double var_x82 = 3.802 * var_x81; + const double var_x83 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__membrane__V; + const double var_x84 = 3.802 / (_lt_0_row[43] + 0.23000000000000001 * var_x80); + const double var_x85 = _lt_0_row[44]; + const double var_x86 = 6.9999999999999997e-7 * var_x85; + const double var_x87 = exp(0.36945812807881773 - var_x78); + const double var_x88 = 0.22 * var_x87; + const double var_x89 = 3.802 / (0.20000000000000001 * var_x80 + _lt_0_row[45]); + const double var_x90 = -var_x89; + const double var_x91 = 0.19170000000000001 * exp(-0.12315270935960591 - var_x78); + const double var_x92 = var_x84 + var_x91; + const double var_x93 = var_x83 + var_x89; + const double var_x94 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 + 0.060240963855421679 * mParameters[10] - 0.060240963855421679 * var_chaste_interface__membrane__V)); + const double var_x95 = 1.0526315789473684e-5 * var_x94; + const double var_x96 = 1.4e-8 * var_x85; + const double var_x97 = 0.001 * var_x94; + const double var_x98 = -var_x83; + const double var_x99 = 1.2097272727272726e-5 * var_x81 * var_x85 * var_x94 / (var_x83 * var_x87); + const double var_x100 = 1 * var_x94; + const double var_x101 = 1 / var_chaste_interface__potassium_concentration__Ki; + const double var_x102 = var_x101 * mParameters[5]; + const double var_x103 = log(var_x102); + const double var_x104 = -25.674321243523316 * var_x103 + var_chaste_interface__membrane__V; + const double var_x105 = mParameters[8] * mParameters[3]; + const double var_x106 = 0.061518471582797281 * var_x105; + const double var_x107 = var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12]; + const double var_x108 = 1 / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai); + const double var_x109 = 25.674321243523316 * var_x101; + const double var_x110 = exp(0.089599999999999999 * var_chaste_interface__membrane__V - 2.300419183419689 * var_x103); + const double var_x111 = 1 + var_x110; + const double var_x112 = var_x102 * mParameters[11] / (210 + mParameters[5]); + const double var_x113 = 1 / var_chaste_interface__sodium_concentration__Nai; + const double var_x114 = pow(var_x113, 1.5); + const double var_x115 = var_x113 * var_x114 * mParameters[5] / ((1500 + mParameters[5]) * pow((3.2860264730588296e-7 + var_x114), 2) * (1 + _lt_0_row[5] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * _lt_0_row[4])); + const double var_x116 = _lt_0_row[46]; + const double var_x117 = -var_x116; + const double var_x118 = _lt_0_row[23]; + const double var_x119 = _lt_0_row[25]; + const double var_x120 = _lt_0_row[26]; + const double var_x121 = _lt_0_row[24]; + const double var_x122 = 0.012149999999999999 * pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; + const double var_x123 = pow(var_chaste_interface__calcium_concentration__Cass, 3); + const double var_x124 = 0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4); + const double var_x125 = 0.0040499999999999998 * var_x123; + const double var_x126 = 1 / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki); + const double var_x127 = var_x126 * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; + + + rJacobian[0][0] = 1.0 - (mDt * (-0.050000000000000003 * var_x0 - 2.8000000000000003 * var_x2)); + rJacobian[0][1] = -(mDt * (var_x3 + var_x4)); + rJacobian[0][2] = -(mDt * (var_x4)); + rJacobian[0][3] = -(mDt * (var_x4)); + rJacobian[0][4] = -(mDt * (var_x4)); + rJacobian[0][5] = -(mDt * (var_x4)); + rJacobian[0][6] = -(mDt * (var_x4)); + rJacobian[0][7] = 0.0; + rJacobian[0][8] = 0.0; + rJacobian[0][9] = 0.0; + rJacobian[0][10] = 0.0; + rJacobian[0][11] = 0.0; + rJacobian[0][12] = 0.0; + rJacobian[0][13] = 0.0; + rJacobian[0][14] = 0.0; + rJacobian[0][15] = 0.0; + rJacobian[0][16] = 0.0; + rJacobian[0][17] = 0.0; + rJacobian[0][18] = 0.0; + rJacobian[0][19] = 0.0; + rJacobian[0][20] = 0.0; + rJacobian[0][21] = 0.0; + rJacobian[0][22] = 0.0; + rJacobian[0][23] = 0.0; + rJacobian[0][24] = 0.0; + rJacobian[0][25] = 0.0; + rJacobian[0][26] = 0.0; + rJacobian[0][27] = 0.0; + rJacobian[0][28] = 0.0; + rJacobian[0][29] = 0.0; + rJacobian[0][30] = 0.0; + rJacobian[0][31] = 0.0; + rJacobian[1][0] = -(mDt * (1.2000000000000002 * var_x2)); + rJacobian[1][1] = 1.0 - (mDt * (-var_x3 - var_x5)); + rJacobian[1][2] = -(mDt * (var_x6)); + rJacobian[1][3] = 0.0; + rJacobian[1][4] = 0.0; + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = 0.0; + rJacobian[1][8] = 0.0; + rJacobian[1][9] = 0.0; + rJacobian[1][10] = 0.0; + rJacobian[1][11] = 0.0; + rJacobian[1][12] = 0.0; + rJacobian[1][13] = 0.0; + rJacobian[1][14] = 0.0; + rJacobian[1][15] = 0.0; + rJacobian[1][16] = 0.0; + rJacobian[1][17] = 0.0; + rJacobian[1][18] = 0.0; + rJacobian[1][19] = 0.0; + rJacobian[1][20] = 0.0; + rJacobian[1][21] = 0.0; + rJacobian[1][22] = 0.0; + rJacobian[1][23] = 0.0; + rJacobian[1][24] = 0.0; + rJacobian[1][25] = 0.0; + rJacobian[1][26] = 0.0; + rJacobian[1][27] = 0.0; + rJacobian[1][28] = 0.0; + rJacobian[1][29] = 0.0; + rJacobian[1][30] = 0.0; + rJacobian[1][31] = 0.0; + rJacobian[2][0] = 0.0; + rJacobian[2][1] = -(mDt * (var_x5)); + rJacobian[2][2] = 1.0 - (mDt * (-0.026000000000000002 + var_x8 - var_x13 - var_x14 - var_x16 - var_x6)); + rJacobian[2][3] = -(mDt * (1.0000000000000002e-6 * var_x0)); + rJacobian[2][4] = -(mDt * (var_x17)); + rJacobian[2][5] = -(mDt * (var_x18)); + rJacobian[2][6] = -(mDt * (var_x19)); + rJacobian[2][7] = 0.0; + rJacobian[2][8] = 0.0; + rJacobian[2][9] = 0.0; + rJacobian[2][10] = 0.0; + rJacobian[2][11] = 0.0; + rJacobian[2][12] = -(mDt * (var_x21 + var_x24)); + rJacobian[2][13] = 0.0; + rJacobian[2][14] = 0.0; + rJacobian[2][15] = 0.0; + rJacobian[2][16] = 0.0; + rJacobian[2][17] = 0.0; + rJacobian[2][18] = 0.0; + rJacobian[2][19] = 0.0; + rJacobian[2][20] = 0.0; + rJacobian[2][21] = 0.0; + rJacobian[2][22] = 0.0; + rJacobian[2][23] = 0.0; + rJacobian[2][24] = 0.0; + rJacobian[2][25] = 0.0; + rJacobian[2][26] = 0.0; + rJacobian[2][27] = 0.0; + rJacobian[2][28] = 0.0; + rJacobian[2][29] = 0.0; + rJacobian[2][30] = 0.0; + rJacobian[2][31] = 0.0; + rJacobian[3][0] = 0.0; + rJacobian[3][1] = 0.0; + rJacobian[3][2] = -(mDt * (var_x16)); + rJacobian[3][3] = 1.0 - (mDt * (-0.0135 - var_x26 - 0.002 * var_x0 * var_x9)); + rJacobian[3][4] = 0.0; + rJacobian[3][5] = -(mDt * (var_x27)); + rJacobian[3][6] = -(mDt * (var_x12)); + rJacobian[3][7] = 0.0; + rJacobian[3][8] = 0.0; + rJacobian[3][9] = 0.0; + rJacobian[3][10] = 0.0; + rJacobian[3][11] = 0.0; + rJacobian[3][12] = -(mDt * (-var_x21 - var_x28)); + rJacobian[3][13] = 0.0; + rJacobian[3][14] = 0.0; + rJacobian[3][15] = 0.0; + rJacobian[3][16] = 0.0; + rJacobian[3][17] = 0.0; + rJacobian[3][18] = 0.0; + rJacobian[3][19] = 0.0; + rJacobian[3][20] = 0.0; + rJacobian[3][21] = 0.0; + rJacobian[3][22] = 0.0; + rJacobian[3][23] = 0.0; + rJacobian[3][24] = 0.0; + rJacobian[3][25] = 0.0; + rJacobian[3][26] = 0.0; + rJacobian[3][27] = 0.0; + rJacobian[3][28] = 0.0; + rJacobian[3][29] = 0.0; + rJacobian[3][30] = 0.0; + rJacobian[3][31] = 0.0; + rJacobian[4][0] = 0.0; + rJacobian[4][1] = 0.0; + rJacobian[4][2] = -(mDt * (0.026000000000000002 - var_x8)); + rJacobian[4][3] = 0.0; + rJacobian[4][4] = 1.0 - (mDt * (-var_x12 - var_x17 - var_x27)); + rJacobian[4][5] = -(mDt * (0.00050000000000000001)); + rJacobian[4][6] = -(mDt * (var_x29)); + rJacobian[4][7] = 0.0; + rJacobian[4][8] = 0.0; + rJacobian[4][9] = 0.0; + rJacobian[4][10] = 0.0; + rJacobian[4][11] = 0.0; + rJacobian[4][12] = -(mDt * (var_x30)); + rJacobian[4][13] = 0.0; + rJacobian[4][14] = 0.0; + rJacobian[4][15] = 0.0; + rJacobian[4][16] = 0.0; + rJacobian[4][17] = 0.0; + rJacobian[4][18] = 0.0; + rJacobian[4][19] = 0.0; + rJacobian[4][20] = 0.0; + rJacobian[4][21] = 0.0; + rJacobian[4][22] = 0.0; + rJacobian[4][23] = 0.0; + rJacobian[4][24] = 0.0; + rJacobian[4][25] = 0.0; + rJacobian[4][26] = 0.0; + rJacobian[4][27] = 0.0; + rJacobian[4][28] = 0.0; + rJacobian[4][29] = 0.0; + rJacobian[4][30] = 0.0; + rJacobian[4][31] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = -(mDt * (var_x13)); + rJacobian[5][3] = -(mDt * (var_x29)); + rJacobian[5][4] = -(mDt * (var_x12)); + rJacobian[5][5] = 1.0 - (mDt * (-0.00050000000000000001 - var_x18 - var_x27)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[5][8] = 0.0; + rJacobian[5][9] = 0.0; + rJacobian[5][10] = 0.0; + rJacobian[5][11] = 0.0; + rJacobian[5][12] = -(mDt * (-var_x24 - var_x30)); + rJacobian[5][13] = 0.0; + rJacobian[5][14] = 0.0; + rJacobian[5][15] = 0.0; + rJacobian[5][16] = 0.0; + rJacobian[5][17] = 0.0; + rJacobian[5][18] = 0.0; + rJacobian[5][19] = 0.0; + rJacobian[5][20] = 0.0; + rJacobian[5][21] = 0.0; + rJacobian[5][22] = 0.0; + rJacobian[5][23] = 0.0; + rJacobian[5][24] = 0.0; + rJacobian[5][25] = 0.0; + rJacobian[5][26] = 0.0; + rJacobian[5][27] = 0.0; + rJacobian[5][28] = 0.0; + rJacobian[5][29] = 0.0; + rJacobian[5][30] = 0.0; + rJacobian[5][31] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = -(mDt * (var_x14)); + rJacobian[6][3] = -(mDt * (0.00050000000000000001)); + rJacobian[6][4] = -(mDt * (var_x27)); + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (-0.013000000000000001 - var_x12 - var_x19 - var_x26)); + rJacobian[6][7] = 0.0; + rJacobian[6][8] = 0.0; + rJacobian[6][9] = 0.0; + rJacobian[6][10] = 0.0; + rJacobian[6][11] = 0.0; + rJacobian[6][12] = -(mDt * (var_x28)); + rJacobian[6][13] = 0.0; + rJacobian[6][14] = 0.0; + rJacobian[6][15] = 0.0; + rJacobian[6][16] = 0.0; + rJacobian[6][17] = 0.0; + rJacobian[6][18] = 0.0; + rJacobian[6][19] = 0.0; + rJacobian[6][20] = 0.0; + rJacobian[6][21] = 0.0; + rJacobian[6][22] = 0.0; + rJacobian[6][23] = 0.0; + rJacobian[6][24] = 0.0; + rJacobian[6][25] = 0.0; + rJacobian[6][26] = 0.0; + rJacobian[6][27] = 0.0; + rJacobian[6][28] = 0.0; + rJacobian[6][29] = 0.0; + rJacobian[6][30] = 0.0; + rJacobian[6][31] = 0.0; + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = 0.0; + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (-var_x32)); + rJacobian[7][8] = 0.0; + rJacobian[7][9] = 0.0; + rJacobian[7][10] = 0.0; + rJacobian[7][11] = -(mDt * (331.80000000000001 - var_x33)); + rJacobian[7][12] = 0.0; + rJacobian[7][13] = 0.0; + rJacobian[7][14] = 0.0; + rJacobian[7][15] = 0.0; + rJacobian[7][16] = 0.0; + rJacobian[7][17] = 0.0; + rJacobian[7][18] = 0.0; + rJacobian[7][19] = 0.0; + rJacobian[7][20] = 0.0; + rJacobian[7][21] = 0.0; + rJacobian[7][22] = 0.0; + rJacobian[7][23] = 0.0; + rJacobian[7][24] = 0.0; + rJacobian[7][25] = 0.0; + rJacobian[7][26] = 0.0; + rJacobian[7][27] = 0.0; + rJacobian[7][28] = 0.0; + rJacobian[7][29] = 0.0; + rJacobian[7][30] = 0.0; + rJacobian[7][31] = 0.0; + rJacobian[8][0] = 0.0; + rJacobian[8][1] = 0.0; + rJacobian[8][2] = 0.0; + rJacobian[8][3] = 0.0; + rJacobian[8][4] = 0.0; + rJacobian[8][5] = 0.0; + rJacobian[8][6] = 0.0; + rJacobian[8][7] = 0.0; + rJacobian[8][8] = 1.0 - (mDt * (-var_x35)); + rJacobian[8][9] = 0.0; + rJacobian[8][10] = 0.0; + rJacobian[8][11] = -(mDt * (2289 - var_x36)); + rJacobian[8][12] = 0.0; + rJacobian[8][13] = 0.0; + rJacobian[8][14] = 0.0; + rJacobian[8][15] = 0.0; + rJacobian[8][16] = 0.0; + rJacobian[8][17] = 0.0; + rJacobian[8][18] = 0.0; + rJacobian[8][19] = 0.0; + rJacobian[8][20] = 0.0; + rJacobian[8][21] = 0.0; + rJacobian[8][22] = 0.0; + rJacobian[8][23] = 0.0; + rJacobian[8][24] = 0.0; + rJacobian[8][25] = 0.0; + rJacobian[8][26] = 0.0; + rJacobian[8][27] = 0.0; + rJacobian[8][28] = 0.0; + rJacobian[8][29] = 0.0; + rJacobian[8][30] = 0.0; + rJacobian[8][31] = 0.0; + rJacobian[9][0] = 0.0; + rJacobian[9][1] = 0.0; + rJacobian[9][2] = 0.0; + rJacobian[9][3] = 0.0; + rJacobian[9][4] = 0.0; + rJacobian[9][5] = 0.0; + rJacobian[9][6] = 0.0; + rJacobian[9][7] = 0.0; + rJacobian[9][8] = 0.0; + rJacobian[9][9] = 1.0 - (mDt * (var_x39 * (-0.050000000000000003 - var_x42) + 0.00013333333333333334 * (0.050000000000000003 * var_chaste_interface__calcium_concentration__CaNSR - 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaJSR - var_x42 * var_x43) / (pow(var_x37, 3) * pow((0.053333333333333337 + var_x38), 2)))); + rJacobian[9][10] = -(mDt * (0.050000000000000003 * var_x39)); + rJacobian[9][11] = 0.0; + rJacobian[9][12] = -(mDt * (var_x39 * var_x42)); + rJacobian[9][13] = -(mDt * (-var_x41 * var_x44)); + rJacobian[9][14] = 0.0; + rJacobian[9][15] = 0.0; + rJacobian[9][16] = 0.0; + rJacobian[9][17] = 0.0; + rJacobian[9][18] = 0.0; + rJacobian[9][19] = 0.0; + rJacobian[9][20] = 0.0; + rJacobian[9][21] = 0.0; + rJacobian[9][22] = 0.0; + rJacobian[9][23] = 0.0; + rJacobian[9][24] = 0.0; + rJacobian[9][25] = 0.0; + rJacobian[9][26] = 0.0; + rJacobian[9][27] = 0.0; + rJacobian[9][28] = 0.0; + rJacobian[9][29] = -(mDt * (var_x46)); + rJacobian[9][30] = -(mDt * (var_x46)); + rJacobian[9][31] = 0.0; + rJacobian[10][0] = 0.0; + rJacobian[10][1] = 0.0; + rJacobian[10][2] = 0.0; + rJacobian[10][3] = 0.0; + rJacobian[10][4] = 0.0; + rJacobian[10][5] = 0.0; + rJacobian[10][6] = 0.0; + rJacobian[10][7] = 0.0; + rJacobian[10][8] = 0.0; + rJacobian[10][9] = -(mDt * (0.0028598665395614866)); + rJacobian[10][10] = 1.0 - (mDt * (-0.0028598665395614866 - 12.316491897044804 * mParameters[0])); + rJacobian[10][11] = -(mDt * (12316.491897044803 * mParameters[0] + 24632983.794089608 * var_x50 * mParameters[2] - 24.632983794089608 * var_x53 * mParameters[2])); + rJacobian[10][12] = 0.0; + rJacobian[10][13] = 0.0; + rJacobian[10][14] = 0.0; + rJacobian[10][15] = 0.0; + rJacobian[10][16] = 0.0; + rJacobian[10][17] = 0.0; + rJacobian[10][18] = 0.0; + rJacobian[10][19] = 0.0; + rJacobian[10][20] = 0.0; + rJacobian[10][21] = 0.0; + rJacobian[10][22] = 0.0; + rJacobian[10][23] = 0.0; + rJacobian[10][24] = 0.0; + rJacobian[10][25] = 0.0; + rJacobian[10][26] = 0.0; + rJacobian[10][27] = 0.0; + rJacobian[10][28] = 0.0; + rJacobian[10][29] = 0.0; + rJacobian[10][30] = 0.0; + rJacobian[10][31] = 0.0; + rJacobian[11][0] = 0.0; + rJacobian[11][1] = 0.0; + rJacobian[11][2] = 0.0; + rJacobian[11][3] = 0.0; + rJacobian[11][4] = 0.0; + rJacobian[11][5] = 0.0; + rJacobian[11][6] = 0.0; + rJacobian[11][7] = -(mDt * (var_x32 * var_x57)); + rJacobian[11][8] = -(mDt * (var_x35 * var_x57)); + rJacobian[11][9] = 0.0; + rJacobian[11][10] = -(mDt * (var_x57 * mParameters[0])); + rJacobian[11][11] = 1.0 - (mDt * (var_x57 * (-2745.8000000000002 + var_x33 + var_x36 - 1000 * mParameters[0] - var_x59 * mParameters[2] - var_x65 * (var_x59 + 0.0047112379481865285 * var_x58 + 2000 * var_x64 - 2 * var_x53) + 2 * var_x51 * var_x52 * mParameters[2]) + 2.3800000000000001e-8 * (0.125 * var_chaste_interface__calcium_concentration__Cass + 0.019599999999999999 * var_chaste_interface__calcium_buffering__LTRPN_Ca + 3.1999999999999999e-5 * var_chaste_interface__calcium_buffering__HTRPN_Ca - 125 * var_chaste_interface__calcium_concentration__Cai_converted + (-var_x66 + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0] - var_x31 * (140 - var_chaste_interface__calcium_buffering__HTRPN_Ca) - var_x34 * (70 - var_chaste_interface__calcium_buffering__LTRPN_Ca) - var_x65 * (var_x67 + 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(0.001 * var_x58 * mParameters[4]) - 2 * var_x63 * (-var_x62 * var_x66 + var_x68 * pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4])) - var_x67 * mParameters[2]) / (pow(var_x54, 3) * pow(var_x55, 2)))); + rJacobian[11][12] = -(mDt * (0.000125 * var_x56)); + rJacobian[11][13] = 0.0; + rJacobian[11][14] = 0.0; + rJacobian[11][15] = 0.0; + rJacobian[11][16] = 0.0; + rJacobian[11][17] = 0.0; + rJacobian[11][18] = 0.0; + rJacobian[11][19] = 0.0; + rJacobian[11][20] = 0.0; + rJacobian[11][21] = 0.0; + rJacobian[11][22] = 0.0; + rJacobian[11][23] = 0.0; + rJacobian[11][24] = 0.0; + rJacobian[11][25] = 0.0; + rJacobian[11][26] = 0.0; + rJacobian[11][27] = 0.0; + rJacobian[11][28] = 0.0; + rJacobian[11][29] = 0.0; + rJacobian[11][30] = 0.0; + rJacobian[11][31] = -(mDt * (0.00018455541474839184 * var_x56 * var_x69 * mParameters[8])); + rJacobian[12][0] = 0.0; + rJacobian[12][1] = 0.0; + rJacobian[12][2] = 0.0; + rJacobian[12][3] = 0.0; + rJacobian[12][4] = 0.0; + rJacobian[12][5] = 0.0; + rJacobian[12][6] = -(mDt * (-var_x72 * var_x74)); + rJacobian[12][7] = 0.0; + rJacobian[12][8] = 0.0; + rJacobian[12][9] = -(mDt * (var_x72 * var_x75)); + rJacobian[12][10] = 0.0; + rJacobian[12][11] = -(mDt * (2175084.1750841751 * var_x72)); + rJacobian[12][12] = 1.0 - (mDt * (var_x72 * (-2175.0841750841751 - var_x75) + 0.16806722689075632 * (2175084.1750841751 * var_chaste_interface__calcium_concentration__Cai_converted - 2175.0841750841751 * var_chaste_interface__calcium_concentration__Cass - var_x74 * var_chaste_interface__L_type_calcium_current__O + 80.808080808080803 * var_x40 * var_x43 * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]) / (pow(var_x70, 3) * pow((0.084033613445378158 + var_x71), 2)))); + rJacobian[12][13] = -(mDt * (var_x41 * var_x76)); + rJacobian[12][14] = 0.0; + rJacobian[12][15] = 0.0; + rJacobian[12][16] = 0.0; + rJacobian[12][17] = 0.0; + rJacobian[12][18] = 0.0; + rJacobian[12][19] = 0.0; + rJacobian[12][20] = 0.0; + rJacobian[12][21] = 0.0; + rJacobian[12][22] = 0.0; + rJacobian[12][23] = 0.0; + rJacobian[12][24] = 0.0; + rJacobian[12][25] = 0.0; + rJacobian[12][26] = 0.0; + rJacobian[12][27] = 0.0; + rJacobian[12][28] = 0.0; + rJacobian[12][29] = -(mDt * (var_x77)); + rJacobian[12][30] = -(mDt * (var_x77)); + rJacobian[12][31] = 0.0; + rJacobian[13][0] = 0.0; + rJacobian[13][1] = 0.0; + rJacobian[13][2] = 0.0; + rJacobian[13][3] = 0.0; + rJacobian[13][4] = 0.0; + rJacobian[13][5] = 0.0; + rJacobian[13][6] = -(mDt * (-0.014285714285714287 * var_x73 * _lt_0_row[9])); + rJacobian[13][7] = 0.0; + rJacobian[13][8] = 0.0; + rJacobian[13][9] = 0.0; + rJacobian[13][10] = 0.0; + rJacobian[13][11] = 0.0; + rJacobian[13][12] = 0.0; + rJacobian[13][13] = 1.0 - (mDt * (-0.040000000000000001)); + rJacobian[13][14] = 0.0; + rJacobian[13][15] = 0.0; + rJacobian[13][16] = 0.0; + rJacobian[13][17] = 0.0; + rJacobian[13][18] = 0.0; + rJacobian[13][19] = 0.0; + rJacobian[13][20] = 0.0; + rJacobian[13][21] = 0.0; + rJacobian[13][22] = 0.0; + rJacobian[13][23] = 0.0; + rJacobian[13][24] = 0.0; + rJacobian[13][25] = 0.0; + rJacobian[13][26] = 0.0; + rJacobian[13][27] = 0.0; + rJacobian[13][28] = 0.0; + rJacobian[13][29] = 0.0; + rJacobian[13][30] = 0.0; + rJacobian[13][31] = 0.0; + rJacobian[14][0] = 0.0; + rJacobian[14][1] = 0.0; + rJacobian[14][2] = 0.0; + rJacobian[14][3] = 0.0; + rJacobian[14][4] = 0.0; + rJacobian[14][5] = 0.0; + rJacobian[14][6] = 0.0; + rJacobian[14][7] = 0.0; + rJacobian[14][8] = 0.0; + rJacobian[14][9] = 0.0; + rJacobian[14][10] = 0.0; + rJacobian[14][11] = 0.0; + rJacobian[14][12] = 0.0; + rJacobian[14][13] = 0.0; + rJacobian[14][14] = 1.0 - (mDt * (-var_x79 - var_x82 - var_x83)); + rJacobian[14][15] = -(mDt * (var_x84)); + rJacobian[14][16] = 0.0; + rJacobian[14][17] = 0.0; + rJacobian[14][18] = 0.0; + rJacobian[14][19] = 0.0; + rJacobian[14][20] = -(mDt * (var_x86)); + rJacobian[14][21] = -(mDt * (var_x88)); + rJacobian[14][22] = 0.0; + rJacobian[14][23] = 0.0; + rJacobian[14][24] = 0.0; + rJacobian[14][25] = 0.0; + rJacobian[14][26] = 0.0; + rJacobian[14][27] = 0.0; + rJacobian[14][28] = 0.0; + rJacobian[14][29] = 0.0; + rJacobian[14][30] = 0.0; + rJacobian[14][31] = 0.0; + rJacobian[15][0] = 0.0; + rJacobian[15][1] = 0.0; + rJacobian[15][2] = 0.0; + rJacobian[15][3] = 0.0; + rJacobian[15][4] = 0.0; + rJacobian[15][5] = 0.0; + rJacobian[15][6] = 0.0; + rJacobian[15][7] = 0.0; + rJacobian[15][8] = 0.0; + rJacobian[15][9] = 0.0; + rJacobian[15][10] = 0.0; + rJacobian[15][11] = 0.0; + rJacobian[15][12] = 0.0; + rJacobian[15][13] = 0.0; + rJacobian[15][14] = -(mDt * (var_x79 + var_x90)); + rJacobian[15][15] = 1.0 - (mDt * (-var_x92 - var_x93)); + rJacobian[15][16] = -(mDt * (var_x90)); + rJacobian[15][17] = -(mDt * (var_x90)); + rJacobian[15][18] = -(mDt * (var_x86 + var_x90)); + rJacobian[15][19] = -(mDt * (var_x90)); + rJacobian[15][20] = -(mDt * (var_x90)); + rJacobian[15][21] = -(mDt * (var_x90)); + rJacobian[15][22] = 0.0; + rJacobian[15][23] = 0.0; + rJacobian[15][24] = 0.0; + rJacobian[15][25] = 0.0; + rJacobian[15][26] = 0.0; + rJacobian[15][27] = 0.0; + rJacobian[15][28] = 0.0; + rJacobian[15][29] = 0.0; + rJacobian[15][30] = 0.0; + rJacobian[15][31] = 0.0; + rJacobian[16][0] = 0.0; + rJacobian[16][1] = 0.0; + rJacobian[16][2] = 0.0; + rJacobian[16][3] = 0.0; + rJacobian[16][4] = 0.0; + rJacobian[16][5] = 0.0; + rJacobian[16][6] = 0.0; + rJacobian[16][7] = 0.0; + rJacobian[16][8] = 0.0; + rJacobian[16][9] = 0.0; + rJacobian[16][10] = 0.0; + rJacobian[16][11] = 0.0; + rJacobian[16][12] = 0.0; + rJacobian[16][13] = 0.0; + rJacobian[16][14] = 0.0; + rJacobian[16][15] = 0.0; + rJacobian[16][16] = 1.0 - (mDt * (-var_x86 - var_x95)); + rJacobian[16][17] = -(mDt * (var_x96)); + rJacobian[16][18] = 0.0; + rJacobian[16][19] = 0.0; + rJacobian[16][20] = -(mDt * (var_x97)); + rJacobian[16][21] = 0.0; + rJacobian[16][22] = 0.0; + rJacobian[16][23] = 0.0; + rJacobian[16][24] = 0.0; + rJacobian[16][25] = 0.0; + rJacobian[16][26] = 0.0; + rJacobian[16][27] = 0.0; + rJacobian[16][28] = 0.0; + rJacobian[16][29] = 0.0; + rJacobian[16][30] = 0.0; + rJacobian[16][31] = 0.0; + rJacobian[17][0] = 0.0; + rJacobian[17][1] = 0.0; + rJacobian[17][2] = 0.0; + rJacobian[17][3] = 0.0; + rJacobian[17][4] = 0.0; + rJacobian[17][5] = 0.0; + rJacobian[17][6] = 0.0; + rJacobian[17][7] = 0.0; + rJacobian[17][8] = 0.0; + rJacobian[17][9] = 0.0; + rJacobian[17][10] = 0.0; + rJacobian[17][11] = 0.0; + rJacobian[17][12] = 0.0; + rJacobian[17][13] = 0.0; + rJacobian[17][14] = 0.0; + rJacobian[17][15] = 0.0; + rJacobian[17][16] = -(mDt * (var_x95)); + rJacobian[17][17] = 1.0 - (mDt * (-var_x96)); + rJacobian[17][18] = 0.0; + rJacobian[17][19] = 0.0; + rJacobian[17][20] = 0.0; + rJacobian[17][21] = 0.0; + rJacobian[17][22] = 0.0; + rJacobian[17][23] = 0.0; + rJacobian[17][24] = 0.0; + rJacobian[17][25] = 0.0; + rJacobian[17][26] = 0.0; + rJacobian[17][27] = 0.0; + rJacobian[17][28] = 0.0; + rJacobian[17][29] = 0.0; + rJacobian[17][30] = 0.0; + rJacobian[17][31] = 0.0; + rJacobian[18][0] = 0.0; + rJacobian[18][1] = 0.0; + rJacobian[18][2] = 0.0; + rJacobian[18][3] = 0.0; + rJacobian[18][4] = 0.0; + rJacobian[18][5] = 0.0; + rJacobian[18][6] = 0.0; + rJacobian[18][7] = 0.0; + rJacobian[18][8] = 0.0; + rJacobian[18][9] = 0.0; + rJacobian[18][10] = 0.0; + rJacobian[18][11] = 0.0; + rJacobian[18][12] = 0.0; + rJacobian[18][13] = 0.0; + rJacobian[18][14] = 0.0; + rJacobian[18][15] = -(mDt * (var_x83)); + rJacobian[18][16] = 0.0; + rJacobian[18][17] = 0.0; + rJacobian[18][18] = 1.0 - (mDt * (-var_x86 - var_x92)); + rJacobian[18][19] = -(mDt * (var_x89)); + rJacobian[18][20] = -(mDt * (var_x79)); + rJacobian[18][21] = 0.0; + rJacobian[18][22] = 0.0; + rJacobian[18][23] = 0.0; + rJacobian[18][24] = 0.0; + rJacobian[18][25] = 0.0; + rJacobian[18][26] = 0.0; + rJacobian[18][27] = 0.0; + rJacobian[18][28] = 0.0; + rJacobian[18][29] = 0.0; + rJacobian[18][30] = 0.0; + rJacobian[18][31] = 0.0; + rJacobian[19][0] = 0.0; + rJacobian[19][1] = 0.0; + rJacobian[19][2] = 0.0; + rJacobian[19][3] = 0.0; + rJacobian[19][4] = 0.0; + rJacobian[19][5] = 0.0; + rJacobian[19][6] = 0.0; + rJacobian[19][7] = 0.0; + rJacobian[19][8] = 0.0; + rJacobian[19][9] = 0.0; + rJacobian[19][10] = 0.0; + rJacobian[19][11] = 0.0; + rJacobian[19][12] = 0.0; + rJacobian[19][13] = 0.0; + rJacobian[19][14] = -(mDt * (var_x98)); + rJacobian[19][15] = -(mDt * (var_x98)); + rJacobian[19][16] = -(mDt * (var_x98)); + rJacobian[19][17] = -(mDt * (var_x98)); + rJacobian[19][18] = -(mDt * (var_x91 - var_x83)); + rJacobian[19][19] = 1.0 - (mDt * (-var_x86 - var_x93)); + rJacobian[19][20] = -(mDt * (var_x98)); + rJacobian[19][21] = -(mDt * (var_x98)); + rJacobian[19][22] = 0.0; + rJacobian[19][23] = 0.0; + rJacobian[19][24] = 0.0; + rJacobian[19][25] = 0.0; + rJacobian[19][26] = 0.0; + rJacobian[19][27] = 0.0; + rJacobian[19][28] = 0.0; + rJacobian[19][29] = 0.0; + rJacobian[19][30] = 0.0; + rJacobian[19][31] = 0.0; + rJacobian[20][0] = 0.0; + rJacobian[20][1] = 0.0; + rJacobian[20][2] = 0.0; + rJacobian[20][3] = 0.0; + rJacobian[20][4] = 0.0; + rJacobian[20][5] = 0.0; + rJacobian[20][6] = 0.0; + rJacobian[20][7] = 0.0; + rJacobian[20][8] = 0.0; + rJacobian[20][9] = 0.0; + rJacobian[20][10] = 0.0; + rJacobian[20][11] = 0.0; + rJacobian[20][12] = 0.0; + rJacobian[20][13] = 0.0; + rJacobian[20][14] = -(mDt * (var_x83)); + rJacobian[20][15] = 0.0; + rJacobian[20][16] = -(mDt * (var_x86)); + rJacobian[20][17] = 0.0; + rJacobian[20][18] = -(mDt * (var_x84)); + rJacobian[20][19] = 0.0; + rJacobian[20][20] = 1.0 - (mDt * (-var_x79 - var_x86 - var_x97 - var_x99)); + rJacobian[20][21] = -(mDt * (var_x100)); + rJacobian[20][22] = 0.0; + rJacobian[20][23] = 0.0; + rJacobian[20][24] = 0.0; + rJacobian[20][25] = 0.0; + rJacobian[20][26] = 0.0; + rJacobian[20][27] = 0.0; + rJacobian[20][28] = 0.0; + rJacobian[20][29] = 0.0; + rJacobian[20][30] = 0.0; + rJacobian[20][31] = 0.0; + rJacobian[21][0] = 0.0; + rJacobian[21][1] = 0.0; + rJacobian[21][2] = 0.0; + rJacobian[21][3] = 0.0; + rJacobian[21][4] = 0.0; + rJacobian[21][5] = 0.0; + rJacobian[21][6] = 0.0; + rJacobian[21][7] = 0.0; + rJacobian[21][8] = 0.0; + rJacobian[21][9] = 0.0; + rJacobian[21][10] = 0.0; + rJacobian[21][11] = 0.0; + rJacobian[21][12] = 0.0; + rJacobian[21][13] = 0.0; + rJacobian[21][14] = -(mDt * (var_x82)); + rJacobian[21][15] = 0.0; + rJacobian[21][16] = 0.0; + rJacobian[21][17] = 0.0; + rJacobian[21][18] = 0.0; + rJacobian[21][19] = 0.0; + rJacobian[21][20] = -(mDt * (var_x99)); + rJacobian[21][21] = 1.0 - (mDt * (-var_x100 - var_x88)); + rJacobian[21][22] = 0.0; + rJacobian[21][23] = 0.0; + rJacobian[21][24] = 0.0; + rJacobian[21][25] = 0.0; + rJacobian[21][26] = 0.0; + rJacobian[21][27] = 0.0; + rJacobian[21][28] = 0.0; + rJacobian[21][29] = 0.0; + rJacobian[21][30] = 0.0; + rJacobian[21][31] = 0.0; + rJacobian[22][0] = 0.0; + rJacobian[22][1] = 0.0; + rJacobian[22][2] = 0.0; + rJacobian[22][3] = 0.0; + rJacobian[22][4] = 0.0; + rJacobian[22][5] = 0.0; + rJacobian[22][6] = 0.0; + rJacobian[22][7] = 0.0; + rJacobian[22][8] = 0.0; + rJacobian[22][9] = 0.0; + rJacobian[22][10] = 0.0; + rJacobian[22][11] = 0.0; + rJacobian[22][12] = 0.0; + rJacobian[22][13] = 0.0; + rJacobian[22][14] = 0.0; + rJacobian[22][15] = 0.0; + rJacobian[22][16] = 0.0; + rJacobian[22][17] = 0.0; + rJacobian[22][18] = 0.0; + rJacobian[22][19] = 0.0; + rJacobian[22][20] = 0.0; + rJacobian[22][21] = 0.0; + rJacobian[22][22] = 1.0; + rJacobian[22][23] = 0.0; + rJacobian[22][24] = 0.0; + rJacobian[22][25] = 0.0; + rJacobian[22][26] = 0.0; + rJacobian[22][27] = 0.0; + rJacobian[22][28] = 0.0; + rJacobian[22][29] = 0.0; + rJacobian[22][30] = 0.0; + rJacobian[22][31] = 0.0; + rJacobian[23][0] = 0.0; + rJacobian[23][1] = 0.0; + rJacobian[23][2] = 0.0; + rJacobian[23][3] = 0.0; + rJacobian[23][4] = 0.0; + rJacobian[23][5] = 0.0; + rJacobian[23][6] = 0.0; + rJacobian[23][7] = 0.0; + rJacobian[23][8] = 0.0; + rJacobian[23][9] = 0.0; + rJacobian[23][10] = 0.0; + rJacobian[23][11] = 0.0; + rJacobian[23][12] = 0.0; + rJacobian[23][13] = 0.0; + rJacobian[23][14] = 0.0; + rJacobian[23][15] = 0.0; + rJacobian[23][16] = 0.0; + rJacobian[23][17] = 0.0; + rJacobian[23][18] = 0.0; + rJacobian[23][19] = 0.0; + rJacobian[23][20] = 0.0; + rJacobian[23][21] = 0.0; + rJacobian[23][22] = -(mDt * (-var_x104 * var_x106 * var_x107)); + rJacobian[23][23] = 1.0 - (mDt * (-var_x106 * (25.674321243523316 * var_x112 / var_x111 + var_x107 * var_x109 * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss + var_x109 * pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * mParameters[14] + 4.1078913989637309 * var_x101 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur + 25.674321243523316 * var_x108 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13] + var_x109 * pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f - 2.300419183419689 * var_x104 * var_x110 * var_x112 / pow(var_x111, 2)))); + rJacobian[23][24] = 0.0; + rJacobian[23][25] = 0.0; + rJacobian[23][26] = 0.0; + rJacobian[23][27] = -(mDt * (-var_x106 * (-25.674321243523316 * log(var_x108 * (1 * mParameters[5] + 0.020408163265306124 * mParameters[6])) + var_chaste_interface__membrane__V) * mParameters[13])); + rJacobian[23][28] = 0.0; + rJacobian[23][29] = 0.0; + rJacobian[23][30] = 0.0; + rJacobian[23][31] = -(mDt * (-var_x106 * (-8.6751098888753097e-7 * var_x115 + 0.52396573966374116 * var_x108 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]))); + rJacobian[24][0] = 0.0; + rJacobian[24][1] = 0.0; + rJacobian[24][2] = 0.0; + rJacobian[24][3] = 0.0; + rJacobian[24][4] = 0.0; + rJacobian[24][5] = 0.0; + rJacobian[24][6] = 0.0; + rJacobian[24][7] = 0.0; + rJacobian[24][8] = 0.0; + rJacobian[24][9] = 0.0; + rJacobian[24][10] = 0.0; + rJacobian[24][11] = 0.0; + rJacobian[24][12] = 0.0; + rJacobian[24][13] = 0.0; + rJacobian[24][14] = 0.0; + rJacobian[24][15] = 0.0; + rJacobian[24][16] = 0.0; + rJacobian[24][17] = 0.0; + rJacobian[24][18] = 0.0; + rJacobian[24][19] = 0.0; + rJacobian[24][20] = 0.0; + rJacobian[24][21] = 0.0; + rJacobian[24][22] = 0.0; + rJacobian[24][23] = 0.0; + rJacobian[24][24] = 1.0 - (mDt * (-0.023761000000000001 - var_x116 - 0.047002000000000002 * _lt_0_row[28])); + rJacobian[24][25] = -(mDt * (0.036777999999999998 - var_x116)); + rJacobian[24][26] = -(mDt * (var_x117)); + rJacobian[24][27] = -(mDt * (var_x117)); + rJacobian[24][28] = 0.0; + rJacobian[24][29] = 0.0; + rJacobian[24][30] = 0.0; + rJacobian[24][31] = 0.0; + rJacobian[25][0] = 0.0; + rJacobian[25][1] = 0.0; + rJacobian[25][2] = 0.0; + rJacobian[25][3] = 0.0; + rJacobian[25][4] = 0.0; + rJacobian[25][5] = 0.0; + rJacobian[25][6] = 0.0; + rJacobian[25][7] = 0.0; + rJacobian[25][8] = 0.0; + rJacobian[25][9] = 0.0; + rJacobian[25][10] = 0.0; + rJacobian[25][11] = 0.0; + rJacobian[25][12] = 0.0; + rJacobian[25][13] = 0.0; + rJacobian[25][14] = 0.0; + rJacobian[25][15] = 0.0; + rJacobian[25][16] = 0.0; + rJacobian[25][17] = 0.0; + rJacobian[25][18] = 0.0; + rJacobian[25][19] = 0.0; + rJacobian[25][20] = 0.0; + rJacobian[25][21] = 0.0; + rJacobian[25][22] = 0.0; + rJacobian[25][23] = 0.0; + rJacobian[25][24] = -(mDt * (0.023761000000000001)); + rJacobian[25][25] = 1.0 - (mDt * (-0.036777999999999998 - var_x118)); + rJacobian[25][26] = 0.0; + rJacobian[25][27] = -(mDt * (var_x119)); + rJacobian[25][28] = 0.0; + rJacobian[25][29] = 0.0; + rJacobian[25][30] = 0.0; + rJacobian[25][31] = 0.0; + rJacobian[26][0] = 0.0; + rJacobian[26][1] = 0.0; + rJacobian[26][2] = 0.0; + rJacobian[26][3] = 0.0; + rJacobian[26][4] = 0.0; + rJacobian[26][5] = 0.0; + rJacobian[26][6] = 0.0; + rJacobian[26][7] = 0.0; + rJacobian[26][8] = 0.0; + rJacobian[26][9] = 0.0; + rJacobian[26][10] = 0.0; + rJacobian[26][11] = 0.0; + rJacobian[26][12] = 0.0; + rJacobian[26][13] = 0.0; + rJacobian[26][14] = 0.0; + rJacobian[26][15] = 0.0; + rJacobian[26][16] = 0.0; + rJacobian[26][17] = 0.0; + rJacobian[26][18] = 0.0; + rJacobian[26][19] = 0.0; + rJacobian[26][20] = 0.0; + rJacobian[26][21] = 0.0; + rJacobian[26][22] = 0.0; + rJacobian[26][23] = 0.0; + rJacobian[26][24] = 0.0; + rJacobian[26][25] = 0.0; + rJacobian[26][26] = 1.0 - (mDt * (-var_x120)); + rJacobian[26][27] = -(mDt * (var_x121)); + rJacobian[26][28] = 0.0; + rJacobian[26][29] = 0.0; + rJacobian[26][30] = 0.0; + rJacobian[26][31] = 0.0; + rJacobian[27][0] = 0.0; + rJacobian[27][1] = 0.0; + rJacobian[27][2] = 0.0; + rJacobian[27][3] = 0.0; + rJacobian[27][4] = 0.0; + rJacobian[27][5] = 0.0; + rJacobian[27][6] = 0.0; + rJacobian[27][7] = 0.0; + rJacobian[27][8] = 0.0; + rJacobian[27][9] = 0.0; + rJacobian[27][10] = 0.0; + rJacobian[27][11] = 0.0; + rJacobian[27][12] = 0.0; + rJacobian[27][13] = 0.0; + rJacobian[27][14] = 0.0; + rJacobian[27][15] = 0.0; + rJacobian[27][16] = 0.0; + rJacobian[27][17] = 0.0; + rJacobian[27][18] = 0.0; + rJacobian[27][19] = 0.0; + rJacobian[27][20] = 0.0; + rJacobian[27][21] = 0.0; + rJacobian[27][22] = 0.0; + rJacobian[27][23] = 0.0; + rJacobian[27][24] = 0.0; + rJacobian[27][25] = -(mDt * (var_x118)); + rJacobian[27][26] = -(mDt * (var_x120)); + rJacobian[27][27] = 1.0 - (mDt * (-var_x119 - var_x121)); + rJacobian[27][28] = 0.0; + rJacobian[27][29] = 0.0; + rJacobian[27][30] = 0.0; + rJacobian[27][31] = 0.0; + rJacobian[28][0] = 0.0; + rJacobian[28][1] = 0.0; + rJacobian[28][2] = 0.0; + rJacobian[28][3] = 0.0; + rJacobian[28][4] = 0.0; + rJacobian[28][5] = 0.0; + rJacobian[28][6] = 0.0; + rJacobian[28][7] = 0.0; + rJacobian[28][8] = 0.0; + rJacobian[28][9] = 0.0; + rJacobian[28][10] = 0.0; + rJacobian[28][11] = 0.0; + rJacobian[28][12] = 0.0; + rJacobian[28][13] = 0.0; + rJacobian[28][14] = 0.0; + rJacobian[28][15] = 0.0; + rJacobian[28][16] = 0.0; + rJacobian[28][17] = 0.0; + rJacobian[28][18] = 0.0; + rJacobian[28][19] = 0.0; + rJacobian[28][20] = 0.0; + rJacobian[28][21] = 0.0; + rJacobian[28][22] = 0.0; + rJacobian[28][23] = 0.0; + rJacobian[28][24] = 0.0; + rJacobian[28][25] = 0.0; + rJacobian[28][26] = 0.0; + rJacobian[28][27] = 0.0; + rJacobian[28][28] = 1.0 - (mDt * (-0.00080000000000000004)); + rJacobian[28][29] = -(mDt * (0.0089999999999999993)); + rJacobian[28][30] = 0.0; + rJacobian[28][31] = 0.0; + rJacobian[29][0] = 0.0; + rJacobian[29][1] = 0.0; + rJacobian[29][2] = 0.0; + rJacobian[29][3] = 0.0; + rJacobian[29][4] = 0.0; + rJacobian[29][5] = 0.0; + rJacobian[29][6] = 0.0; + rJacobian[29][7] = 0.0; + rJacobian[29][8] = 0.0; + rJacobian[29][9] = 0.0; + rJacobian[29][10] = 0.0; + rJacobian[29][11] = 0.0; + rJacobian[29][12] = -(mDt * (-var_x122 + 0.024299999999999999 * var_x123 * (1 - var_x40 - var_chaste_interface__ryanodine_receptors__P_C2))); + rJacobian[29][13] = 0.0; + rJacobian[29][14] = 0.0; + rJacobian[29][15] = 0.0; + rJacobian[29][16] = 0.0; + rJacobian[29][17] = 0.0; + rJacobian[29][18] = 0.0; + rJacobian[29][19] = 0.0; + rJacobian[29][20] = 0.0; + rJacobian[29][21] = 0.0; + rJacobian[29][22] = 0.0; + rJacobian[29][23] = 0.0; + rJacobian[29][24] = 0.0; + rJacobian[29][25] = 0.0; + rJacobian[29][26] = 0.0; + rJacobian[29][27] = 0.0; + rJacobian[29][28] = -(mDt * (0.00080000000000000004 - var_x124)); + rJacobian[29][29] = 1.0 - (mDt * (-0.080249999999999988 - var_x124 - var_x125)); + rJacobian[29][30] = -(mDt * (0.96499999999999997 - var_x124)); + rJacobian[29][31] = 0.0; + rJacobian[30][0] = 0.0; + rJacobian[30][1] = 0.0; + rJacobian[30][2] = 0.0; + rJacobian[30][3] = 0.0; + rJacobian[30][4] = 0.0; + rJacobian[30][5] = 0.0; + rJacobian[30][6] = 0.0; + rJacobian[30][7] = 0.0; + rJacobian[30][8] = 0.0; + rJacobian[30][9] = 0.0; + rJacobian[30][10] = 0.0; + rJacobian[30][11] = 0.0; + rJacobian[30][12] = -(mDt * (var_x122)); + rJacobian[30][13] = 0.0; + rJacobian[30][14] = 0.0; + rJacobian[30][15] = 0.0; + rJacobian[30][16] = 0.0; + rJacobian[30][17] = 0.0; + rJacobian[30][18] = 0.0; + rJacobian[30][19] = 0.0; + rJacobian[30][20] = 0.0; + rJacobian[30][21] = 0.0; + rJacobian[30][22] = 0.0; + rJacobian[30][23] = 0.0; + rJacobian[30][24] = 0.0; + rJacobian[30][25] = 0.0; + rJacobian[30][26] = 0.0; + rJacobian[30][27] = 0.0; + rJacobian[30][28] = 0.0; + rJacobian[30][29] = -(mDt * (var_x125)); + rJacobian[30][30] = 1.0 - (mDt * (-0.96499999999999997)); + rJacobian[30][31] = 0.0; + rJacobian[31][0] = 0.0; + rJacobian[31][1] = 0.0; + rJacobian[31][2] = 0.0; + rJacobian[31][3] = 0.0; + rJacobian[31][4] = 0.0; + rJacobian[31][5] = 0.0; + rJacobian[31][6] = 0.0; + rJacobian[31][7] = 0.0; + rJacobian[31][8] = 0.0; + rJacobian[31][9] = 0.0; + rJacobian[31][10] = 0.0; + rJacobian[31][11] = -(mDt * (184.55541474839183 * var_x105 * var_x64)); + rJacobian[31][12] = 0.0; + rJacobian[31][13] = 0.0; + rJacobian[31][14] = 0.0; + rJacobian[31][15] = 0.0; + rJacobian[31][16] = 0.0; + rJacobian[31][17] = 0.0; + rJacobian[31][18] = 0.0; + rJacobian[31][19] = 0.0; + rJacobian[31][20] = 0.0; + rJacobian[31][21] = -(mDt * (-var_x106 * (-25.674321243523316 * log(var_x126 * (1 * mParameters[6] + 0.1111111111111111 * mParameters[5])) + var_chaste_interface__membrane__V) * mParameters[9])); + rJacobian[31][22] = 0.0; + rJacobian[31][23] = -(mDt * (-var_x106 * (2.8527023603914796 * var_x127 + 0.007417026137017846 * var_x126))); + rJacobian[31][24] = 0.0; + rJacobian[31][25] = 0.0; + rJacobian[31][26] = 0.0; + rJacobian[31][27] = 0.0; + rJacobian[31][28] = 0.0; + rJacobian[31][29] = 0.0; + rJacobian[31][30] = 0.0; + rJacobian[31][31] = 1.0 - (mDt * (-var_x106 * (9 * var_x69 + 1.3012664833312966e-6 * var_x115 + 0.066753235233160624 * var_x126 + 25.674321243523316 * var_x127))); + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + // Lookup table indexing + const bool _oob_0 = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__i_pCa = 1 * pow(var_calcium_concentration__Cai, 2) / (0.25 + pow(var_calcium_concentration__Cai, 2)); // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL = (-63 + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double var_calcium_background_current__i_Cab = 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(mParameters[4] / var_calcium_concentration__Cai); // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = 25.674321243523316 * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki); // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_transient_outward_potassium_current__i_Kto_s = 0; // picoA_per_picoF + const double var_fast_sodium_current__E_Na = 25.674321243523316 * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)); // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-25.674321243523316 * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = 0.0025999999999999999 * var_chaste_interface__membrane__V - 0.0025999999999999999 * var_fast_sodium_current__E_Na; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * _lt_0_row[3] * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * _lt_0_row[1] - pow(mParameters[6], 3) * var_calcium_concentration__Cai * _lt_0_row[2]) * mParameters[15] / ((1380 + mParameters[4]) * (669921875000000.0 + pow(mParameters[6], 3))); // picoA_per_picoF + const double var_sodium_potassium_pump_current__i_NaK = 0.88 * mParameters[5] / ((1 + 3043189.1166997822 * pow((1 / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (1500 + mParameters[5]) * (1 + _lt_0_row[5] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * _lt_0_row[4])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = 0.16 * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_membrane__V = -var_L_type_calcium_current__i_CaL - var_calcium_background_current__i_Cab - var_calcium_pump_current__i_pCa - var_fast_sodium_current__i_Na - var_fast_transient_outward_potassium_current__i_Kto_f - var_non_inactivating_steady_state_potassium_current__i_Kss - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_slow_transient_outward_potassium_current__i_Kto_s - var_sodium_background_current__i_Nab - var_sodium_calcium_exchange_current__i_NaCa - var_sodium_potassium_pump_current__i_NaK - var_time_independent_potassium_current__i_K1 - var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur - GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance() - 2 * _lt_0_row[0] * (40 + var_chaste_interface__membrane__V) * var_calcium_concentration__Cai / (10 + var_calcium_concentration__Cai); // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + + // Lookup table indexing + const bool _oob_0 = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_fast_transient_outward_potassium_current__alpha_a = 0.18064 * _lt_0_row[17]; + const double var_fast_transient_outward_potassium_current__alpha_i = 0.00015200000000000001 * _lt_0_row[19] * _lt_0_row[20]; + const double var_fast_transient_outward_potassium_current__beta_a = 0.39560000000000001 * _lt_0_row[18]; + const double var_fast_transient_outward_potassium_current__beta_i = 0.00095 * _lt_0_row[21] * _lt_0_row[22]; + const double var_non_inactivating_steady_state_potassium_current__tau_Kss = 13.17 + 39.299999999999997 * exp(-0.086199999999999999 * var_chaste_interface__membrane__V); + const double var_slow_delayed_rectifier_potassium_current__alpha_n = _lt_0_row[29]; + const double var_slow_delayed_rectifier_potassium_current__beta_n = 9.5333299999999997e-5 * _lt_0_row[30]; + const double var_slow_transient_outward_potassium_current__ass = _lt_0_row[31]; + const double var_slow_transient_outward_potassium_current__iss = _lt_0_row[33]; + const double var_slow_transient_outward_potassium_current__tau_ta_s = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); + const double var_slow_transient_outward_potassium_current__tau_ti_s = 270 + 1050 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur = 1200 - 170 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + + + rY[28] = (var_chaste_interface__fast_transient_outward_potassium_current__ato_f + ((1 * var_fast_transient_outward_potassium_current__alpha_a) * mDt)) / (1.0 - ((-var_fast_transient_outward_potassium_current__alpha_a - var_fast_transient_outward_potassium_current__beta_a) * mDt)); + rY[29] = (var_chaste_interface__fast_transient_outward_potassium_current__ito_f + ((1 * var_fast_transient_outward_potassium_current__alpha_i) * mDt)) / (1.0 - ((-var_fast_transient_outward_potassium_current__alpha_i - var_fast_transient_outward_potassium_current__beta_i) * mDt)); + rY[35] = (var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss + ((var_slow_transient_outward_potassium_current__ass / var_non_inactivating_steady_state_potassium_current__tau_Kss) * mDt)) / (1.0 - ((-1 / var_non_inactivating_steady_state_potassium_current__tau_Kss) * mDt)); + rY[32] = (var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs + ((1 * var_slow_delayed_rectifier_potassium_current__alpha_n) * mDt)) / (1.0 - ((-var_slow_delayed_rectifier_potassium_current__alpha_n - var_slow_delayed_rectifier_potassium_current__beta_n) * mDt)); + rY[30] = (var_chaste_interface__slow_transient_outward_potassium_current__ato_s + ((var_slow_transient_outward_potassium_current__ass / var_slow_transient_outward_potassium_current__tau_ta_s) * mDt)) / (1.0 - ((-1 / var_slow_transient_outward_potassium_current__tau_ta_s) * mDt)); + rY[31] = (var_chaste_interface__slow_transient_outward_potassium_current__ito_s + ((var_slow_transient_outward_potassium_current__iss / var_slow_transient_outward_potassium_current__tau_ti_s) * mDt)) / (1.0 - ((-1 / var_slow_transient_outward_potassium_current__tau_ti_s) * mDt)); + rY[33] = (var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur + ((var_slow_transient_outward_potassium_current__ass / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur) * mDt)) / (1.0 - ((-1 / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur) * mDt)); + rY[34] = (var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur + ((var_slow_transient_outward_potassium_current__iss / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur) * mDt)) / (1.0 - ((-1 / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur) * mDt)); + + double _guess[32] = {rY[12],rY[13],rY[14],rY[15],rY[16],rY[17],rY[11],rY[7],rY[6],rY[3],rY[4],rY[1],rY[2],rY[5],rY[20],rY[21],rY[22],rY[23],rY[25],rY[26],rY[24],rY[19],rY[36],rY[27],rY[38],rY[39],rY[40],rY[37],rY[10],rY[8],rY[9],rY[18]}; + CardiacNewtonSolver<32,Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt>* _p_solver = CardiacNewtonSolver<32,Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[12] = _guess[0]; + rY[13] = _guess[1]; + rY[14] = _guess[2]; + rY[15] = _guess[3]; + rY[16] = _guess[4]; + rY[17] = _guess[5]; + rY[11] = _guess[6]; + rY[7] = _guess[7]; + rY[6] = _guess[8]; + rY[3] = _guess[9]; + rY[4] = _guess[10]; + rY[1] = _guess[11]; + rY[2] = _guess[12]; + rY[5] = _guess[13]; + rY[20] = _guess[14]; + rY[21] = _guess[15]; + rY[22] = _guess[16]; + rY[23] = _guess[17]; + rY[25] = _guess[18]; + rY[26] = _guess[19]; + rY[24] = _guess[20]; + rY[19] = _guess[21]; + rY[36] = _guess[22]; + rY[27] = _guess[23]; + rY[38] = _guess[24]; + rY[39] = _guess[25]; + rY[40] = _guess[26]; + rY[37] = _guess[27]; + rY[10] = _guess[28]; + rY[8] = _guess[29]; + rY[9] = _guess[30]; + rY[18] = _guess[31]; + } + + std::vector Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.115001 + double var_chaste_interface__calcium_concentration__CaJSR = rY[3]; + // Units: micromolar; Initial value: 1299.5 + double var_chaste_interface__calcium_fluxes__P_RyR = rY[5]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ryanodine_receptors__P_O1 = rY[8]; + // Units: dimensionless; Initial value: 1.49102e-05 + double var_chaste_interface__ryanodine_receptors__P_O2 = rY[9]; + // Units: dimensionless; Initial value: 9.51726e-11 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + + // Mathematics + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_transient_outward_potassium_current__i_Kto_f; // uA_per_cm2 + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss_converted = HeartConfig::Instance()->GetCapacitance() * var_non_inactivating_steady_state_potassium_current__i_Kss; // uA_per_cm2 + const double var_calcium_fluxes__J_rel = (-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; // micromolar_per_millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchange_current__i_NaCa; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + + std::vector dqs(12); + dqs[0] = var_calcium_fluxes__J_rel; + dqs[1] = var_chaste_interface__calcium_concentration__Cai_converted; + dqs[2] = var_L_type_calcium_current__i_CaL_converted; + dqs[3] = var_fast_sodium_current__i_Na_converted; + dqs[4] = var_time_independent_potassium_current__i_K1_converted; + dqs[5] = var_non_inactivating_steady_state_potassium_current__i_Kss_converted; + dqs[6] = var_rapid_delayed_rectifier_potassium_current__i_Kr_converted; + dqs[7] = var_slow_delayed_rectifier_potassium_current__i_Ks_converted; + dqs[8] = var_sodium_calcium_exchange_current__i_NaCa_converted; + dqs[9] = var_membrane__i_stim_converted; + dqs[10] = var_fast_transient_outward_potassium_current__i_Kto_f_converted; + dqs[11] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "bondarenko_2004_apical"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-82.4202); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000115001); + + // rY[2]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(0.115001); + + // rY[3]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(1299.5); + + // rY[4]: + this->mVariableNames.push_back("calcium_concentration__CaNSR"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(1299.5); + + // rY[5]: + this->mVariableNames.push_back("calcium_fluxes__P_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[6]: + this->mVariableNames.push_back("calcium_buffering__LTRPN_Ca"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(11.2684); + + // rY[7]: + this->mVariableNames.push_back("calcium_buffering__HTRPN_Ca"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(125.29); + + // rY[8]: + this->mVariableNames.push_back("ryanodine_receptors__P_O1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.49102e-05); + + // rY[9]: + this->mVariableNames.push_back("ryanodine_receptors__P_O2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.51726e-11); + + // rY[10]: + this->mVariableNames.push_back("ryanodine_receptors__P_C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00016774); + + // rY[11]: + this->mVariableNames.push_back("L_type_calcium_current__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.30308e-19); + + // rY[12]: + this->mVariableNames.push_back("L_type_calcium_current__C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000124216); + + // rY[13]: + this->mVariableNames.push_back("L_type_calcium_current__C3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(5.78679e-09); + + // rY[14]: + this->mVariableNames.push_back("L_type_calcium_current__C4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.19816e-13); + + // rY[15]: + this->mVariableNames.push_back("L_type_calcium_current__I1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(4.97923e-19); + + // rY[16]: + this->mVariableNames.push_back("L_type_calcium_current__I2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.45847e-14); + + // rY[17]: + this->mVariableNames.push_back("L_type_calcium_current__I3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.85106e-14); + + // rY[18]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(14237.1); + + // rY[19]: + this->mVariableNames.push_back("fast_sodium_current__O_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.13483e-07); + + // rY[20]: + this->mVariableNames.push_back("fast_sodium_current__C_Na1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000279132); + + // rY[21]: + this->mVariableNames.push_back("fast_sodium_current__C_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.020752); + + // rY[22]: + this->mVariableNames.push_back("fast_sodium_current__I1_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.73345e-07); + + // rY[23]: + this->mVariableNames.push_back("fast_sodium_current__I2_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.55787e-09); + + // rY[24]: + this->mVariableNames.push_back("fast_sodium_current__IF_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000153176); + + // rY[25]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0113879); + + // rY[26]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.34278); + + // rY[27]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(143720.0); + + // rY[28]: + this->mVariableNames.push_back("fast_transient_outward_potassium_current__ato_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00265563); + + // rY[29]: + this->mVariableNames.push_back("fast_transient_outward_potassium_current__ito_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999977); + + // rY[30]: + this->mVariableNames.push_back("slow_transient_outward_potassium_current__ato_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[31]: + this->mVariableNames.push_back("slow_transient_outward_potassium_current__ito_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998543); + + // rY[32]: + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current__nKs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000262753); + + // rY[33]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_potassium_current__aur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[34]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_potassium_current__iur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998543); + + // rY[35]: + this->mVariableNames.push_back("non_inactivating_steady_state_potassium_current__aKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[36]: + this->mVariableNames.push_back("non_inactivating_steady_state_potassium_current__iKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[37]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__O_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000175298); + + // rY[38]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__C_K1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000992513); + + // rY[39]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__C_K2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000641229); + + // rY[40]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__I_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.19129e-05); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("micromolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_non_inactivating_steady_state_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("micromolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_non_inactivating_steady_state_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_14.cpp new file mode 100644 index 00000000..87e73b21 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_14.cpp @@ -0,0 +1,2809 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: bondarenko_2004_apical +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEulerOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + +class Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<47; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= -26.500000781250002) && (var_chaste_interface__membrane__V <= -26.499999218749998)) ? (-3.7604140624912359e-12 / (1 - exp(9.9999999999766942e-8)) + 640000.00000149151 * (26.500000781250002 + var_chaste_interface__membrane__V) * (3.7604140624912359e-12 / (1 - exp(9.9999999999766942e-8)) + 3.7604140624912359e-12 / (1 - exp(-9.9999999999766942e-8)))) : (4.8133299999999997e-6 * (26.5 + var_chaste_interface__membrane__V) / (1 - exp(-3.3919999999999999 - 0.128 * var_chaste_interface__membrane__V)))); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[29] < 2){ + double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[29] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[29] >= 2){ + EXCEPTION("Lookup table 29 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[47]; + + // Lookup tables + double (*_lookup_table_0)[47]; + int _lookup_table_0_num_misshit_piecewise[47] = {0}; + +}; + +std::shared_ptr Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::mpInstance; + + + boost::shared_ptr Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 0.5; // millisecond + const double var_chaste_interface__membrane__stim_period = 71.430000000000007; // millisecond + const double var_chaste_interface__membrane__stim_start = 0; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<32>( + 41, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1.7399999999999999e-5; // (var_calcium_fluxes__v2) [per_millisecond] + this->mParameters[1] = 4.5; // (var_calcium_fluxes__v1) [per_millisecond] + this->mParameters[2] = 0.45000000000000001; // (var_calcium_fluxes__v3) [micromolar_per_millisecond] + this->mParameters[3] = 1; // (var_sodium_concentration__conc_clamp) [dimensionless] + this->mParameters[4] = 1800; // (var_membrane__Cao) [micromolar] + this->mParameters[5] = 5400; // (var_membrane__Ko) [micromolar] + this->mParameters[6] = 140000; // (var_membrane__Nao) [micromolar] + this->mParameters[7] = 0.1729; // (var_L_type_calcium_current__g_CaL) [milliS_per_microF] + this->mParameters[8] = 1; // (var_membrane__Cm) [microF_per_cm2] + this->mParameters[9] = 13; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[10] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[11] = 0.29380000000000001; // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = 0.050000000000000003; // (var_non_inactivating_steady_state_potassium_current__g_Kss) [milliS_per_microF] + this->mParameters[13] = 0.078; // (var_rapid_delayed_rectifier_potassium_current__g_Kr) [milliS_per_microF] + this->mParameters[14] = 0.0057499999999999999; // (var_slow_delayed_rectifier_potassium_current__g_Ks) [milliS_per_microF] + this->mParameters[15] = 292.80000000000001; // (var_sodium_calcium_exchange_current__k_NaCa) [picoA_per_picoF] + this->mParameters[16] = 0.40670000000000001; // (var_fast_transient_outward_potassium_current__g_Kto_f) [milliS_per_microF] + } + + Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::~Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt() + { + } + + AbstractLookupTableCollection* Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::GetLookupTableCollection() + { + return Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance(); + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 41; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + // Lookup table indexing + const bool _oob_0 = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__i_pCa = 1 * pow(var_calcium_concentration__Cai, 2) / (0.25 + pow(var_calcium_concentration__Cai, 2)); // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = (-63 + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // uA_per_cm2 + const double var_calcium_activated_chloride_current__i_ClCa = 2 * _lt_0_row[0] * (40 + var_chaste_interface__membrane__V) * var_calcium_concentration__Cai / (10 + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_calcium_background_current__i_Cab = 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(mParameters[4] / var_calcium_concentration__Cai); // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = 25.674321243523316 * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki); // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // uA_per_cm2 + const double var_non_inactivating_steady_state_potassium_current__i_Kss_converted = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // uA_per_cm2 + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[14]; // uA_per_cm2 + const double var_slow_transient_outward_potassium_current__i_Kto_s = 0; // picoA_per_picoF + const double var_fast_sodium_current__E_Na = 25.674321243523316 * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)); // millivolt + const double var_fast_sodium_current__i_Na_converted = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = (-25.674321243523316 * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // uA_per_cm2 + const double var_sodium_background_current__i_Nab = 0.0025999999999999999 * var_chaste_interface__membrane__V - 0.0025999999999999999 * var_fast_sodium_current__E_Na; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = 1 * _lt_0_row[3] * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * _lt_0_row[1] - pow(mParameters[6], 3) * var_calcium_concentration__Cai * _lt_0_row[2]) * HeartConfig::Instance()->GetCapacitance() * mParameters[15] / ((1380 + mParameters[4]) * (669921875000000.0 + pow(mParameters[6], 3))); // uA_per_cm2 + const double var_sodium_potassium_pump_current__i_NaK = 0.88 * mParameters[5] / ((1 + 3043189.1166997822 * pow((1 / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (1500 + mParameters[5]) * (1 + _lt_0_row[5] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * _lt_0_row[4])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1_converted = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // uA_per_cm2 + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = 0.16 * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_calcium_activated_chloride_current__i_ClCa + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Cab + HeartConfig::Instance()->GetCapacitance() * var_calcium_pump_current__i_pCa + HeartConfig::Instance()->GetCapacitance() * var_slow_transient_outward_potassium_current__i_Kto_s + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Nab + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump_current__i_NaK + HeartConfig::Instance()->GetCapacitance() * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur + var_L_type_calcium_current__i_CaL_converted + var_fast_sodium_current__i_Na_converted + var_fast_transient_outward_potassium_current__i_Kto_f_converted + var_non_inactivating_steady_state_potassium_current__i_Kss_converted + var_rapid_delayed_rectifier_potassium_current__i_Kr_converted + var_slow_delayed_rectifier_potassium_current__i_Ks_converted + var_sodium_calcium_exchange_current__i_NaCa_converted + var_time_independent_potassium_current__i_K1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rResidual[32]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + + //output_nonlinear_state_assignments + double var_chaste_interface__L_type_calcium_current__C2 = rCurrentGuess[0]; + double var_chaste_interface__L_type_calcium_current__C3 = rCurrentGuess[1]; + double var_chaste_interface__L_type_calcium_current__C4 = rCurrentGuess[2]; + double var_chaste_interface__L_type_calcium_current__I1 = rCurrentGuess[3]; + double var_chaste_interface__L_type_calcium_current__I2 = rCurrentGuess[4]; + double var_chaste_interface__L_type_calcium_current__I3 = rCurrentGuess[5]; + double var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[6]; + double var_chaste_interface__calcium_buffering__HTRPN_Ca = rCurrentGuess[7]; + double var_chaste_interface__calcium_buffering__LTRPN_Ca = rCurrentGuess[8]; + double var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[9]; + double var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[10]; + double var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[11]; + double var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[12]; + double var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[13]; + double var_chaste_interface__fast_sodium_current__C_Na1 = rCurrentGuess[14]; + double var_chaste_interface__fast_sodium_current__C_Na2 = rCurrentGuess[15]; + double var_chaste_interface__fast_sodium_current__I1_Na = rCurrentGuess[16]; + double var_chaste_interface__fast_sodium_current__I2_Na = rCurrentGuess[17]; + double var_chaste_interface__fast_sodium_current__IC_Na2 = rCurrentGuess[18]; + double var_chaste_interface__fast_sodium_current__IC_Na3 = rCurrentGuess[19]; + double var_chaste_interface__fast_sodium_current__IF_Na = rCurrentGuess[20]; + double var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[21]; + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rCurrentGuess[22]; + double var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[23]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 = rCurrentGuess[24]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 = rCurrentGuess[25]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K = rCurrentGuess[26]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rCurrentGuess[27]; + double var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[28]; + double var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[29]; + double var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[30]; + double var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[31]; + + // Lookup table indexing + const bool _oob_0 = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + //output_equations + const double d_dt_chaste_interface_var_non_inactivating_steady_state_potassium_current__iKss = 0; // 1 / millisecond + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_L_type_calcium_current__gamma = 0.23324 * var_chaste_interface__calcium_concentration__Cass / (20 + var_chaste_interface__calcium_concentration__Cass); // per_millisecond + const double d_dt_chaste_interface_var_calcium_buffering__HTRPN_Ca = -3.1999999999999999e-5 * var_chaste_interface__calcium_buffering__HTRPN_Ca + 0.0023700000000000001 * (140 - var_chaste_interface__calcium_buffering__HTRPN_Ca) * var_calcium_concentration__Cai; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_buffering__LTRPN_Ca = -0.019599999999999999 * var_chaste_interface__calcium_buffering__LTRPN_Ca + 0.0327 * (70 - var_chaste_interface__calcium_buffering__LTRPN_Ca) * var_calcium_concentration__Cai; // micromolar / millisecond + const double var_calcium_fluxes__J_tr = 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaNSR - 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaJSR; // micromolar_per_millisecond + const double var_calcium_fluxes__J_xfer = 0.125 * var_chaste_interface__calcium_concentration__Cass - 0.125 * var_calcium_concentration__Cai; // micromolar_per_millisecond + const double var_calcium_fluxes__J_leak = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0]; // micromolar_per_millisecond + const double var_calcium_fluxes__J_up = pow(var_calcium_concentration__Cai, 2) * mParameters[2] / (0.25 + pow(var_calcium_concentration__Cai, 2)); // micromolar_per_millisecond + const double var_calcium_pump_current__i_pCa = 1 * pow(var_calcium_concentration__Cai, 2) / (0.25 + pow(var_calcium_concentration__Cai, 2)); // picoA_per_picoF + const double var_fast_sodium_current__C_Na3 = 1 - var_chaste_interface__fast_sodium_current__C_Na1 - var_chaste_interface__fast_sodium_current__C_Na2 - var_chaste_interface__fast_sodium_current__I1_Na - var_chaste_interface__fast_sodium_current__I2_Na - var_chaste_interface__fast_sodium_current__IC_Na2 - var_chaste_interface__fast_sodium_current__IC_Na3 - var_chaste_interface__fast_sodium_current__IF_Na - var_chaste_interface__fast_sodium_current__O_Na; // dimensionless + const double var_L_type_calcium_current__Kpcf = _lt_0_row[6]; // per_millisecond + const double var_L_type_calcium_current__alpha = _lt_0_row[7]; // per_millisecond + const double var_L_type_calcium_current__beta = _lt_0_row[8]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C2 = -var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__beta + 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__beta + 4 * (1 - var_chaste_interface__L_type_calcium_current__C2 - var_chaste_interface__L_type_calcium_current__C3 - var_chaste_interface__L_type_calcium_current__C4 - var_chaste_interface__L_type_calcium_current__I1 - var_chaste_interface__L_type_calcium_current__I2 - var_chaste_interface__L_type_calcium_current__I3 - var_chaste_interface__L_type_calcium_current__O) * var_L_type_calcium_current__alpha - 3 * var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__alpha; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C3 = 3 * var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__alpha + 3 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__beta - 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__alpha - 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C4 = -var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha + 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__alpha + 4 * var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__beta + 0.002 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__beta + 0.0080000000000000002 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__beta + 2.0000000000000002e-5 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__beta - 3 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__beta - 0.002 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf - 1 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma - 0.01 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I1 = -0.00050000000000000001 * var_chaste_interface__L_type_calcium_current__I1 + var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__gamma + 0.001 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha - 0.001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf + 0.01 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma - 0.040000000000000001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I2 = 0.00050000000000000001 * var_chaste_interface__L_type_calcium_current__I3 - var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__gamma + 0.001 * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O + 0.002 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf - 0.001 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - 0.0080000000000000002 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I3 = -0.00050000000000000001 * var_chaste_interface__L_type_calcium_current__I3 + var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__gamma + 0.001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf - 0.001 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha - 0.002 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__beta + 1 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__O = 0.00050000000000000001 * var_chaste_interface__L_type_calcium_current__I1 + var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha - var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__gamma + 0.001 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - 4 * var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__beta - 0.001 * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O; // 1 / millisecond + const double var_L_type_calcium_current__i_CaL = (-63 + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double d_dt_chaste_interface_var_calcium_fluxes__P_RyR = -0.040000000000000001 * var_chaste_interface__calcium_fluxes__P_RyR - 0.014285714285714287 * var_L_type_calcium_current__i_CaL * _lt_0_row[9]; // 1 / millisecond + const double var_calcium_background_current__i_Cab = 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(mParameters[4] / var_calcium_concentration__Cai); // picoA_per_picoF + const double var_fast_sodium_current__alpha_Na11 = _lt_0_row[10]; // per_millisecond + const double var_fast_sodium_current__alpha_Na12 = _lt_0_row[11]; // per_millisecond + const double var_fast_sodium_current__alpha_Na13 = _lt_0_row[12]; // per_millisecond + const double var_fast_sodium_current__alpha_Na2 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 + 0.060240963855421679 * mParameters[10] - 0.060240963855421679 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na3 = _lt_0_row[13]; // per_millisecond + const double var_fast_sodium_current__alpha_Na4 = 0.001 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__alpha_Na5 = 1.0526315789473684e-5 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__beta_Na11 = _lt_0_row[14]; // per_millisecond + const double var_fast_sodium_current__beta_Na12 = _lt_0_row[15]; // per_millisecond + const double var_fast_sodium_current__beta_Na13 = _lt_0_row[16]; // per_millisecond + const double var_fast_sodium_current__beta_Na3 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__membrane__V; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na1 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na2 = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 + var_fast_sodium_current__C_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na2 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na3 = var_fast_sodium_current__C_Na3 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na3; // 1 / millisecond + const double var_fast_sodium_current__beta_Na2 = var_fast_sodium_current__alpha_Na13 * var_fast_sodium_current__alpha_Na2 * var_fast_sodium_current__alpha_Na3 / (var_fast_sodium_current__beta_Na13 * var_fast_sodium_current__beta_Na3); // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__O_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13; // 1 / millisecond + const double var_fast_sodium_current__beta_Na4 = var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IF_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2; // 1 / millisecond + const double var_fast_sodium_current__beta_Na5 = 0.02 * var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I1_Na = var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I2_Na = var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5; // 1 / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__CaNSR = 12.316491897044804 * var_calcium_fluxes__J_up - 12.316491897044804 * var_calcium_fluxes__J_leak - 0.057197330791229732 * var_calcium_fluxes__J_tr; // micromolar / millisecond + const double var_fast_transient_outward_potassium_current__E_K = 25.674321243523316 * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki); // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__alpha_a1 = _lt_0_row[23]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__alpha_i = _lt_0_row[24]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_a1 = _lt_0_row[25]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_i = _lt_0_row[26]; // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__I_K = var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__alpha_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K * var_rapid_delayed_rectifier_potassium_current__beta_i; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__O_K = var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__alpha_a1 + var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K * var_rapid_delayed_rectifier_potassium_current__beta_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__alpha_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__beta_a1; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K1 = 0.036777999999999998 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 - 0.023761000000000001 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 + 0.022348 * (1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K) * _lt_0_row[27] - 0.047002000000000002 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * _lt_0_row[28]; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K2 = 0.023761000000000001 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 - 0.036777999999999998 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 + var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__beta_a1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__alpha_a1; // 1 / millisecond + const double var_calcium_fluxes__J_rel = (-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; // micromolar_per_millisecond + const double d_dt_chaste_interface_var_calcium_concentration__CaJSR = (-var_calcium_fluxes__J_rel + var_calcium_fluxes__J_tr) / (1 + 12000000 / pow((800 + var_chaste_interface__calcium_concentration__CaJSR), 2)); // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cass = (80.808080808080803 * var_calcium_fluxes__J_rel - 17400.6734006734 * var_calcium_fluxes__J_xfer - 535.23141606043157 * var_L_type_calcium_current__i_CaL * mParameters[8]) / (1 + 11.899999999999999 / pow((0.23799999999999999 + var_chaste_interface__calcium_concentration__Cass), 2)); // micromolar / millisecond + const double d_dt_chaste_interface_var_ryanodine_receptors__P_C2 = 0.0089999999999999993 * var_chaste_interface__ryanodine_receptors__P_O1 - 0.00080000000000000004 * var_chaste_interface__ryanodine_receptors__P_C2; // 1 / millisecond + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O2 = -0.96499999999999997 * var_chaste_interface__ryanodine_receptors__P_O2 + 0.0040499999999999998 * pow(var_chaste_interface__calcium_concentration__Cass, 3) * var_chaste_interface__ryanodine_receptors__P_O1; // 1 / millisecond + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O1 = 0.00080000000000000004 * var_chaste_interface__ryanodine_receptors__P_C2 + 0.96499999999999997 * var_chaste_interface__ryanodine_receptors__P_O2 - 0.080249999999999988 * var_chaste_interface__ryanodine_receptors__P_O1 + 0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4) * (1 - var_chaste_interface__ryanodine_receptors__P_C2 - var_chaste_interface__ryanodine_receptors__P_O1 - var_chaste_interface__ryanodine_receptors__P_O2) - 0.0040499999999999998 * pow(var_chaste_interface__calcium_concentration__Cass, 3) * var_chaste_interface__ryanodine_receptors__P_O1; // 1 / millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_transient_outward_potassium_current__i_Kto_s = 0; // picoA_per_picoF + const double var_fast_sodium_current__E_Na = 25.674321243523316 * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)); // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-25.674321243523316 * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = 0.0025999999999999999 * var_chaste_interface__membrane__V - 0.0025999999999999999 * var_fast_sodium_current__E_Na; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * _lt_0_row[3] * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * _lt_0_row[1] - pow(mParameters[6], 3) * var_calcium_concentration__Cai * _lt_0_row[2]) * mParameters[15] / ((1380 + mParameters[4]) * (669921875000000.0 + pow(mParameters[6], 3))); // picoA_per_picoF + const double d_dt_chaste_interface_var_calcium_concentration__Cai_converted = 0.001 * (-var_calcium_fluxes__J_up + 0.019599999999999999 * var_chaste_interface__calcium_buffering__LTRPN_Ca + 3.1999999999999999e-5 * var_chaste_interface__calcium_buffering__HTRPN_Ca - 0.0327 * (70 - var_chaste_interface__calcium_buffering__LTRPN_Ca) * var_calcium_concentration__Cai - 0.0023700000000000001 * (140 - var_chaste_interface__calcium_buffering__HTRPN_Ca) * var_calcium_concentration__Cai - 0.03075923579139864 * (-2 * var_sodium_calcium_exchange_current__i_NaCa + var_calcium_background_current__i_Cab + var_calcium_pump_current__i_pCa) * mParameters[8] + var_calcium_fluxes__J_leak + var_calcium_fluxes__J_xfer) / (1 + 11.899999999999999 / pow((0.23799999999999999 + var_calcium_concentration__Cai), 2)); // millimolar / millisecond + const double var_sodium_potassium_pump_current__i_NaK = 0.88 * mParameters[5] / ((1 + 3043189.1166997822 * pow((1 / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (1500 + mParameters[5]) * (1 + _lt_0_row[5] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * _lt_0_row[4])); // picoA_per_picoF + const double d_dt_chaste_interface_var_sodium_concentration__Nai = -0.061518471582797281 * (3 * var_sodium_calcium_exchange_current__i_NaCa + 3 * var_sodium_potassium_pump_current__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Nab) * mParameters[8] * mParameters[3]; // micromolar / millisecond + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = 0.16 * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_potassium_concentration__Ki = -0.061518471582797281 * (-2 * var_sodium_potassium_pump_current__i_NaK + var_fast_transient_outward_potassium_current__i_Kto_f + var_non_inactivating_steady_state_potassium_current__i_Kss + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_slow_delayed_rectifier_potassium_current__i_Ks + var_slow_transient_outward_potassium_current__i_Kto_s + var_time_independent_potassium_current__i_K1 + var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur) * mParameters[8] * mParameters[3]; // micromolar / millisecond + + rResidual[11] = rCurrentGuess[11] - rY[1] - mDt*d_dt_chaste_interface_var_calcium_concentration__Cai_converted; + rResidual[12] = rCurrentGuess[12] - rY[2] - mDt*d_dt_chaste_interface_var_calcium_concentration__Cass; + rResidual[9] = rCurrentGuess[9] - rY[3] - mDt*d_dt_chaste_interface_var_calcium_concentration__CaJSR; + rResidual[10] = rCurrentGuess[10] - rY[4] - mDt*d_dt_chaste_interface_var_calcium_concentration__CaNSR; + rResidual[13] = rCurrentGuess[13] - rY[5] - mDt*d_dt_chaste_interface_var_calcium_fluxes__P_RyR; + rResidual[8] = rCurrentGuess[8] - rY[6] - mDt*d_dt_chaste_interface_var_calcium_buffering__LTRPN_Ca; + rResidual[7] = rCurrentGuess[7] - rY[7] - mDt*d_dt_chaste_interface_var_calcium_buffering__HTRPN_Ca; + rResidual[29] = rCurrentGuess[29] - rY[8] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_O1; + rResidual[30] = rCurrentGuess[30] - rY[9] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_O2; + rResidual[28] = rCurrentGuess[28] - rY[10] - mDt*d_dt_chaste_interface_var_ryanodine_receptors__P_C2; + rResidual[6] = rCurrentGuess[6] - rY[11] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__O; + rResidual[0] = rCurrentGuess[0] - rY[12] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__C2; + rResidual[1] = rCurrentGuess[1] - rY[13] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__C3; + rResidual[2] = rCurrentGuess[2] - rY[14] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__C4; + rResidual[3] = rCurrentGuess[3] - rY[15] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I1; + rResidual[4] = rCurrentGuess[4] - rY[16] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I2; + rResidual[5] = rCurrentGuess[5] - rY[17] - mDt*d_dt_chaste_interface_var_L_type_calcium_current__I3; + rResidual[31] = rCurrentGuess[31] - rY[18] - mDt*d_dt_chaste_interface_var_sodium_concentration__Nai; + rResidual[21] = rCurrentGuess[21] - rY[19] - mDt*d_dt_chaste_interface_var_fast_sodium_current__O_Na; + rResidual[14] = rCurrentGuess[14] - rY[20] - mDt*d_dt_chaste_interface_var_fast_sodium_current__C_Na1; + rResidual[15] = rCurrentGuess[15] - rY[21] - mDt*d_dt_chaste_interface_var_fast_sodium_current__C_Na2; + rResidual[16] = rCurrentGuess[16] - rY[22] - mDt*d_dt_chaste_interface_var_fast_sodium_current__I1_Na; + rResidual[17] = rCurrentGuess[17] - rY[23] - mDt*d_dt_chaste_interface_var_fast_sodium_current__I2_Na; + rResidual[20] = rCurrentGuess[20] - rY[24] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IF_Na; + rResidual[18] = rCurrentGuess[18] - rY[25] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IC_Na2; + rResidual[19] = rCurrentGuess[19] - rY[26] - mDt*d_dt_chaste_interface_var_fast_sodium_current__IC_Na3; + rResidual[23] = rCurrentGuess[23] - rY[27] - mDt*d_dt_chaste_interface_var_potassium_concentration__Ki; + rResidual[22] = rCurrentGuess[22] - rY[36] - mDt*d_dt_chaste_interface_var_non_inactivating_steady_state_potassium_current__iKss; + rResidual[27] = rCurrentGuess[27] - rY[37] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__O_K; + rResidual[24] = rCurrentGuess[24] - rY[38] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K1; + rResidual[25] = rCurrentGuess[25] - rY[39] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K2; + rResidual[26] = rCurrentGuess[26] - rY[40] - mDt*d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__I_K; + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[32], double rJacobian[32][32]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + + // Lookup table indexing + const bool _oob_0 = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + double var_chaste_interface__L_type_calcium_current__C4 = rCurrentGuess[2]; + double var_chaste_interface__L_type_calcium_current__I2 = rCurrentGuess[4]; + double var_chaste_interface__L_type_calcium_current__O = rCurrentGuess[6]; + double var_chaste_interface__calcium_buffering__HTRPN_Ca = rCurrentGuess[7]; + double var_chaste_interface__calcium_buffering__LTRPN_Ca = rCurrentGuess[8]; + double var_chaste_interface__calcium_concentration__CaJSR = rCurrentGuess[9]; + double var_chaste_interface__calcium_concentration__CaNSR = rCurrentGuess[10]; + double var_chaste_interface__calcium_concentration__Cai_converted = rCurrentGuess[11]; + double var_chaste_interface__calcium_concentration__Cass = rCurrentGuess[12]; + double var_chaste_interface__calcium_fluxes__P_RyR = rCurrentGuess[13]; + double var_chaste_interface__fast_sodium_current__O_Na = rCurrentGuess[21]; + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rCurrentGuess[22]; + double var_chaste_interface__potassium_concentration__Ki = rCurrentGuess[23]; + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rCurrentGuess[27]; + double var_chaste_interface__ryanodine_receptors__P_C2 = rCurrentGuess[28]; + double var_chaste_interface__ryanodine_receptors__P_O1 = rCurrentGuess[29]; + double var_chaste_interface__ryanodine_receptors__P_O2 = rCurrentGuess[30]; + double var_chaste_interface__sodium_concentration__Nai = rCurrentGuess[31]; + + const double var_x0 = _lt_0_row[37]; + const double var_x1 = _lt_0_row[38]; + const double var_x2 = var_x1 * (_lt_0_row[39]) / (1 + 0.12 * var_x1); + const double var_x3 = 0.10000000000000001 * var_x0; + const double var_x4 = -1.6000000000000001 * var_x2; + const double var_x5 = 0.80000000000000004 * var_x2; + const double var_x6 = 0.15000000000000002 * var_x0; + const double var_x7 = _lt_0_row[40]; + const double var_x8 = 0.026000000000000002 * var_x7; + const double var_x9 = 13 - 13 * var_x7; + const double var_x10 = 20 + var_chaste_interface__calcium_concentration__Cass; + const double var_x11 = 1 / var_x10; + const double var_x12 = 0.23324 * var_x11; + const double var_x13 = var_x12 * var_chaste_interface__calcium_concentration__Cass; + const double var_x14 = var_x13 * var_x9; + const double var_x15 = 0.40000000000000002 * var_x2; + const double var_x16 = 0.00093296000000000004 * var_x2; + const double var_x17 = var_x11 * var_x16; + const double var_x18 = var_x17 * var_chaste_interface__calcium_concentration__Cass; + const double var_x19 = 0.00040000000000000002 * var_x0; + const double var_x20 = 0.0001 * var_x0; + const double var_x21 = 0.20000000000000001 * var_x0; + const double var_x22 = var_chaste_interface__calcium_concentration__Cass / pow(var_x10, 2); + const double var_x23 = -var_x17 * var_chaste_interface__L_type_calcium_current__C4 + var_x16 * var_x22 * var_chaste_interface__L_type_calcium_current__C4; + const double var_x24 = var_x9 * var_chaste_interface__L_type_calcium_current__C4; + const double var_x25 = 0.23324 * var_x22; + const double var_x26 = var_x24 * var_x25 - var_x12 * var_x24; + const double var_x27 = 0.013000000000000001 * var_x7; + const double var_x28 = -var_x27; + const double var_x29 = 0.00040000000000000002 * var_x2; + const double var_x30 = var_x25 * var_chaste_interface__L_type_calcium_current__O - var_x12 * var_chaste_interface__L_type_calcium_current__O; + const double var_x31 = 0.013000000000000001 - var_x27; + const double var_x32 = var_x25 * var_chaste_interface__L_type_calcium_current__I2 - var_x12 * var_chaste_interface__L_type_calcium_current__I2; + const double var_x33 = 2.3700000000000001 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x34 = 3.1999999999999999e-5 + var_x33; + const double var_x35 = 2.3700000000000001 * var_chaste_interface__calcium_buffering__HTRPN_Ca; + const double var_x36 = 32.699999999999996 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x37 = 0.019599999999999999 + var_x36; + const double var_x38 = 32.699999999999996 * var_chaste_interface__calcium_buffering__LTRPN_Ca; + const double var_x39 = 800 + var_chaste_interface__calcium_concentration__CaJSR; + const double var_x40 = 1 + 12000000 / pow(var_x39, 2); + const double var_x41 = 1 / var_x40; + const double var_x42 = var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2; + const double var_x43 = var_x42 * mParameters[1]; + const double var_x44 = var_x43 * var_chaste_interface__calcium_fluxes__P_RyR; + const double var_x45 = -var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR; + const double var_x46 = var_x41 * var_x45; + const double var_x47 = var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; + const double var_x48 = -var_x46 * var_x47; + const double var_x49 = 1000000 * pow(var_chaste_interface__calcium_concentration__Cai_converted, 2); + const double var_x50 = 0.25 + var_x49; + const double var_x51 = 1 / var_x50; + const double var_x52 = var_x51 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x53 = pow(var_x50, (-2)); + const double var_x54 = pow(var_chaste_interface__calcium_concentration__Cai_converted, 3); + const double var_x55 = var_x53 * var_x54; + const double var_x56 = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x57 = 0.23799999999999999 + var_x56; + const double var_x58 = 1 + 11.899999999999999 / pow(var_x57, 2); + const double var_x59 = 1 / var_x58; + const double var_x60 = 0.001 * var_x59; + const double var_x61 = 1 / var_chaste_interface__calcium_concentration__Cai_converted; + const double var_x62 = 2000000 * var_x52; + const double var_x63 = _lt_0_row[2]; + const double var_x64 = pow(mParameters[6], 3); + const double var_x65 = var_x63 * var_x64; + const double var_x66 = mParameters[15] / ((1 + 0.10000000000000001 * var_x63) * (1380 + mParameters[4]) * (669921875000000.0 + var_x64)); + const double var_x67 = var_x65 * var_x66; + const double var_x68 = 0.03075923579139864 * mParameters[8]; + const double var_x69 = var_x49 * var_x51; + const double var_x70 = _lt_0_row[1]; + const double var_x71 = var_x66 * var_x70 * pow(var_chaste_interface__sodium_concentration__Nai, 2) * mParameters[4]; + const double var_x72 = 0.23799999999999999 + var_chaste_interface__calcium_concentration__Cass; + const double var_x73 = 1 + 11.899999999999999 / pow(var_x72, 2); + const double var_x74 = 1 / var_x73; + const double var_x75 = (-63 + var_chaste_interface__membrane__V) * mParameters[7]; + const double var_x76 = 535.23141606043157 * var_x75 * mParameters[8]; + const double var_x77 = 80.808080808080803 * var_x44; + const double var_x78 = 80.808080808080803 * var_x45 * var_x74; + const double var_x79 = var_x47 * var_x78; + const double var_x80 = 0.04926108374384236 * var_chaste_interface__membrane__V; + const double var_x81 = 0.20000000000000001 * exp(0.12315270935960591 - var_x80); + const double var_x82 = _lt_0_row[41]; + const double var_x83 = 1 / (0.25 * var_x82 + _lt_0_row[42]); + const double var_x84 = 3.802 * var_x83; + const double var_x85 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__membrane__V; + const double var_x86 = 3.802 / (_lt_0_row[43] + 0.23000000000000001 * var_x82); + const double var_x87 = _lt_0_row[44]; + const double var_x88 = 6.9999999999999997e-7 * var_x87; + const double var_x89 = exp(0.36945812807881773 - var_x80); + const double var_x90 = 0.22 * var_x89; + const double var_x91 = 3.802 / (0.20000000000000001 * var_x82 + _lt_0_row[45]); + const double var_x92 = -var_x91; + const double var_x93 = 0.19170000000000001 * exp(-0.12315270935960591 - var_x80); + const double var_x94 = var_x86 + var_x93; + const double var_x95 = var_x85 + var_x91; + const double var_x96 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 + 0.060240963855421679 * mParameters[10] - 0.060240963855421679 * var_chaste_interface__membrane__V)); + const double var_x97 = 1.0526315789473684e-5 * var_x96; + const double var_x98 = 1.4e-8 * var_x87; + const double var_x99 = 0.001 * var_x96; + const double var_x100 = -var_x85; + const double var_x101 = 1.2097272727272726e-5 * var_x83 * var_x87 * var_x96 / (var_x85 * var_x89); + const double var_x102 = 1 * var_x96; + const double var_x103 = 1 / var_chaste_interface__potassium_concentration__Ki; + const double var_x104 = var_x103 * mParameters[5]; + const double var_x105 = log(var_x104); + const double var_x106 = -25.674321243523316 * var_x105 + var_chaste_interface__membrane__V; + const double var_x107 = mParameters[8] * mParameters[3]; + const double var_x108 = 0.061518471582797281 * var_x107; + const double var_x109 = var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12]; + const double var_x110 = 1 / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai); + const double var_x111 = 25.674321243523316 * var_x103; + const double var_x112 = exp(0.089599999999999999 * var_chaste_interface__membrane__V - 2.300419183419689 * var_x105); + const double var_x113 = 1 + var_x112; + const double var_x114 = var_x104 * mParameters[11] / (210 + mParameters[5]); + const double var_x115 = 1 / var_chaste_interface__sodium_concentration__Nai; + const double var_x116 = pow(var_x115, 1.5); + const double var_x117 = var_x115 * var_x116 * mParameters[5] / (pow((1 + 3043189.1166997822 * var_x116), 2) * (1500 + mParameters[5]) * (1 + _lt_0_row[5] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * _lt_0_row[4])); + const double var_x118 = _lt_0_row[46]; + const double var_x119 = -var_x118; + const double var_x120 = _lt_0_row[23]; + const double var_x121 = _lt_0_row[25]; + const double var_x122 = _lt_0_row[26]; + const double var_x123 = _lt_0_row[24]; + const double var_x124 = 0.012149999999999999 * pow(var_chaste_interface__calcium_concentration__Cass, 2) * var_chaste_interface__ryanodine_receptors__P_O1; + const double var_x125 = pow(var_chaste_interface__calcium_concentration__Cass, 3); + const double var_x126 = 0.0060749999999999997 * pow(var_chaste_interface__calcium_concentration__Cass, 4); + const double var_x127 = 0.0040499999999999998 * var_x125; + const double var_x128 = 1 / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki); + const double var_x129 = var_x128 * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; + + + rJacobian[0][0] = 1.0 - (mDt * (-0.050000000000000003 * var_x0 - 2.8000000000000003 * var_x2)); + rJacobian[0][1] = -(mDt * (var_x3 + var_x4)); + rJacobian[0][2] = -(mDt * (var_x4)); + rJacobian[0][3] = -(mDt * (var_x4)); + rJacobian[0][4] = -(mDt * (var_x4)); + rJacobian[0][5] = -(mDt * (var_x4)); + rJacobian[0][6] = -(mDt * (var_x4)); + rJacobian[0][7] = 0.0; + rJacobian[0][8] = 0.0; + rJacobian[0][9] = 0.0; + rJacobian[0][10] = 0.0; + rJacobian[0][11] = 0.0; + rJacobian[0][12] = 0.0; + rJacobian[0][13] = 0.0; + rJacobian[0][14] = 0.0; + rJacobian[0][15] = 0.0; + rJacobian[0][16] = 0.0; + rJacobian[0][17] = 0.0; + rJacobian[0][18] = 0.0; + rJacobian[0][19] = 0.0; + rJacobian[0][20] = 0.0; + rJacobian[0][21] = 0.0; + rJacobian[0][22] = 0.0; + rJacobian[0][23] = 0.0; + rJacobian[0][24] = 0.0; + rJacobian[0][25] = 0.0; + rJacobian[0][26] = 0.0; + rJacobian[0][27] = 0.0; + rJacobian[0][28] = 0.0; + rJacobian[0][29] = 0.0; + rJacobian[0][30] = 0.0; + rJacobian[0][31] = 0.0; + rJacobian[1][0] = -(mDt * (1.2000000000000002 * var_x2)); + rJacobian[1][1] = 1.0 - (mDt * (-var_x3 - var_x5)); + rJacobian[1][2] = -(mDt * (var_x6)); + rJacobian[1][3] = 0.0; + rJacobian[1][4] = 0.0; + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = 0.0; + rJacobian[1][8] = 0.0; + rJacobian[1][9] = 0.0; + rJacobian[1][10] = 0.0; + rJacobian[1][11] = 0.0; + rJacobian[1][12] = 0.0; + rJacobian[1][13] = 0.0; + rJacobian[1][14] = 0.0; + rJacobian[1][15] = 0.0; + rJacobian[1][16] = 0.0; + rJacobian[1][17] = 0.0; + rJacobian[1][18] = 0.0; + rJacobian[1][19] = 0.0; + rJacobian[1][20] = 0.0; + rJacobian[1][21] = 0.0; + rJacobian[1][22] = 0.0; + rJacobian[1][23] = 0.0; + rJacobian[1][24] = 0.0; + rJacobian[1][25] = 0.0; + rJacobian[1][26] = 0.0; + rJacobian[1][27] = 0.0; + rJacobian[1][28] = 0.0; + rJacobian[1][29] = 0.0; + rJacobian[1][30] = 0.0; + rJacobian[1][31] = 0.0; + rJacobian[2][0] = 0.0; + rJacobian[2][1] = -(mDt * (var_x5)); + rJacobian[2][2] = 1.0 - (mDt * (-0.026000000000000002 + var_x8 - var_x14 - var_x15 - var_x18 - var_x6)); + rJacobian[2][3] = -(mDt * (1.0000000000000002e-6 * var_x0)); + rJacobian[2][4] = -(mDt * (var_x19)); + rJacobian[2][5] = -(mDt * (var_x20)); + rJacobian[2][6] = -(mDt * (var_x21)); + rJacobian[2][7] = 0.0; + rJacobian[2][8] = 0.0; + rJacobian[2][9] = 0.0; + rJacobian[2][10] = 0.0; + rJacobian[2][11] = 0.0; + rJacobian[2][12] = -(mDt * (var_x23 + var_x26)); + rJacobian[2][13] = 0.0; + rJacobian[2][14] = 0.0; + rJacobian[2][15] = 0.0; + rJacobian[2][16] = 0.0; + rJacobian[2][17] = 0.0; + rJacobian[2][18] = 0.0; + rJacobian[2][19] = 0.0; + rJacobian[2][20] = 0.0; + rJacobian[2][21] = 0.0; + rJacobian[2][22] = 0.0; + rJacobian[2][23] = 0.0; + rJacobian[2][24] = 0.0; + rJacobian[2][25] = 0.0; + rJacobian[2][26] = 0.0; + rJacobian[2][27] = 0.0; + rJacobian[2][28] = 0.0; + rJacobian[2][29] = 0.0; + rJacobian[2][30] = 0.0; + rJacobian[2][31] = 0.0; + rJacobian[3][0] = 0.0; + rJacobian[3][1] = 0.0; + rJacobian[3][2] = -(mDt * (var_x18)); + rJacobian[3][3] = 1.0 - (mDt * (-0.0135 - var_x28 - 0.002 * var_x0 * var_x9)); + rJacobian[3][4] = 0.0; + rJacobian[3][5] = -(mDt * (var_x29)); + rJacobian[3][6] = -(mDt * (var_x13)); + rJacobian[3][7] = 0.0; + rJacobian[3][8] = 0.0; + rJacobian[3][9] = 0.0; + rJacobian[3][10] = 0.0; + rJacobian[3][11] = 0.0; + rJacobian[3][12] = -(mDt * (-var_x23 - var_x30)); + rJacobian[3][13] = 0.0; + rJacobian[3][14] = 0.0; + rJacobian[3][15] = 0.0; + rJacobian[3][16] = 0.0; + rJacobian[3][17] = 0.0; + rJacobian[3][18] = 0.0; + rJacobian[3][19] = 0.0; + rJacobian[3][20] = 0.0; + rJacobian[3][21] = 0.0; + rJacobian[3][22] = 0.0; + rJacobian[3][23] = 0.0; + rJacobian[3][24] = 0.0; + rJacobian[3][25] = 0.0; + rJacobian[3][26] = 0.0; + rJacobian[3][27] = 0.0; + rJacobian[3][28] = 0.0; + rJacobian[3][29] = 0.0; + rJacobian[3][30] = 0.0; + rJacobian[3][31] = 0.0; + rJacobian[4][0] = 0.0; + rJacobian[4][1] = 0.0; + rJacobian[4][2] = -(mDt * (0.026000000000000002 - var_x8)); + rJacobian[4][3] = 0.0; + rJacobian[4][4] = 1.0 - (mDt * (-var_x13 - var_x19 - var_x29)); + rJacobian[4][5] = -(mDt * (0.00050000000000000001)); + rJacobian[4][6] = -(mDt * (var_x31)); + rJacobian[4][7] = 0.0; + rJacobian[4][8] = 0.0; + rJacobian[4][9] = 0.0; + rJacobian[4][10] = 0.0; + rJacobian[4][11] = 0.0; + rJacobian[4][12] = -(mDt * (var_x32)); + rJacobian[4][13] = 0.0; + rJacobian[4][14] = 0.0; + rJacobian[4][15] = 0.0; + rJacobian[4][16] = 0.0; + rJacobian[4][17] = 0.0; + rJacobian[4][18] = 0.0; + rJacobian[4][19] = 0.0; + rJacobian[4][20] = 0.0; + rJacobian[4][21] = 0.0; + rJacobian[4][22] = 0.0; + rJacobian[4][23] = 0.0; + rJacobian[4][24] = 0.0; + rJacobian[4][25] = 0.0; + rJacobian[4][26] = 0.0; + rJacobian[4][27] = 0.0; + rJacobian[4][28] = 0.0; + rJacobian[4][29] = 0.0; + rJacobian[4][30] = 0.0; + rJacobian[4][31] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = -(mDt * (var_x14)); + rJacobian[5][3] = -(mDt * (var_x31)); + rJacobian[5][4] = -(mDt * (var_x13)); + rJacobian[5][5] = 1.0 - (mDt * (-0.00050000000000000001 - var_x20 - var_x29)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[5][8] = 0.0; + rJacobian[5][9] = 0.0; + rJacobian[5][10] = 0.0; + rJacobian[5][11] = 0.0; + rJacobian[5][12] = -(mDt * (-var_x26 - var_x32)); + rJacobian[5][13] = 0.0; + rJacobian[5][14] = 0.0; + rJacobian[5][15] = 0.0; + rJacobian[5][16] = 0.0; + rJacobian[5][17] = 0.0; + rJacobian[5][18] = 0.0; + rJacobian[5][19] = 0.0; + rJacobian[5][20] = 0.0; + rJacobian[5][21] = 0.0; + rJacobian[5][22] = 0.0; + rJacobian[5][23] = 0.0; + rJacobian[5][24] = 0.0; + rJacobian[5][25] = 0.0; + rJacobian[5][26] = 0.0; + rJacobian[5][27] = 0.0; + rJacobian[5][28] = 0.0; + rJacobian[5][29] = 0.0; + rJacobian[5][30] = 0.0; + rJacobian[5][31] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = -(mDt * (var_x15)); + rJacobian[6][3] = -(mDt * (0.00050000000000000001)); + rJacobian[6][4] = -(mDt * (var_x29)); + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (-0.013000000000000001 - var_x13 - var_x21 - var_x28)); + rJacobian[6][7] = 0.0; + rJacobian[6][8] = 0.0; + rJacobian[6][9] = 0.0; + rJacobian[6][10] = 0.0; + rJacobian[6][11] = 0.0; + rJacobian[6][12] = -(mDt * (var_x30)); + rJacobian[6][13] = 0.0; + rJacobian[6][14] = 0.0; + rJacobian[6][15] = 0.0; + rJacobian[6][16] = 0.0; + rJacobian[6][17] = 0.0; + rJacobian[6][18] = 0.0; + rJacobian[6][19] = 0.0; + rJacobian[6][20] = 0.0; + rJacobian[6][21] = 0.0; + rJacobian[6][22] = 0.0; + rJacobian[6][23] = 0.0; + rJacobian[6][24] = 0.0; + rJacobian[6][25] = 0.0; + rJacobian[6][26] = 0.0; + rJacobian[6][27] = 0.0; + rJacobian[6][28] = 0.0; + rJacobian[6][29] = 0.0; + rJacobian[6][30] = 0.0; + rJacobian[6][31] = 0.0; + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = 0.0; + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (-var_x34)); + rJacobian[7][8] = 0.0; + rJacobian[7][9] = 0.0; + rJacobian[7][10] = 0.0; + rJacobian[7][11] = -(mDt * (331.80000000000001 - var_x35)); + rJacobian[7][12] = 0.0; + rJacobian[7][13] = 0.0; + rJacobian[7][14] = 0.0; + rJacobian[7][15] = 0.0; + rJacobian[7][16] = 0.0; + rJacobian[7][17] = 0.0; + rJacobian[7][18] = 0.0; + rJacobian[7][19] = 0.0; + rJacobian[7][20] = 0.0; + rJacobian[7][21] = 0.0; + rJacobian[7][22] = 0.0; + rJacobian[7][23] = 0.0; + rJacobian[7][24] = 0.0; + rJacobian[7][25] = 0.0; + rJacobian[7][26] = 0.0; + rJacobian[7][27] = 0.0; + rJacobian[7][28] = 0.0; + rJacobian[7][29] = 0.0; + rJacobian[7][30] = 0.0; + rJacobian[7][31] = 0.0; + rJacobian[8][0] = 0.0; + rJacobian[8][1] = 0.0; + rJacobian[8][2] = 0.0; + rJacobian[8][3] = 0.0; + rJacobian[8][4] = 0.0; + rJacobian[8][5] = 0.0; + rJacobian[8][6] = 0.0; + rJacobian[8][7] = 0.0; + rJacobian[8][8] = 1.0 - (mDt * (-var_x37)); + rJacobian[8][9] = 0.0; + rJacobian[8][10] = 0.0; + rJacobian[8][11] = -(mDt * (2289 - var_x38)); + rJacobian[8][12] = 0.0; + rJacobian[8][13] = 0.0; + rJacobian[8][14] = 0.0; + rJacobian[8][15] = 0.0; + rJacobian[8][16] = 0.0; + rJacobian[8][17] = 0.0; + rJacobian[8][18] = 0.0; + rJacobian[8][19] = 0.0; + rJacobian[8][20] = 0.0; + rJacobian[8][21] = 0.0; + rJacobian[8][22] = 0.0; + rJacobian[8][23] = 0.0; + rJacobian[8][24] = 0.0; + rJacobian[8][25] = 0.0; + rJacobian[8][26] = 0.0; + rJacobian[8][27] = 0.0; + rJacobian[8][28] = 0.0; + rJacobian[8][29] = 0.0; + rJacobian[8][30] = 0.0; + rJacobian[8][31] = 0.0; + rJacobian[9][0] = 0.0; + rJacobian[9][1] = 0.0; + rJacobian[9][2] = 0.0; + rJacobian[9][3] = 0.0; + rJacobian[9][4] = 0.0; + rJacobian[9][5] = 0.0; + rJacobian[9][6] = 0.0; + rJacobian[9][7] = 0.0; + rJacobian[9][8] = 0.0; + rJacobian[9][9] = 1.0 - (mDt * (var_x41 * (-0.050000000000000003 - var_x44) + 24000000 * (0.050000000000000003 * var_chaste_interface__calcium_concentration__CaNSR - 0.050000000000000003 * var_chaste_interface__calcium_concentration__CaJSR - var_x44 * var_x45) / (pow(var_x39, 3) * pow(var_x40, 2)))); + rJacobian[9][10] = -(mDt * (0.050000000000000003 * var_x41)); + rJacobian[9][11] = 0.0; + rJacobian[9][12] = -(mDt * (var_x41 * var_x44)); + rJacobian[9][13] = -(mDt * (-var_x43 * var_x46)); + rJacobian[9][14] = 0.0; + rJacobian[9][15] = 0.0; + rJacobian[9][16] = 0.0; + rJacobian[9][17] = 0.0; + rJacobian[9][18] = 0.0; + rJacobian[9][19] = 0.0; + rJacobian[9][20] = 0.0; + rJacobian[9][21] = 0.0; + rJacobian[9][22] = 0.0; + rJacobian[9][23] = 0.0; + rJacobian[9][24] = 0.0; + rJacobian[9][25] = 0.0; + rJacobian[9][26] = 0.0; + rJacobian[9][27] = 0.0; + rJacobian[9][28] = 0.0; + rJacobian[9][29] = -(mDt * (var_x48)); + rJacobian[9][30] = -(mDt * (var_x48)); + rJacobian[9][31] = 0.0; + rJacobian[10][0] = 0.0; + rJacobian[10][1] = 0.0; + rJacobian[10][2] = 0.0; + rJacobian[10][3] = 0.0; + rJacobian[10][4] = 0.0; + rJacobian[10][5] = 0.0; + rJacobian[10][6] = 0.0; + rJacobian[10][7] = 0.0; + rJacobian[10][8] = 0.0; + rJacobian[10][9] = -(mDt * (0.0028598665395614866)); + rJacobian[10][10] = 1.0 - (mDt * (-0.0028598665395614866 - 12.316491897044804 * mParameters[0])); + rJacobian[10][11] = -(mDt * (12316.491897044803 * mParameters[0] + 24632983.794089608 * var_x52 * mParameters[2] - 24632983794089.605 * var_x55 * mParameters[2])); + rJacobian[10][12] = 0.0; + rJacobian[10][13] = 0.0; + rJacobian[10][14] = 0.0; + rJacobian[10][15] = 0.0; + rJacobian[10][16] = 0.0; + rJacobian[10][17] = 0.0; + rJacobian[10][18] = 0.0; + rJacobian[10][19] = 0.0; + rJacobian[10][20] = 0.0; + rJacobian[10][21] = 0.0; + rJacobian[10][22] = 0.0; + rJacobian[10][23] = 0.0; + rJacobian[10][24] = 0.0; + rJacobian[10][25] = 0.0; + rJacobian[10][26] = 0.0; + rJacobian[10][27] = 0.0; + rJacobian[10][28] = 0.0; + rJacobian[10][29] = 0.0; + rJacobian[10][30] = 0.0; + rJacobian[10][31] = 0.0; + rJacobian[11][0] = 0.0; + rJacobian[11][1] = 0.0; + rJacobian[11][2] = 0.0; + rJacobian[11][3] = 0.0; + rJacobian[11][4] = 0.0; + rJacobian[11][5] = 0.0; + rJacobian[11][6] = 0.0; + rJacobian[11][7] = -(mDt * (var_x34 * var_x60)); + rJacobian[11][8] = -(mDt * (var_x37 * var_x60)); + rJacobian[11][9] = 0.0; + rJacobian[11][10] = -(mDt * (var_x60 * mParameters[0])); + rJacobian[11][11] = 1.0 - (mDt * (var_x60 * (-2745.8000000000002 + var_x35 + var_x38 - 1000 * mParameters[0] - var_x62 * mParameters[2] - var_x68 * (var_x62 + 0.0047112379481865285 * var_x61 + 2000 * var_x67 - 1999999999999.9998 * var_x55) + 1999999999999.9998 * var_x53 * var_x54 * mParameters[2]) + 23.799999999999997 * (0.125 * var_chaste_interface__calcium_concentration__Cass + 0.019599999999999999 * var_chaste_interface__calcium_buffering__LTRPN_Ca + 3.1999999999999999e-5 * var_chaste_interface__calcium_buffering__HTRPN_Ca - 125 * var_chaste_interface__calcium_concentration__Cai_converted + (-var_x56 + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0] - var_x33 * (140 - var_chaste_interface__calcium_buffering__HTRPN_Ca) - var_x36 * (70 - var_chaste_interface__calcium_buffering__LTRPN_Ca) - var_x68 * (var_x69 + 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(0.001 * var_x61 * mParameters[4]) - 2 * var_x66 * (-var_x56 * var_x65 + var_x70 * pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4])) - var_x69 * mParameters[2]) / (pow(var_x57, 3) * pow(var_x58, 2)))); + rJacobian[11][12] = -(mDt * (0.000125 * var_x59)); + rJacobian[11][13] = 0.0; + rJacobian[11][14] = 0.0; + rJacobian[11][15] = 0.0; + rJacobian[11][16] = 0.0; + rJacobian[11][17] = 0.0; + rJacobian[11][18] = 0.0; + rJacobian[11][19] = 0.0; + rJacobian[11][20] = 0.0; + rJacobian[11][21] = 0.0; + rJacobian[11][22] = 0.0; + rJacobian[11][23] = 0.0; + rJacobian[11][24] = 0.0; + rJacobian[11][25] = 0.0; + rJacobian[11][26] = 0.0; + rJacobian[11][27] = 0.0; + rJacobian[11][28] = 0.0; + rJacobian[11][29] = 0.0; + rJacobian[11][30] = 0.0; + rJacobian[11][31] = -(mDt * (0.00018455541474839184 * var_x59 * var_x71 * mParameters[8])); + rJacobian[12][0] = 0.0; + rJacobian[12][1] = 0.0; + rJacobian[12][2] = 0.0; + rJacobian[12][3] = 0.0; + rJacobian[12][4] = 0.0; + rJacobian[12][5] = 0.0; + rJacobian[12][6] = -(mDt * (-var_x74 * var_x76)); + rJacobian[12][7] = 0.0; + rJacobian[12][8] = 0.0; + rJacobian[12][9] = -(mDt * (var_x74 * var_x77)); + rJacobian[12][10] = 0.0; + rJacobian[12][11] = -(mDt * (2175084.1750841751 * var_x74)); + rJacobian[12][12] = 1.0 - (mDt * (var_x74 * (-2175.0841750841751 - var_x77) + 23.799999999999997 * (2175084.1750841751 * var_chaste_interface__calcium_concentration__Cai_converted - 2175.0841750841751 * var_chaste_interface__calcium_concentration__Cass - var_x76 * var_chaste_interface__L_type_calcium_current__O + 80.808080808080803 * var_x42 * var_x45 * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]) / (pow(var_x72, 3) * pow(var_x73, 2)))); + rJacobian[12][13] = -(mDt * (var_x43 * var_x78)); + rJacobian[12][14] = 0.0; + rJacobian[12][15] = 0.0; + rJacobian[12][16] = 0.0; + rJacobian[12][17] = 0.0; + rJacobian[12][18] = 0.0; + rJacobian[12][19] = 0.0; + rJacobian[12][20] = 0.0; + rJacobian[12][21] = 0.0; + rJacobian[12][22] = 0.0; + rJacobian[12][23] = 0.0; + rJacobian[12][24] = 0.0; + rJacobian[12][25] = 0.0; + rJacobian[12][26] = 0.0; + rJacobian[12][27] = 0.0; + rJacobian[12][28] = 0.0; + rJacobian[12][29] = -(mDt * (var_x79)); + rJacobian[12][30] = -(mDt * (var_x79)); + rJacobian[12][31] = 0.0; + rJacobian[13][0] = 0.0; + rJacobian[13][1] = 0.0; + rJacobian[13][2] = 0.0; + rJacobian[13][3] = 0.0; + rJacobian[13][4] = 0.0; + rJacobian[13][5] = 0.0; + rJacobian[13][6] = -(mDt * (-0.014285714285714287 * var_x75 * _lt_0_row[9])); + rJacobian[13][7] = 0.0; + rJacobian[13][8] = 0.0; + rJacobian[13][9] = 0.0; + rJacobian[13][10] = 0.0; + rJacobian[13][11] = 0.0; + rJacobian[13][12] = 0.0; + rJacobian[13][13] = 1.0 - (mDt * (-0.040000000000000001)); + rJacobian[13][14] = 0.0; + rJacobian[13][15] = 0.0; + rJacobian[13][16] = 0.0; + rJacobian[13][17] = 0.0; + rJacobian[13][18] = 0.0; + rJacobian[13][19] = 0.0; + rJacobian[13][20] = 0.0; + rJacobian[13][21] = 0.0; + rJacobian[13][22] = 0.0; + rJacobian[13][23] = 0.0; + rJacobian[13][24] = 0.0; + rJacobian[13][25] = 0.0; + rJacobian[13][26] = 0.0; + rJacobian[13][27] = 0.0; + rJacobian[13][28] = 0.0; + rJacobian[13][29] = 0.0; + rJacobian[13][30] = 0.0; + rJacobian[13][31] = 0.0; + rJacobian[14][0] = 0.0; + rJacobian[14][1] = 0.0; + rJacobian[14][2] = 0.0; + rJacobian[14][3] = 0.0; + rJacobian[14][4] = 0.0; + rJacobian[14][5] = 0.0; + rJacobian[14][6] = 0.0; + rJacobian[14][7] = 0.0; + rJacobian[14][8] = 0.0; + rJacobian[14][9] = 0.0; + rJacobian[14][10] = 0.0; + rJacobian[14][11] = 0.0; + rJacobian[14][12] = 0.0; + rJacobian[14][13] = 0.0; + rJacobian[14][14] = 1.0 - (mDt * (-var_x81 - var_x84 - var_x85)); + rJacobian[14][15] = -(mDt * (var_x86)); + rJacobian[14][16] = 0.0; + rJacobian[14][17] = 0.0; + rJacobian[14][18] = 0.0; + rJacobian[14][19] = 0.0; + rJacobian[14][20] = -(mDt * (var_x88)); + rJacobian[14][21] = -(mDt * (var_x90)); + rJacobian[14][22] = 0.0; + rJacobian[14][23] = 0.0; + rJacobian[14][24] = 0.0; + rJacobian[14][25] = 0.0; + rJacobian[14][26] = 0.0; + rJacobian[14][27] = 0.0; + rJacobian[14][28] = 0.0; + rJacobian[14][29] = 0.0; + rJacobian[14][30] = 0.0; + rJacobian[14][31] = 0.0; + rJacobian[15][0] = 0.0; + rJacobian[15][1] = 0.0; + rJacobian[15][2] = 0.0; + rJacobian[15][3] = 0.0; + rJacobian[15][4] = 0.0; + rJacobian[15][5] = 0.0; + rJacobian[15][6] = 0.0; + rJacobian[15][7] = 0.0; + rJacobian[15][8] = 0.0; + rJacobian[15][9] = 0.0; + rJacobian[15][10] = 0.0; + rJacobian[15][11] = 0.0; + rJacobian[15][12] = 0.0; + rJacobian[15][13] = 0.0; + rJacobian[15][14] = -(mDt * (var_x81 + var_x92)); + rJacobian[15][15] = 1.0 - (mDt * (-var_x94 - var_x95)); + rJacobian[15][16] = -(mDt * (var_x92)); + rJacobian[15][17] = -(mDt * (var_x92)); + rJacobian[15][18] = -(mDt * (var_x88 + var_x92)); + rJacobian[15][19] = -(mDt * (var_x92)); + rJacobian[15][20] = -(mDt * (var_x92)); + rJacobian[15][21] = -(mDt * (var_x92)); + rJacobian[15][22] = 0.0; + rJacobian[15][23] = 0.0; + rJacobian[15][24] = 0.0; + rJacobian[15][25] = 0.0; + rJacobian[15][26] = 0.0; + rJacobian[15][27] = 0.0; + rJacobian[15][28] = 0.0; + rJacobian[15][29] = 0.0; + rJacobian[15][30] = 0.0; + rJacobian[15][31] = 0.0; + rJacobian[16][0] = 0.0; + rJacobian[16][1] = 0.0; + rJacobian[16][2] = 0.0; + rJacobian[16][3] = 0.0; + rJacobian[16][4] = 0.0; + rJacobian[16][5] = 0.0; + rJacobian[16][6] = 0.0; + rJacobian[16][7] = 0.0; + rJacobian[16][8] = 0.0; + rJacobian[16][9] = 0.0; + rJacobian[16][10] = 0.0; + rJacobian[16][11] = 0.0; + rJacobian[16][12] = 0.0; + rJacobian[16][13] = 0.0; + rJacobian[16][14] = 0.0; + rJacobian[16][15] = 0.0; + rJacobian[16][16] = 1.0 - (mDt * (-var_x88 - var_x97)); + rJacobian[16][17] = -(mDt * (var_x98)); + rJacobian[16][18] = 0.0; + rJacobian[16][19] = 0.0; + rJacobian[16][20] = -(mDt * (var_x99)); + rJacobian[16][21] = 0.0; + rJacobian[16][22] = 0.0; + rJacobian[16][23] = 0.0; + rJacobian[16][24] = 0.0; + rJacobian[16][25] = 0.0; + rJacobian[16][26] = 0.0; + rJacobian[16][27] = 0.0; + rJacobian[16][28] = 0.0; + rJacobian[16][29] = 0.0; + rJacobian[16][30] = 0.0; + rJacobian[16][31] = 0.0; + rJacobian[17][0] = 0.0; + rJacobian[17][1] = 0.0; + rJacobian[17][2] = 0.0; + rJacobian[17][3] = 0.0; + rJacobian[17][4] = 0.0; + rJacobian[17][5] = 0.0; + rJacobian[17][6] = 0.0; + rJacobian[17][7] = 0.0; + rJacobian[17][8] = 0.0; + rJacobian[17][9] = 0.0; + rJacobian[17][10] = 0.0; + rJacobian[17][11] = 0.0; + rJacobian[17][12] = 0.0; + rJacobian[17][13] = 0.0; + rJacobian[17][14] = 0.0; + rJacobian[17][15] = 0.0; + rJacobian[17][16] = -(mDt * (var_x97)); + rJacobian[17][17] = 1.0 - (mDt * (-var_x98)); + rJacobian[17][18] = 0.0; + rJacobian[17][19] = 0.0; + rJacobian[17][20] = 0.0; + rJacobian[17][21] = 0.0; + rJacobian[17][22] = 0.0; + rJacobian[17][23] = 0.0; + rJacobian[17][24] = 0.0; + rJacobian[17][25] = 0.0; + rJacobian[17][26] = 0.0; + rJacobian[17][27] = 0.0; + rJacobian[17][28] = 0.0; + rJacobian[17][29] = 0.0; + rJacobian[17][30] = 0.0; + rJacobian[17][31] = 0.0; + rJacobian[18][0] = 0.0; + rJacobian[18][1] = 0.0; + rJacobian[18][2] = 0.0; + rJacobian[18][3] = 0.0; + rJacobian[18][4] = 0.0; + rJacobian[18][5] = 0.0; + rJacobian[18][6] = 0.0; + rJacobian[18][7] = 0.0; + rJacobian[18][8] = 0.0; + rJacobian[18][9] = 0.0; + rJacobian[18][10] = 0.0; + rJacobian[18][11] = 0.0; + rJacobian[18][12] = 0.0; + rJacobian[18][13] = 0.0; + rJacobian[18][14] = 0.0; + rJacobian[18][15] = -(mDt * (var_x85)); + rJacobian[18][16] = 0.0; + rJacobian[18][17] = 0.0; + rJacobian[18][18] = 1.0 - (mDt * (-var_x88 - var_x94)); + rJacobian[18][19] = -(mDt * (var_x91)); + rJacobian[18][20] = -(mDt * (var_x81)); + rJacobian[18][21] = 0.0; + rJacobian[18][22] = 0.0; + rJacobian[18][23] = 0.0; + rJacobian[18][24] = 0.0; + rJacobian[18][25] = 0.0; + rJacobian[18][26] = 0.0; + rJacobian[18][27] = 0.0; + rJacobian[18][28] = 0.0; + rJacobian[18][29] = 0.0; + rJacobian[18][30] = 0.0; + rJacobian[18][31] = 0.0; + rJacobian[19][0] = 0.0; + rJacobian[19][1] = 0.0; + rJacobian[19][2] = 0.0; + rJacobian[19][3] = 0.0; + rJacobian[19][4] = 0.0; + rJacobian[19][5] = 0.0; + rJacobian[19][6] = 0.0; + rJacobian[19][7] = 0.0; + rJacobian[19][8] = 0.0; + rJacobian[19][9] = 0.0; + rJacobian[19][10] = 0.0; + rJacobian[19][11] = 0.0; + rJacobian[19][12] = 0.0; + rJacobian[19][13] = 0.0; + rJacobian[19][14] = -(mDt * (var_x100)); + rJacobian[19][15] = -(mDt * (var_x100)); + rJacobian[19][16] = -(mDt * (var_x100)); + rJacobian[19][17] = -(mDt * (var_x100)); + rJacobian[19][18] = -(mDt * (var_x93 - var_x85)); + rJacobian[19][19] = 1.0 - (mDt * (-var_x88 - var_x95)); + rJacobian[19][20] = -(mDt * (var_x100)); + rJacobian[19][21] = -(mDt * (var_x100)); + rJacobian[19][22] = 0.0; + rJacobian[19][23] = 0.0; + rJacobian[19][24] = 0.0; + rJacobian[19][25] = 0.0; + rJacobian[19][26] = 0.0; + rJacobian[19][27] = 0.0; + rJacobian[19][28] = 0.0; + rJacobian[19][29] = 0.0; + rJacobian[19][30] = 0.0; + rJacobian[19][31] = 0.0; + rJacobian[20][0] = 0.0; + rJacobian[20][1] = 0.0; + rJacobian[20][2] = 0.0; + rJacobian[20][3] = 0.0; + rJacobian[20][4] = 0.0; + rJacobian[20][5] = 0.0; + rJacobian[20][6] = 0.0; + rJacobian[20][7] = 0.0; + rJacobian[20][8] = 0.0; + rJacobian[20][9] = 0.0; + rJacobian[20][10] = 0.0; + rJacobian[20][11] = 0.0; + rJacobian[20][12] = 0.0; + rJacobian[20][13] = 0.0; + rJacobian[20][14] = -(mDt * (var_x85)); + rJacobian[20][15] = 0.0; + rJacobian[20][16] = -(mDt * (var_x88)); + rJacobian[20][17] = 0.0; + rJacobian[20][18] = -(mDt * (var_x86)); + rJacobian[20][19] = 0.0; + rJacobian[20][20] = 1.0 - (mDt * (-var_x101 - var_x81 - var_x88 - var_x99)); + rJacobian[20][21] = -(mDt * (var_x102)); + rJacobian[20][22] = 0.0; + rJacobian[20][23] = 0.0; + rJacobian[20][24] = 0.0; + rJacobian[20][25] = 0.0; + rJacobian[20][26] = 0.0; + rJacobian[20][27] = 0.0; + rJacobian[20][28] = 0.0; + rJacobian[20][29] = 0.0; + rJacobian[20][30] = 0.0; + rJacobian[20][31] = 0.0; + rJacobian[21][0] = 0.0; + rJacobian[21][1] = 0.0; + rJacobian[21][2] = 0.0; + rJacobian[21][3] = 0.0; + rJacobian[21][4] = 0.0; + rJacobian[21][5] = 0.0; + rJacobian[21][6] = 0.0; + rJacobian[21][7] = 0.0; + rJacobian[21][8] = 0.0; + rJacobian[21][9] = 0.0; + rJacobian[21][10] = 0.0; + rJacobian[21][11] = 0.0; + rJacobian[21][12] = 0.0; + rJacobian[21][13] = 0.0; + rJacobian[21][14] = -(mDt * (var_x84)); + rJacobian[21][15] = 0.0; + rJacobian[21][16] = 0.0; + rJacobian[21][17] = 0.0; + rJacobian[21][18] = 0.0; + rJacobian[21][19] = 0.0; + rJacobian[21][20] = -(mDt * (var_x101)); + rJacobian[21][21] = 1.0 - (mDt * (-var_x102 - var_x90)); + rJacobian[21][22] = 0.0; + rJacobian[21][23] = 0.0; + rJacobian[21][24] = 0.0; + rJacobian[21][25] = 0.0; + rJacobian[21][26] = 0.0; + rJacobian[21][27] = 0.0; + rJacobian[21][28] = 0.0; + rJacobian[21][29] = 0.0; + rJacobian[21][30] = 0.0; + rJacobian[21][31] = 0.0; + rJacobian[22][0] = 0.0; + rJacobian[22][1] = 0.0; + rJacobian[22][2] = 0.0; + rJacobian[22][3] = 0.0; + rJacobian[22][4] = 0.0; + rJacobian[22][5] = 0.0; + rJacobian[22][6] = 0.0; + rJacobian[22][7] = 0.0; + rJacobian[22][8] = 0.0; + rJacobian[22][9] = 0.0; + rJacobian[22][10] = 0.0; + rJacobian[22][11] = 0.0; + rJacobian[22][12] = 0.0; + rJacobian[22][13] = 0.0; + rJacobian[22][14] = 0.0; + rJacobian[22][15] = 0.0; + rJacobian[22][16] = 0.0; + rJacobian[22][17] = 0.0; + rJacobian[22][18] = 0.0; + rJacobian[22][19] = 0.0; + rJacobian[22][20] = 0.0; + rJacobian[22][21] = 0.0; + rJacobian[22][22] = 1.0; + rJacobian[22][23] = 0.0; + rJacobian[22][24] = 0.0; + rJacobian[22][25] = 0.0; + rJacobian[22][26] = 0.0; + rJacobian[22][27] = 0.0; + rJacobian[22][28] = 0.0; + rJacobian[22][29] = 0.0; + rJacobian[22][30] = 0.0; + rJacobian[22][31] = 0.0; + rJacobian[23][0] = 0.0; + rJacobian[23][1] = 0.0; + rJacobian[23][2] = 0.0; + rJacobian[23][3] = 0.0; + rJacobian[23][4] = 0.0; + rJacobian[23][5] = 0.0; + rJacobian[23][6] = 0.0; + rJacobian[23][7] = 0.0; + rJacobian[23][8] = 0.0; + rJacobian[23][9] = 0.0; + rJacobian[23][10] = 0.0; + rJacobian[23][11] = 0.0; + rJacobian[23][12] = 0.0; + rJacobian[23][13] = 0.0; + rJacobian[23][14] = 0.0; + rJacobian[23][15] = 0.0; + rJacobian[23][16] = 0.0; + rJacobian[23][17] = 0.0; + rJacobian[23][18] = 0.0; + rJacobian[23][19] = 0.0; + rJacobian[23][20] = 0.0; + rJacobian[23][21] = 0.0; + rJacobian[23][22] = -(mDt * (-var_x106 * var_x108 * var_x109)); + rJacobian[23][23] = 1.0 - (mDt * (-var_x108 * (25.674321243523316 * var_x114 / var_x113 + var_x109 * var_x111 * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss + var_x111 * pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * mParameters[14] + 4.1078913989637309 * var_x103 * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur + 25.674321243523316 * var_x110 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13] + var_x111 * pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f - 2.300419183419689 * var_x106 * var_x112 * var_x114 / pow(var_x113, 2)))); + rJacobian[23][24] = 0.0; + rJacobian[23][25] = 0.0; + rJacobian[23][26] = 0.0; + rJacobian[23][27] = -(mDt * (-var_x108 * (-25.674321243523316 * log(var_x110 * (1 * mParameters[5] + 0.020408163265306124 * mParameters[6])) + var_chaste_interface__membrane__V) * mParameters[13])); + rJacobian[23][28] = 0.0; + rJacobian[23][29] = 0.0; + rJacobian[23][30] = 0.0; + rJacobian[23][31] = -(mDt * (-var_x108 * (-8034019.2680874243 * var_x117 + 0.52396573966374116 * var_x110 * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]))); + rJacobian[24][0] = 0.0; + rJacobian[24][1] = 0.0; + rJacobian[24][2] = 0.0; + rJacobian[24][3] = 0.0; + rJacobian[24][4] = 0.0; + rJacobian[24][5] = 0.0; + rJacobian[24][6] = 0.0; + rJacobian[24][7] = 0.0; + rJacobian[24][8] = 0.0; + rJacobian[24][9] = 0.0; + rJacobian[24][10] = 0.0; + rJacobian[24][11] = 0.0; + rJacobian[24][12] = 0.0; + rJacobian[24][13] = 0.0; + rJacobian[24][14] = 0.0; + rJacobian[24][15] = 0.0; + rJacobian[24][16] = 0.0; + rJacobian[24][17] = 0.0; + rJacobian[24][18] = 0.0; + rJacobian[24][19] = 0.0; + rJacobian[24][20] = 0.0; + rJacobian[24][21] = 0.0; + rJacobian[24][22] = 0.0; + rJacobian[24][23] = 0.0; + rJacobian[24][24] = 1.0 - (mDt * (-0.023761000000000001 - var_x118 - 0.047002000000000002 * _lt_0_row[28])); + rJacobian[24][25] = -(mDt * (0.036777999999999998 - var_x118)); + rJacobian[24][26] = -(mDt * (var_x119)); + rJacobian[24][27] = -(mDt * (var_x119)); + rJacobian[24][28] = 0.0; + rJacobian[24][29] = 0.0; + rJacobian[24][30] = 0.0; + rJacobian[24][31] = 0.0; + rJacobian[25][0] = 0.0; + rJacobian[25][1] = 0.0; + rJacobian[25][2] = 0.0; + rJacobian[25][3] = 0.0; + rJacobian[25][4] = 0.0; + rJacobian[25][5] = 0.0; + rJacobian[25][6] = 0.0; + rJacobian[25][7] = 0.0; + rJacobian[25][8] = 0.0; + rJacobian[25][9] = 0.0; + rJacobian[25][10] = 0.0; + rJacobian[25][11] = 0.0; + rJacobian[25][12] = 0.0; + rJacobian[25][13] = 0.0; + rJacobian[25][14] = 0.0; + rJacobian[25][15] = 0.0; + rJacobian[25][16] = 0.0; + rJacobian[25][17] = 0.0; + rJacobian[25][18] = 0.0; + rJacobian[25][19] = 0.0; + rJacobian[25][20] = 0.0; + rJacobian[25][21] = 0.0; + rJacobian[25][22] = 0.0; + rJacobian[25][23] = 0.0; + rJacobian[25][24] = -(mDt * (0.023761000000000001)); + rJacobian[25][25] = 1.0 - (mDt * (-0.036777999999999998 - var_x120)); + rJacobian[25][26] = 0.0; + rJacobian[25][27] = -(mDt * (var_x121)); + rJacobian[25][28] = 0.0; + rJacobian[25][29] = 0.0; + rJacobian[25][30] = 0.0; + rJacobian[25][31] = 0.0; + rJacobian[26][0] = 0.0; + rJacobian[26][1] = 0.0; + rJacobian[26][2] = 0.0; + rJacobian[26][3] = 0.0; + rJacobian[26][4] = 0.0; + rJacobian[26][5] = 0.0; + rJacobian[26][6] = 0.0; + rJacobian[26][7] = 0.0; + rJacobian[26][8] = 0.0; + rJacobian[26][9] = 0.0; + rJacobian[26][10] = 0.0; + rJacobian[26][11] = 0.0; + rJacobian[26][12] = 0.0; + rJacobian[26][13] = 0.0; + rJacobian[26][14] = 0.0; + rJacobian[26][15] = 0.0; + rJacobian[26][16] = 0.0; + rJacobian[26][17] = 0.0; + rJacobian[26][18] = 0.0; + rJacobian[26][19] = 0.0; + rJacobian[26][20] = 0.0; + rJacobian[26][21] = 0.0; + rJacobian[26][22] = 0.0; + rJacobian[26][23] = 0.0; + rJacobian[26][24] = 0.0; + rJacobian[26][25] = 0.0; + rJacobian[26][26] = 1.0 - (mDt * (-var_x122)); + rJacobian[26][27] = -(mDt * (var_x123)); + rJacobian[26][28] = 0.0; + rJacobian[26][29] = 0.0; + rJacobian[26][30] = 0.0; + rJacobian[26][31] = 0.0; + rJacobian[27][0] = 0.0; + rJacobian[27][1] = 0.0; + rJacobian[27][2] = 0.0; + rJacobian[27][3] = 0.0; + rJacobian[27][4] = 0.0; + rJacobian[27][5] = 0.0; + rJacobian[27][6] = 0.0; + rJacobian[27][7] = 0.0; + rJacobian[27][8] = 0.0; + rJacobian[27][9] = 0.0; + rJacobian[27][10] = 0.0; + rJacobian[27][11] = 0.0; + rJacobian[27][12] = 0.0; + rJacobian[27][13] = 0.0; + rJacobian[27][14] = 0.0; + rJacobian[27][15] = 0.0; + rJacobian[27][16] = 0.0; + rJacobian[27][17] = 0.0; + rJacobian[27][18] = 0.0; + rJacobian[27][19] = 0.0; + rJacobian[27][20] = 0.0; + rJacobian[27][21] = 0.0; + rJacobian[27][22] = 0.0; + rJacobian[27][23] = 0.0; + rJacobian[27][24] = 0.0; + rJacobian[27][25] = -(mDt * (var_x120)); + rJacobian[27][26] = -(mDt * (var_x122)); + rJacobian[27][27] = 1.0 - (mDt * (-var_x121 - var_x123)); + rJacobian[27][28] = 0.0; + rJacobian[27][29] = 0.0; + rJacobian[27][30] = 0.0; + rJacobian[27][31] = 0.0; + rJacobian[28][0] = 0.0; + rJacobian[28][1] = 0.0; + rJacobian[28][2] = 0.0; + rJacobian[28][3] = 0.0; + rJacobian[28][4] = 0.0; + rJacobian[28][5] = 0.0; + rJacobian[28][6] = 0.0; + rJacobian[28][7] = 0.0; + rJacobian[28][8] = 0.0; + rJacobian[28][9] = 0.0; + rJacobian[28][10] = 0.0; + rJacobian[28][11] = 0.0; + rJacobian[28][12] = 0.0; + rJacobian[28][13] = 0.0; + rJacobian[28][14] = 0.0; + rJacobian[28][15] = 0.0; + rJacobian[28][16] = 0.0; + rJacobian[28][17] = 0.0; + rJacobian[28][18] = 0.0; + rJacobian[28][19] = 0.0; + rJacobian[28][20] = 0.0; + rJacobian[28][21] = 0.0; + rJacobian[28][22] = 0.0; + rJacobian[28][23] = 0.0; + rJacobian[28][24] = 0.0; + rJacobian[28][25] = 0.0; + rJacobian[28][26] = 0.0; + rJacobian[28][27] = 0.0; + rJacobian[28][28] = 1.0 - (mDt * (-0.00080000000000000004)); + rJacobian[28][29] = -(mDt * (0.0089999999999999993)); + rJacobian[28][30] = 0.0; + rJacobian[28][31] = 0.0; + rJacobian[29][0] = 0.0; + rJacobian[29][1] = 0.0; + rJacobian[29][2] = 0.0; + rJacobian[29][3] = 0.0; + rJacobian[29][4] = 0.0; + rJacobian[29][5] = 0.0; + rJacobian[29][6] = 0.0; + rJacobian[29][7] = 0.0; + rJacobian[29][8] = 0.0; + rJacobian[29][9] = 0.0; + rJacobian[29][10] = 0.0; + rJacobian[29][11] = 0.0; + rJacobian[29][12] = -(mDt * (-var_x124 + 0.024299999999999999 * var_x125 * (1 - var_x42 - var_chaste_interface__ryanodine_receptors__P_C2))); + rJacobian[29][13] = 0.0; + rJacobian[29][14] = 0.0; + rJacobian[29][15] = 0.0; + rJacobian[29][16] = 0.0; + rJacobian[29][17] = 0.0; + rJacobian[29][18] = 0.0; + rJacobian[29][19] = 0.0; + rJacobian[29][20] = 0.0; + rJacobian[29][21] = 0.0; + rJacobian[29][22] = 0.0; + rJacobian[29][23] = 0.0; + rJacobian[29][24] = 0.0; + rJacobian[29][25] = 0.0; + rJacobian[29][26] = 0.0; + rJacobian[29][27] = 0.0; + rJacobian[29][28] = -(mDt * (0.00080000000000000004 - var_x126)); + rJacobian[29][29] = 1.0 - (mDt * (-0.080249999999999988 - var_x126 - var_x127)); + rJacobian[29][30] = -(mDt * (0.96499999999999997 - var_x126)); + rJacobian[29][31] = 0.0; + rJacobian[30][0] = 0.0; + rJacobian[30][1] = 0.0; + rJacobian[30][2] = 0.0; + rJacobian[30][3] = 0.0; + rJacobian[30][4] = 0.0; + rJacobian[30][5] = 0.0; + rJacobian[30][6] = 0.0; + rJacobian[30][7] = 0.0; + rJacobian[30][8] = 0.0; + rJacobian[30][9] = 0.0; + rJacobian[30][10] = 0.0; + rJacobian[30][11] = 0.0; + rJacobian[30][12] = -(mDt * (var_x124)); + rJacobian[30][13] = 0.0; + rJacobian[30][14] = 0.0; + rJacobian[30][15] = 0.0; + rJacobian[30][16] = 0.0; + rJacobian[30][17] = 0.0; + rJacobian[30][18] = 0.0; + rJacobian[30][19] = 0.0; + rJacobian[30][20] = 0.0; + rJacobian[30][21] = 0.0; + rJacobian[30][22] = 0.0; + rJacobian[30][23] = 0.0; + rJacobian[30][24] = 0.0; + rJacobian[30][25] = 0.0; + rJacobian[30][26] = 0.0; + rJacobian[30][27] = 0.0; + rJacobian[30][28] = 0.0; + rJacobian[30][29] = -(mDt * (var_x127)); + rJacobian[30][30] = 1.0 - (mDt * (-0.96499999999999997)); + rJacobian[30][31] = 0.0; + rJacobian[31][0] = 0.0; + rJacobian[31][1] = 0.0; + rJacobian[31][2] = 0.0; + rJacobian[31][3] = 0.0; + rJacobian[31][4] = 0.0; + rJacobian[31][5] = 0.0; + rJacobian[31][6] = 0.0; + rJacobian[31][7] = 0.0; + rJacobian[31][8] = 0.0; + rJacobian[31][9] = 0.0; + rJacobian[31][10] = 0.0; + rJacobian[31][11] = -(mDt * (184.55541474839183 * var_x107 * var_x67)); + rJacobian[31][12] = 0.0; + rJacobian[31][13] = 0.0; + rJacobian[31][14] = 0.0; + rJacobian[31][15] = 0.0; + rJacobian[31][16] = 0.0; + rJacobian[31][17] = 0.0; + rJacobian[31][18] = 0.0; + rJacobian[31][19] = 0.0; + rJacobian[31][20] = 0.0; + rJacobian[31][21] = -(mDt * (-var_x108 * (-25.674321243523316 * log(var_x128 * (1 * mParameters[6] + 0.1111111111111111 * mParameters[5])) + var_chaste_interface__membrane__V) * mParameters[9])); + rJacobian[31][22] = 0.0; + rJacobian[31][23] = -(mDt * (-var_x108 * (2.8527023603914796 * var_x129 + 0.007417026137017846 * var_x128))); + rJacobian[31][24] = 0.0; + rJacobian[31][25] = 0.0; + rJacobian[31][26] = 0.0; + rJacobian[31][27] = 0.0; + rJacobian[31][28] = 0.0; + rJacobian[31][29] = 0.0; + rJacobian[31][30] = 0.0; + rJacobian[31][31] = 1.0 - (mDt * (-var_x108 * (9 * var_x71 + 0.066753235233160624 * var_x128 + 12051028.902131137 * var_x117 + 25.674321243523316 * var_x129))); + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + // Lookup table indexing + const bool _oob_0 = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__i_pCa = 1 * pow(var_calcium_concentration__Cai, 2) / (0.25 + pow(var_calcium_concentration__Cai, 2)); // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL = (-63 + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double var_calcium_background_current__i_Cab = 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(mParameters[4] / var_calcium_concentration__Cai); // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = 25.674321243523316 * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki); // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_transient_outward_potassium_current__i_Kto_s = 0; // picoA_per_picoF + const double var_fast_sodium_current__E_Na = 25.674321243523316 * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)); // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-25.674321243523316 * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = 0.0025999999999999999 * var_chaste_interface__membrane__V - 0.0025999999999999999 * var_fast_sodium_current__E_Na; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * _lt_0_row[3] * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * _lt_0_row[1] - pow(mParameters[6], 3) * var_calcium_concentration__Cai * _lt_0_row[2]) * mParameters[15] / ((1380 + mParameters[4]) * (669921875000000.0 + pow(mParameters[6], 3))); // picoA_per_picoF + const double var_sodium_potassium_pump_current__i_NaK = 0.88 * mParameters[5] / ((1 + 3043189.1166997822 * pow((1 / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (1500 + mParameters[5]) * (1 + _lt_0_row[5] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * _lt_0_row[4])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = 0.16 * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_membrane__V = -var_L_type_calcium_current__i_CaL - var_calcium_background_current__i_Cab - var_calcium_pump_current__i_pCa - var_fast_sodium_current__i_Na - var_fast_transient_outward_potassium_current__i_Kto_f - var_non_inactivating_steady_state_potassium_current__i_Kss - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_slow_transient_outward_potassium_current__i_Kto_s - var_sodium_background_current__i_Nab - var_sodium_calcium_exchange_current__i_NaCa - var_sodium_potassium_pump_current__i_NaK - var_time_independent_potassium_current__i_K1 - var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur - GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance() - 2 * _lt_0_row[0] * (40 + var_chaste_interface__membrane__V) * var_calcium_concentration__Cai / (10 + var_calcium_concentration__Cai); // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; + } + + void Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + + // Lookup table indexing + const bool _oob_0 = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_fast_transient_outward_potassium_current__alpha_a = 0.18064 * _lt_0_row[17]; + const double var_fast_transient_outward_potassium_current__alpha_i = 0.00015200000000000001 * _lt_0_row[19] * _lt_0_row[20]; + const double var_fast_transient_outward_potassium_current__beta_a = 0.39560000000000001 * _lt_0_row[18]; + const double var_fast_transient_outward_potassium_current__beta_i = 0.00095 * _lt_0_row[21] * _lt_0_row[22]; + const double var_non_inactivating_steady_state_potassium_current__tau_Kss = 13.17 + 39.299999999999997 * exp(-0.086199999999999999 * var_chaste_interface__membrane__V); + const double var_slow_delayed_rectifier_potassium_current__alpha_n = _lt_0_row[29]; + const double var_slow_delayed_rectifier_potassium_current__beta_n = 9.5333299999999997e-5 * _lt_0_row[30]; + const double var_slow_transient_outward_potassium_current__ass = _lt_0_row[31]; + const double var_slow_transient_outward_potassium_current__iss = _lt_0_row[33]; + const double var_slow_transient_outward_potassium_current__tau_ta_s = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); + const double var_slow_transient_outward_potassium_current__tau_ti_s = 270 + 1050 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur = 1200 - 170 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); + + + rY[28] = (var_chaste_interface__fast_transient_outward_potassium_current__ato_f + ((1 * var_fast_transient_outward_potassium_current__alpha_a) * mDt)) / (1.0 - ((-var_fast_transient_outward_potassium_current__alpha_a - var_fast_transient_outward_potassium_current__beta_a) * mDt)); + rY[29] = (var_chaste_interface__fast_transient_outward_potassium_current__ito_f + ((1 * var_fast_transient_outward_potassium_current__alpha_i) * mDt)) / (1.0 - ((-var_fast_transient_outward_potassium_current__alpha_i - var_fast_transient_outward_potassium_current__beta_i) * mDt)); + rY[35] = (var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss + ((var_slow_transient_outward_potassium_current__ass / var_non_inactivating_steady_state_potassium_current__tau_Kss) * mDt)) / (1.0 - ((-1 / var_non_inactivating_steady_state_potassium_current__tau_Kss) * mDt)); + rY[32] = (var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs + ((1 * var_slow_delayed_rectifier_potassium_current__alpha_n) * mDt)) / (1.0 - ((-var_slow_delayed_rectifier_potassium_current__alpha_n - var_slow_delayed_rectifier_potassium_current__beta_n) * mDt)); + rY[30] = (var_chaste_interface__slow_transient_outward_potassium_current__ato_s + ((var_slow_transient_outward_potassium_current__ass / var_slow_transient_outward_potassium_current__tau_ta_s) * mDt)) / (1.0 - ((-1 / var_slow_transient_outward_potassium_current__tau_ta_s) * mDt)); + rY[31] = (var_chaste_interface__slow_transient_outward_potassium_current__ito_s + ((var_slow_transient_outward_potassium_current__iss / var_slow_transient_outward_potassium_current__tau_ti_s) * mDt)) / (1.0 - ((-1 / var_slow_transient_outward_potassium_current__tau_ti_s) * mDt)); + rY[33] = (var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur + ((var_slow_transient_outward_potassium_current__ass / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur) * mDt)) / (1.0 - ((-1 / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur) * mDt)); + rY[34] = (var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur + ((var_slow_transient_outward_potassium_current__iss / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur) * mDt)) / (1.0 - ((-1 / var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur) * mDt)); + + double _guess[32] = {rY[12],rY[13],rY[14],rY[15],rY[16],rY[17],rY[11],rY[7],rY[6],rY[3],rY[4],rY[1],rY[2],rY[5],rY[20],rY[21],rY[22],rY[23],rY[25],rY[26],rY[24],rY[19],rY[36],rY[27],rY[38],rY[39],rY[40],rY[37],rY[10],rY[8],rY[9],rY[18]}; + CardiacNewtonSolver<32,Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt>* _p_solver = CardiacNewtonSolver<32,Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[12] = _guess[0]; + rY[13] = _guess[1]; + rY[14] = _guess[2]; + rY[15] = _guess[3]; + rY[16] = _guess[4]; + rY[17] = _guess[5]; + rY[11] = _guess[6]; + rY[7] = _guess[7]; + rY[6] = _guess[8]; + rY[3] = _guess[9]; + rY[4] = _guess[10]; + rY[1] = _guess[11]; + rY[2] = _guess[12]; + rY[5] = _guess[13]; + rY[20] = _guess[14]; + rY[21] = _guess[15]; + rY[22] = _guess[16]; + rY[23] = _guess[17]; + rY[25] = _guess[18]; + rY[26] = _guess[19]; + rY[24] = _guess[20]; + rY[19] = _guess[21]; + rY[36] = _guess[22]; + rY[27] = _guess[23]; + rY[38] = _guess[24]; + rY[39] = _guess[25]; + rY[40] = _guess[26]; + rY[37] = _guess[27]; + rY[10] = _guess[28]; + rY[8] = _guess[29]; + rY[9] = _guess[30]; + rY[18] = _guess[31]; + } + + std::vector Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.115001 + double var_chaste_interface__calcium_concentration__CaJSR = rY[3]; + // Units: micromolar; Initial value: 1299.5 + double var_chaste_interface__calcium_fluxes__P_RyR = rY[5]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ryanodine_receptors__P_O1 = rY[8]; + // Units: dimensionless; Initial value: 1.49102e-05 + double var_chaste_interface__ryanodine_receptors__P_O2 = rY[9]; + // Units: dimensionless; Initial value: 9.51726e-11 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + + // Mathematics + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_transient_outward_potassium_current__i_Kto_f; // uA_per_cm2 + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss_converted = HeartConfig::Instance()->GetCapacitance() * var_non_inactivating_steady_state_potassium_current__i_Kss; // uA_per_cm2 + const double var_calcium_fluxes__J_rel = (-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; // micromolar_per_millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchange_current__i_NaCa; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + + std::vector dqs(12); + dqs[0] = var_calcium_fluxes__J_rel; + dqs[1] = var_chaste_interface__calcium_concentration__Cai_converted; + dqs[2] = var_L_type_calcium_current__i_CaL_converted; + dqs[3] = var_fast_sodium_current__i_Na_converted; + dqs[4] = var_time_independent_potassium_current__i_K1_converted; + dqs[5] = var_non_inactivating_steady_state_potassium_current__i_Kss_converted; + dqs[6] = var_rapid_delayed_rectifier_potassium_current__i_Kr_converted; + dqs[7] = var_slow_delayed_rectifier_potassium_current__i_Ks_converted; + dqs[8] = var_sodium_calcium_exchange_current__i_NaCa_converted; + dqs[9] = var_membrane__i_stim_converted; + dqs[10] = var_fast_transient_outward_potassium_current__i_Kto_f_converted; + dqs[11] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "bondarenko_2004_apical"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-82.4202); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000115001); + + // rY[2]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(0.115001); + + // rY[3]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(1299.5); + + // rY[4]: + this->mVariableNames.push_back("calcium_concentration__CaNSR"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(1299.5); + + // rY[5]: + this->mVariableNames.push_back("calcium_fluxes__P_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[6]: + this->mVariableNames.push_back("calcium_buffering__LTRPN_Ca"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(11.2684); + + // rY[7]: + this->mVariableNames.push_back("calcium_buffering__HTRPN_Ca"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(125.29); + + // rY[8]: + this->mVariableNames.push_back("ryanodine_receptors__P_O1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.49102e-05); + + // rY[9]: + this->mVariableNames.push_back("ryanodine_receptors__P_O2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.51726e-11); + + // rY[10]: + this->mVariableNames.push_back("ryanodine_receptors__P_C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00016774); + + // rY[11]: + this->mVariableNames.push_back("L_type_calcium_current__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.30308e-19); + + // rY[12]: + this->mVariableNames.push_back("L_type_calcium_current__C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000124216); + + // rY[13]: + this->mVariableNames.push_back("L_type_calcium_current__C3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(5.78679e-09); + + // rY[14]: + this->mVariableNames.push_back("L_type_calcium_current__C4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.19816e-13); + + // rY[15]: + this->mVariableNames.push_back("L_type_calcium_current__I1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(4.97923e-19); + + // rY[16]: + this->mVariableNames.push_back("L_type_calcium_current__I2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.45847e-14); + + // rY[17]: + this->mVariableNames.push_back("L_type_calcium_current__I3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.85106e-14); + + // rY[18]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(14237.1); + + // rY[19]: + this->mVariableNames.push_back("fast_sodium_current__O_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.13483e-07); + + // rY[20]: + this->mVariableNames.push_back("fast_sodium_current__C_Na1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000279132); + + // rY[21]: + this->mVariableNames.push_back("fast_sodium_current__C_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.020752); + + // rY[22]: + this->mVariableNames.push_back("fast_sodium_current__I1_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.73345e-07); + + // rY[23]: + this->mVariableNames.push_back("fast_sodium_current__I2_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.55787e-09); + + // rY[24]: + this->mVariableNames.push_back("fast_sodium_current__IF_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000153176); + + // rY[25]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0113879); + + // rY[26]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.34278); + + // rY[27]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(143720.0); + + // rY[28]: + this->mVariableNames.push_back("fast_transient_outward_potassium_current__ato_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00265563); + + // rY[29]: + this->mVariableNames.push_back("fast_transient_outward_potassium_current__ito_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999977); + + // rY[30]: + this->mVariableNames.push_back("slow_transient_outward_potassium_current__ato_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[31]: + this->mVariableNames.push_back("slow_transient_outward_potassium_current__ito_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998543); + + // rY[32]: + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current__nKs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000262753); + + // rY[33]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_potassium_current__aur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[34]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_potassium_current__iur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998543); + + // rY[35]: + this->mVariableNames.push_back("non_inactivating_steady_state_potassium_current__aKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[36]: + this->mVariableNames.push_back("non_inactivating_steady_state_potassium_current__iKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[37]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__O_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000175298); + + // rY[38]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__C_K1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000992513); + + // rY[39]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__C_K2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000641229); + + // rY[40]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__I_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.19129e-05); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("micromolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_non_inactivating_steady_state_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("micromolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_non_inactivating_steady_state_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLBackwardEulerOpt) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009--sympy_1_11.cpp similarity index 83% rename from chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009--sympy_1_11.cpp index 456d57b2..45114e31 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009--sympy_1_11.cpp @@ -397,7 +397,7 @@ class Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables : public AbstractLo for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return (((var_chaste_interface__membrane__Vm >= 1.7383992647058824) && (var_chaste_interface__membrane__Vm <= 1.7384007352941175)) ? (0.0038902447058823523 + 0.00029999999999999997 * var_chaste_interface__membrane__Vm) : (0.004411764705882352 * (0.2364224 - 0.13600000000000001 * var_chaste_interface__membrane__Vm) / (-1 + exp(0.2364224 - 0.13600000000000001 * var_chaste_interface__membrane__Vm)))) + (((var_chaste_interface__membrane__Vm >= -38.360800657030218) && (var_chaste_interface__membrane__Vm <= -38.360799342969777)) ? (-0.0037830293298291716 - 0.00014999999999999999 * var_chaste_interface__membrane__Vm) : (0.0019710906701708277 * (5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm) / (-1 + exp(5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm)))); + return (((-0.2364224 + 0.13600000000000001 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (-0.2364224 + 0.13600000000000001 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (0.0038902447058823523 + 0.00029999999999999997 * var_chaste_interface__membrane__Vm) : (-0.004411764705882352 * (-0.2364224 + 0.13600000000000001 * var_chaste_interface__membrane__Vm) / (-1 + exp(0.2364224 - 0.13600000000000001 * var_chaste_interface__membrane__Vm)))) + (((5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (-0.0037830293298291716 - 0.00014999999999999999 * var_chaste_interface__membrane__Vm) : (0.0019710906701708277 * (5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm) / (-1 + exp(5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm)))); }; const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__Vm); @@ -419,7 +419,7 @@ class Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables : public AbstractLo for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return (((var_chaste_interface__membrane__Vm >= -47.130001) && (var_chaste_interface__membrane__Vm <= -47.129999000000005)) ? (10.7408 + 0.16 * var_chaste_interface__membrane__Vm) : (3.1999999999999997 * (-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__Vm) / (-1 + exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__Vm)))); + return (((4.7130000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (4.7130000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (10.7408 + 0.16 * var_chaste_interface__membrane__Vm) : (-3.1999999999999997 * (4.7130000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__Vm) / (-1 + exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__Vm)))); }; const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__Vm); @@ -738,7 +738,7 @@ class Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables : public AbstractLo for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__Vm) { - return -0.79405459958640001 * exp(-0.00300137636070284 * var_chaste_interface__membrane__Vm); + return 0.79405459958640001 * exp(-0.00300137636070284 * var_chaste_interface__membrane__Vm); }; const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__Vm); @@ -958,8 +958,8 @@ std::shared_ptr Celldeck const double var_INaCa__INaCa = 0.80000000000000004 * (pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * _lt_0_row[1]) * mParameters[17] / ((_lt_0_row[2]) * (1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_i, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_i + 1.3 * pow(var_chaste_interface__Na__Na_i, 3) + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_i, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_i) * mParameters[3])) + var_INaCa__INaCa_ss_sr; // uA_per_uF const double var_INaK__INaK = 0.056895766954938545 * pow(var_chaste_interface__Na__Na_i, 3) * mParameters[18] * mParameters[4] / (pow((1 + 0.38461538461538458 * var_chaste_interface__Na__Na_i), 3) * (_lt_0_row[3]) * (1.5 + mParameters[4])); // uA_per_uF const double var_INab__phi = 0.037435883507802616 * var_chaste_interface__membrane__Vm; // dimensionless - const double var_membrane__caiont = -2 * var_INaCa__INaCa - 2 * var_INaCa__INaCa_ss_sr + (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((var_chaste_interface__membrane__Vm >= -1.3356169352749131e-6) && (var_chaste_interface__membrane__Vm <= 1.3356169352749131e-6)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (14448.004881001343 * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6] * var_chaste_interface__membrane__Vm / (_lt_0_row[5]))) + var_chaste_interface__Ca__Ca_i * mParameters[10] / (0.00050000000000000001 + var_chaste_interface__Ca__Ca_i) + (((var_chaste_interface__membrane__Vm >= -1.3356169352749131e-6) && (var_chaste_interface__membrane__Vm <= 1.3356169352749131e-6)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (14448.004881001343 * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7] * var_chaste_interface__membrane__Vm / (_lt_0_row[5]))); // uA_per_uF - const double var_membrane__clont = (26.712338705498265 * log(100 / var_chaste_interface__Cl__Cl_i) + var_chaste_interface__membrane__Vm) * mParameters[8] + (1 - 1 / (1 + 6.2499999999999991 * pow(var_chaste_interface__Irel__Irel, 2))) * (((var_chaste_interface__membrane__Vm >= -2.6712338705498262e-6) && (var_chaste_interface__membrane__Vm <= 2.6712338705498262e-6)) ? (-96485 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-3612.0012202503358 * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19] * var_chaste_interface__membrane__Vm / (_lt_0_row[7]))) * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF + const double var_membrane__caiont = -2 * var_INaCa__INaCa - 2 * var_INaCa__INaCa_ss_sr + (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (14448.004881001343 * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6] * var_chaste_interface__membrane__Vm / (_lt_0_row[5]))) + var_chaste_interface__Ca__Ca_i * mParameters[10] / (0.00050000000000000001 + var_chaste_interface__Ca__Ca_i) + (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (14448.004881001343 * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7] * var_chaste_interface__membrane__Vm / (_lt_0_row[5]))); // uA_per_uF + const double var_membrane__clont = (26.712338705498265 * log(100 / var_chaste_interface__Cl__Cl_i) + var_chaste_interface__membrane__Vm) * mParameters[8] + (1 - 1 / (1 + 6.2499999999999991 * pow(var_chaste_interface__Irel__Irel, 2))) * (((0.037435883507802616 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.037435883507802616 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (-96485 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-3612.0012202503358 * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19] * var_chaste_interface__membrane__Vm / (_lt_0_row[7]))) * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF const double var_reversal_potentials__EK = 26.712338705498265 * log(mParameters[4] / var_chaste_interface__K__K_i); // mV const double var_reversal_potentials__ENa = 26.712338705498265 * log(mParameters[5] / var_chaste_interface__Na__Na_i); // mV const double var_membrane__naiont = 3 * var_INaCa__INaCa + 3 * var_INaCa__INaCa_ss_sr + 3 * var_INaK__INaK + pow(var_chaste_interface__INaL_mL_gate__mL, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL + pow(var_chaste_interface__INa_m_gate__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[11] * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j + (((var_INab__phi >= -9.9999999999999995e-8) && (var_INab__phi <= 9.9999999999999995e-8)) ? (96485 * (1 - 0.5 * var_INab__phi) * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9]) : (96485 * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9] * var_INab__phi / (-1 + exp(var_INab__phi)))); // uA_per_uF @@ -1086,9 +1086,9 @@ std::shared_ptr Celldeck const double d_dt_chaste_interface_var_ICaL__OI = 9.9999999999999995e-7 * var_ICaL__OI_star + (-var_ICaL__beta - var_ICaL__delta_I - var_ICaL__x) * var_chaste_interface__ICaL__OI + var_chaste_interface__ICaL__CI * var_ICaL__alpha + var_chaste_interface__ICaL__O * var_ICaL__y; // 1 / ms const double var_membrane__i_Stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF const double var_cell_geometry__AF = 5.0619267243613002e-10 * M_PI; // uF_mole_per_C - const double var_ICaL__ICaL = (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((var_chaste_interface__membrane__Vm >= -1.3356169352749131e-6) && (var_chaste_interface__membrane__Vm <= 1.3356169352749131e-6)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (14448.004881001343 * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6] * var_chaste_interface__membrane__Vm / (_lt_0_row[5]))); // uA_per_uF + const double var_ICaL__ICaL = (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (14448.004881001343 * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6] * var_chaste_interface__membrane__Vm / (_lt_0_row[5]))); // uA_per_uF const double d_dt_chaste_interface_var_Ca__Ca_ss_CaL = -(250 * var_ICaL__ICaL * var_cell_geometry__AF / var_cell_geometry__vcell - 500 * var_Ca__Idiff_ss * var_cell_geometry__Vss_sr / var_cell_geometry__vcell) / (1 + 0.0097788000000000007 / pow((0.0086999999999999994 + var_chaste_interface__Ca__Ca_ss_CaL), 2) + 4.0890000000000003e-5 / pow((0.00087000000000000001 + var_chaste_interface__Ca__Ca_ss_CaL), 2)); // mM / ms - const double var_ICab__ICab = (((var_chaste_interface__membrane__Vm >= -1.3356169352749131e-6) && (var_chaste_interface__membrane__Vm <= 1.3356169352749131e-6)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (14448.004881001343 * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7] * var_chaste_interface__membrane__Vm / (_lt_0_row[5]))); // uA_per_uF + const double var_ICab__ICab = (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (14448.004881001343 * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7] * var_chaste_interface__membrane__Vm / (_lt_0_row[5]))); // uA_per_uF const double var_IKs__alpha = _lt_0_row[33]; // per_ms const double var_IKs__beta = _lt_0_row[34]; // per_ms const double d_dt_chaste_interface_var_IKs__C1 = var_chaste_interface__IKs__C2 * var_IKs__beta - 4 * var_chaste_interface__IKs__C1 * var_IKs__alpha; // 1 / ms @@ -1119,7 +1119,7 @@ std::shared_ptr Celldeck const double var_INab__phi = 0.037435883507802616 * var_chaste_interface__membrane__Vm; // dimensionless const double var_INab__INab = (((var_INab__phi >= -9.9999999999999995e-8) && (var_INab__phi <= 9.9999999999999995e-8)) ? (96485 * (1 - 0.5 * var_INab__phi) * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9]) : (96485 * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9] * var_INab__phi / (-1 + exp(var_INab__phi)))); // uA_per_uF const double d_dt_chaste_interface_var_Irel__Irel = (1 + 0.0123 / var_chaste_interface__Ca__Ca_JSR) * (-var_chaste_interface__Irel__Irel - var_ICaL__ICaL * var_Irel__beta_tau * mParameters[1] / (1 + pow((1 / var_chaste_interface__Ca__Ca_JSR), 8))) / var_Irel__beta_tau; // mM_per_ms / ms - const double var_Ito2__Ito2 = (1 - 1 / (1 + 6.2499999999999991 * pow(var_chaste_interface__Irel__Irel, 2))) * (((var_chaste_interface__membrane__Vm >= -2.6712338705498262e-6) && (var_chaste_interface__membrane__Vm <= 2.6712338705498262e-6)) ? (-96485 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-3612.0012202503358 * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19] * var_chaste_interface__membrane__Vm / (_lt_0_row[7]))) * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF + const double var_Ito2__Ito2 = (1 - 1 / (1 + 6.2499999999999991 * pow(var_chaste_interface__Irel__Irel, 2))) * (((0.037435883507802616 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.037435883507802616 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (-96485 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-3612.0012202503358 * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19] * var_chaste_interface__membrane__Vm / (_lt_0_row[7]))) * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF const double d_dt_chaste_interface_var_Cl__Cl_ss = -var_Cl__Idiff_Cl + var_Ito2__Ito2 * var_cell_geometry__AF / var_cell_geometry__Vss_sr; // mM / ms const double var_reversal_potentials__ECl = -26.712338705498265 * log(100 / var_chaste_interface__Cl__Cl_i); // mV const double var_IClb__IClb = (-var_reversal_potentials__ECl + var_chaste_interface__membrane__Vm) * mParameters[8]; // uA_per_uF @@ -1249,33 +1249,33 @@ std::shared_ptr Celldeck const double var_x3 = 0.050000000000000003 * var_x2; const double var_x4 = var_x0 * var_x3; const double var_x5 = var_x4 + var_chaste_interface__CaMK_active__CaMK_trap; - const double var_x6 = 0.0025000000000000005 * var_x2; - const double var_x7 = 1 - var_x3; + const double var_x6 = -var_x3; + const double var_x7 = 1 + var_x6; const double var_x8 = pow(var_chaste_interface__Ca__Ca_ss_sr, (-2)); - const double var_x9 = var_x0 * var_x8 / pow(var_x1, 2); - const double var_x10 = 0.80000000000000004 + var_chaste_interface__Ca__Ca_JSR; - const double var_x11 = pow(var_x10, (-2)); - const double var_x12 = 1 / (1 + 8 * var_x11); - const double var_x13 = 0.040000000000000001 * var_x12; - const double var_x14 = -var_chaste_interface__Irel__Irel; + const double var_x9 = pow(var_x1, (-2)); + const double var_x10 = var_x0 * var_x8 * var_x9; + const double var_x11 = 0.80000000000000004 + var_chaste_interface__Ca__Ca_JSR; + const double var_x12 = pow(var_x11, (-2)); + const double var_x13 = 1 / (1 + 8 * var_x12); + const double var_x14 = 0.040000000000000001 * var_x13; const double var_x15 = 0.14999999999999999 + var_x4 + var_chaste_interface__CaMK_active__CaMK_trap; const double var_x16 = 1 / var_x15; const double var_x17 = var_x16 * var_x7; const double var_x18 = var_x5 / pow(var_x15, 2); - const double var_x19 = var_x18 * (-1 + var_x3); + const double var_x19 = var_x18 * (-1 - var_x6); const double var_x20 = var_x16 * var_x5; const double var_x21 = 0.00092000000000000003 - 0.00017000000000000001 * var_x20 + var_chaste_interface__Ca__Ca_i; - const double var_x22 = mParameters[2] / var_x21; - const double var_x23 = var_x22 * var_chaste_interface__Ca__Ca_i; - const double var_x24 = var_x23 * (0.75 * var_x17 + 0.75 * var_x19); - const double var_x25 = 1 + 0.75 * var_x20; - const double var_x26 = var_x25 * var_chaste_interface__Ca__Ca_i * mParameters[2] / pow(var_x21, 2); - const double var_x27 = var_x26 * (0.00017000000000000001 * var_x17 + 0.00017000000000000001 * var_x19); - const double var_x28 = var_x22 * var_x25; - const double var_x29 = var_x16 * var_x9; - const double var_x30 = var_x18 * var_x9; - const double var_x31 = var_x23 * (5.6250000000000005e-5 * var_x29 - 5.6250000000000005e-5 * var_x30); - const double var_x32 = var_x26 * (1.2750000000000002e-8 * var_x29 - 1.2750000000000002e-8 * var_x30); + const double var_x22 = 1 / var_x21; + const double var_x23 = var_x22 * mParameters[2]; + const double var_x24 = var_x23 * var_chaste_interface__Ca__Ca_i; + const double var_x25 = var_x24 * (0.75 * var_x17 + 0.75 * var_x19); + const double var_x26 = pow(var_x21, (-2)); + const double var_x27 = 1 + 0.75 * var_x20; + const double var_x28 = var_x26 * var_x27 * var_chaste_interface__Ca__Ca_i * mParameters[2]; + const double var_x29 = var_x28 * (0.00017000000000000001 * var_x17 + 0.00017000000000000001 * var_x19); + const double var_x30 = var_x10 * var_x18; + const double var_x31 = var_x24 * (-5.6250000000000005e-5 * var_x30 + 5.6250000000000005e-5 * var_x0 * var_x16 * var_x8 * var_x9); + const double var_x32 = var_x28 * (-1.2750000000000002e-8 * var_x30 + 1.2750000000000002e-8 * var_x0 * var_x16 * var_x8 * var_x9); const double var_x33 = 0.0023800000000000002 + var_chaste_interface__Ca__Ca_i; const double var_x34 = 0.00050000000000000001 + var_chaste_interface__Ca__Ca_i; const double var_x35 = pow(var_x34, (-2)); @@ -1283,250 +1283,253 @@ std::shared_ptr Celldeck const double var_x37 = 1 / var_x36; const double var_x38 = var_x37; const double var_x39 = 0.0054277286135693209 * mParameters[0]; - const double var_x40 = 192970 - 7224.0024405006716 * var_chaste_interface__membrane__Vm; - const double var_x41 = _lt_0_row[4]; - const double var_x42 = var_x41; - const double var_x43 = (var_chaste_interface__membrane__Vm >= -1.3356169352749131e-6) && (var_chaste_interface__membrane__Vm <= 1.3356169352749131e-6); - const double var_x44 = 14448.004881001343 * var_chaste_interface__membrane__Vm / (-1 + var_x41); - const double var_x45 = var_x41 * var_x44; - const double var_x46 = 3.0851110000007915e-5 * mParameters[10]; - const double var_x47 = var_x46 / var_x34; - const double var_x48 = 0.081415929203539822 * var_x28; - const double var_x49 = pow(mParameters[5], 3); - const double var_x50 = -669921.875 - var_x49 - 516907.50000000012 * mParameters[3]; + const double var_x40 = 0.037435883507802616 * var_chaste_interface__membrane__Vm; + const double var_x41 = 192970 - 192970 * var_x40; + const double var_x42 = 0.074871767015605231 * var_chaste_interface__membrane__Vm; + const double var_x43 = exp(var_x42); + const double var_x44 = var_x43 * mParameters[7]; + const double var_x45 = (var_x42 >= -9.9999999999999995e-8) && (var_x42 <= 9.9999999999999995e-8); + const double var_x46 = 14448.004881001343 * var_chaste_interface__membrane__Vm / (-1 + var_x43); + const double var_x47 = 3.0851110000007915e-5 * mParameters[10] / var_x34; + const double var_x48 = 0.081415929203539822 * var_x23 * var_x27; + const double var_x49 = 1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_i, 2); + const double var_x50 = 1 / var_x49; const double var_x51 = pow(var_chaste_interface__Na__Na_i, 3); const double var_x52 = var_x51 * mParameters[3]; - const double var_x53 = var_x49 * var_chaste_interface__Ca__Ca_i; - const double var_x54 = (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_i) * mParameters[3]; - const double var_x55 = var_x49 * (1 + 0.00053738391835633597 * var_x51); - const double var_x56 = 1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_i, 2); - const double var_x57 = 1 / var_x56; - const double var_x58 = _lt_0_row[0]; + const double var_x53 = pow(mParameters[5], 3); + const double var_x54 = var_x53 * var_chaste_interface__Ca__Ca_i; + const double var_x55 = var_x53 * (1 + 0.00053738391835633597 * var_x51); + const double var_x56 = (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_i) * mParameters[3]; + const double var_x57 = 1 / (var_x52 + var_x54 + 669921.875 * var_chaste_interface__Ca__Ca_i + 0.0035999999999999999 * var_x55 + 1.3 * var_x51 + 1860.8670000000004 * var_x56); + const double var_x58 = 4.9361776000012672e-5 * var_x57; const double var_x59 = _lt_0_row[1]; - const double var_x60 = var_x52 * var_x58 - var_x53 * var_x59; - const double var_x61 = mParameters[17] / (1 + 0.32000000000000001 * var_x59); - const double var_x62 = var_x57 * var_x60 * var_x61; - const double var_x63 = var_x62 / pow((1.9405247813411081e-6 * var_x51 + 1.4927113702623908e-6 * var_x52 + 1.4927113702623908e-6 * var_x53 + 0.0027777373294460648 * var_x54 + 5.3737609329446059e-9 * var_x55 + var_chaste_interface__Ca__Ca_i), 2); - const double var_x64 = 1.0998727917574584e-16 * var_x63; - const double var_x65 = 1 / (var_x52 + var_x53 + 669921.875 * var_chaste_interface__Ca__Ca_i + 0.0035999999999999999 * var_x55 + 1.3 * var_x51 + 1860.8670000000004 * var_x54); - const double var_x66 = var_x61 * var_x65; - const double var_x67 = var_x60 * var_x66 / (pow(var_x56, 2) * pow(var_chaste_interface__Ca__Ca_i, 3)); - const double var_x68 = 4.9361776000012672e-5 * var_x65; - const double var_x69 = var_x49 * var_x59 * var_x61; - const double var_x70 = -0.34100000000000003 * mParameters[3]; - const double var_x71 = (var_x70 + var_x42 * var_chaste_interface__Ca__Ca_i) * mParameters[7]; - const double var_x72 = 0.037435883507802616 * var_chaste_interface__membrane__Vm; - const double var_x73 = -var_x72; - const double var_x74 = 192970 + 192970 * var_x73; - const double var_x75 = pow(var_chaste_interface__Na__Na_ss_sr, 3); - const double var_x76 = var_x75 * mParameters[3]; - const double var_x77 = var_x49 * var_chaste_interface__Ca__Ca_ss_sr; - const double var_x78 = var_x49 * (1 + 0.00053738391835633597 * var_x75); - const double var_x79 = (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3]; - const double var_x80 = 1 / (var_x76 + var_x77 + 669921.875 * var_chaste_interface__Ca__Ca_ss_sr + 0.0035999999999999999 * var_x78 + 1.3 * var_x75 + 1860.8670000000004 * var_x79); - const double var_x81 = 1 + 1.5624999999999999e-8 * var_x8; - const double var_x82 = 1 / var_x81; - const double var_x83 = var_x58 * var_x76 - var_x59 * var_x77; - const double var_x84 = var_x61 * var_x82 * var_x83; - const double var_x85 = var_x80 * var_x84; - const double var_x86 = var_x84 / pow((1.9405247813411081e-6 * var_x75 + 1.4927113702623908e-6 * var_x76 + 1.4927113702623908e-6 * var_x77 + 0.0027777373294460648 * var_x79 + 5.3737609329446059e-9 * var_x78 + var_chaste_interface__Ca__Ca_ss_sr), 2); - const double var_x87 = 2.7496819793936459e-17 * var_x86; - const double var_x88 = var_x61 * var_x80; - const double var_x89 = var_x83 * var_x88 / (pow(var_x81, 2) * pow(var_chaste_interface__Ca__Ca_ss_sr, 3)); - const double var_x90 = var_x69 * var_x80 * var_x82; - const double var_x91 = pow(var_chaste_interface__Na__Na_i, 2); - const double var_x92 = 3 * mParameters[3]; - const double var_x93 = 5.8037463182484285e-6 * var_x49; - const double var_x94 = -3.9000000000000004 * var_x91 - var_x91 * var_x92 - var_x91 * var_x93; - const double var_x95 = var_x57 * var_x66; - const double var_x96 = 0.00014808532800003802 * var_x95; - const double var_x97 = var_x58 * mParameters[3]; - const double var_x98 = var_x91 * var_x97; - const double var_x99 = pow(var_chaste_interface__Na__Na_ss_sr, 2); - const double var_x100 = -3.9000000000000004 * var_x99 - var_x92 * var_x99 - var_x93 * var_x99; - const double var_x101 = var_x82 * var_x88 * var_x97 * var_x99; + const double var_x60 = 1 / (1 + 0.32000000000000001 * var_x59); + const double var_x61 = var_x60 * mParameters[17]; + const double var_x62 = var_x53 * var_x59 * var_x61; + const double var_x63 = pow((1.9405247813411081e-6 * var_x51 + 1.4927113702623908e-6 * var_x52 + 1.4927113702623908e-6 * var_x54 + 0.0027777373294460648 * var_x56 + 5.3737609329446059e-9 * var_x55 + var_chaste_interface__Ca__Ca_i), (-2)); + const double var_x64 = _lt_0_row[0]; + const double var_x65 = -var_x54 * var_x59 + var_x51 * var_x64 * mParameters[3]; + const double var_x66 = -669921.875 - var_x53 - 516907.50000000012 * mParameters[3]; + const double var_x67 = pow(var_x49, (-2)); + const double var_x68 = pow(var_chaste_interface__Ca__Ca_i, (-3)); + const double var_x69 = -0.34100000000000003 * mParameters[3]; + const double var_x70 = var_x43; + const double var_x71 = (var_x69 + var_x70 * var_chaste_interface__Ca__Ca_i) * mParameters[7]; + const double var_x72 = pow(var_chaste_interface__Na__Na_ss_sr, 3); + const double var_x73 = var_x72 * mParameters[3]; + const double var_x74 = var_x53 * var_chaste_interface__Ca__Ca_ss_sr; + const double var_x75 = var_x53 * (1 + 0.00053738391835633597 * var_x72); + const double var_x76 = (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3]; + const double var_x77 = 1 / (var_x73 + var_x74 + 669921.875 * var_chaste_interface__Ca__Ca_ss_sr + 0.0035999999999999999 * var_x75 + 1.3 * var_x72 + 1860.8670000000004 * var_x76); + const double var_x78 = 1 + 1.5624999999999999e-8 * var_x8; + const double var_x79 = 1 / var_x78; + const double var_x80 = -var_x59 * var_x74 + var_x64 * var_x72 * mParameters[3]; + const double var_x81 = var_x61 * var_x79 * var_x80; + const double var_x82 = var_x77 * var_x81; + const double var_x83 = var_x50 * var_x61 * var_x65; + const double var_x84 = var_x62 * var_x77 * var_x79; + const double var_x85 = pow((1.9405247813411081e-6 * var_x72 + 1.4927113702623908e-6 * var_x73 + 1.4927113702623908e-6 * var_x74 + 0.0027777373294460648 * var_x76 + 5.3737609329446059e-9 * var_x75 + var_chaste_interface__Ca__Ca_ss_sr), (-2)); + const double var_x86 = pow(var_x78, (-2)); + const double var_x87 = pow(var_chaste_interface__Ca__Ca_ss_sr, (-3)); + const double var_x88 = pow(var_chaste_interface__Na__Na_i, 2); + const double var_x89 = 3 * mParameters[3]; + const double var_x90 = 5.8037463182484285e-6 * var_x53; + const double var_x91 = -3.9000000000000004 * var_x88 - var_x88 * var_x89 - var_x88 * var_x90; + const double var_x92 = var_x63 * var_x83; + const double var_x93 = var_x57 * var_x61; + const double var_x94 = var_x50 * var_x93; + const double var_x95 = var_x64 * mParameters[3]; + const double var_x96 = var_x88 * var_x95; + const double var_x97 = pow(var_chaste_interface__Na__Na_ss_sr, 2); + const double var_x98 = -3.9000000000000004 * var_x97 - var_x89 * var_x97 - var_x90 * var_x97; + const double var_x99 = var_x81 * var_x85; + const double var_x100 = var_x61 * var_x77; + const double var_x101 = var_x100 * var_x79 * var_x95 * var_x97; const double var_x102 = 0.0086999999999999994 + var_chaste_interface__Ca__Ca_ss_CaL; const double var_x103 = 0.00087000000000000001 + var_chaste_interface__Ca__Ca_ss_CaL; const double var_x104 = 1 + 0.0097788000000000007 / pow(var_x102, 2) + 4.0890000000000003e-5 / pow(var_x103, 2); const double var_x105 = 1 / var_x104; - const double var_x106 = var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star; - const double var_x107 = var_x40 * mParameters[6]; - const double var_x108 = ((var_x43) ? (var_x106 * var_x107 * var_x42) : (var_x106 * var_x45 * mParameters[6])); - const double var_x109 = var_x70 + var_x42 * var_chaste_interface__Ca__Ca_ss_CaL; - const double var_x110 = var_x109 * mParameters[6]; - const double var_x111 = var_x106 * var_x110; - const double var_x112 = ((var_x43) ? (var_x111 * var_x74) : (var_x111 * var_x44)); - const double var_x113 = ((var_x43) ? (var_x107 * var_x109) : (var_x110 * var_x44)); - const double var_x114 = -0.010458526290002684 * var_x105 * var_x113; - const double var_x115 = 0.0086999999999999994 + var_chaste_interface__Ca__Ca_ss_sr; - const double var_x116 = 0.00087000000000000001 + var_chaste_interface__Ca__Ca_ss_sr; - const double var_x117 = 1 + 0.0097788000000000007 / pow(var_x115, 2) + 4.0890000000000003e-5 / pow(var_x116, 2); - const double var_x118 = 1 / var_x117; - const double var_x119 = 9.3214219101444593e-16 * var_x86; - const double var_x120 = var_x118; - const double var_x121 = 1 / var_chaste_interface__Cl__Cl_i; - const double var_x122 = log(100 * var_x121); - const double var_x123 = 1 / var_chaste_interface__K__K_i; - const double var_x124 = log(var_x123 * mParameters[4]); - const double var_x125 = 26.712338705498265 * var_x124; - const double var_x126 = var_x125 + 26.712338705498265 * var_x122; - const double var_x127 = 0.00047280839508731927 / (87.825100000000006 + var_x126); - const double var_x128 = 6.1298221377044294e-8 * var_x126 / pow((1 + 0.30415380916729118 * var_x122 + 0.30415380916729118 * var_x124), 2); - const double var_x129 = var_x121 * var_x128 - var_x121 * var_x127; - const double var_x130 = 1 / var_chaste_interface__Na__Na_i; - const double var_x131 = var_x122 + log(var_x130 * mParameters[5]); - const double var_x132 = pow(var_x131, 4); - const double var_x133 = 7.2099425022651882e-9 * pow(var_x131, 7) / pow((1 + 0.0085580149227345564 * var_x132), 2); - const double var_x134 = 50.122574928945262 * pow(var_x131, 3) / (59494197.640692554 + 509152.231225166 * var_x132); - const double var_x135 = var_x121 * var_x133 - var_x121 * var_x134; - const double var_x136 = var_x123 * var_x128 - var_x123 * var_x127; - const double var_x137 = var_x130 * var_x133 - var_x130 * var_x134; - const double var_x138 = pow(var_chaste_interface__Irel__Irel, 2); - const double var_x139 = 1 / (1 + 6.2499999999999991 * var_x138); - const double var_x140 = mParameters[19] * var_chaste_interface__Ito2_i2f_gate__i2f; - const double var_x141 = var_x140 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm); - const double var_x142 = (var_chaste_interface__membrane__Vm >= -2.6712338705498262e-6) && (var_chaste_interface__membrane__Vm <= 2.6712338705498262e-6); - const double var_x143 = exp(var_x72); - const double var_x144 = var_chaste_interface__membrane__Vm / (-1 + var_x143); - const double var_x145 = 3612.0012202503358 * var_x144; - const double var_x146 = (-100 * var_x143 + var_chaste_interface__Cl__Cl_i) * var_chaste_interface__Irel__Irel / pow((0.16000000000000003 + var_x138), 2); - const double var_x147 = 1 + 8.1000000000000005e-11 / pow(var_chaste_interface__Ca__Ca_ss_CaL, 4); - const double var_x148 = 1 / (pow(var_x147, 2) * pow(var_chaste_interface__Ca__Ca_ss_CaL, 5)); - const double var_x149 = 9.7200000000000016e-10 * var_x148; - const double var_x150 = var_x149 * var_chaste_interface__ICaL__C; - const double var_x151 = 1 / (_lt_0_row[12]); - const double var_x152 = _lt_0_row[11]; - const double var_x153 = var_x151 * var_x152; - const double var_x154 = -var_x153; - const double var_x155 = 1 / var_x147; - const double var_x156 = 3 * var_x155; - const double var_x157 = 1 / (_lt_0_row[40]); - const double var_x158 = 0.80000000000000004 * var_x157; - const double var_x159 = 0.80000000000000004 - var_x158; - const double var_x160 = _lt_0_row[17]; - const double var_x161 = 1 / (_lt_0_row[16]); - const double var_x162 = var_x160 + 0.032730010146303147 * var_x161; - const double var_x163 = var_x159 * var_x162; - const double var_x164 = -var_x156 - var_x163; - const double var_x165 = 0.20000000000000001 + var_x158; + const double var_x106 = var_x41 * mParameters[6]; + const double var_x107 = var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star; + const double var_x108 = var_x107 * var_x43; + const double var_x109 = var_x46 * mParameters[6]; + const double var_x110 = ((var_x45) ? (var_x106 * var_x108) : (var_x108 * var_x109)); + const double var_x111 = var_x69 + var_x70 * var_chaste_interface__Ca__Ca_ss_CaL; + const double var_x112 = var_x106 * var_x111; + const double var_x113 = var_x109 * var_x111; + const double var_x114 = ((var_x45) ? (var_x107 * var_x112) : (var_x107 * var_x113)); + const double var_x115 = ((var_x45) ? (var_x112) : (var_x113)); + const double var_x116 = -0.010458526290002684 * var_x105 * var_x115; + const double var_x117 = 0.0086999999999999994 + var_chaste_interface__Ca__Ca_ss_sr; + const double var_x118 = 0.00087000000000000001 + var_chaste_interface__Ca__Ca_ss_sr; + const double var_x119 = 1 + 0.0097788000000000007 / pow(var_x117, 2) + 4.0890000000000003e-5 / pow(var_x118, 2); + const double var_x120 = 1 / var_x119; + const double var_x121 = var_x100 * var_x80 * var_x86 * var_x87; + const double var_x122 = 9.3214219101444593e-16 * var_x99; + const double var_x123 = var_x120; + const double var_x124 = 1 / var_chaste_interface__Cl__Cl_i; + const double var_x125 = log(100 * var_x124); + const double var_x126 = 1 / var_chaste_interface__K__K_i; + const double var_x127 = log(var_x126 * mParameters[4]); + const double var_x128 = 26.712338705498265 * var_x127; + const double var_x129 = var_x128 + 26.712338705498265 * var_x125; + const double var_x130 = 0.00047280839508731927 / (87.825100000000006 + var_x129); + const double var_x131 = var_x124 * var_x130; + const double var_x132 = pow((1 + 0.30415380916729118 * var_x125 + 0.30415380916729118 * var_x127), (-2)); + const double var_x133 = 1 / var_chaste_interface__Na__Na_i; + const double var_x134 = var_x125 + log(var_x133 * mParameters[5]); + const double var_x135 = pow(var_x134, 4); + const double var_x136 = 50.122574928945262 * pow(var_x134, 3) / (59494197.640692554 + 509152.231225166 * var_x135); + const double var_x137 = pow((1 + 0.0085580149227345564 * var_x135), (-2)); + const double var_x138 = pow(var_x134, 7); + const double var_x139 = var_x124 * var_x136 - 7.2099425022651882e-9 * var_x124 * var_x137 * var_x138; + const double var_x140 = var_x126 * var_x130; + const double var_x141 = 6.1298221377044294e-8 * var_x129 * var_x132; + const double var_x142 = var_x133 * var_x136 - 7.2099425022651882e-9 * var_x133 * var_x137 * var_x138; + const double var_x143 = 1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm; + const double var_x144 = 96485 * var_x143; + const double var_x145 = pow(var_chaste_interface__Irel__Irel, 2); + const double var_x146 = mParameters[19] * var_chaste_interface__Ito2_i2f_gate__i2f; + const double var_x147 = var_x146 * (1 - 1 / (1 + 6.2499999999999991 * var_x145)); + const double var_x148 = (var_x40 >= -9.9999999999999995e-8) && (var_x40 <= 9.9999999999999995e-8); + const double var_x149 = exp(var_x40); + const double var_x150 = var_chaste_interface__membrane__Vm / (-1 + var_x149); + const double var_x151 = 3612.0012202503358 * var_x150; + const double var_x152 = var_x146 * (-100 * var_x149 + var_chaste_interface__Cl__Cl_i) * var_chaste_interface__Irel__Irel / pow((0.16000000000000003 + var_x145), 2); + const double var_x153 = 1 + 8.1000000000000005e-11 / pow(var_chaste_interface__Ca__Ca_ss_CaL, 4); + const double var_x154 = 1 / (pow(var_x153, 2) * pow(var_chaste_interface__Ca__Ca_ss_CaL, 5)); + const double var_x155 = 9.7200000000000016e-10 * var_x154; + const double var_x156 = var_x155 * var_chaste_interface__ICaL__C; + const double var_x157 = 1 / (_lt_0_row[12]); + const double var_x158 = _lt_0_row[11]; + const double var_x159 = var_x157 * var_x158; + const double var_x160 = 1 / (_lt_0_row[40]); + const double var_x161 = 0.80000000000000004 * var_x160; + const double var_x162 = 0.80000000000000004 - var_x161; + const double var_x163 = _lt_0_row[17]; + const double var_x164 = 1 / (_lt_0_row[16]); + const double var_x165 = var_x163 + 0.032730010146303147 * var_x164; const double var_x166 = var_x162 * var_x165; - const double var_x167 = var_x151 * (1 - var_x152); - const double var_x168 = 0.99990000999900008 * var_x157; - const double var_x169 = -var_x168; - const double var_x170 = 0.99990000999900008 + var_x169; - const double var_x171 = 9.9990000999900015e-5 + var_x168; - const double var_x172 = var_x165 * var_x170 / (var_x159 * var_x171); - const double var_x173 = 9.7200000000000002e-16 * var_x148 * var_x172; - const double var_x174 = var_x173 * var_chaste_interface__ICaL__CI; - const double var_x175 = 3.0000000000000001e-6 * var_x155 * var_x172; - const double var_x176 = -var_x166 - var_x175; - const double var_x177 = 9.0720000000000001e-12 * var_x148 * var_x161 / pow((1 - 0.69999999999999996 * var_x155), 2); - const double var_x178 = var_x177 * var_chaste_interface__ICaL__C_star; - const double var_x179 = var_x177 * var_chaste_interface__ICaL__CI_star; - const double var_x180 = -var_x167; - const double var_x181 = var_x160 + var_x161 / (25 - 17.5 * var_x155); - const double var_x182 = var_x171 * var_x181; - const double var_x183 = -var_x182; - const double var_x184 = -9.9999999999999995e-7 + var_x180; - const double var_x185 = var_x170 * var_x181; - const double var_x186 = -0.99990000999900008 + var_x168; - const double var_x187 = -1 - var_x185; - const double var_x188 = var_x149 * var_chaste_interface__ICaL__O; - const double var_x189 = _lt_0_row[41]; - const double var_x190 = 0.059458391923439997 * var_x189; - const double var_x191 = _lt_0_row[42]; - const double var_x192 = 0.083986312199829993 * var_x191; - const double var_x193 = _lt_0_row[43]; - const double var_x194 = 0.0062346537747999999 * var_x193; - const double var_x195 = -var_x194; - const double var_x196 = 0.029729195961719999 * var_x189; - const double var_x197 = -var_x196; - const double var_x198 = _lt_0_row[44]; - const double var_x199 = 0.01460066118316 * var_x198; - const double var_x200 = 0.014864597980859999 * var_x189; - const double var_x201 = -var_x200; - const double var_x202 = -var_x192 - var_x199; - const double var_x203 = 0.16797262439965999 * var_x191; - const double var_x204 = 0.009351980662199999 * var_x193; - const double var_x205 = 0.02920132236632 * var_x198; - const double var_x206 = -var_x203 - var_x205; - const double var_x207 = 0.043801983549479999 * var_x198; - const double var_x208 = -var_x204; - const double var_x209 = 0.0124693075496 * var_x193; - const double var_x210 = _lt_0_row[36]; - const double var_x211 = 0.04459379394258 * var_x189; - const double var_x212 = -var_x211; - const double var_x213 = 0.0031173268874 * var_x193; - const double var_x214 = 0.25195893659948998 * var_x191; - const double var_x215 = -var_x207 - var_x214; - const double var_x216 = 0.33594524879931997 * var_x191; - const double var_x217 = 0.058402644732640001 * var_x198; - const double var_x218 = -var_x213; + const double var_x167 = 1 / var_x153; + const double var_x168 = 3 * var_x167; + const double var_x169 = var_x166 + var_x168; + const double var_x170 = 0.20000000000000001 + var_x161; + const double var_x171 = var_x165 * var_x170; + const double var_x172 = var_x157 * (1 - var_x158); + const double var_x173 = 0.99990000999900008 * var_x160; + const double var_x174 = 0.99990000999900008 - var_x173; + const double var_x175 = 9.9990000999900015e-5 + var_x173; + const double var_x176 = var_x170 * var_x174 / (var_x162 * var_x175); + const double var_x177 = 9.7200000000000002e-16 * var_x154 * var_x176; + const double var_x178 = var_x177 * var_chaste_interface__ICaL__CI; + const double var_x179 = 3.0000000000000001e-6 * var_x167 * var_x176; + const double var_x180 = var_x171 + var_x179; + const double var_x181 = 9.0720000000000001e-12 * var_x154 * var_x164 / pow((1 - 0.69999999999999996 * var_x167), 2); + const double var_x182 = var_x174 * var_x181; + const double var_x183 = var_x182 * var_chaste_interface__ICaL__C_star; + const double var_x184 = var_x175 * var_x181; + const double var_x185 = var_x184 * var_chaste_interface__ICaL__CI_star; + const double var_x186 = -var_x172; + const double var_x187 = var_x163 + var_x164 / (25 - 17.5 * var_x167); + const double var_x188 = var_x175 * var_x187; + const double var_x189 = 9.9999999999999995e-7 + var_x172; + const double var_x190 = var_x174 * var_x187; + const double var_x191 = 1 + var_x190; + const double var_x192 = var_x155 * var_chaste_interface__ICaL__O; + const double var_x193 = -var_x159; + const double var_x194 = -var_x188; + const double var_x195 = _lt_0_row[41]; + const double var_x196 = 0.059458391923439997 * var_x195; + const double var_x197 = _lt_0_row[42]; + const double var_x198 = 0.083986312199829993 * var_x197; + const double var_x199 = _lt_0_row[43]; + const double var_x200 = 0.0062346537747999999 * var_x199; + const double var_x201 = 0.029729195961719999 * var_x195; + const double var_x202 = _lt_0_row[44]; + const double var_x203 = 0.01460066118316 * var_x202; + const double var_x204 = 0.014864597980859999 * var_x195; + const double var_x205 = var_x198 + var_x203; + const double var_x206 = 0.16797262439965999 * var_x197; + const double var_x207 = 0.009351980662199999 * var_x199; + const double var_x208 = 0.02920132236632 * var_x202; + const double var_x209 = var_x206 + var_x208; + const double var_x210 = 0.043801983549479999 * var_x202; + const double var_x211 = 0.0124693075496 * var_x199; + const double var_x212 = _lt_0_row[36]; + const double var_x213 = 0.04459379394258 * var_x195; + const double var_x214 = 0.0031173268874 * var_x199; + const double var_x215 = 0.25195893659948998 * var_x197; + const double var_x216 = var_x210 + var_x215; + const double var_x217 = 0.33594524879931997 * var_x197; + const double var_x218 = 0.058402644732640001 * var_x202; const double var_x219 = _lt_0_row[45]; - const double var_x220 = 1 / var_x5; - const double var_x221 = pow(var_x220, 10); - const double var_x222 = 1 + 2.9619676669542428e-6 * var_x221; - const double var_x223 = var_x220 * var_x221 / pow(var_x222, 2); - const double var_x224 = var_x223 * (-1 + var_x3); - const double var_x225 = 1 / var_chaste_interface__Ca__Ca_JSR; - const double var_x226 = 1 + 0.0123 * var_x225; - const double var_x227 = 1 / var_x222; - const double var_x228 = 4.75 + 4.75 * var_x227; - const double var_x229 = pow(var_x225, 8); - const double var_x230 = 1 + var_x229; - const double var_x231 = mParameters[1] / var_x230; - const double var_x232 = var_x112 * var_x231; - const double var_x233 = var_x14 - var_x228 * var_x232; - const double var_x234 = var_x226 * var_x233 / pow((1 + var_x227), 2); - const double var_x235 = 1 / var_x228; - const double var_x236 = var_x226 * var_x235; - const double var_x237 = var_x232 * var_x236; - const double var_x238 = var_x226 * var_x231; - const double var_x239 = var_x223 * var_x9; - const double var_x240 = -var_x113 * var_x238; - const double var_x241 = 1 / var_chaste_interface__Ca__Ca_i; - const double var_x242 = pow(var_x241, 1.3999999999999999); - const double var_x243 = 1 + 6.4818210260626455e-7 * var_x242; - const double var_x244 = 1 / (0.018329999999999999 * var_chaste_interface__Na__Na_i + var_chaste_interface__K__K_i); - const double var_x245 = -26.712338705498265 * log(var_x244 * (0.018329999999999999 * mParameters[5] + mParameters[4])) + var_chaste_interface__membrane__Vm; - const double var_x246 = 1 - var_chaste_interface__IKs__C1 - var_chaste_interface__IKs__C10 - var_chaste_interface__IKs__C11 - var_chaste_interface__IKs__C12 - var_chaste_interface__IKs__C13 - var_chaste_interface__IKs__C14 - var_chaste_interface__IKs__C15 - var_chaste_interface__IKs__C2 - var_chaste_interface__IKs__C3 - var_chaste_interface__IKs__C4 - var_chaste_interface__IKs__C5 - var_chaste_interface__IKs__C6 - var_chaste_interface__IKs__C7 - var_chaste_interface__IKs__C8 - var_chaste_interface__IKs__C9; - const double var_x247 = (-6.1702220000015831e-5 - 3.7021332000009499e-5 / var_x243) * mParameters[16]; - const double var_x248 = -var_x245 * var_x247; - const double var_x249 = 0.0016482105995215921 * var_x123; - const double var_x250 = var_x244 * var_x246 * var_x247; - const double var_x251 = sqrt(mParameters[4]); - const double var_x252 = var_x123 * var_x251; - const double var_x253 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 6.3708927812613361 * var_x124); - const double var_x254 = 1 + var_x253; - const double var_x255 = 1 / var_x254; - const double var_x256 = exp(-2.4444678999999998 + 13.738155796237757 * var_x124 - 0.51429999999999998 * var_chaste_interface__membrane__Vm); - const double var_x257 = 1 + var_x256; - const double var_x258 = 1 / var_x257; - const double var_x259 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__Vm - 2.1455350448256207 * var_x124); - const double var_x260 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__Vm - 1.6494869150645177 * var_x124); - const double var_x261 = var_x260 + 0.49124000000000001 * var_x259; - const double var_x262 = var_x258 * var_x261; - const double var_x263 = 1 / (var_x262 + 1.02 * var_x255); - const double var_x264 = var_x255 * mParameters[12]; - const double var_x265 = var_x123 * var_x253 / pow(var_x254, 2); - const double var_x266 = var_x251 * (-var_x125 + var_chaste_interface__membrane__Vm); - const double var_x267 = 1 + 0.38461538461538458 * var_chaste_interface__Na__Na_i; - const double var_x268 = mParameters[18] * mParameters[4] / ((1 + exp(-3.444101282717841 + var_x73)) * (1.5 + mParameters[4])); - const double var_x269 = var_x268 * var_x91 / pow(var_x267, 3); - const double var_x270 = var_x268 * var_x51 / pow(var_x267, 4); - const double var_x271 = 3.299618375272375e-16 * var_x63; - const double var_x272 = 8.2490459381809375e-17 * var_x86; - const double var_x273 = var_x143 * mParameters[9]; - const double var_x274 = 0.0016482105995215921 * var_x130; - const double var_x275 = 2.796426573043338e-15 * var_x86; + const double var_x220 = -var_x219; + const double var_x221 = 1 / var_x5; + const double var_x222 = pow(var_x221, 10); + const double var_x223 = 1 + 2.9619676669542428e-6 * var_x222; + const double var_x224 = var_x221 * var_x222 / pow(var_x223, 2); + const double var_x225 = -var_x224 * var_x7; + const double var_x226 = 1 / var_chaste_interface__Ca__Ca_JSR; + const double var_x227 = 1 + 0.0123 * var_x226; + const double var_x228 = 1 / var_x223; + const double var_x229 = 4.75 + 4.75 * var_x228; + const double var_x230 = pow(var_x226, 8); + const double var_x231 = 1 + var_x230; + const double var_x232 = mParameters[1] / var_x231; + const double var_x233 = var_x114 * var_x232; + const double var_x234 = -var_chaste_interface__Irel__Irel - var_x229 * var_x233; + const double var_x235 = var_x227 * var_x234 / pow((1 + var_x228), 2); + const double var_x236 = 1 / var_x229; + const double var_x237 = var_x227 * var_x236; + const double var_x238 = var_x233 * var_x237; + const double var_x239 = var_x227 * var_x232; + const double var_x240 = var_x10 * var_x224; + const double var_x241 = -var_x115 * var_x239; + const double var_x242 = 1 / var_chaste_interface__Ca__Ca_i; + const double var_x243 = pow(var_x242, 1.3999999999999999); + const double var_x244 = 1 + 6.4818210260626455e-7 * var_x243; + const double var_x245 = 1 / (0.018329999999999999 * var_chaste_interface__Na__Na_i + var_chaste_interface__K__K_i); + const double var_x246 = -26.712338705498265 * log(var_x245 * (0.018329999999999999 * mParameters[5] + mParameters[4])) + var_chaste_interface__membrane__Vm; + const double var_x247 = 1 - var_chaste_interface__IKs__C1 - var_chaste_interface__IKs__C10 - var_chaste_interface__IKs__C11 - var_chaste_interface__IKs__C12 - var_chaste_interface__IKs__C13 - var_chaste_interface__IKs__C14 - var_chaste_interface__IKs__C15 - var_chaste_interface__IKs__C2 - var_chaste_interface__IKs__C3 - var_chaste_interface__IKs__C4 - var_chaste_interface__IKs__C5 - var_chaste_interface__IKs__C6 - var_chaste_interface__IKs__C7 - var_chaste_interface__IKs__C8 - var_chaste_interface__IKs__C9; + const double var_x248 = (1 + 0.59999999999999998 / var_x244) * mParameters[16]; + const double var_x249 = 6.1702220000015831e-5 * var_x246 * var_x248; + const double var_x250 = 0.0016482105995215921 * var_x126; + const double var_x251 = var_x245 * var_x247 * var_x248; + const double var_x252 = sqrt(mParameters[4]); + const double var_x253 = var_x126 * var_x252; + const double var_x254 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 6.3708927812613361 * var_x127); + const double var_x255 = 1 + var_x254; + const double var_x256 = 1 / var_x255; + const double var_x257 = exp(-2.4444678999999998 + 13.738155796237757 * var_x127 - 0.51429999999999998 * var_chaste_interface__membrane__Vm); + const double var_x258 = 1 + var_x257; + const double var_x259 = 1 / var_x258; + const double var_x260 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__Vm - 2.1455350448256207 * var_x127); + const double var_x261 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__Vm - 1.6494869150645177 * var_x127); + const double var_x262 = var_x261 + 0.49124000000000001 * var_x260; + const double var_x263 = var_x259 * var_x262; + const double var_x264 = 1 / (var_x263 + 1.02 * var_x256); + const double var_x265 = var_x256 * mParameters[12]; + const double var_x266 = pow(var_x255, (-2)); + const double var_x267 = -var_x128 + var_chaste_interface__membrane__Vm; + const double var_x268 = 1 + 0.38461538461538458 * var_chaste_interface__Na__Na_i; + const double var_x269 = pow(var_x268, (-4)); + const double var_x270 = 1 / (1 + exp(-3.444101282717841 - var_x40)); + const double var_x271 = 1 / (1.5 + mParameters[4]); + const double var_x272 = var_x270 * var_x271 * mParameters[18] * mParameters[4]; + const double var_x273 = pow(var_x268, (-3)); + const double var_x274 = 3.299618375272375e-16 * var_x92; + const double var_x275 = 8.2490459381809375e-17 * var_x99; + const double var_x276 = var_x149 * mParameters[9]; + const double var_x277 = 0.0016482105995215921 * var_x133; + const double var_x278 = 2.796426573043338e-15 * var_x99; - rJacobian[0][0] = 1.0 - (mDt * (-0.00068000000000000005 - var_x5 * var_x6 + var_x0 * var_x6 * var_x7)); + rJacobian[0][0] = 1.0 - (mDt * (-0.00068000000000000005 - 0.0025000000000000005 * var_x2 * var_x5 + 0.0025000000000000005 * var_x0 * var_x2 * var_x7)); rJacobian[0][1] = 0.0; rJacobian[0][2] = 0.0; rJacobian[0][3] = 0.0; rJacobian[0][4] = 0.0; - rJacobian[0][5] = -(mDt * (3.7500000000000005e-6 * var_x5 * var_x9 + 1.8750000000000003e-7 * var_x8 * pow(var_x0, 2) / pow(var_x1, 3))); + rJacobian[0][5] = -(mDt * (3.7500000000000005e-6 * var_x10 * var_x5 + 1.8750000000000003e-7 * var_x8 * pow(var_x0, 2) / pow(var_x1, 3))); rJacobian[0][6] = 0.0; rJacobian[0][7] = 0.0; rJacobian[0][8] = 0.0; @@ -1557,8 +1560,8 @@ std::shared_ptr Celldeck rJacobian[0][33] = 0.0; rJacobian[0][34] = 0.0; rJacobian[1][0] = 0.0; - rJacobian[1][1] = 1.0 - (mDt * (-var_x13 + 0.25 * (var_x14 + 0.040000000000000001 * var_chaste_interface__Ca__Ca_NSR - 0.040000000000000001 * var_chaste_interface__Ca__Ca_JSR) / (pow(var_x10, 3) * pow((0.125 + var_x11), 2)))); - rJacobian[1][2] = -(mDt * (var_x13)); + rJacobian[1][1] = 1.0 - (mDt * (-var_x14 + 0.25 * (-var_chaste_interface__Irel__Irel + 0.040000000000000001 * var_chaste_interface__Ca__Ca_NSR - 0.040000000000000001 * var_chaste_interface__Ca__Ca_JSR) / (pow(var_x11, 3) * pow((0.125 + var_x12), 2)))); + rJacobian[1][2] = -(mDt * (var_x14)); rJacobian[1][3] = 0.0; rJacobian[1][4] = 0.0; rJacobian[1][5] = 0.0; @@ -1587,14 +1590,14 @@ std::shared_ptr Celldeck rJacobian[1][28] = 0.0; rJacobian[1][29] = 0.0; rJacobian[1][30] = 0.0; - rJacobian[1][31] = -(mDt * (-var_x12)); + rJacobian[1][31] = -(mDt * (-var_x13)); rJacobian[1][32] = 0.0; rJacobian[1][33] = 0.0; rJacobian[1][34] = 0.0; - rJacobian[2][0] = -(mDt * (var_x24 + var_x27)); + rJacobian[2][0] = -(mDt * (var_x25 + var_x29)); rJacobian[2][1] = -(mDt * (0.0034782608695652171)); rJacobian[2][2] = 1.0 - (mDt * (-0.0034782608695652171 - 0.066666666666666666 * mParameters[0])); - rJacobian[2][3] = -(mDt * (var_x28 - var_x26)); + rJacobian[2][3] = -(mDt * (-var_x28 + var_x22 * var_x27 * mParameters[2])); rJacobian[2][4] = 0.0; rJacobian[2][5] = -(mDt * (var_x31 + var_x32)); rJacobian[2][6] = 0.0; @@ -1626,12 +1629,12 @@ std::shared_ptr Celldeck rJacobian[2][32] = 0.0; rJacobian[2][33] = 0.0; rJacobian[2][34] = 0.0; - rJacobian[3][0] = -(mDt * (var_x38 * (-0.081415929203539822 * var_x24 - 0.081415929203539822 * var_x27))); + rJacobian[3][0] = -(mDt * (var_x38 * (-0.081415929203539822 * var_x25 - 0.081415929203539822 * var_x29))); rJacobian[3][1] = 0.0; rJacobian[3][2] = -(mDt * (var_x37 * var_x39)); - rJacobian[3][3] = 1.0 - (mDt * (var_x38 * (-0.14749262536873156 - var_x47 - var_x48 + 0.081415929203539822 * var_x26 + 1.5425555000003961e-12 * var_x67 - 3.0851110000007915e-5 * ((var_x43) ? (var_x40 * var_x42 * mParameters[7]) : (var_x45 * mParameters[7])) + var_x50 * var_x64 + var_x35 * var_x46 * var_chaste_interface__Ca__Ca_i - var_x57 * var_x68 * var_x69) + (0.00023800000000000004 / pow(var_x33, 3) + 7.0000000000000007e-5 / pow(var_x34, 3)) * (0.14749262536873156 * var_chaste_interface__Ca__Ca_ss_sr + 1.2340444000003168e-5 * var_x85 - 0.14749262536873156 * var_chaste_interface__Ca__Ca_i - 3.0851110000007915e-5 * ((var_x43) ? (var_x71 * var_x74) : (var_x44 * var_x71)) + var_x39 * var_chaste_interface__Ca__Ca_NSR + var_x62 * var_x68 - var_x47 * var_chaste_interface__Ca__Ca_i - var_x48 * var_chaste_interface__Ca__Ca_i) / pow(var_x36, 2))); + rJacobian[3][3] = 1.0 - (mDt * (var_x38 * (-0.14749262536873156 - var_x47 - var_x48 - 3.0851110000007915e-5 * ((var_x45) ? (var_x41 * var_x44) : (var_x44 * var_x46)) - var_x50 * var_x58 * var_x62 + 3.0851110000007915e-5 * var_x35 * var_chaste_interface__Ca__Ca_i * mParameters[10] + 0.081415929203539822 * var_x26 * var_x27 * var_chaste_interface__Ca__Ca_i * mParameters[2] + 1.0998727917574584e-16 * var_x50 * var_x60 * var_x63 * var_x65 * var_x66 * mParameters[17] + 1.5425555000003961e-12 * var_x57 * var_x60 * var_x65 * var_x67 * var_x68 * mParameters[17]) + (0.00023800000000000004 / pow(var_x33, 3) + 7.0000000000000007e-5 / pow(var_x34, 3)) * (0.14749262536873156 * var_chaste_interface__Ca__Ca_ss_sr + 1.2340444000003168e-5 * var_x82 - 0.14749262536873156 * var_chaste_interface__Ca__Ca_i - 3.0851110000007915e-5 * ((var_x45) ? (var_x41 * var_x71) : (var_x46 * var_x71)) + var_x39 * var_chaste_interface__Ca__Ca_NSR + var_x58 * var_x83 - var_x47 * var_chaste_interface__Ca__Ca_i - var_x48 * var_chaste_interface__Ca__Ca_i) / pow(var_x36, 2))); rJacobian[3][4] = 0.0; - rJacobian[3][5] = -(mDt * (var_x38 * (0.14749262536873156 + 3.8563887500009902e-13 * var_x89 - 1.2340444000003168e-5 * var_x90 - 0.081415929203539822 * var_x31 - 0.081415929203539822 * var_x32 + var_x50 * var_x87))); + rJacobian[3][5] = -(mDt * (var_x38 * (0.14749262536873156 - 1.2340444000003168e-5 * var_x84 - 0.081415929203539822 * var_x31 - 0.081415929203539822 * var_x32 + 2.7496819793936459e-17 * var_x60 * var_x66 * var_x79 * var_x80 * var_x85 * mParameters[17] + 3.8563887500009902e-13 * var_x60 * var_x77 * var_x80 * var_x86 * var_x87 * mParameters[17]))); rJacobian[3][6] = 0.0; rJacobian[3][7] = 0.0; rJacobian[3][8] = 0.0; @@ -1659,13 +1662,13 @@ std::shared_ptr Celldeck rJacobian[3][30] = 0.0; rJacobian[3][31] = 0.0; rJacobian[3][32] = 0.0; - rJacobian[3][33] = -(mDt * (var_x38 * (var_x64 * var_x94 + var_x96 * var_x98))); - rJacobian[3][34] = -(mDt * (var_x38 * (3.7021332000009505e-5 * var_x101 + var_x100 * var_x87))); + rJacobian[3][33] = -(mDt * (var_x38 * (1.0998727917574584e-16 * var_x91 * var_x92 + 0.00014808532800003802 * var_x94 * var_x96))); + rJacobian[3][34] = -(mDt * (var_x38 * (3.7021332000009505e-5 * var_x101 + 2.7496819793936459e-17 * var_x98 * var_x99))); rJacobian[4][0] = 0.0; rJacobian[4][1] = 0.0; rJacobian[4][2] = 0.0; rJacobian[4][3] = 0.0; - rJacobian[4][4] = 1.0 - (mDt * (-var_x105 * (5 + 0.010458526290002684 * var_x108) - (0.019557600000000001 / pow(var_x102, 3) + 8.1780000000000006e-5 / pow(var_x103, 3)) * (5 * var_chaste_interface__Ca__Ca_ss_CaL + 0.010458526290002684 * var_x112 - 5 * var_chaste_interface__Ca__Ca_ss_sr) / pow(var_x104, 2))); + rJacobian[4][4] = 1.0 - (mDt * (-var_x105 * (5 + 0.010458526290002684 * var_x110) - (0.019557600000000001 / pow(var_x102, 3) + 8.1780000000000006e-5 / pow(var_x103, 3)) * (5 * var_chaste_interface__Ca__Ca_ss_CaL + 0.010458526290002684 * var_x114 - 5 * var_chaste_interface__Ca__Ca_ss_sr) / pow(var_x104, 2))); rJacobian[4][5] = -(mDt * (5 * var_x105)); rJacobian[4][6] = 0.0; rJacobian[4][7] = 0.0; @@ -1673,9 +1676,9 @@ std::shared_ptr Celldeck rJacobian[4][9] = 0.0; rJacobian[4][10] = 0.0; rJacobian[4][11] = 0.0; - rJacobian[4][12] = -(mDt * (var_x114)); + rJacobian[4][12] = -(mDt * (var_x116)); rJacobian[4][13] = 0.0; - rJacobian[4][14] = -(mDt * (var_x114)); + rJacobian[4][14] = -(mDt * (var_x116)); rJacobian[4][15] = 0.0; rJacobian[4][16] = 0.0; rJacobian[4][17] = 0.0; @@ -1699,9 +1702,9 @@ std::shared_ptr Celldeck rJacobian[5][0] = 0.0; rJacobian[5][1] = 0.0; rJacobian[5][2] = 0.0; - rJacobian[5][3] = -(mDt * (5 * var_x118)); - rJacobian[5][4] = -(mDt * (0.5 * var_x118)); - rJacobian[5][5] = 1.0 - (mDt * (-var_x120 * (5.5 + 0.0004183410516001074 * var_x90 - 1.3073157862503357e-11 * var_x89 - var_x119 * var_x50) - (0.019557600000000001 / pow(var_x115, 3) + 8.1780000000000006e-5 / pow(var_x116, 3)) * (5.5 * var_chaste_interface__Ca__Ca_ss_sr - 0.5 * var_chaste_interface__Ca__Ca_ss_CaL - 0.23999999999999996 * var_chaste_interface__Irel__Irel - 5 * var_chaste_interface__Ca__Ca_i - 0.0004183410516001074 * var_x85) / pow(var_x117, 2))); + rJacobian[5][3] = -(mDt * (5 * var_x120)); + rJacobian[5][4] = -(mDt * (0.5 * var_x120)); + rJacobian[5][5] = 1.0 - (mDt * (-var_x123 * (5.5 + 0.0004183410516001074 * var_x84 - 1.3073157862503357e-11 * var_x121 - var_x122 * var_x66) - (0.019557600000000001 / pow(var_x117, 3) + 8.1780000000000006e-5 / pow(var_x118, 3)) * (5.5 * var_chaste_interface__Ca__Ca_ss_sr - 0.5 * var_chaste_interface__Ca__Ca_ss_CaL - 0.23999999999999996 * var_chaste_interface__Irel__Irel - 5 * var_chaste_interface__Ca__Ca_i - 0.0004183410516001074 * var_x82) / pow(var_x119, 2))); rJacobian[5][6] = 0.0; rJacobian[5][7] = 0.0; rJacobian[5][8] = 0.0; @@ -1727,17 +1730,17 @@ std::shared_ptr Celldeck rJacobian[5][28] = 0.0; rJacobian[5][29] = 0.0; rJacobian[5][30] = 0.0; - rJacobian[5][31] = -(mDt * (0.23999999999999996 * var_x118)); + rJacobian[5][31] = -(mDt * (0.23999999999999996 * var_x120)); rJacobian[5][32] = 0.0; rJacobian[5][33] = 0.0; - rJacobian[5][34] = -(mDt * (-var_x120 * (-0.0012550231548003222 * var_x101 - var_x100 * var_x119))); + rJacobian[5][34] = -(mDt * (-var_x123 * (-0.0012550231548003222 * var_x101 - var_x122 * var_x98))); rJacobian[6][0] = 0.0; rJacobian[6][1] = 0.0; rJacobian[6][2] = 0.0; rJacobian[6][3] = 0.0; rJacobian[6][4] = 0.0; rJacobian[6][5] = 0.0; - rJacobian[6][6] = 1.0 - (mDt * (-0.14749262536873156 + var_x129 + var_x135 - 0.0016482105995215921 * var_x121 * mParameters[8])); + rJacobian[6][6] = 1.0 - (mDt * (-0.14749262536873156 - var_x131 - var_x139 - 0.0016482105995215921 * var_x124 * mParameters[8] + 6.1298221377044294e-8 * var_x124 * var_x129 * var_x132)); rJacobian[6][7] = -(mDt * (0.14749262536873156)); rJacobian[6][8] = 0.0; rJacobian[6][9] = 0.0; @@ -1763,8 +1766,8 @@ std::shared_ptr Celldeck rJacobian[6][29] = 0.0; rJacobian[6][30] = 0.0; rJacobian[6][31] = 0.0; - rJacobian[6][32] = -(mDt * (var_x136)); - rJacobian[6][33] = -(mDt * (var_x137)); + rJacobian[6][32] = -(mDt * (-var_x140 + var_x126 * var_x141)); + rJacobian[6][33] = -(mDt * (-var_x142)); rJacobian[6][34] = 0.0; rJacobian[7][0] = 0.0; rJacobian[7][1] = 0.0; @@ -1772,7 +1775,7 @@ std::shared_ptr Celldeck rJacobian[7][3] = 0.0; rJacobian[7][4] = 0.0; rJacobian[7][5] = 0.0; - rJacobian[7][6] = -(mDt * (5 + 0.0020917052580005369 * ((var_x142) ? (var_x141 * (-96485 + 96485 * var_x139)) : (-var_x140 * var_x145 * (1 - var_x139))))); + rJacobian[7][6] = -(mDt * (5 + 0.0020917052580005369 * ((var_x148) ? (-var_x144 * var_x147) : (-var_x147 * var_x151)))); rJacobian[7][7] = 1.0 - (mDt * (-5)); rJacobian[7][8] = 0.0; rJacobian[7][9] = 0.0; @@ -1797,7 +1800,7 @@ std::shared_ptr Celldeck rJacobian[7][28] = 0.0; rJacobian[7][29] = 0.0; rJacobian[7][30] = 0.0; - rJacobian[7][31] = -(mDt * (0.0020917052580005369 * ((var_x142) ? (-30875.200000000004 * var_x141 * var_x146) : (-1155.8403904801075 * var_x140 * var_x144 * var_x146)))); + rJacobian[7][31] = -(mDt * (0.0020917052580005369 * ((var_x148) ? (-30875.200000000004 * var_x143 * var_x152) : (-1155.8403904801075 * var_x150 * var_x152)))); rJacobian[7][32] = 0.0; rJacobian[7][33] = 0.0; rJacobian[7][34] = 0.0; @@ -1805,15 +1808,15 @@ std::shared_ptr Celldeck rJacobian[8][1] = 0.0; rJacobian[8][2] = 0.0; rJacobian[8][3] = 0.0; - rJacobian[8][4] = -(mDt * (-var_x150)); + rJacobian[8][4] = -(mDt * (-var_x156)); rJacobian[8][5] = 0.0; rJacobian[8][6] = 0.0; rJacobian[8][7] = 0.0; - rJacobian[8][8] = 1.0 - (mDt * (var_x154 + var_x164)); - rJacobian[8][9] = -(mDt * (var_x166)); + rJacobian[8][8] = 1.0 - (mDt * (-var_x159 - var_x169)); + rJacobian[8][9] = -(mDt * (var_x171)); rJacobian[8][10] = 0.0; rJacobian[8][11] = -(mDt * (1)); - rJacobian[8][12] = -(mDt * (var_x167)); + rJacobian[8][12] = -(mDt * (var_x172)); rJacobian[8][13] = 0.0; rJacobian[8][14] = 0.0; rJacobian[8][15] = 0.0; @@ -1840,16 +1843,16 @@ std::shared_ptr Celldeck rJacobian[9][1] = 0.0; rJacobian[9][2] = 0.0; rJacobian[9][3] = 0.0; - rJacobian[9][4] = -(mDt * (-var_x174)); + rJacobian[9][4] = -(mDt * (-var_x178)); rJacobian[9][5] = 0.0; rJacobian[9][6] = 0.0; rJacobian[9][7] = 0.0; - rJacobian[9][8] = -(mDt * (var_x163)); - rJacobian[9][9] = 1.0 - (mDt * (var_x154 + var_x176)); + rJacobian[9][8] = -(mDt * (var_x166)); + rJacobian[9][9] = 1.0 - (mDt * (-var_x159 - var_x180)); rJacobian[9][10] = -(mDt * (9.9999999999999995e-7)); rJacobian[9][11] = 0.0; rJacobian[9][12] = 0.0; - rJacobian[9][13] = -(mDt * (var_x167)); + rJacobian[9][13] = -(mDt * (var_x172)); rJacobian[9][14] = 0.0; rJacobian[9][15] = 0.0; rJacobian[9][16] = 0.0; @@ -1875,17 +1878,17 @@ std::shared_ptr Celldeck rJacobian[10][1] = 0.0; rJacobian[10][2] = 0.0; rJacobian[10][3] = 0.0; - rJacobian[10][4] = -(mDt * (var_x174 + var_x170 * var_x178 + var_x179 * (-9.9990000999900015e-5 + var_x169))); + rJacobian[10][4] = -(mDt * (var_x178 + var_x183 - var_x185)); rJacobian[10][5] = 0.0; rJacobian[10][6] = 0.0; rJacobian[10][7] = 0.0; - rJacobian[10][8] = -(mDt * (var_x180)); - rJacobian[10][9] = -(mDt * (var_x175 + var_x180)); - rJacobian[10][10] = 1.0 - (mDt * (var_x154 + var_x183 + var_x184)); - rJacobian[10][11] = -(mDt * (var_x180 + var_x185)); - rJacobian[10][12] = -(mDt * (var_x180)); - rJacobian[10][13] = -(mDt * (var_x180)); - rJacobian[10][14] = -(mDt * (var_x180)); + rJacobian[10][8] = -(mDt * (var_x186)); + rJacobian[10][9] = -(mDt * (var_x179 - var_x172)); + rJacobian[10][10] = 1.0 - (mDt * (-var_x159 - var_x188 - var_x189)); + rJacobian[10][11] = -(mDt * (var_x186 + var_x190)); + rJacobian[10][12] = -(mDt * (var_x186)); + rJacobian[10][13] = -(mDt * (var_x186)); + rJacobian[10][14] = -(mDt * (var_x186)); rJacobian[10][15] = 0.0; rJacobian[10][16] = 0.0; rJacobian[10][17] = 0.0; @@ -1910,17 +1913,17 @@ std::shared_ptr Celldeck rJacobian[11][1] = 0.0; rJacobian[11][2] = 0.0; rJacobian[11][3] = 0.0; - rJacobian[11][4] = -(mDt * (var_x150 + var_x171 * var_x179 + var_x178 * var_x186)); + rJacobian[11][4] = -(mDt * (var_x156 + var_x185 - var_x183)); rJacobian[11][5] = 0.0; rJacobian[11][6] = 0.0; rJacobian[11][7] = 0.0; - rJacobian[11][8] = -(mDt * (var_x156)); + rJacobian[11][8] = -(mDt * (var_x168)); rJacobian[11][9] = 0.0; - rJacobian[11][10] = -(mDt * (var_x182)); - rJacobian[11][11] = 1.0 - (mDt * (var_x154 + var_x187)); + rJacobian[11][10] = -(mDt * (var_x188)); + rJacobian[11][11] = 1.0 - (mDt * (-var_x159 - var_x191)); rJacobian[11][12] = 0.0; rJacobian[11][13] = 0.0; - rJacobian[11][14] = -(mDt * (var_x167)); + rJacobian[11][14] = -(mDt * (var_x172)); rJacobian[11][15] = 0.0; rJacobian[11][16] = 0.0; rJacobian[11][17] = 0.0; @@ -1945,16 +1948,16 @@ std::shared_ptr Celldeck rJacobian[12][1] = 0.0; rJacobian[12][2] = 0.0; rJacobian[12][3] = 0.0; - rJacobian[12][4] = -(mDt * (-var_x188)); + rJacobian[12][4] = -(mDt * (-var_x192)); rJacobian[12][5] = 0.0; rJacobian[12][6] = 0.0; rJacobian[12][7] = 0.0; - rJacobian[12][8] = -(mDt * (var_x153)); + rJacobian[12][8] = -(mDt * (var_x159)); rJacobian[12][9] = 0.0; rJacobian[12][10] = 0.0; rJacobian[12][11] = 0.0; - rJacobian[12][12] = 1.0 - (mDt * (var_x164 + var_x180)); - rJacobian[12][13] = -(mDt * (var_x166)); + rJacobian[12][12] = 1.0 - (mDt * (-var_x169 - var_x172)); + rJacobian[12][13] = -(mDt * (var_x171)); rJacobian[12][14] = -(mDt * (1)); rJacobian[12][15] = 0.0; rJacobian[12][16] = 0.0; @@ -1980,16 +1983,16 @@ std::shared_ptr Celldeck rJacobian[13][1] = 0.0; rJacobian[13][2] = 0.0; rJacobian[13][3] = 0.0; - rJacobian[13][4] = -(mDt * (-var_x173 * var_chaste_interface__ICaL__OI)); + rJacobian[13][4] = -(mDt * (-var_x177 * var_chaste_interface__ICaL__OI)); rJacobian[13][5] = 0.0; rJacobian[13][6] = 0.0; rJacobian[13][7] = 0.0; rJacobian[13][8] = -(mDt * (-9.9999999999999995e-7)); - rJacobian[13][9] = -(mDt * (-9.9999999999999995e-7 + var_x153)); + rJacobian[13][9] = -(mDt * (-9.9999999999999995e-7 - var_x193)); rJacobian[13][10] = -(mDt * (-9.9999999999999995e-7)); rJacobian[13][11] = -(mDt * (-9.9999999999999995e-7)); - rJacobian[13][12] = -(mDt * (-9.9999999999999995e-7 + var_x163)); - rJacobian[13][13] = 1.0 - (mDt * (var_x176 + var_x184)); + rJacobian[13][12] = -(mDt * (-9.9999999999999995e-7 + var_x166)); + rJacobian[13][13] = 1.0 - (mDt * (-var_x180 - var_x189)); rJacobian[13][14] = -(mDt * (-9.9999999999999995e-7)); rJacobian[13][15] = 0.0; rJacobian[13][16] = 0.0; @@ -2015,17 +2018,17 @@ std::shared_ptr Celldeck rJacobian[14][1] = 0.0; rJacobian[14][2] = 0.0; rJacobian[14][3] = 0.0; - rJacobian[14][4] = -(mDt * (var_x188 + var_x171 * var_x177 * (1 - var_chaste_interface__ICaL__C - var_chaste_interface__ICaL__CI - var_chaste_interface__ICaL__CI_star - var_chaste_interface__ICaL__C_star - var_chaste_interface__ICaL__O - var_chaste_interface__ICaL__OI - var_chaste_interface__ICaL__O_star) + var_x177 * var_x186 * var_chaste_interface__ICaL__O_star)); + rJacobian[14][4] = -(mDt * (var_x192 + var_x184 * (1 - var_x107 - var_chaste_interface__ICaL__C - var_chaste_interface__ICaL__CI - var_chaste_interface__ICaL__CI_star - var_chaste_interface__ICaL__C_star - var_chaste_interface__ICaL__OI) - var_x182 * var_chaste_interface__ICaL__O_star)); rJacobian[14][5] = 0.0; rJacobian[14][6] = 0.0; rJacobian[14][7] = 0.0; - rJacobian[14][8] = -(mDt * (var_x183)); - rJacobian[14][9] = -(mDt * (var_x183)); - rJacobian[14][10] = -(mDt * (var_x183)); - rJacobian[14][11] = -(mDt * (var_x153 + var_x183)); - rJacobian[14][12] = -(mDt * (var_x156 + var_x183)); - rJacobian[14][13] = -(mDt * (var_x183)); - rJacobian[14][14] = 1.0 - (mDt * (var_x180 + var_x183 + var_x187)); + rJacobian[14][8] = -(mDt * (var_x194)); + rJacobian[14][9] = -(mDt * (var_x194)); + rJacobian[14][10] = -(mDt * (var_x194)); + rJacobian[14][11] = -(mDt * (-var_x188 - var_x193)); + rJacobian[14][12] = -(mDt * (var_x168 - var_x188)); + rJacobian[14][13] = -(mDt * (var_x194)); + rJacobian[14][14] = 1.0 - (mDt * (-var_x172 - var_x188 - var_x191)); rJacobian[14][15] = 0.0; rJacobian[14][16] = 0.0; rJacobian[14][17] = 0.0; @@ -2061,14 +2064,14 @@ std::shared_ptr Celldeck rJacobian[15][12] = 0.0; rJacobian[15][13] = 0.0; rJacobian[15][14] = 0.0; - rJacobian[15][15] = 1.0 - (mDt * (-var_x190)); + rJacobian[15][15] = 1.0 - (mDt * (-var_x196)); rJacobian[15][16] = 0.0; rJacobian[15][17] = 0.0; rJacobian[15][18] = 0.0; rJacobian[15][19] = 0.0; rJacobian[15][20] = 0.0; rJacobian[15][21] = 0.0; - rJacobian[15][22] = -(mDt * (var_x192)); + rJacobian[15][22] = -(mDt * (var_x198)); rJacobian[15][23] = 0.0; rJacobian[15][24] = 0.0; rJacobian[15][25] = 0.0; @@ -2097,8 +2100,8 @@ std::shared_ptr Celldeck rJacobian[16][13] = 0.0; rJacobian[16][14] = 0.0; rJacobian[16][15] = 0.0; - rJacobian[16][16] = 1.0 - (mDt * (var_x195 + var_x197)); - rJacobian[16][17] = -(mDt * (var_x192)); + rJacobian[16][16] = 1.0 - (mDt * (-var_x200 - var_x201)); + rJacobian[16][17] = -(mDt * (var_x198)); rJacobian[16][18] = 0.0; rJacobian[16][19] = 0.0; rJacobian[16][20] = 0.0; @@ -2108,7 +2111,7 @@ std::shared_ptr Celldeck rJacobian[16][24] = 0.0; rJacobian[16][25] = 0.0; rJacobian[16][26] = 0.0; - rJacobian[16][27] = -(mDt * (var_x199)); + rJacobian[16][27] = -(mDt * (var_x203)); rJacobian[16][28] = 0.0; rJacobian[16][29] = 0.0; rJacobian[16][30] = 0.0; @@ -2132,10 +2135,10 @@ std::shared_ptr Celldeck rJacobian[17][13] = 0.0; rJacobian[17][14] = 0.0; rJacobian[17][15] = 0.0; - rJacobian[17][16] = -(mDt * (var_x196)); - rJacobian[17][17] = 1.0 - (mDt * (var_x195 + var_x201 + var_x202)); - rJacobian[17][18] = -(mDt * (var_x203)); - rJacobian[17][19] = -(mDt * (var_x204)); + rJacobian[17][16] = -(mDt * (var_x201)); + rJacobian[17][17] = 1.0 - (mDt * (-var_x200 - var_x204 - var_x205)); + rJacobian[17][18] = -(mDt * (var_x206)); + rJacobian[17][19] = -(mDt * (var_x207)); rJacobian[17][20] = 0.0; rJacobian[17][21] = 0.0; rJacobian[17][22] = 0.0; @@ -2144,7 +2147,7 @@ std::shared_ptr Celldeck rJacobian[17][25] = 0.0; rJacobian[17][26] = 0.0; rJacobian[17][27] = 0.0; - rJacobian[17][28] = -(mDt * (var_x205)); + rJacobian[17][28] = -(mDt * (var_x208)); rJacobian[17][29] = 0.0; rJacobian[17][30] = 0.0; rJacobian[17][31] = 0.0; @@ -2168,10 +2171,10 @@ std::shared_ptr Celldeck rJacobian[18][14] = 0.0; rJacobian[18][15] = 0.0; rJacobian[18][16] = 0.0; - rJacobian[18][17] = -(mDt * (var_x200)); - rJacobian[18][18] = 1.0 - (mDt * (var_x195 + var_x206)); + rJacobian[18][17] = -(mDt * (var_x204)); + rJacobian[18][18] = 1.0 - (mDt * (-var_x200 - var_x209)); rJacobian[18][19] = 0.0; - rJacobian[18][20] = -(mDt * (var_x204)); + rJacobian[18][20] = -(mDt * (var_x207)); rJacobian[18][21] = 0.0; rJacobian[18][22] = 0.0; rJacobian[18][23] = 0.0; @@ -2180,7 +2183,7 @@ std::shared_ptr Celldeck rJacobian[18][26] = 0.0; rJacobian[18][27] = 0.0; rJacobian[18][28] = 0.0; - rJacobian[18][29] = -(mDt * (var_x207)); + rJacobian[18][29] = -(mDt * (var_x210)); rJacobian[18][30] = 0.0; rJacobian[18][31] = 0.0; rJacobian[18][32] = 0.0; @@ -2203,10 +2206,10 @@ std::shared_ptr Celldeck rJacobian[19][14] = 0.0; rJacobian[19][15] = 0.0; rJacobian[19][16] = 0.0; - rJacobian[19][17] = -(mDt * (var_x199)); + rJacobian[19][17] = -(mDt * (var_x203)); rJacobian[19][18] = 0.0; - rJacobian[19][19] = 1.0 - (mDt * (var_x201 + var_x208)); - rJacobian[19][20] = -(mDt * (var_x192)); + rJacobian[19][19] = 1.0 - (mDt * (-var_x204 - var_x207)); + rJacobian[19][20] = -(mDt * (var_x198)); rJacobian[19][21] = 0.0; rJacobian[19][22] = 0.0; rJacobian[19][23] = 0.0; @@ -2239,10 +2242,10 @@ std::shared_ptr Celldeck rJacobian[20][15] = 0.0; rJacobian[20][16] = 0.0; rJacobian[20][17] = 0.0; - rJacobian[20][18] = -(mDt * (var_x205)); - rJacobian[20][19] = -(mDt * (var_x200)); - rJacobian[20][20] = 1.0 - (mDt * (var_x202 + var_x208)); - rJacobian[20][21] = -(mDt * (var_x209)); + rJacobian[20][18] = -(mDt * (var_x208)); + rJacobian[20][19] = -(mDt * (var_x204)); + rJacobian[20][20] = 1.0 - (mDt * (-var_x205 - var_x207)); + rJacobian[20][21] = -(mDt * (var_x211)); rJacobian[20][22] = 0.0; rJacobian[20][23] = 0.0; rJacobian[20][24] = 0.0; @@ -2276,8 +2279,8 @@ std::shared_ptr Celldeck rJacobian[21][17] = 0.0; rJacobian[21][18] = 0.0; rJacobian[21][19] = 0.0; - rJacobian[21][20] = -(mDt * (var_x199)); - rJacobian[21][21] = 1.0 - (mDt * (-0.089538306411019994 - var_x209)); + rJacobian[21][20] = -(mDt * (var_x203)); + rJacobian[21][21] = 1.0 - (mDt * (-0.089538306411019994 - var_x211)); rJacobian[21][22] = 0.0; rJacobian[21][23] = 0.0; rJacobian[21][24] = 0.0; @@ -2286,7 +2289,7 @@ std::shared_ptr Celldeck rJacobian[21][27] = 0.0; rJacobian[21][28] = 0.0; rJacobian[21][29] = 0.0; - rJacobian[21][30] = -(mDt * (var_x210)); + rJacobian[21][30] = -(mDt * (var_x212)); rJacobian[21][31] = 0.0; rJacobian[21][32] = 0.0; rJacobian[21][33] = 0.0; @@ -2306,18 +2309,18 @@ std::shared_ptr Celldeck rJacobian[22][12] = 0.0; rJacobian[22][13] = 0.0; rJacobian[22][14] = 0.0; - rJacobian[22][15] = -(mDt * (var_x190)); + rJacobian[22][15] = -(mDt * (var_x196)); rJacobian[22][16] = 0.0; rJacobian[22][17] = 0.0; rJacobian[22][18] = 0.0; rJacobian[22][19] = 0.0; rJacobian[22][20] = 0.0; rJacobian[22][21] = 0.0; - rJacobian[22][22] = 1.0 - (mDt * (var_x202 + var_x212)); - rJacobian[22][23] = -(mDt * (var_x203)); + rJacobian[22][22] = 1.0 - (mDt * (-var_x205 - var_x213)); + rJacobian[22][23] = -(mDt * (var_x206)); rJacobian[22][24] = 0.0; rJacobian[22][25] = 0.0; - rJacobian[22][26] = -(mDt * (var_x213)); + rJacobian[22][26] = -(mDt * (var_x214)); rJacobian[22][27] = 0.0; rJacobian[22][28] = 0.0; rJacobian[22][29] = 0.0; @@ -2348,12 +2351,12 @@ std::shared_ptr Celldeck rJacobian[23][19] = 0.0; rJacobian[23][20] = 0.0; rJacobian[23][21] = 0.0; - rJacobian[23][22] = -(mDt * (var_x211)); - rJacobian[23][23] = 1.0 - (mDt * (var_x197 + var_x206)); - rJacobian[23][24] = -(mDt * (var_x214)); + rJacobian[23][22] = -(mDt * (var_x213)); + rJacobian[23][23] = 1.0 - (mDt * (-var_x201 - var_x209)); + rJacobian[23][24] = -(mDt * (var_x215)); rJacobian[23][25] = 0.0; rJacobian[23][26] = 0.0; - rJacobian[23][27] = -(mDt * (var_x213)); + rJacobian[23][27] = -(mDt * (var_x214)); rJacobian[23][28] = 0.0; rJacobian[23][29] = 0.0; rJacobian[23][30] = 0.0; @@ -2384,12 +2387,12 @@ std::shared_ptr Celldeck rJacobian[24][20] = 0.0; rJacobian[24][21] = 0.0; rJacobian[24][22] = 0.0; - rJacobian[24][23] = -(mDt * (var_x196)); - rJacobian[24][24] = 1.0 - (mDt * (var_x201 + var_x215)); - rJacobian[24][25] = -(mDt * (var_x216)); + rJacobian[24][23] = -(mDt * (var_x201)); + rJacobian[24][24] = 1.0 - (mDt * (-var_x204 - var_x216)); + rJacobian[24][25] = -(mDt * (var_x217)); rJacobian[24][26] = 0.0; rJacobian[24][27] = 0.0; - rJacobian[24][28] = -(mDt * (var_x213)); + rJacobian[24][28] = -(mDt * (var_x214)); rJacobian[24][29] = 0.0; rJacobian[24][30] = 0.0; rJacobian[24][31] = 0.0; @@ -2420,12 +2423,12 @@ std::shared_ptr Celldeck rJacobian[25][21] = 0.0; rJacobian[25][22] = 0.0; rJacobian[25][23] = 0.0; - rJacobian[25][24] = -(mDt * (var_x200)); - rJacobian[25][25] = 1.0 - (mDt * (-var_x216 - var_x217)); + rJacobian[25][24] = -(mDt * (var_x204)); + rJacobian[25][25] = 1.0 - (mDt * (-var_x217 - var_x218)); rJacobian[25][26] = 0.0; rJacobian[25][27] = 0.0; rJacobian[25][28] = 0.0; - rJacobian[25][29] = -(mDt * (var_x213)); + rJacobian[25][29] = -(mDt * (var_x214)); rJacobian[25][30] = 0.0; rJacobian[25][31] = 0.0; rJacobian[25][32] = 0.0; @@ -2453,12 +2456,12 @@ std::shared_ptr Celldeck rJacobian[26][19] = 0.0; rJacobian[26][20] = 0.0; rJacobian[26][21] = 0.0; - rJacobian[26][22] = -(mDt * (var_x199)); + rJacobian[26][22] = -(mDt * (var_x203)); rJacobian[26][23] = 0.0; rJacobian[26][24] = 0.0; rJacobian[26][25] = 0.0; - rJacobian[26][26] = 1.0 - (mDt * (var_x212 + var_x218)); - rJacobian[26][27] = -(mDt * (var_x192)); + rJacobian[26][26] = 1.0 - (mDt * (-var_x213 - var_x214)); + rJacobian[26][27] = -(mDt * (var_x198)); rJacobian[26][28] = 0.0; rJacobian[26][29] = 0.0; rJacobian[26][30] = 0.0; @@ -2482,19 +2485,19 @@ std::shared_ptr Celldeck rJacobian[27][13] = 0.0; rJacobian[27][14] = 0.0; rJacobian[27][15] = 0.0; - rJacobian[27][16] = -(mDt * (var_x194)); + rJacobian[27][16] = -(mDt * (var_x200)); rJacobian[27][17] = 0.0; rJacobian[27][18] = 0.0; rJacobian[27][19] = 0.0; rJacobian[27][20] = 0.0; rJacobian[27][21] = 0.0; rJacobian[27][22] = 0.0; - rJacobian[27][23] = -(mDt * (var_x205)); + rJacobian[27][23] = -(mDt * (var_x208)); rJacobian[27][24] = 0.0; rJacobian[27][25] = 0.0; - rJacobian[27][26] = -(mDt * (var_x211)); - rJacobian[27][27] = 1.0 - (mDt * (var_x197 + var_x202 + var_x218)); - rJacobian[27][28] = -(mDt * (var_x203)); + rJacobian[27][26] = -(mDt * (var_x213)); + rJacobian[27][27] = 1.0 - (mDt * (-var_x201 - var_x205 - var_x214)); + rJacobian[27][28] = -(mDt * (var_x206)); rJacobian[27][29] = 0.0; rJacobian[27][30] = 0.0; rJacobian[27][31] = 0.0; @@ -2518,19 +2521,19 @@ std::shared_ptr Celldeck rJacobian[28][14] = 0.0; rJacobian[28][15] = 0.0; rJacobian[28][16] = 0.0; - rJacobian[28][17] = -(mDt * (var_x194)); + rJacobian[28][17] = -(mDt * (var_x200)); rJacobian[28][18] = 0.0; rJacobian[28][19] = 0.0; rJacobian[28][20] = 0.0; rJacobian[28][21] = 0.0; rJacobian[28][22] = 0.0; rJacobian[28][23] = 0.0; - rJacobian[28][24] = -(mDt * (var_x207)); + rJacobian[28][24] = -(mDt * (var_x210)); rJacobian[28][25] = 0.0; rJacobian[28][26] = 0.0; - rJacobian[28][27] = -(mDt * (var_x196)); - rJacobian[28][28] = 1.0 - (mDt * (var_x201 + var_x206 + var_x218)); - rJacobian[28][29] = -(mDt * (var_x214)); + rJacobian[28][27] = -(mDt * (var_x201)); + rJacobian[28][28] = 1.0 - (mDt * (-var_x204 - var_x209 - var_x214)); + rJacobian[28][29] = -(mDt * (var_x215)); rJacobian[28][30] = 0.0; rJacobian[28][31] = 0.0; rJacobian[28][32] = 0.0; @@ -2554,18 +2557,18 @@ std::shared_ptr Celldeck rJacobian[29][15] = 0.0; rJacobian[29][16] = 0.0; rJacobian[29][17] = 0.0; - rJacobian[29][18] = -(mDt * (var_x194)); + rJacobian[29][18] = -(mDt * (var_x200)); rJacobian[29][19] = 0.0; rJacobian[29][20] = 0.0; rJacobian[29][21] = 0.0; rJacobian[29][22] = 0.0; rJacobian[29][23] = 0.0; rJacobian[29][24] = 0.0; - rJacobian[29][25] = -(mDt * (var_x217)); + rJacobian[29][25] = -(mDt * (var_x218)); rJacobian[29][26] = 0.0; rJacobian[29][27] = 0.0; - rJacobian[29][28] = -(mDt * (var_x200)); - rJacobian[29][29] = 1.0 - (mDt * (var_x215 + var_x218)); + rJacobian[29][28] = -(mDt * (var_x204)); + rJacobian[29][29] = 1.0 - (mDt * (-var_x214 - var_x216)); rJacobian[29][30] = 0.0; rJacobian[29][31] = 0.0; rJacobian[29][32] = 0.0; @@ -2586,41 +2589,41 @@ std::shared_ptr Celldeck rJacobian[30][12] = 0.0; rJacobian[30][13] = 0.0; rJacobian[30][14] = 0.0; - rJacobian[30][15] = -(mDt * (var_x219)); - rJacobian[30][16] = -(mDt * (var_x219)); - rJacobian[30][17] = -(mDt * (var_x219)); - rJacobian[30][18] = -(mDt * (var_x219)); - rJacobian[30][19] = -(mDt * (var_x219)); - rJacobian[30][20] = -(mDt * (var_x219)); - rJacobian[30][21] = -(mDt * (0.089538306411019994 + var_x219)); - rJacobian[30][22] = -(mDt * (var_x219)); - rJacobian[30][23] = -(mDt * (var_x219)); - rJacobian[30][24] = -(mDt * (var_x219)); - rJacobian[30][25] = -(mDt * (var_x219)); - rJacobian[30][26] = -(mDt * (var_x219)); - rJacobian[30][27] = -(mDt * (var_x219)); - rJacobian[30][28] = -(mDt * (var_x219)); - rJacobian[30][29] = -(mDt * (var_x219)); - rJacobian[30][30] = 1.0 - (mDt * (var_x219 - var_x210 + _lt_0_row[38])); + rJacobian[30][15] = -(mDt * (var_x220)); + rJacobian[30][16] = -(mDt * (var_x220)); + rJacobian[30][17] = -(mDt * (var_x220)); + rJacobian[30][18] = -(mDt * (var_x220)); + rJacobian[30][19] = -(mDt * (var_x220)); + rJacobian[30][20] = -(mDt * (var_x220)); + rJacobian[30][21] = -(mDt * (0.089538306411019994 - var_x219)); + rJacobian[30][22] = -(mDt * (var_x220)); + rJacobian[30][23] = -(mDt * (var_x220)); + rJacobian[30][24] = -(mDt * (var_x220)); + rJacobian[30][25] = -(mDt * (var_x220)); + rJacobian[30][26] = -(mDt * (var_x220)); + rJacobian[30][27] = -(mDt * (var_x220)); + rJacobian[30][28] = -(mDt * (var_x220)); + rJacobian[30][29] = -(mDt * (var_x220)); + rJacobian[30][30] = 1.0 - (mDt * (-var_x212 - var_x219 + _lt_0_row[38])); rJacobian[30][31] = 0.0; rJacobian[30][32] = 0.0; rJacobian[30][33] = 0.0; rJacobian[30][34] = 0.0; - rJacobian[31][0] = -(mDt * (6.2357214041141957e-6 * var_x224 * var_x234 + 0.00014069346418032653 * var_x224 * var_x237)); - rJacobian[31][1] = -(mDt * (-0.0123 * var_x233 * var_x235 / pow(var_chaste_interface__Ca__Ca_JSR, 2) - 8 * var_x112 * var_x225 * var_x226 * var_x229 * mParameters[1] / pow(var_x230, 2))); + rJacobian[31][0] = -(mDt * (6.2357214041141957e-6 * var_x225 * var_x235 + 0.00014069346418032653 * var_x225 * var_x238)); + rJacobian[31][1] = -(mDt * (-0.0123 * var_x234 * var_x236 / pow(var_chaste_interface__Ca__Ca_JSR, 2) - 8 * var_x114 * var_x226 * var_x227 * var_x230 * mParameters[1] / pow(var_x231, 2))); rJacobian[31][2] = 0.0; rJacobian[31][3] = 0.0; - rJacobian[31][4] = -(mDt * (-var_x108 * var_x238)); - rJacobian[31][5] = -(mDt * (-4.6767910530856466e-10 * var_x234 * var_x239 - 1.0552009813524491e-8 * var_x237 * var_x239)); + rJacobian[31][4] = -(mDt * (-var_x110 * var_x239)); + rJacobian[31][5] = -(mDt * (-4.6767910530856466e-10 * var_x235 * var_x240 - 1.0552009813524491e-8 * var_x238 * var_x240)); rJacobian[31][6] = 0.0; rJacobian[31][7] = 0.0; rJacobian[31][8] = 0.0; rJacobian[31][9] = 0.0; rJacobian[31][10] = 0.0; rJacobian[31][11] = 0.0; - rJacobian[31][12] = -(mDt * (var_x240)); + rJacobian[31][12] = -(mDt * (var_x241)); rJacobian[31][13] = 0.0; - rJacobian[31][14] = -(mDt * (var_x240)); + rJacobian[31][14] = -(mDt * (var_x241)); rJacobian[31][15] = 0.0; rJacobian[31][16] = 0.0; rJacobian[31][17] = 0.0; @@ -2637,17 +2640,17 @@ std::shared_ptr Celldeck rJacobian[31][28] = 0.0; rJacobian[31][29] = 0.0; rJacobian[31][30] = 0.0; - rJacobian[31][31] = 1.0 - (mDt * (-var_x236)); + rJacobian[31][31] = 1.0 - (mDt * (-var_x237)); rJacobian[31][32] = 0.0; rJacobian[31][33] = 0.0; rJacobian[31][34] = 0.0; rJacobian[32][0] = 0.0; rJacobian[32][1] = 0.0; rJacobian[32][2] = 0.0; - rJacobian[32][3] = -(mDt * (-3.3595190743871034e-11 * var_x241 * var_x242 * var_x245 * var_x246 * mParameters[16] / pow(var_x243, 2))); + rJacobian[32][3] = -(mDt * (-3.3595190743871034e-11 * var_x242 * var_x243 * var_x246 * var_x247 * mParameters[16] / pow(var_x244, 2))); rJacobian[32][4] = 0.0; rJacobian[32][5] = 0.0; - rJacobian[32][6] = -(mDt * (var_x129)); + rJacobian[32][6] = -(mDt * (-var_x131 + var_x124 * var_x141)); rJacobian[32][7] = 0.0; rJacobian[32][8] = 0.0; rJacobian[32][9] = 0.0; @@ -2656,33 +2659,33 @@ std::shared_ptr Celldeck rJacobian[32][12] = 0.0; rJacobian[32][13] = 0.0; rJacobian[32][14] = 0.0; - rJacobian[32][15] = -(mDt * (var_x248)); - rJacobian[32][16] = -(mDt * (var_x248)); - rJacobian[32][17] = -(mDt * (var_x248)); - rJacobian[32][18] = -(mDt * (var_x248)); - rJacobian[32][19] = -(mDt * (var_x248)); - rJacobian[32][20] = -(mDt * (var_x248)); - rJacobian[32][21] = -(mDt * (var_x248)); - rJacobian[32][22] = -(mDt * (var_x248)); - rJacobian[32][23] = -(mDt * (var_x248)); - rJacobian[32][24] = -(mDt * (var_x248)); - rJacobian[32][25] = -(mDt * (var_x248)); - rJacobian[32][26] = -(mDt * (var_x248)); - rJacobian[32][27] = -(mDt * (var_x248)); - rJacobian[32][28] = -(mDt * (var_x248)); - rJacobian[32][29] = -(mDt * (var_x248)); + rJacobian[32][15] = -(mDt * (var_x249)); + rJacobian[32][16] = -(mDt * (var_x249)); + rJacobian[32][17] = -(mDt * (var_x249)); + rJacobian[32][18] = -(mDt * (var_x249)); + rJacobian[32][19] = -(mDt * (var_x249)); + rJacobian[32][20] = -(mDt * (var_x249)); + rJacobian[32][21] = -(mDt * (var_x249)); + rJacobian[32][22] = -(mDt * (var_x249)); + rJacobian[32][23] = -(mDt * (var_x249)); + rJacobian[32][24] = -(mDt * (var_x249)); + rJacobian[32][25] = -(mDt * (var_x249)); + rJacobian[32][26] = -(mDt * (var_x249)); + rJacobian[32][27] = -(mDt * (var_x249)); + rJacobian[32][28] = -(mDt * (var_x249)); + rJacobian[32][29] = -(mDt * (var_x249)); rJacobian[32][30] = 0.0; rJacobian[32][31] = 0.0; - rJacobian[32][32] = 1.0 - (mDt * (var_x136 + 26.712338705498265 * var_x250 - var_x249 * mParameters[14] / (_lt_0_row[8]) - 0.00072346244967216237 * var_x252 * var_x263 * var_x264 + 0.00017254579424681073 * var_x263 * var_x265 * var_x266 * mParameters[12] - 0.00070927691144329649 * var_x252 * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr / (_lt_0_row[9]) - 2.6031772383887529e-5 * var_x264 * var_x266 * (6.4983106368865622 * var_x265 - var_x258 * (1.053972635420138 * var_x123 * var_x259 + 1.6494869150645177 * var_x123 * var_x260) - 13.738155796237757 * var_x123 * var_x256 * var_x261 / pow(var_x257, 2)) / pow((var_x255 + 0.98039215686274506 * var_x262), 2) - var_x249 * pow(var_chaste_interface__Ito1_a_gate__a, 3) * mParameters[20] * var_chaste_interface__Ito1_i1f_gate__i1f * var_chaste_interface__Ito1_i1s_gate__i1s * _lt_0_row[10])); - rJacobian[32][33] = -(mDt * (2.1063570778339494e-5 * var_x269 + 0.48963716847178318 * var_x250 - 8.1013733762844218e-6 * var_x270)); + rJacobian[32][32] = 1.0 - (mDt * (-var_x140 - 0.0016482105995215921 * var_x251 - var_x250 * mParameters[14] / (_lt_0_row[8]) + 6.1298221377044294e-8 * var_x126 * var_x129 * var_x132 - 0.00072346244967216237 * var_x253 * var_x264 * var_x265 - 0.00070927691144329649 * var_x253 * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr / (_lt_0_row[9]) - 2.6031772383887529e-5 * var_x252 * var_x265 * var_x267 * (-var_x259 * (1.053972635420138 * var_x126 * var_x260 + 1.6494869150645177 * var_x126 * var_x261) + 6.4983106368865622 * var_x126 * var_x254 * var_x266 - 13.738155796237757 * var_x126 * var_x257 * var_x262 / pow(var_x258, 2)) / pow((var_x256 + 0.98039215686274506 * var_x263), 2) - var_x250 * pow(var_chaste_interface__Ito1_a_gate__a, 3) * mParameters[20] * var_chaste_interface__Ito1_i1f_gate__i1f * var_chaste_interface__Ito1_i1s_gate__i1s * _lt_0_row[10] + 0.00017254579424681073 * var_x126 * var_x252 * var_x254 * var_x264 * var_x266 * var_x267 * mParameters[12])); + rJacobian[32][33] = -(mDt * (-3.0211700289230781e-5 * var_x251 - 8.1013733762844218e-6 * var_x269 * var_x272 * var_x51 + 2.1063570778339494e-5 * var_x270 * var_x271 * var_x273 * var_x88 * mParameters[18] * mParameters[4])); rJacobian[32][34] = 0.0; rJacobian[33][0] = 0.0; rJacobian[33][1] = 0.0; rJacobian[33][2] = 0.0; - rJacobian[33][3] = -(mDt * (-4.6276665000011881e-12 * var_x67 - var_x271 * var_x50 + var_x49 * var_x59 * var_x96)); + rJacobian[33][3] = -(mDt * (-var_x274 * var_x66 - 4.6276665000011881e-12 * var_x65 * var_x67 * var_x68 * var_x93 + 0.00014808532800003802 * var_x50 * var_x53 * var_x57 * var_x59 * var_x60 * mParameters[17])); rJacobian[33][4] = 0.0; - rJacobian[33][5] = -(mDt * (3.7021332000009505e-5 * var_x90 - 1.156916625000297e-12 * var_x89 - var_x272 * var_x50)); - rJacobian[33][6] = -(mDt * (var_x135)); + rJacobian[33][5] = -(mDt * (-1.156916625000297e-12 * var_x121 - var_x275 * var_x66 + 3.7021332000009505e-5 * var_x53 * var_x59 * var_x60 * var_x77 * var_x79 * mParameters[17])); + rJacobian[33][6] = -(mDt * (-var_x139)); rJacobian[33][7] = 0.0; rJacobian[33][8] = 0.0; rJacobian[33][9] = 0.0; @@ -2709,14 +2712,14 @@ std::shared_ptr Celldeck rJacobian[33][30] = 0.0; rJacobian[33][31] = 0.0; rJacobian[33][32] = 0.0; - rJacobian[33][33] = 1.0 - (mDt * (-0.14749262536873156 + var_x137 + 1.2152060064426631e-5 * var_x270 - 3.1595356167509241e-5 * var_x269 - 6.1702220000015831e-5 * ((var_x142) ? (var_x273 * (96485 - 1806.0006101251679 * var_chaste_interface__membrane__Vm)) : (var_x145 * var_x273)) - var_x271 * var_x94 - 0.00044425598400011404 * var_x95 * var_x98 - var_x274 * pow(var_chaste_interface__INaL_mL_gate__mL, 3) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL - var_x274 * pow(var_chaste_interface__INa_m_gate__m, 3) * mParameters[11] * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j)); - rJacobian[33][34] = -(mDt * (0.14749262536873156 - 0.00011106399600002851 * var_x101 - var_x100 * var_x272)); + rJacobian[33][33] = 1.0 - (mDt * (-0.14749262536873156 - var_x142 - 6.1702220000015831e-5 * ((var_x148) ? (var_x144 * var_x276) : (var_x151 * var_x276)) - var_x274 * var_x91 - 0.00044425598400011404 * var_x94 * var_x96 - 3.1595356167509241e-5 * var_x272 * var_x273 * var_x88 - var_x277 * pow(var_chaste_interface__INaL_mL_gate__mL, 3) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL - var_x277 * pow(var_chaste_interface__INa_m_gate__m, 3) * mParameters[11] * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j + 1.2152060064426631e-5 * var_x269 * var_x270 * var_x271 * var_x51 * mParameters[18] * mParameters[4])); + rJacobian[33][34] = -(mDt * (0.14749262536873156 - 0.00011106399600002851 * var_x101 - var_x275 * var_x98)); rJacobian[34][0] = 0.0; rJacobian[34][1] = 0.0; rJacobian[34][2] = 0.0; rJacobian[34][3] = 0.0; rJacobian[34][4] = 0.0; - rJacobian[34][5] = -(mDt * (0.0012550231548003222 * var_x90 - 3.9219473587510072e-11 * var_x89 - var_x275 * var_x50)); + rJacobian[34][5] = -(mDt * (-3.9219473587510072e-11 * var_x121 - var_x278 * var_x66 + 0.0012550231548003222 * var_x53 * var_x59 * var_x60 * var_x77 * var_x79 * mParameters[17])); rJacobian[34][6] = 0.0; rJacobian[34][7] = 0.0; rJacobian[34][8] = 0.0; @@ -2745,7 +2748,7 @@ std::shared_ptr Celldeck rJacobian[34][31] = 0.0; rJacobian[34][32] = 0.0; rJacobian[34][33] = -(mDt * (5)); - rJacobian[34][34] = 1.0 - (mDt * (-5 - 0.0037650694644009667 * var_x101 - var_x100 * var_x275)); + rJacobian[34][34] = 1.0 - (mDt * (-5 - 0.0037650694644009667 * var_x101 - var_x278 * var_x98)); } void Celldecker_2009FromCellMLBackwardEulerOpt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) @@ -2838,14 +2841,14 @@ std::shared_ptr Celldeck const double var_IKs__O2 = 1 - var_chaste_interface__IKs__C1 - var_chaste_interface__IKs__C10 - var_chaste_interface__IKs__C11 - var_chaste_interface__IKs__C12 - var_chaste_interface__IKs__C13 - var_chaste_interface__IKs__C14 - var_chaste_interface__IKs__C15 - var_chaste_interface__IKs__C2 - var_chaste_interface__IKs__C3 - var_chaste_interface__IKs__C4 - var_chaste_interface__IKs__C5 - var_chaste_interface__IKs__C6 - var_chaste_interface__IKs__C7 - var_chaste_interface__IKs__C8 - var_chaste_interface__IKs__C9 - var_chaste_interface__IKs__O1; // dimensionless const double var_IpCa__IpCa = var_chaste_interface__Ca__Ca_i * mParameters[10] / (0.00050000000000000001 + var_chaste_interface__Ca__Ca_i); // uA_per_uF const double var_membrane__i_Stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF - const double var_ICaL__ICaL = (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((var_chaste_interface__membrane__Vm >= -1.3356169352749131e-6) && (var_chaste_interface__membrane__Vm <= 1.3356169352749131e-6)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (14448.004881001343 * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6] * var_chaste_interface__membrane__Vm / (_lt_0_row[5]))); // uA_per_uF - const double var_ICab__ICab = (((var_chaste_interface__membrane__Vm >= -1.3356169352749131e-6) && (var_chaste_interface__membrane__Vm <= 1.3356169352749131e-6)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (14448.004881001343 * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7] * var_chaste_interface__membrane__Vm / (_lt_0_row[5]))); // uA_per_uF + const double var_ICaL__ICaL = (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (14448.004881001343 * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6] * var_chaste_interface__membrane__Vm / (_lt_0_row[5]))); // uA_per_uF + const double var_ICab__ICab = (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (14448.004881001343 * (-0.34100000000000003 * mParameters[3] + var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7] * var_chaste_interface__membrane__Vm / (_lt_0_row[5]))); // uA_per_uF const double var_INaCa__INaCa_ss_sr = 0.20000000000000001 * (pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr * _lt_0_row[1]) * mParameters[17] / ((_lt_0_row[2]) * (1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_ss_sr, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_ss_sr + 1.3 * pow(var_chaste_interface__Na__Na_ss_sr, 3) + pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_ss_sr, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3])); // uA_per_uF const double var_INaCa__INaCa = 0.80000000000000004 * (pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * _lt_0_row[1]) * mParameters[17] / ((_lt_0_row[2]) * (1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_i, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_i + 1.3 * pow(var_chaste_interface__Na__Na_i, 3) + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_i, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_i) * mParameters[3])) + var_INaCa__INaCa_ss_sr; // uA_per_uF const double var_INaK__INaK = 0.056895766954938545 * pow(var_chaste_interface__Na__Na_i, 3) * mParameters[18] * mParameters[4] / (pow((1 + 0.38461538461538458 * var_chaste_interface__Na__Na_i), 3) * (_lt_0_row[3]) * (1.5 + mParameters[4])); // uA_per_uF const double var_INab__phi = 0.037435883507802616 * var_chaste_interface__membrane__Vm; // dimensionless const double var_INab__INab = (((var_INab__phi >= -9.9999999999999995e-8) && (var_INab__phi <= 9.9999999999999995e-8)) ? (96485 * (1 - 0.5 * var_INab__phi) * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9]) : (96485 * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9] * var_INab__phi / (-1 + exp(var_INab__phi)))); // uA_per_uF - const double var_Ito2__Ito2 = (1 - 1 / (1 + 6.2499999999999991 * pow(var_chaste_interface__Irel__Irel, 2))) * (((var_chaste_interface__membrane__Vm >= -2.6712338705498262e-6) && (var_chaste_interface__membrane__Vm <= 2.6712338705498262e-6)) ? (-96485 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-3612.0012202503358 * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19] * var_chaste_interface__membrane__Vm / (_lt_0_row[7]))) * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF + const double var_Ito2__Ito2 = (1 - 1 / (1 + 6.2499999999999991 * pow(var_chaste_interface__Irel__Irel, 2))) * (((0.037435883507802616 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.037435883507802616 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (-96485 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-3612.0012202503358 * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19] * var_chaste_interface__membrane__Vm / (_lt_0_row[7]))) * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF const double var_reversal_potentials__ECl = -26.712338705498265 * log(100 / var_chaste_interface__Cl__Cl_i); // mV const double var_IClb__IClb = (-var_reversal_potentials__ECl + var_chaste_interface__membrane__Vm) * mParameters[8]; // uA_per_uF const double var_reversal_potentials__EK = 26.712338705498265 * log(mParameters[4] / var_chaste_interface__K__K_i); // mV diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009--sympy_1_13.cpp new file mode 100644 index 00000000..c69923aa --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009--sympy_1_13.cpp @@ -0,0 +1,3652 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: decker_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEulerOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "decker_2009.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + +class Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<47; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__Vm) + { + const double _offset_0 = var_chaste_interface__membrane__Vm - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__Vm) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__Vm>mTableMaxs[0] || var_chaste_interface__membrane__Vm= 2){ + EXCEPTION("Lookup table 4 at ["<= 2){ + EXCEPTION("Lookup table 5 at ["<= 2){ + EXCEPTION("Lookup table 6 at ["<= 2){ + EXCEPTION("Lookup table 7 at ["<= -9.9999999999999995e-8) && (-0.2364224 + 0.13600000000000001 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (0.0038902447058823523 + 0.00029999999999999997 * var_chaste_interface__membrane__Vm) : (-0.004411764705882352 * (-0.2364224 + 0.13600000000000001 * var_chaste_interface__membrane__Vm) / (-1 + exp(0.2364224 - 0.13600000000000001 * var_chaste_interface__membrane__Vm)))) + 1 * (((5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (-0.0037830293298291716 - 0.00014999999999999999 * var_chaste_interface__membrane__Vm) : (0.0019710906701708277 * (5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm) / (-1 + exp(5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm)))); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + + _lookup_table_0[i][19] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__Vm) { + return 0.0016666666666666668 / (1 + exp(14.918032786885247 + 0.16393442622950821 * var_chaste_interface__membrane__Vm)); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + + _lookup_table_0[i][20] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__Vm) { + return (((4.7130000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (4.7130000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (10.7408 + 0.16 * var_chaste_interface__membrane__Vm) : (-3.1999999999999997 * (4.7130000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__Vm) / (-1 + exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__Vm)))); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[21] < 2){ + double left = f(var_chaste_interface__membrane__Vm - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__Vm + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[21] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[21] >= 2){ + EXCEPTION("Lookup table 21 at ["<= -40) ? (0) : (0.13500000000000001 * exp(-11.764705882352942 - 0.14705882352941177 * var_chaste_interface__membrane__Vm))); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[23] < 2){ + double left = f(var_chaste_interface__membrane__Vm - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__Vm + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[23] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[23] >= 2){ + EXCEPTION("Lookup table 23 at ["<= -40) ? (7.6923076923076916 / (1 + exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__membrane__Vm))) : (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__Vm) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__Vm))); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[24] < 2){ + double left = f(var_chaste_interface__membrane__Vm - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__Vm + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[24] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[24] >= 2){ + EXCEPTION("Lookup table 24 at ["<= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane__Vm) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__Vm) - 6.9480000000000006e-5 * exp(-0.043909999999999998 * var_chaste_interface__membrane__Vm)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__Vm)))); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[25] < 2){ + double left = f(var_chaste_interface__membrane__Vm - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__Vm + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[25] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[25] >= 2){ + EXCEPTION("Lookup table 25 at ["<= -40) ? (0.29999999999999999 * exp(-2.5349999999999999e-7 * var_chaste_interface__membrane__Vm) / (1 + exp(-3.2000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__Vm))) : (0.1212 * exp(-0.01052 * var_chaste_interface__membrane__Vm) / (1 + exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__membrane__Vm)))); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[26] < 2){ + double left = f(var_chaste_interface__membrane__Vm - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__Vm + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[26] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[26] >= 2){ + EXCEPTION("Lookup table 26 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[47]; + + // Lookup tables + double (*_lookup_table_0)[47]; + int _lookup_table_0_num_misshit_piecewise[47] = {0}; + +}; + +std::shared_ptr Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::mpInstance; + + + boost::shared_ptr Celldecker_2009FromCellMLBackwardEulerOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 0.5; // ms + const double var_chaste_interface__membrane__stim_offset = 0; // ms + const double var_chaste_interface__membrane__stim_period = 1000; // ms + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_offset + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Celldecker_2009FromCellMLBackwardEulerOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Celldecker_2009FromCellMLBackwardEulerOpt::Celldecker_2009FromCellMLBackwardEulerOpt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<35>( + 46, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 0.0043750000000000004; // (var_Ileak__Ileak_max) [mM_per_ms] + this->mParameters[1] = 0.1125; // (var_Irel__kappa) [mM_per_uA_per_uF_per_ms_per_ms] + this->mParameters[2] = 0.0043750000000000004; // (var_Iup__iupbar) [mM_per_ms] + this->mParameters[3] = 1.8; // (var_model_parameters__Ca_o) [mM] + this->mParameters[4] = 5.4000000000000004; // (var_model_parameters__K_o) [mM] + this->mParameters[5] = 140; // (var_model_parameters__Na_o) [mM] + this->mParameters[6] = 0.00015552; // (var_ICaL__PCa) [L_per_F_ms] + this->mParameters[7] = 1.9950799999999999e-7; // (var_ICab__PCab) [L_per_F_ms] + this->mParameters[8] = 0.00022499999999999999; // (var_IClb__gClb) [mS_per_uF] + this->mParameters[9] = 3.2000000000000001e-9; // (var_INab__PNab) [L_per_F_ms] + this->mParameters[10] = 0.057500000000000002; // (var_IpCa__gpCa) [uA_per_uF] + this->mParameters[11] = 9.0749999999999993; // (var_INa__g_Na) [mS_per_uF] + this->mParameters[12] = 0.5; // (var_IK1__g_K1_max) [mS_per_uF] + this->mParameters[13] = 0.0064999999999999997; // (var_INaL__gNaL) [mS_per_uF] + this->mParameters[14] = 0.0027599999999999999; // (var_IKp__gKp) [mS_per_uF] + this->mParameters[15] = 0.013854200000000001; // (var_IKr__gKr_max) [mS_per_uF] + this->mParameters[16] = 0.082600000000000007; // (var_IKs__gKs_max) [mS_per_uF] + this->mParameters[17] = 4.5; // (var_INaCa__Vmax) [uA_per_uF] + this->mParameters[18] = 1.3999999999999999; // (var_INaK__ibarnak) [uA_per_uF] + this->mParameters[19] = 8.9999999999999996e-7; // (var_Ito2__PCl) [L_per_F_ms] + this->mParameters[20] = 0.49745800000000001; // (var_Ito1__gto1) [mS_per_uF] + } + + Celldecker_2009FromCellMLBackwardEulerOpt::~Celldecker_2009FromCellMLBackwardEulerOpt() + { + } + + AbstractLookupTableCollection* Celldecker_2009FromCellMLBackwardEulerOpt::GetLookupTableCollection() + { + return Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance(); + } + + void Celldecker_2009FromCellMLBackwardEulerOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 46; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Celldecker_2009FromCellMLBackwardEulerOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -87.4947322902196 + double var_chaste_interface__Ca__Ca_i = rY[1]; + // Units: mM; Initial value: 8.38749860095482e-05 + double var_chaste_interface__IKs__C1 = rY[2]; + // Units: dimensionless; Initial value: 0.476679784307081 + double var_chaste_interface__IKs__C2 = rY[3]; + // Units: dimensionless; Initial value: 0.255181042718489 + double var_chaste_interface__IKs__C3 = rY[4]; + // Units: dimensionless; Initial value: 0.0512272866698557 + double var_chaste_interface__IKs__C4 = rY[5]; + // Units: dimensionless; Initial value: 0.0045705849736195 + double var_chaste_interface__IKs__C5 = rY[6]; + // Units: dimensionless; Initial value: 0.000152923243503507 + double var_chaste_interface__IKs__C6 = rY[7]; + // Units: dimensionless; Initial value: 0.132814156809568 + double var_chaste_interface__IKs__C7 = rY[8]; + // Units: dimensionless; Initial value: 0.053324572164618 + double var_chaste_interface__IKs__C8 = rY[9]; + // Units: dimensionless; Initial value: 0.00713656414955778 + double var_chaste_interface__IKs__C9 = rY[10]; + // Units: dimensionless; Initial value: 0.000318368292970148 + double var_chaste_interface__IKs__C10 = rY[11]; + // Units: dimensionless; Initial value: 0.0138769647384953 + double var_chaste_interface__IKs__C11 = rY[12]; + // Units: dimensionless; Initial value: 0.00371438476499172 + double var_chaste_interface__IKs__C12 = rY[13]; + // Units: dimensionless; Initial value: 0.000248553788631871 + double var_chaste_interface__IKs__C13 = rY[14]; + // Units: dimensionless; Initial value: 0.000644426171899078 + double var_chaste_interface__IKs__C14 = rY[15]; + // Units: dimensionless; Initial value: 8.62495047666861e-05 + double var_chaste_interface__IKs__C15 = rY[16]; + // Units: dimensionless; Initial value: 1.12344645485893e-05 + double var_chaste_interface__ICaL__O = rY[19]; + // Units: dimensionless; Initial value: 2.26882961412491e-05 + double var_chaste_interface__ICaL__O_star = rY[21]; + // Units: dimensionless; Initial value: 1.23556404128518e-10 + double var_chaste_interface__INa_m_gate__m = rY[25]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INa_h_gate__h = rY[26]; + // Units: dimensionless; Initial value: 0.991354143386887 + double var_chaste_interface__INa_j_gate__j = rY[27]; + // Units: dimensionless; Initial value: 0.99709036251243 + double var_chaste_interface__INaL_mL_gate__mL = rY[28]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INaL_hL_gate__hL = rY[29]; + // Units: dimensionless; Initial value: 0.319611809402137 + double var_chaste_interface__IKr_xr_gate__xr = rY[30]; + // Units: dimensionless; Initial value: 4.06959064407486e-06 + double var_chaste_interface__Ito1_a_gate__a = rY[31]; + // Units: dimensionless; Initial value: 1.76776038804228e-05 + double var_chaste_interface__Ito1_i1f_gate__i1f = rY[32]; + // Units: dimensionless; Initial value: 0.997976503910799 + double var_chaste_interface__Ito1_i1s_gate__i1s = rY[33]; + // Units: dimensionless; Initial value: 0.947581184798815 + double var_chaste_interface__Ito2_i2f_gate__i2f = rY[34]; + // Units: dimensionless; Initial value: 0.996044894628276 + double var_chaste_interface__Irel__Irel = rY[35]; + // Units: mM_per_ms; Initial value: 0.000714227102027745 + double var_chaste_interface__Ca__Ca_ss_sr = rY[38]; + // Units: mM; Initial value: 0.00011296707102434 + double var_chaste_interface__Ca__Ca_ss_CaL = rY[39]; + // Units: mM; Initial value: 0.000119239795531548 + double var_chaste_interface__Na__Na_i = rY[40]; + // Units: mM; Initial value: 8.01031392415197 + double var_chaste_interface__Na__Na_ss_sr = rY[41]; + // Units: mM; Initial value: 8.01033434859049 + double var_chaste_interface__Cl__Cl_i = rY[42]; + // Units: mM; Initial value: 20.6683603724432 + double var_chaste_interface__K__K_i = rY[44]; + // Units: mM; Initial value: 144.907134343314 + + // Lookup table indexing + const bool _oob_0 = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_INaCa__INaCa_ss_sr = 0.20000000000000001 * _lt_0_row[2] * (pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr * _lt_0_row[1]) * mParameters[17] / ((1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_ss_sr, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_ss_sr + 1.3 * pow(var_chaste_interface__Na__Na_ss_sr, 3) + pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_ss_sr, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3])); // uA_per_uF + const double var_INaCa__INaCa = 0.80000000000000004 * _lt_0_row[2] * (pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * _lt_0_row[1]) * mParameters[17] / ((1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_i, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_i + 1.3 * pow(var_chaste_interface__Na__Na_i, 3) + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_i, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_i) * mParameters[3])) + var_INaCa__INaCa_ss_sr; // uA_per_uF + const double var_INaK__INaK = 0.056895766954938545 * _lt_0_row[3] * pow(var_chaste_interface__Na__Na_i, 3) * mParameters[18] * mParameters[4] / (pow((1 + 0.38461538461538458 * var_chaste_interface__Na__Na_i), 3) * (1.5 + mParameters[4])); // uA_per_uF + const double var_INab__phi = 0.037435883507802616 * var_chaste_interface__membrane__Vm; // dimensionless + const double var_membrane__caiont = -2 * var_INaCa__INaCa - 2 * var_INaCa__INaCa_ss_sr + (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (14448.004881001343 * _lt_0_row[5] * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6] * var_chaste_interface__membrane__Vm)) + var_chaste_interface__Ca__Ca_i * mParameters[10] / (0.00050000000000000001 + var_chaste_interface__Ca__Ca_i) + (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (14448.004881001343 * _lt_0_row[5] * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7] * var_chaste_interface__membrane__Vm)); // uA_per_uF + const double var_membrane__clont = (26.712338705498265 * log(100 / var_chaste_interface__Cl__Cl_i) + var_chaste_interface__membrane__Vm) * mParameters[8] + 1 * (1 - 1 / (1 + 6.2499999999999991 * pow(var_chaste_interface__Irel__Irel, 2))) * (((0.037435883507802616 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.037435883507802616 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (-96485 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-3612.0012202503358 * _lt_0_row[7] * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19] * var_chaste_interface__membrane__Vm)) * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF + const double var_reversal_potentials__EK = 26.712338705498265 * log(mParameters[4] / var_chaste_interface__K__K_i); // mV + const double var_reversal_potentials__ENa = 26.712338705498265 * log(mParameters[5] / var_chaste_interface__Na__Na_i); // mV + const double var_membrane__naiont = 3 * var_INaCa__INaCa + 3 * var_INaCa__INaCa_ss_sr + 3 * var_INaK__INaK + pow(var_chaste_interface__INaL_mL_gate__mL, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL + pow(var_chaste_interface__INa_m_gate__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[11] * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j + (((1 * var_INab__phi >= -9.9999999999999995e-8) && (1 * var_INab__phi <= 9.9999999999999995e-8)) ? (96485 * (1 - 0.5 * var_INab__phi) * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9]) : (96485 * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9] * var_INab__phi / (-1 + exp(1 * var_INab__phi)))); // uA_per_uF + const double var_membrane__kiont = -2 * var_INaK__INaK + 1 * _lt_0_row[8] * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[14] + (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[5] + mParameters[4]) / (0.018329999999999999 * var_chaste_interface__Na__Na_i + var_chaste_interface__K__K_i)) + var_chaste_interface__membrane__Vm) * (1 - var_chaste_interface__IKs__C1 - var_chaste_interface__IKs__C10 - var_chaste_interface__IKs__C11 - var_chaste_interface__IKs__C12 - var_chaste_interface__IKs__C13 - var_chaste_interface__IKs__C14 - var_chaste_interface__IKs__C15 - var_chaste_interface__IKs__C2 - var_chaste_interface__IKs__C3 - var_chaste_interface__IKs__C4 - var_chaste_interface__IKs__C5 - var_chaste_interface__IKs__C6 - var_chaste_interface__IKs__C7 - var_chaste_interface__IKs__C8 - var_chaste_interface__IKs__C9) * mParameters[16] + 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr + 0.4389381125701739 * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[12] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__Vm - 0.080320000000000003 * var_reversal_potentials__EK) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__Vm - 0.061749999999999999 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__membrane__Vm)))) + pow(var_chaste_interface__Ito1_a_gate__a, 3) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[20] * var_chaste_interface__Ito1_i1f_gate__i1f * var_chaste_interface__Ito1_i1s_gate__i1s * _lt_0_row[10]; // uA_per_uF + const double var_chaste_interface__i_ionic = (var_membrane__caiont + var_membrane__clont + var_membrane__kiont + var_membrane__naiont) * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Celldecker_2009FromCellMLBackwardEulerOpt::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[35], double rResidual[35]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -87.4947322902196 + double var_chaste_interface__INa_m_gate__m = rY[25]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INa_h_gate__h = rY[26]; + // Units: dimensionless; Initial value: 0.991354143386887 + double var_chaste_interface__INa_j_gate__j = rY[27]; + // Units: dimensionless; Initial value: 0.99709036251243 + double var_chaste_interface__INaL_mL_gate__mL = rY[28]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INaL_hL_gate__hL = rY[29]; + // Units: dimensionless; Initial value: 0.319611809402137 + double var_chaste_interface__IKr_xr_gate__xr = rY[30]; + // Units: dimensionless; Initial value: 4.06959064407486e-06 + double var_chaste_interface__Ito1_a_gate__a = rY[31]; + // Units: dimensionless; Initial value: 1.76776038804228e-05 + double var_chaste_interface__Ito1_i1f_gate__i1f = rY[32]; + // Units: dimensionless; Initial value: 0.997976503910799 + double var_chaste_interface__Ito1_i1s_gate__i1s = rY[33]; + // Units: dimensionless; Initial value: 0.947581184798815 + double var_chaste_interface__Ito2_i2f_gate__i2f = rY[34]; + // Units: dimensionless; Initial value: 0.996044894628276 + + //output_nonlinear_state_assignments + double var_chaste_interface__CaMK_active__CaMK_trap = rCurrentGuess[0]; + double var_chaste_interface__Ca__Ca_JSR = rCurrentGuess[1]; + double var_chaste_interface__Ca__Ca_NSR = rCurrentGuess[2]; + double var_chaste_interface__Ca__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__Ca__Ca_ss_CaL = rCurrentGuess[4]; + double var_chaste_interface__Ca__Ca_ss_sr = rCurrentGuess[5]; + double var_chaste_interface__Cl__Cl_i = rCurrentGuess[6]; + double var_chaste_interface__Cl__Cl_ss = rCurrentGuess[7]; + double var_chaste_interface__ICaL__C = rCurrentGuess[8]; + double var_chaste_interface__ICaL__CI = rCurrentGuess[9]; + double var_chaste_interface__ICaL__CI_star = rCurrentGuess[10]; + double var_chaste_interface__ICaL__C_star = rCurrentGuess[11]; + double var_chaste_interface__ICaL__O = rCurrentGuess[12]; + double var_chaste_interface__ICaL__OI = rCurrentGuess[13]; + double var_chaste_interface__ICaL__O_star = rCurrentGuess[14]; + double var_chaste_interface__IKs__C1 = rCurrentGuess[15]; + double var_chaste_interface__IKs__C10 = rCurrentGuess[16]; + double var_chaste_interface__IKs__C11 = rCurrentGuess[17]; + double var_chaste_interface__IKs__C12 = rCurrentGuess[18]; + double var_chaste_interface__IKs__C13 = rCurrentGuess[19]; + double var_chaste_interface__IKs__C14 = rCurrentGuess[20]; + double var_chaste_interface__IKs__C15 = rCurrentGuess[21]; + double var_chaste_interface__IKs__C2 = rCurrentGuess[22]; + double var_chaste_interface__IKs__C3 = rCurrentGuess[23]; + double var_chaste_interface__IKs__C4 = rCurrentGuess[24]; + double var_chaste_interface__IKs__C5 = rCurrentGuess[25]; + double var_chaste_interface__IKs__C6 = rCurrentGuess[26]; + double var_chaste_interface__IKs__C7 = rCurrentGuess[27]; + double var_chaste_interface__IKs__C8 = rCurrentGuess[28]; + double var_chaste_interface__IKs__C9 = rCurrentGuess[29]; + double var_chaste_interface__IKs__O1 = rCurrentGuess[30]; + double var_chaste_interface__Irel__Irel = rCurrentGuess[31]; + double var_chaste_interface__K__K_i = rCurrentGuess[32]; + double var_chaste_interface__Na__Na_i = rCurrentGuess[33]; + double var_chaste_interface__Na__Na_ss_sr = rCurrentGuess[34]; + + // Lookup table indexing + const bool _oob_0 = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + //output_equations + const double var_Ca__Idiff = 5 * var_chaste_interface__Ca__Ca_ss_sr - 5 * var_chaste_interface__Ca__Ca_i; // mM_per_ms + const double var_Ca__Idiff_ss = 0.5 * var_chaste_interface__Ca__Ca_ss_sr - 0.5 * var_chaste_interface__Ca__Ca_ss_CaL; // mM_per_ms + const double var_CaMK_active__CaMK_active = 0.050000000000000003 * (1 - var_chaste_interface__CaMK_active__CaMK_trap) / (1 + 0.0015 / var_chaste_interface__Ca__Ca_ss_sr) + var_chaste_interface__CaMK_active__CaMK_trap; // dimensionless + const double var_Cl__Idiff_Cl = 5 * var_chaste_interface__Cl__Cl_ss - 5 * var_chaste_interface__Cl__Cl_i; // mM_per_ms + const double d_dt_chaste_interface_var_CaMK_active__CaMK_trap = -0.00068000000000000005 * var_chaste_interface__CaMK_active__CaMK_trap + 0.050000000000000003 * (-var_chaste_interface__CaMK_active__CaMK_trap + var_CaMK_active__CaMK_active) * var_CaMK_active__CaMK_active; // 1 / ms + const double var_ICaL__OI_star = 1 - var_chaste_interface__ICaL__C - var_chaste_interface__ICaL__CI - var_chaste_interface__ICaL__CI_star - var_chaste_interface__ICaL__C_star - var_chaste_interface__ICaL__O - var_chaste_interface__ICaL__OI - var_chaste_interface__ICaL__O_star; // dimensionless + const double var_ICaL__delta = 3 / (1 + 8.1000000000000005e-11 / pow(var_chaste_interface__Ca__Ca_ss_CaL, 4)); // per_ms + const double var_IKs__O2 = 1 - var_chaste_interface__IKs__C1 - var_chaste_interface__IKs__C10 - var_chaste_interface__IKs__C11 - var_chaste_interface__IKs__C12 - var_chaste_interface__IKs__C13 - var_chaste_interface__IKs__C14 - var_chaste_interface__IKs__C15 - var_chaste_interface__IKs__C2 - var_chaste_interface__IKs__C3 - var_chaste_interface__IKs__C4 - var_chaste_interface__IKs__C5 - var_chaste_interface__IKs__C6 - var_chaste_interface__IKs__C7 - var_chaste_interface__IKs__C8 - var_chaste_interface__IKs__C9 - var_chaste_interface__IKs__O1; // dimensionless + const double var_Ileak__Ileak = 0.066666666666666666 * var_chaste_interface__Ca__Ca_NSR * mParameters[0]; // mM_per_ms + const double var_IpCa__IpCa = var_chaste_interface__Ca__Ca_i * mParameters[10] / (0.00050000000000000001 + var_chaste_interface__Ca__Ca_i); // uA_per_uF + const double var_Irel__beta_tau = 4.75 + 4.75 / (1 + 2.9619676669542428e-6 * pow((1 / var_CaMK_active__CaMK_active), 10)); // ms + const double var_Itr__Itr = 0.040000000000000001 * var_chaste_interface__Ca__Ca_NSR - 0.040000000000000001 * var_chaste_interface__Ca__Ca_JSR; // mM_per_ms + const double d_dt_chaste_interface_var_Ca__Ca_JSR = 1 * (-var_chaste_interface__Irel__Irel + var_Itr__Itr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__Ca__Ca_JSR), 2)); // mM / ms + const double var_Iup__Iup = (1 + 0.75 * var_CaMK_active__CaMK_active / (0.14999999999999999 + 1 * var_CaMK_active__CaMK_active)) * var_chaste_interface__Ca__Ca_i * mParameters[2] / (0.00092000000000000003 - 0.00017000000000000001 * var_CaMK_active__CaMK_active / (0.14999999999999999 + 1 * var_CaMK_active__CaMK_active) + var_chaste_interface__Ca__Ca_i); // mM_per_ms + const double var_Na__Idiff_Na = 5 * var_chaste_interface__Na__Na_ss_sr - 5 * var_chaste_interface__Na__Na_i; // mM_per_ms + const double var_cell_geometry__vcell = 1.2100000000000001e-5 * M_PI; // uL + const double var_cell_geometry__Vjsr = 0.0047999999999999996 * var_cell_geometry__vcell; // uL + const double var_cell_geometry__Vmyo = 0.67800000000000005 * var_cell_geometry__vcell; // uL + const double var_cell_geometry__Vnsr = 0.055199999999999999 * var_cell_geometry__vcell; // uL + const double d_dt_chaste_interface_var_Ca__Ca_NSR = -var_Ileak__Ileak - var_Itr__Itr * var_cell_geometry__Vjsr / var_cell_geometry__Vnsr + var_Iup__Iup; // mM / ms + const double var_cell_geometry__Vss_sr = 0.02 * var_cell_geometry__vcell; // uL + const double var_ICaL__ACT_infinity = _lt_0_row[11]; // dimensionless + const double var_ICaL__ACT_tau = _lt_0_row[12]; // ms + const double var_ICaL__IV_infinity = _lt_0_row[13]; // dimensionless + const double var_ICaL__IV_infinity_star = _lt_0_row[14]; // dimensionless + const double var_ICaL__IV_tau = _lt_0_row[15]; // ms + const double var_ICaL__IV_tau_star = 1 / (_lt_0_row[17] + 1 * _lt_0_row[16] / (25 - 17.5 / (1 + 8.1000000000000005e-11 / pow(var_chaste_interface__Ca__Ca_ss_CaL, 4)))); // ms + const double var_ICaL__alpha = var_ICaL__ACT_infinity / var_ICaL__ACT_tau; // per_ms + const double var_ICaL__beta = (1 - var_ICaL__ACT_infinity) / var_ICaL__ACT_tau; // per_ms + const double var_ICaL__x = var_ICaL__IV_infinity / var_ICaL__IV_tau; // per_ms + const double var_ICaL__x_star = var_ICaL__IV_infinity_star / var_ICaL__IV_tau_star; // per_ms + const double var_ICaL__y = (1 - var_ICaL__IV_infinity) / var_ICaL__IV_tau; // per_ms + const double d_dt_chaste_interface_var_ICaL__C = 1 * var_chaste_interface__ICaL__C_star + (-var_ICaL__alpha - var_ICaL__delta - var_ICaL__y) * var_chaste_interface__ICaL__C + var_chaste_interface__ICaL__CI * var_ICaL__x + var_chaste_interface__ICaL__O * var_ICaL__beta; // 1 / ms + const double d_dt_chaste_interface_var_ICaL__O = 1 * var_chaste_interface__ICaL__O_star + (-var_ICaL__beta - var_ICaL__delta - var_ICaL__y) * var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__C * var_ICaL__alpha + var_chaste_interface__ICaL__OI * var_ICaL__x; // 1 / ms + const double var_ICaL__y_star = (1 - var_ICaL__IV_infinity_star) / var_ICaL__IV_tau_star; // per_ms + const double d_dt_chaste_interface_var_ICaL__C_star = (-1 - var_ICaL__alpha - var_ICaL__y_star) * var_chaste_interface__ICaL__C_star + var_chaste_interface__ICaL__C * var_ICaL__delta + var_chaste_interface__ICaL__CI_star * var_ICaL__x_star + var_chaste_interface__ICaL__O_star * var_ICaL__beta; // 1 / ms + const double d_dt_chaste_interface_var_ICaL__O_star = (-1 - var_ICaL__beta - var_ICaL__y_star) * var_chaste_interface__ICaL__O_star + var_chaste_interface__ICaL__C_star * var_ICaL__alpha + var_chaste_interface__ICaL__O * var_ICaL__delta + var_ICaL__OI_star * var_ICaL__x_star; // 1 / ms + const double var_ICaL__delta_I = 9.9999999999999995e-7 * var_ICaL__delta * var_ICaL__x * var_ICaL__y_star / (var_ICaL__x_star * var_ICaL__y); // per_ms + const double d_dt_chaste_interface_var_ICaL__CI = 9.9999999999999995e-7 * var_chaste_interface__ICaL__CI_star + (-var_ICaL__alpha - var_ICaL__delta_I - var_ICaL__x) * var_chaste_interface__ICaL__CI + var_chaste_interface__ICaL__C * var_ICaL__y + var_chaste_interface__ICaL__OI * var_ICaL__beta; // 1 / ms + const double d_dt_chaste_interface_var_ICaL__CI_star = (-9.9999999999999995e-7 - var_ICaL__alpha - var_ICaL__x_star) * var_chaste_interface__ICaL__CI_star + var_chaste_interface__ICaL__CI * var_ICaL__delta_I + var_chaste_interface__ICaL__C_star * var_ICaL__y_star + var_ICaL__OI_star * var_ICaL__beta; // 1 / ms + const double d_dt_chaste_interface_var_ICaL__OI = 9.9999999999999995e-7 * var_ICaL__OI_star + (-var_ICaL__beta - var_ICaL__delta_I - var_ICaL__x) * var_chaste_interface__ICaL__OI + var_chaste_interface__ICaL__CI * var_ICaL__alpha + var_chaste_interface__ICaL__O * var_ICaL__y; // 1 / ms + const double var_membrane__i_Stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF + const double var_cell_geometry__AF = 5.0619267243613002e-10 * M_PI; // uF_mole_per_C + const double var_ICaL__ICaL = (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (14448.004881001343 * _lt_0_row[5] * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6] * var_chaste_interface__membrane__Vm)); // uA_per_uF + const double d_dt_chaste_interface_var_Ca__Ca_ss_CaL = -1 * (250 * var_ICaL__ICaL * var_cell_geometry__AF / var_cell_geometry__vcell - 500 * var_Ca__Idiff_ss * var_cell_geometry__Vss_sr / var_cell_geometry__vcell) / (1 + 0.0097788000000000007 / pow((0.0086999999999999994 + var_chaste_interface__Ca__Ca_ss_CaL), 2) + 4.0890000000000003e-5 / pow((0.00087000000000000001 + var_chaste_interface__Ca__Ca_ss_CaL), 2)); // mM / ms + const double var_ICab__ICab = (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (14448.004881001343 * _lt_0_row[5] * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7] * var_chaste_interface__membrane__Vm)); // uA_per_uF + const double var_IKs__alpha = _lt_0_row[33]; // per_ms + const double var_IKs__beta = _lt_0_row[34]; // per_ms + const double d_dt_chaste_interface_var_IKs__C1 = var_chaste_interface__IKs__C2 * var_IKs__beta - 4 * var_chaste_interface__IKs__C1 * var_IKs__alpha; // 1 / ms + const double var_IKs__delta = _lt_0_row[35]; // per_ms + const double var_IKs__eta = _lt_0_row[36]; // per_ms + const double var_IKs__gamma = _lt_0_row[37]; // per_ms + const double d_dt_chaste_interface_var_IKs__C10 = (-2 * var_IKs__alpha - 2 * var_IKs__delta) * var_chaste_interface__IKs__C10 + var_chaste_interface__IKs__C11 * var_IKs__beta + var_chaste_interface__IKs__C7 * var_IKs__gamma; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C11 = (-var_IKs__alpha - var_IKs__beta - var_IKs__gamma - 2 * var_IKs__delta) * var_chaste_interface__IKs__C11 + 2 * var_chaste_interface__IKs__C10 * var_IKs__alpha + 2 * var_chaste_interface__IKs__C12 * var_IKs__beta + 2 * var_chaste_interface__IKs__C8 * var_IKs__gamma + 3 * var_chaste_interface__IKs__C13 * var_IKs__delta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C12 = (-2 * var_IKs__beta - 2 * var_IKs__delta - 2 * var_IKs__gamma) * var_chaste_interface__IKs__C12 + var_chaste_interface__IKs__C11 * var_IKs__alpha + 3 * var_chaste_interface__IKs__C14 * var_IKs__delta + 3 * var_chaste_interface__IKs__C9 * var_IKs__gamma; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C13 = (-var_IKs__alpha - 3 * var_IKs__delta) * var_chaste_interface__IKs__C13 + var_chaste_interface__IKs__C11 * var_IKs__gamma + var_chaste_interface__IKs__C14 * var_IKs__beta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C14 = (-var_IKs__beta - var_IKs__gamma - 3 * var_IKs__delta) * var_chaste_interface__IKs__C14 + var_chaste_interface__IKs__C13 * var_IKs__alpha + 2 * var_chaste_interface__IKs__C12 * var_IKs__gamma + 4 * var_chaste_interface__IKs__C15 * var_IKs__delta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C15 = (-0.089538306411019994 - 4 * var_IKs__delta) * var_chaste_interface__IKs__C15 + var_chaste_interface__IKs__C14 * var_IKs__gamma + var_chaste_interface__IKs__O1 * var_IKs__eta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C2 = (-var_IKs__beta - var_IKs__gamma - 3 * var_IKs__alpha) * var_chaste_interface__IKs__C2 + var_chaste_interface__IKs__C6 * var_IKs__delta + 2 * var_chaste_interface__IKs__C3 * var_IKs__beta + 4 * var_chaste_interface__IKs__C1 * var_IKs__alpha; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C3 = (-2 * var_IKs__alpha - 2 * var_IKs__beta - 2 * var_IKs__gamma) * var_chaste_interface__IKs__C3 + var_chaste_interface__IKs__C7 * var_IKs__delta + 3 * var_chaste_interface__IKs__C2 * var_IKs__alpha + 3 * var_chaste_interface__IKs__C4 * var_IKs__beta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C4 = (-var_IKs__alpha - 3 * var_IKs__beta - 3 * var_IKs__gamma) * var_chaste_interface__IKs__C4 + var_chaste_interface__IKs__C8 * var_IKs__delta + 2 * var_chaste_interface__IKs__C3 * var_IKs__alpha + 4 * var_chaste_interface__IKs__C5 * var_IKs__beta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C5 = (-4 * var_IKs__beta - 4 * var_IKs__gamma) * var_chaste_interface__IKs__C5 + var_chaste_interface__IKs__C4 * var_IKs__alpha + var_chaste_interface__IKs__C9 * var_IKs__delta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C6 = (-var_IKs__delta - 3 * var_IKs__alpha) * var_chaste_interface__IKs__C6 + var_chaste_interface__IKs__C2 * var_IKs__gamma + var_chaste_interface__IKs__C7 * var_IKs__beta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C7 = (-var_IKs__beta - var_IKs__delta - var_IKs__gamma - 2 * var_IKs__alpha) * var_chaste_interface__IKs__C7 + 2 * var_chaste_interface__IKs__C10 * var_IKs__delta + 2 * var_chaste_interface__IKs__C3 * var_IKs__gamma + 2 * var_chaste_interface__IKs__C8 * var_IKs__beta + 3 * var_chaste_interface__IKs__C6 * var_IKs__alpha; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C8 = (-var_IKs__alpha - var_IKs__delta - 2 * var_IKs__beta - 2 * var_IKs__gamma) * var_chaste_interface__IKs__C8 + 2 * var_chaste_interface__IKs__C11 * var_IKs__delta + 2 * var_chaste_interface__IKs__C7 * var_IKs__alpha + 3 * var_chaste_interface__IKs__C4 * var_IKs__gamma + 3 * var_chaste_interface__IKs__C9 * var_IKs__beta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C9 = (-var_IKs__delta - 3 * var_IKs__beta - 3 * var_IKs__gamma) * var_chaste_interface__IKs__C9 + var_chaste_interface__IKs__C8 * var_IKs__alpha + 2 * var_chaste_interface__IKs__C12 * var_IKs__delta + 4 * var_chaste_interface__IKs__C5 * var_IKs__gamma; // 1 / ms + const double d_dt_chaste_interface_var_IKs__O1 = 0.089538306411019994 * var_chaste_interface__IKs__C15 + (-var_IKs__eta + _lt_0_row[38]) * var_chaste_interface__IKs__O1 + 0.79405459958640001 * var_IKs__O2 * _lt_0_row[39]; // 1 / ms + const double var_INaCa__INaCa_ss_sr = 0.20000000000000001 * _lt_0_row[2] * (pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr * _lt_0_row[1]) * mParameters[17] / ((1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_ss_sr, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_ss_sr + 1.3 * pow(var_chaste_interface__Na__Na_ss_sr, 3) + pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_ss_sr, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3])); // uA_per_uF + const double d_dt_chaste_interface_var_Ca__Ca_ss_sr = -1 * (-var_chaste_interface__Irel__Irel * var_cell_geometry__Vjsr / var_cell_geometry__Vss_sr - 1 * var_INaCa__INaCa_ss_sr * var_cell_geometry__AF / var_cell_geometry__Vss_sr + var_Ca__Idiff + var_Ca__Idiff_ss) / (1 + 0.0097788000000000007 / pow((0.0086999999999999994 + var_chaste_interface__Ca__Ca_ss_sr), 2) + 4.0890000000000003e-5 / pow((0.00087000000000000001 + var_chaste_interface__Ca__Ca_ss_sr), 2)); // mM / ms + const double d_dt_chaste_interface_var_Na__Na_ss_sr = -var_Na__Idiff_Na - 3 * var_INaCa__INaCa_ss_sr * var_cell_geometry__AF / var_cell_geometry__Vss_sr; // mM / ms + const double var_INaCa__INaCa = 0.80000000000000004 * _lt_0_row[2] * (pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * _lt_0_row[1]) * mParameters[17] / ((1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_i, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_i + 1.3 * pow(var_chaste_interface__Na__Na_i, 3) + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_i, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_i) * mParameters[3])) + var_INaCa__INaCa_ss_sr; // uA_per_uF + const double d_dt_chaste_interface_var_Ca__Ca_i = 1 * ((-var_Iup__Iup + var_Ileak__Ileak) * var_cell_geometry__Vnsr / var_cell_geometry__Vmyo + var_Ca__Idiff * var_cell_geometry__Vss_sr / var_cell_geometry__Vmyo + 0.5 * (-var_ICab__ICab - var_IpCa__IpCa + 2 * var_INaCa__INaCa) * var_cell_geometry__AF / var_cell_geometry__Vmyo) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__Ca__Ca_i), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__Ca__Ca_i), 2)); // mM / ms + const double var_INaK__INaK = 0.056895766954938545 * _lt_0_row[3] * pow(var_chaste_interface__Na__Na_i, 3) * mParameters[18] * mParameters[4] / (pow((1 + 0.38461538461538458 * var_chaste_interface__Na__Na_i), 3) * (1.5 + mParameters[4])); // uA_per_uF + const double var_INab__phi = 0.037435883507802616 * var_chaste_interface__membrane__Vm; // dimensionless + const double var_INab__INab = (((1 * var_INab__phi >= -9.9999999999999995e-8) && (1 * var_INab__phi <= 9.9999999999999995e-8)) ? (96485 * (1 - 0.5 * var_INab__phi) * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9]) : (96485 * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9] * var_INab__phi / (-1 + exp(1 * var_INab__phi)))); // uA_per_uF + const double d_dt_chaste_interface_var_Irel__Irel = (1 + 0.0123 / var_chaste_interface__Ca__Ca_JSR) * (-var_chaste_interface__Irel__Irel - var_ICaL__ICaL * var_Irel__beta_tau * mParameters[1] / (1 + 1 * pow((1 / var_chaste_interface__Ca__Ca_JSR), 8))) / var_Irel__beta_tau; // mM_per_ms / ms + const double var_Ito2__Ito2 = 1 * (1 - 1 / (1 + 6.2499999999999991 * pow(var_chaste_interface__Irel__Irel, 2))) * (((0.037435883507802616 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.037435883507802616 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (-96485 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-3612.0012202503358 * _lt_0_row[7] * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19] * var_chaste_interface__membrane__Vm)) * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF + const double d_dt_chaste_interface_var_Cl__Cl_ss = -var_Cl__Idiff_Cl + 1 * var_Ito2__Ito2 * var_cell_geometry__AF / var_cell_geometry__Vss_sr; // mM / ms + const double var_reversal_potentials__ECl = -26.712338705498265 * log(100 / var_chaste_interface__Cl__Cl_i); // mV + const double var_IClb__IClb = (-var_reversal_potentials__ECl + var_chaste_interface__membrane__Vm) * mParameters[8]; // uA_per_uF + const double var_reversal_potentials__EK = 26.712338705498265 * log(mParameters[4] / var_chaste_interface__K__K_i); // mV + const double var_CT_K_Cl__CT_K_Cl = 1.77e-5 * (-var_reversal_potentials__ECl + var_reversal_potentials__EK) / (87.825100000000006 - var_reversal_potentials__ECl + var_reversal_potentials__EK); // mM_per_ms + const double var_IK1__IK1 = 0.4389381125701739 * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[12] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__Vm - 0.080320000000000003 * var_reversal_potentials__EK) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__Vm - 0.061749999999999999 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__membrane__Vm)))); // uA_per_uF + const double var_IKp__IKp = 1 * _lt_0_row[8] * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[14]; // uA_per_uF + const double var_IKr__IKr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr; // uA_per_uF + const double var_Ito1__Ito1 = pow(var_chaste_interface__Ito1_a_gate__a, 3) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[20] * var_chaste_interface__Ito1_i1f_gate__i1f * var_chaste_interface__Ito1_i1s_gate__i1s * _lt_0_row[10]; // uA_per_uF + const double var_reversal_potentials__ENa = 26.712338705498265 * log(mParameters[5] / var_chaste_interface__Na__Na_i); // mV + const double var_CT_Na_Cl__CT_Na_Cl = 2.4610800000000002e-5 * pow((-var_reversal_potentials__ECl + var_reversal_potentials__ENa), 4) / (59494197.640692554 + pow((-var_reversal_potentials__ECl + var_reversal_potentials__ENa), 4)); // mM_per_ms + const double d_dt_chaste_interface_var_Cl__Cl_i = var_Cl__Idiff_Cl * var_cell_geometry__Vss_sr / var_cell_geometry__Vmyo + 1 * var_IClb__IClb * var_cell_geometry__AF / var_cell_geometry__Vmyo + var_CT_K_Cl__CT_K_Cl + var_CT_Na_Cl__CT_Na_Cl; // mM / ms + const double var_INa__INa = pow(var_chaste_interface__INa_m_gate__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[11] * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // uA_per_uF + const double var_INaL__INaL = pow(var_chaste_interface__INaL_mL_gate__mL, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL; // uA_per_uF + const double d_dt_chaste_interface_var_Na__Na_i = var_Na__Idiff_Na * var_cell_geometry__Vss_sr / var_cell_geometry__Vmyo - (3 * var_INaCa__INaCa + 3 * var_INaK__INaK + var_INa__INa + var_INaL__INaL + var_INab__INab) * var_cell_geometry__AF / var_cell_geometry__Vmyo + var_CT_Na_Cl__CT_Na_Cl; // mM / ms + const double var_IKs__IKs = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[5] + mParameters[4]) / (0.018329999999999999 * var_chaste_interface__Na__Na_i + var_chaste_interface__K__K_i)) + var_chaste_interface__membrane__Vm) * (var_chaste_interface__IKs__O1 + var_IKs__O2) * mParameters[16]; // uA_per_uF + const double d_dt_chaste_interface_var_K__K_i = -(-2 * var_INaK__INaK + var_IK1__IK1 + var_IKp__IKp + var_IKr__IKr + var_IKs__IKs + var_Ito1__Ito1 + var_membrane__i_Stim) * var_cell_geometry__AF / var_cell_geometry__Vmyo + var_CT_K_Cl__CT_K_Cl; // mM / ms + + rResidual[3] = rCurrentGuess[3] - rY[1] - mDt*d_dt_chaste_interface_var_Ca__Ca_i; + rResidual[15] = rCurrentGuess[15] - rY[2] - mDt*d_dt_chaste_interface_var_IKs__C1; + rResidual[22] = rCurrentGuess[22] - rY[3] - mDt*d_dt_chaste_interface_var_IKs__C2; + rResidual[23] = rCurrentGuess[23] - rY[4] - mDt*d_dt_chaste_interface_var_IKs__C3; + rResidual[24] = rCurrentGuess[24] - rY[5] - mDt*d_dt_chaste_interface_var_IKs__C4; + rResidual[25] = rCurrentGuess[25] - rY[6] - mDt*d_dt_chaste_interface_var_IKs__C5; + rResidual[26] = rCurrentGuess[26] - rY[7] - mDt*d_dt_chaste_interface_var_IKs__C6; + rResidual[27] = rCurrentGuess[27] - rY[8] - mDt*d_dt_chaste_interface_var_IKs__C7; + rResidual[28] = rCurrentGuess[28] - rY[9] - mDt*d_dt_chaste_interface_var_IKs__C8; + rResidual[29] = rCurrentGuess[29] - rY[10] - mDt*d_dt_chaste_interface_var_IKs__C9; + rResidual[16] = rCurrentGuess[16] - rY[11] - mDt*d_dt_chaste_interface_var_IKs__C10; + rResidual[17] = rCurrentGuess[17] - rY[12] - mDt*d_dt_chaste_interface_var_IKs__C11; + rResidual[18] = rCurrentGuess[18] - rY[13] - mDt*d_dt_chaste_interface_var_IKs__C12; + rResidual[19] = rCurrentGuess[19] - rY[14] - mDt*d_dt_chaste_interface_var_IKs__C13; + rResidual[20] = rCurrentGuess[20] - rY[15] - mDt*d_dt_chaste_interface_var_IKs__C14; + rResidual[21] = rCurrentGuess[21] - rY[16] - mDt*d_dt_chaste_interface_var_IKs__C15; + rResidual[30] = rCurrentGuess[30] - rY[17] - mDt*d_dt_chaste_interface_var_IKs__O1; + rResidual[8] = rCurrentGuess[8] - rY[18] - mDt*d_dt_chaste_interface_var_ICaL__C; + rResidual[12] = rCurrentGuess[12] - rY[19] - mDt*d_dt_chaste_interface_var_ICaL__O; + rResidual[11] = rCurrentGuess[11] - rY[20] - mDt*d_dt_chaste_interface_var_ICaL__C_star; + rResidual[14] = rCurrentGuess[14] - rY[21] - mDt*d_dt_chaste_interface_var_ICaL__O_star; + rResidual[9] = rCurrentGuess[9] - rY[22] - mDt*d_dt_chaste_interface_var_ICaL__CI; + rResidual[13] = rCurrentGuess[13] - rY[23] - mDt*d_dt_chaste_interface_var_ICaL__OI; + rResidual[10] = rCurrentGuess[10] - rY[24] - mDt*d_dt_chaste_interface_var_ICaL__CI_star; + rResidual[31] = rCurrentGuess[31] - rY[35] - mDt*d_dt_chaste_interface_var_Irel__Irel; + rResidual[1] = rCurrentGuess[1] - rY[36] - mDt*d_dt_chaste_interface_var_Ca__Ca_JSR; + rResidual[2] = rCurrentGuess[2] - rY[37] - mDt*d_dt_chaste_interface_var_Ca__Ca_NSR; + rResidual[5] = rCurrentGuess[5] - rY[38] - mDt*d_dt_chaste_interface_var_Ca__Ca_ss_sr; + rResidual[4] = rCurrentGuess[4] - rY[39] - mDt*d_dt_chaste_interface_var_Ca__Ca_ss_CaL; + rResidual[33] = rCurrentGuess[33] - rY[40] - mDt*d_dt_chaste_interface_var_Na__Na_i; + rResidual[34] = rCurrentGuess[34] - rY[41] - mDt*d_dt_chaste_interface_var_Na__Na_ss_sr; + rResidual[6] = rCurrentGuess[6] - rY[42] - mDt*d_dt_chaste_interface_var_Cl__Cl_i; + rResidual[7] = rCurrentGuess[7] - rY[43] - mDt*d_dt_chaste_interface_var_Cl__Cl_ss; + rResidual[32] = rCurrentGuess[32] - rY[44] - mDt*d_dt_chaste_interface_var_K__K_i; + rResidual[0] = rCurrentGuess[0] - rY[45] - mDt*d_dt_chaste_interface_var_CaMK_active__CaMK_trap; + } + + void Celldecker_2009FromCellMLBackwardEulerOpt::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[35], double rJacobian[35][35]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -87.4947322902196 + double var_chaste_interface__INa_m_gate__m = rY[25]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INa_h_gate__h = rY[26]; + // Units: dimensionless; Initial value: 0.991354143386887 + double var_chaste_interface__INa_j_gate__j = rY[27]; + // Units: dimensionless; Initial value: 0.99709036251243 + double var_chaste_interface__INaL_mL_gate__mL = rY[28]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INaL_hL_gate__hL = rY[29]; + // Units: dimensionless; Initial value: 0.319611809402137 + double var_chaste_interface__IKr_xr_gate__xr = rY[30]; + // Units: dimensionless; Initial value: 4.06959064407486e-06 + double var_chaste_interface__Ito1_a_gate__a = rY[31]; + // Units: dimensionless; Initial value: 1.76776038804228e-05 + double var_chaste_interface__Ito1_i1f_gate__i1f = rY[32]; + // Units: dimensionless; Initial value: 0.997976503910799 + double var_chaste_interface__Ito1_i1s_gate__i1s = rY[33]; + // Units: dimensionless; Initial value: 0.947581184798815 + double var_chaste_interface__Ito2_i2f_gate__i2f = rY[34]; + // Units: dimensionless; Initial value: 0.996044894628276 + + // Lookup table indexing + const bool _oob_0 = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + double var_chaste_interface__CaMK_active__CaMK_trap = rCurrentGuess[0]; + double var_chaste_interface__Ca__Ca_JSR = rCurrentGuess[1]; + double var_chaste_interface__Ca__Ca_NSR = rCurrentGuess[2]; + double var_chaste_interface__Ca__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__Ca__Ca_ss_CaL = rCurrentGuess[4]; + double var_chaste_interface__Ca__Ca_ss_sr = rCurrentGuess[5]; + double var_chaste_interface__Cl__Cl_i = rCurrentGuess[6]; + double var_chaste_interface__ICaL__C = rCurrentGuess[8]; + double var_chaste_interface__ICaL__CI = rCurrentGuess[9]; + double var_chaste_interface__ICaL__CI_star = rCurrentGuess[10]; + double var_chaste_interface__ICaL__C_star = rCurrentGuess[11]; + double var_chaste_interface__ICaL__O = rCurrentGuess[12]; + double var_chaste_interface__ICaL__OI = rCurrentGuess[13]; + double var_chaste_interface__ICaL__O_star = rCurrentGuess[14]; + double var_chaste_interface__IKs__C1 = rCurrentGuess[15]; + double var_chaste_interface__IKs__C10 = rCurrentGuess[16]; + double var_chaste_interface__IKs__C11 = rCurrentGuess[17]; + double var_chaste_interface__IKs__C12 = rCurrentGuess[18]; + double var_chaste_interface__IKs__C13 = rCurrentGuess[19]; + double var_chaste_interface__IKs__C14 = rCurrentGuess[20]; + double var_chaste_interface__IKs__C15 = rCurrentGuess[21]; + double var_chaste_interface__IKs__C2 = rCurrentGuess[22]; + double var_chaste_interface__IKs__C3 = rCurrentGuess[23]; + double var_chaste_interface__IKs__C4 = rCurrentGuess[24]; + double var_chaste_interface__IKs__C5 = rCurrentGuess[25]; + double var_chaste_interface__IKs__C6 = rCurrentGuess[26]; + double var_chaste_interface__IKs__C7 = rCurrentGuess[27]; + double var_chaste_interface__IKs__C8 = rCurrentGuess[28]; + double var_chaste_interface__IKs__C9 = rCurrentGuess[29]; + double var_chaste_interface__Irel__Irel = rCurrentGuess[31]; + double var_chaste_interface__K__K_i = rCurrentGuess[32]; + double var_chaste_interface__Na__Na_i = rCurrentGuess[33]; + double var_chaste_interface__Na__Na_ss_sr = rCurrentGuess[34]; + + const double var_x0 = 1 - var_chaste_interface__CaMK_active__CaMK_trap; + const double var_x1 = 1 + 0.0015 / var_chaste_interface__Ca__Ca_ss_sr; + const double var_x2 = 1 / var_x1; + const double var_x3 = 0.050000000000000003 * var_x2; + const double var_x4 = var_x0 * var_x3; + const double var_x5 = var_x4 + var_chaste_interface__CaMK_active__CaMK_trap; + const double var_x6 = -var_x3; + const double var_x7 = 1 + var_x6; + const double var_x8 = pow(var_chaste_interface__Ca__Ca_ss_sr, (-2)); + const double var_x9 = pow(var_x1, (-2)); + const double var_x10 = var_x0 * var_x8 * var_x9; + const double var_x11 = 0.80000000000000004 + var_chaste_interface__Ca__Ca_JSR; + const double var_x12 = pow(var_x11, (-2)); + const double var_x13 = 1 / (1 + 8 * var_x12); + const double var_x14 = 0.040000000000000001 * var_x13; + const double var_x15 = 0.14999999999999999 + var_x4 + 1 * var_chaste_interface__CaMK_active__CaMK_trap; + const double var_x16 = 1 / var_x15; + const double var_x17 = var_x16 * var_x7; + const double var_x18 = var_x5 / pow(var_x15, 2); + const double var_x19 = var_x18 * (-1 - var_x6); + const double var_x20 = var_x16 * var_x5; + const double var_x21 = 0.00092000000000000003 - 0.00017000000000000001 * var_x20 + var_chaste_interface__Ca__Ca_i; + const double var_x22 = 1 / var_x21; + const double var_x23 = var_x22 * mParameters[2]; + const double var_x24 = var_x23 * var_chaste_interface__Ca__Ca_i; + const double var_x25 = var_x24 * (0.75 * var_x17 + 0.75 * var_x19); + const double var_x26 = pow(var_x21, (-2)); + const double var_x27 = 1 + 0.75 * var_x20; + const double var_x28 = var_x26 * var_x27 * var_chaste_interface__Ca__Ca_i * mParameters[2]; + const double var_x29 = var_x28 * (0.00017000000000000001 * var_x17 + 0.00017000000000000001 * var_x19); + const double var_x30 = var_x10 * var_x18; + const double var_x31 = var_x24 * (-5.6250000000000005e-5 * var_x30 + 5.6250000000000005e-5 * var_x0 * var_x16 * var_x8 * var_x9); + const double var_x32 = var_x28 * (-1.2750000000000002e-8 * var_x30 + 1.2750000000000002e-8 * var_x0 * var_x16 * var_x8 * var_x9); + const double var_x33 = 0.0023800000000000002 + var_chaste_interface__Ca__Ca_i; + const double var_x34 = 0.00050000000000000001 + var_chaste_interface__Ca__Ca_i; + const double var_x35 = pow(var_x34, (-2)); + const double var_x36 = 1 + 0.00011900000000000002 / pow(var_x33, 2) + 3.5000000000000004e-5 * var_x35; + const double var_x37 = 1 / var_x36; + const double var_x38 = 1 * var_x37; + const double var_x39 = 0.0054277286135693209 * mParameters[0]; + const double var_x40 = 0.037435883507802616 * var_chaste_interface__membrane__Vm; + const double var_x41 = 192970 - 192970 * var_x40; + const double var_x42 = 0.074871767015605231 * var_chaste_interface__membrane__Vm; + const double var_x43 = exp(var_x42); + const double var_x44 = var_x43 * mParameters[7]; + const double var_x45 = (var_x42 >= -9.9999999999999995e-8) && (var_x42 <= 9.9999999999999995e-8); + const double var_x46 = 14448.004881001343 * var_chaste_interface__membrane__Vm / (-1 + var_x43); + const double var_x47 = 3.0851110000007915e-5 * mParameters[10] / var_x34; + const double var_x48 = 0.081415929203539822 * var_x23 * var_x27; + const double var_x49 = 1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_i, 2); + const double var_x50 = 1 / var_x49; + const double var_x51 = pow(var_chaste_interface__Na__Na_i, 3); + const double var_x52 = var_x51 * mParameters[3]; + const double var_x53 = pow(mParameters[5], 3); + const double var_x54 = var_x53 * var_chaste_interface__Ca__Ca_i; + const double var_x55 = var_x53 * (1 + 0.00053738391835633597 * var_x51); + const double var_x56 = (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_i) * mParameters[3]; + const double var_x57 = 1 / (var_x52 + var_x54 + 669921.875 * var_chaste_interface__Ca__Ca_i + 0.0035999999999999999 * var_x55 + 1.3 * var_x51 + 1860.8670000000004 * var_x56); + const double var_x58 = 4.9361776000012672e-5 * var_x57; + const double var_x59 = _lt_0_row[1]; + const double var_x60 = 1 / (1 + 0.32000000000000001 * var_x59); + const double var_x61 = var_x60 * mParameters[17]; + const double var_x62 = var_x53 * var_x59 * var_x61; + const double var_x63 = pow((1.9405247813411081e-6 * var_x51 + 1.4927113702623908e-6 * var_x52 + 1.4927113702623908e-6 * var_x54 + 0.0027777373294460648 * var_x56 + 5.3737609329446059e-9 * var_x55 + var_chaste_interface__Ca__Ca_i), (-2)); + const double var_x64 = _lt_0_row[0]; + const double var_x65 = -var_x54 * var_x59 + var_x51 * var_x64 * mParameters[3]; + const double var_x66 = -669921.875 - var_x53 - 516907.50000000012 * mParameters[3]; + const double var_x67 = pow(var_x49, (-2)); + const double var_x68 = pow(var_chaste_interface__Ca__Ca_i, (-3)); + const double var_x69 = -0.34100000000000003 * mParameters[3]; + const double var_x70 = 1 * var_x43; + const double var_x71 = (var_x69 + var_x70 * var_chaste_interface__Ca__Ca_i) * mParameters[7]; + const double var_x72 = pow(var_chaste_interface__Na__Na_ss_sr, 3); + const double var_x73 = var_x72 * mParameters[3]; + const double var_x74 = var_x53 * var_chaste_interface__Ca__Ca_ss_sr; + const double var_x75 = var_x53 * (1 + 0.00053738391835633597 * var_x72); + const double var_x76 = (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3]; + const double var_x77 = 1 / (var_x73 + var_x74 + 669921.875 * var_chaste_interface__Ca__Ca_ss_sr + 0.0035999999999999999 * var_x75 + 1.3 * var_x72 + 1860.8670000000004 * var_x76); + const double var_x78 = 1 + 1.5624999999999999e-8 * var_x8; + const double var_x79 = 1 / var_x78; + const double var_x80 = -var_x59 * var_x74 + var_x64 * var_x72 * mParameters[3]; + const double var_x81 = var_x61 * var_x79 * var_x80; + const double var_x82 = var_x77 * var_x81; + const double var_x83 = var_x50 * var_x61 * var_x65; + const double var_x84 = var_x62 * var_x77 * var_x79; + const double var_x85 = pow((1.9405247813411081e-6 * var_x72 + 1.4927113702623908e-6 * var_x73 + 1.4927113702623908e-6 * var_x74 + 0.0027777373294460648 * var_x76 + 5.3737609329446059e-9 * var_x75 + var_chaste_interface__Ca__Ca_ss_sr), (-2)); + const double var_x86 = pow(var_x78, (-2)); + const double var_x87 = pow(var_chaste_interface__Ca__Ca_ss_sr, (-3)); + const double var_x88 = pow(var_chaste_interface__Na__Na_i, 2); + const double var_x89 = 3 * mParameters[3]; + const double var_x90 = 5.8037463182484285e-6 * var_x53; + const double var_x91 = -3.9000000000000004 * var_x88 - var_x88 * var_x89 - var_x88 * var_x90; + const double var_x92 = var_x63 * var_x83; + const double var_x93 = var_x57 * var_x61; + const double var_x94 = var_x50 * var_x93; + const double var_x95 = var_x64 * mParameters[3]; + const double var_x96 = var_x88 * var_x95; + const double var_x97 = pow(var_chaste_interface__Na__Na_ss_sr, 2); + const double var_x98 = -3.9000000000000004 * var_x97 - var_x89 * var_x97 - var_x90 * var_x97; + const double var_x99 = var_x81 * var_x85; + const double var_x100 = var_x61 * var_x77; + const double var_x101 = var_x100 * var_x79 * var_x95 * var_x97; + const double var_x102 = 0.0086999999999999994 + var_chaste_interface__Ca__Ca_ss_CaL; + const double var_x103 = 0.00087000000000000001 + var_chaste_interface__Ca__Ca_ss_CaL; + const double var_x104 = 1 + 0.0097788000000000007 / pow(var_x102, 2) + 4.0890000000000003e-5 / pow(var_x103, 2); + const double var_x105 = 1 / var_x104; + const double var_x106 = var_x41 * mParameters[6]; + const double var_x107 = var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star; + const double var_x108 = var_x107 * var_x43; + const double var_x109 = var_x46 * mParameters[6]; + const double var_x110 = ((var_x45) ? (var_x106 * var_x108) : (var_x108 * var_x109)); + const double var_x111 = var_x69 + var_x70 * var_chaste_interface__Ca__Ca_ss_CaL; + const double var_x112 = var_x106 * var_x111; + const double var_x113 = var_x109 * var_x111; + const double var_x114 = ((var_x45) ? (var_x107 * var_x112) : (var_x107 * var_x113)); + const double var_x115 = ((var_x45) ? (var_x112) : (var_x113)); + const double var_x116 = -0.010458526290002684 * var_x105 * var_x115; + const double var_x117 = 0.0086999999999999994 + var_chaste_interface__Ca__Ca_ss_sr; + const double var_x118 = 0.00087000000000000001 + var_chaste_interface__Ca__Ca_ss_sr; + const double var_x119 = 1 + 0.0097788000000000007 / pow(var_x117, 2) + 4.0890000000000003e-5 / pow(var_x118, 2); + const double var_x120 = 1 / var_x119; + const double var_x121 = var_x100 * var_x80 * var_x86 * var_x87; + const double var_x122 = 9.3214219101444593e-16 * var_x99; + const double var_x123 = 1 * var_x120; + const double var_x124 = 1 / var_chaste_interface__Cl__Cl_i; + const double var_x125 = log(100 * var_x124); + const double var_x126 = 1 / var_chaste_interface__K__K_i; + const double var_x127 = log(var_x126 * mParameters[4]); + const double var_x128 = 26.712338705498265 * var_x127; + const double var_x129 = var_x128 + 26.712338705498265 * var_x125; + const double var_x130 = 0.00047280839508731927 / (87.825100000000006 + var_x129); + const double var_x131 = var_x124 * var_x130; + const double var_x132 = pow((1 + 0.30415380916729118 * var_x125 + 0.30415380916729118 * var_x127), (-2)); + const double var_x133 = 1 / var_chaste_interface__Na__Na_i; + const double var_x134 = var_x125 + log(var_x133 * mParameters[5]); + const double var_x135 = pow(var_x134, 4); + const double var_x136 = 50.122574928945262 * pow(var_x134, 3) / (59494197.640692554 + 509152.231225166 * var_x135); + const double var_x137 = pow((1 + 0.0085580149227345564 * var_x135), (-2)); + const double var_x138 = pow(var_x134, 7); + const double var_x139 = var_x124 * var_x136 - 7.2099425022651882e-9 * var_x124 * var_x137 * var_x138; + const double var_x140 = var_x126 * var_x130; + const double var_x141 = 6.1298221377044294e-8 * var_x129 * var_x132; + const double var_x142 = var_x133 * var_x136 - 7.2099425022651882e-9 * var_x133 * var_x137 * var_x138; + const double var_x143 = 1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm; + const double var_x144 = 96485 * var_x143; + const double var_x145 = pow(var_chaste_interface__Irel__Irel, 2); + const double var_x146 = mParameters[19] * var_chaste_interface__Ito2_i2f_gate__i2f; + const double var_x147 = var_x146 * (1 - 1 / (1 + 6.2499999999999991 * var_x145)); + const double var_x148 = (var_x40 >= -9.9999999999999995e-8) && (var_x40 <= 9.9999999999999995e-8); + const double var_x149 = exp(var_x40); + const double var_x150 = var_chaste_interface__membrane__Vm / (-1 + var_x149); + const double var_x151 = 3612.0012202503358 * var_x150; + const double var_x152 = var_x146 * (-100 * var_x149 + var_chaste_interface__Cl__Cl_i) * var_chaste_interface__Irel__Irel / pow((0.16000000000000003 + var_x145), 2); + const double var_x153 = 1 + 8.1000000000000005e-11 / pow(var_chaste_interface__Ca__Ca_ss_CaL, 4); + const double var_x154 = 1 / (pow(var_x153, 2) * pow(var_chaste_interface__Ca__Ca_ss_CaL, 5)); + const double var_x155 = 9.7200000000000016e-10 * var_x154; + const double var_x156 = var_x155 * var_chaste_interface__ICaL__C; + const double var_x157 = _lt_0_row[40]; + const double var_x158 = _lt_0_row[11]; + const double var_x159 = var_x157 * var_x158; + const double var_x160 = _lt_0_row[41]; + const double var_x161 = 0.80000000000000004 * var_x160; + const double var_x162 = 0.80000000000000004 - var_x161; + const double var_x163 = _lt_0_row[17]; + const double var_x164 = _lt_0_row[16]; + const double var_x165 = var_x163 + 0.032730010146303147 * var_x164; + const double var_x166 = var_x162 * var_x165; + const double var_x167 = 1 / var_x153; + const double var_x168 = 3 * var_x167; + const double var_x169 = var_x166 + var_x168; + const double var_x170 = 0.20000000000000001 + var_x161; + const double var_x171 = var_x165 * var_x170; + const double var_x172 = var_x157 * (1 - var_x158); + const double var_x173 = 0.99990000999900008 * var_x160; + const double var_x174 = 0.99990000999900008 - var_x173; + const double var_x175 = 9.9990000999900015e-5 + var_x173; + const double var_x176 = var_x170 * var_x174 / (var_x162 * var_x175); + const double var_x177 = 9.7200000000000002e-16 * var_x154 * var_x176; + const double var_x178 = var_x177 * var_chaste_interface__ICaL__CI; + const double var_x179 = 3.0000000000000001e-6 * var_x167 * var_x176; + const double var_x180 = var_x171 + var_x179; + const double var_x181 = 9.0720000000000001e-12 * var_x154 * var_x164 / pow((1 - 0.69999999999999996 * var_x167), 2); + const double var_x182 = var_x174 * var_x181; + const double var_x183 = var_x182 * var_chaste_interface__ICaL__C_star; + const double var_x184 = var_x175 * var_x181; + const double var_x185 = var_x184 * var_chaste_interface__ICaL__CI_star; + const double var_x186 = -var_x172; + const double var_x187 = var_x163 + 1 * var_x164 / (25 - 17.5 * var_x167); + const double var_x188 = var_x175 * var_x187; + const double var_x189 = 9.9999999999999995e-7 + var_x172; + const double var_x190 = var_x174 * var_x187; + const double var_x191 = 1 + var_x190; + const double var_x192 = var_x155 * var_chaste_interface__ICaL__O; + const double var_x193 = -var_x159; + const double var_x194 = -var_x188; + const double var_x195 = _lt_0_row[42]; + const double var_x196 = 0.059458391923439997 * var_x195; + const double var_x197 = _lt_0_row[43]; + const double var_x198 = 0.083986312199829993 * var_x197; + const double var_x199 = _lt_0_row[44]; + const double var_x200 = 0.0062346537747999999 * var_x199; + const double var_x201 = 0.029729195961719999 * var_x195; + const double var_x202 = _lt_0_row[45]; + const double var_x203 = 0.01460066118316 * var_x202; + const double var_x204 = 0.014864597980859999 * var_x195; + const double var_x205 = var_x198 + var_x203; + const double var_x206 = 0.16797262439965999 * var_x197; + const double var_x207 = 0.009351980662199999 * var_x199; + const double var_x208 = 0.02920132236632 * var_x202; + const double var_x209 = var_x206 + var_x208; + const double var_x210 = 0.043801983549479999 * var_x202; + const double var_x211 = 0.0124693075496 * var_x199; + const double var_x212 = _lt_0_row[36]; + const double var_x213 = 0.04459379394258 * var_x195; + const double var_x214 = 0.0031173268874 * var_x199; + const double var_x215 = 0.25195893659948998 * var_x197; + const double var_x216 = var_x210 + var_x215; + const double var_x217 = 0.33594524879931997 * var_x197; + const double var_x218 = 0.058402644732640001 * var_x202; + const double var_x219 = _lt_0_row[46]; + const double var_x220 = -var_x219; + const double var_x221 = 1 / var_x5; + const double var_x222 = pow(var_x221, 10); + const double var_x223 = 1 + 2.9619676669542428e-6 * var_x222; + const double var_x224 = var_x221 * var_x222 / pow(var_x223, 2); + const double var_x225 = -var_x224 * var_x7; + const double var_x226 = 1 / var_chaste_interface__Ca__Ca_JSR; + const double var_x227 = 1 + 0.0123 * var_x226; + const double var_x228 = 1 / var_x223; + const double var_x229 = 4.75 + 4.75 * var_x228; + const double var_x230 = pow(var_x226, 8); + const double var_x231 = 1 + 1 * var_x230; + const double var_x232 = mParameters[1] / var_x231; + const double var_x233 = var_x114 * var_x232; + const double var_x234 = -var_chaste_interface__Irel__Irel - var_x229 * var_x233; + const double var_x235 = var_x227 * var_x234 / pow((1 + var_x228), 2); + const double var_x236 = 1 / var_x229; + const double var_x237 = var_x227 * var_x236; + const double var_x238 = var_x233 * var_x237; + const double var_x239 = var_x227 * var_x232; + const double var_x240 = var_x10 * var_x224; + const double var_x241 = -var_x115 * var_x239; + const double var_x242 = 1 / var_chaste_interface__Ca__Ca_i; + const double var_x243 = pow(var_x242, 1.3999999999999999); + const double var_x244 = 1 + 6.4818210260626455e-7 * var_x243; + const double var_x245 = 1 / (0.018329999999999999 * var_chaste_interface__Na__Na_i + var_chaste_interface__K__K_i); + const double var_x246 = -26.712338705498265 * log(var_x245 * (0.018329999999999999 * mParameters[5] + mParameters[4])) + var_chaste_interface__membrane__Vm; + const double var_x247 = 1 - var_chaste_interface__IKs__C1 - var_chaste_interface__IKs__C10 - var_chaste_interface__IKs__C11 - var_chaste_interface__IKs__C12 - var_chaste_interface__IKs__C13 - var_chaste_interface__IKs__C14 - var_chaste_interface__IKs__C15 - var_chaste_interface__IKs__C2 - var_chaste_interface__IKs__C3 - var_chaste_interface__IKs__C4 - var_chaste_interface__IKs__C5 - var_chaste_interface__IKs__C6 - var_chaste_interface__IKs__C7 - var_chaste_interface__IKs__C8 - var_chaste_interface__IKs__C9; + const double var_x248 = (1 + 0.59999999999999998 / var_x244) * mParameters[16]; + const double var_x249 = 6.1702220000015831e-5 * var_x246 * var_x248; + const double var_x250 = 0.0016482105995215921 * var_x126; + const double var_x251 = var_x245 * var_x247 * var_x248; + const double var_x252 = sqrt(mParameters[4]); + const double var_x253 = var_x126 * var_x252; + const double var_x254 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 6.3708927812613361 * var_x127); + const double var_x255 = 1 + var_x254; + const double var_x256 = 1 / var_x255; + const double var_x257 = exp(-2.4444678999999998 + 13.738155796237757 * var_x127 - 0.51429999999999998 * var_chaste_interface__membrane__Vm); + const double var_x258 = 1 + var_x257; + const double var_x259 = 1 / var_x258; + const double var_x260 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__Vm - 2.1455350448256207 * var_x127); + const double var_x261 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__Vm - 1.6494869150645177 * var_x127); + const double var_x262 = var_x261 + 0.49124000000000001 * var_x260; + const double var_x263 = var_x259 * var_x262; + const double var_x264 = 1 / (var_x263 + 1.02 * var_x256); + const double var_x265 = var_x256 * mParameters[12]; + const double var_x266 = pow(var_x255, (-2)); + const double var_x267 = -var_x128 + var_chaste_interface__membrane__Vm; + const double var_x268 = 1 + 0.38461538461538458 * var_chaste_interface__Na__Na_i; + const double var_x269 = pow(var_x268, (-4)); + const double var_x270 = 1 / (1 + exp(-3.444101282717841 - var_x40)); + const double var_x271 = 1 / (1.5 + mParameters[4]); + const double var_x272 = var_x270 * var_x271 * mParameters[18] * mParameters[4]; + const double var_x273 = pow(var_x268, (-3)); + const double var_x274 = 3.299618375272375e-16 * var_x92; + const double var_x275 = 8.2490459381809375e-17 * var_x99; + const double var_x276 = var_x149 * mParameters[9]; + const double var_x277 = 0.0016482105995215921 * var_x133; + const double var_x278 = 2.796426573043338e-15 * var_x99; + + + rJacobian[0][0] = 1.0 - (mDt * (-0.00068000000000000005 - 0.0025000000000000005 * var_x2 * var_x5 + 0.0025000000000000005 * var_x0 * var_x2 * var_x7)); + rJacobian[0][1] = 0.0; + rJacobian[0][2] = 0.0; + rJacobian[0][3] = 0.0; + rJacobian[0][4] = 0.0; + rJacobian[0][5] = -(mDt * (3.7500000000000005e-6 * var_x10 * var_x5 + 1.8750000000000003e-7 * var_x8 * pow(var_x0, 2) / pow(var_x1, 3))); + rJacobian[0][6] = 0.0; + rJacobian[0][7] = 0.0; + rJacobian[0][8] = 0.0; + rJacobian[0][9] = 0.0; + rJacobian[0][10] = 0.0; + rJacobian[0][11] = 0.0; + rJacobian[0][12] = 0.0; + rJacobian[0][13] = 0.0; + rJacobian[0][14] = 0.0; + rJacobian[0][15] = 0.0; + rJacobian[0][16] = 0.0; + rJacobian[0][17] = 0.0; + rJacobian[0][18] = 0.0; + rJacobian[0][19] = 0.0; + rJacobian[0][20] = 0.0; + rJacobian[0][21] = 0.0; + rJacobian[0][22] = 0.0; + rJacobian[0][23] = 0.0; + rJacobian[0][24] = 0.0; + rJacobian[0][25] = 0.0; + rJacobian[0][26] = 0.0; + rJacobian[0][27] = 0.0; + rJacobian[0][28] = 0.0; + rJacobian[0][29] = 0.0; + rJacobian[0][30] = 0.0; + rJacobian[0][31] = 0.0; + rJacobian[0][32] = 0.0; + rJacobian[0][33] = 0.0; + rJacobian[0][34] = 0.0; + rJacobian[1][0] = 0.0; + rJacobian[1][1] = 1.0 - (mDt * (-var_x14 + 0.25 * (-var_chaste_interface__Irel__Irel + 0.040000000000000001 * var_chaste_interface__Ca__Ca_NSR - 0.040000000000000001 * var_chaste_interface__Ca__Ca_JSR) / (pow(var_x11, 3) * pow((0.125 + var_x12), 2)))); + rJacobian[1][2] = -(mDt * (var_x14)); + rJacobian[1][3] = 0.0; + rJacobian[1][4] = 0.0; + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = 0.0; + rJacobian[1][8] = 0.0; + rJacobian[1][9] = 0.0; + rJacobian[1][10] = 0.0; + rJacobian[1][11] = 0.0; + rJacobian[1][12] = 0.0; + rJacobian[1][13] = 0.0; + rJacobian[1][14] = 0.0; + rJacobian[1][15] = 0.0; + rJacobian[1][16] = 0.0; + rJacobian[1][17] = 0.0; + rJacobian[1][18] = 0.0; + rJacobian[1][19] = 0.0; + rJacobian[1][20] = 0.0; + rJacobian[1][21] = 0.0; + rJacobian[1][22] = 0.0; + rJacobian[1][23] = 0.0; + rJacobian[1][24] = 0.0; + rJacobian[1][25] = 0.0; + rJacobian[1][26] = 0.0; + rJacobian[1][27] = 0.0; + rJacobian[1][28] = 0.0; + rJacobian[1][29] = 0.0; + rJacobian[1][30] = 0.0; + rJacobian[1][31] = -(mDt * (-1 * var_x13)); + rJacobian[1][32] = 0.0; + rJacobian[1][33] = 0.0; + rJacobian[1][34] = 0.0; + rJacobian[2][0] = -(mDt * (var_x25 + var_x29)); + rJacobian[2][1] = -(mDt * (0.0034782608695652171)); + rJacobian[2][2] = 1.0 - (mDt * (-0.0034782608695652171 - 0.066666666666666666 * mParameters[0])); + rJacobian[2][3] = -(mDt * (-var_x28 + var_x22 * var_x27 * mParameters[2])); + rJacobian[2][4] = 0.0; + rJacobian[2][5] = -(mDt * (var_x31 + var_x32)); + rJacobian[2][6] = 0.0; + rJacobian[2][7] = 0.0; + rJacobian[2][8] = 0.0; + rJacobian[2][9] = 0.0; + rJacobian[2][10] = 0.0; + rJacobian[2][11] = 0.0; + rJacobian[2][12] = 0.0; + rJacobian[2][13] = 0.0; + rJacobian[2][14] = 0.0; + rJacobian[2][15] = 0.0; + rJacobian[2][16] = 0.0; + rJacobian[2][17] = 0.0; + rJacobian[2][18] = 0.0; + rJacobian[2][19] = 0.0; + rJacobian[2][20] = 0.0; + rJacobian[2][21] = 0.0; + rJacobian[2][22] = 0.0; + rJacobian[2][23] = 0.0; + rJacobian[2][24] = 0.0; + rJacobian[2][25] = 0.0; + rJacobian[2][26] = 0.0; + rJacobian[2][27] = 0.0; + rJacobian[2][28] = 0.0; + rJacobian[2][29] = 0.0; + rJacobian[2][30] = 0.0; + rJacobian[2][31] = 0.0; + rJacobian[2][32] = 0.0; + rJacobian[2][33] = 0.0; + rJacobian[2][34] = 0.0; + rJacobian[3][0] = -(mDt * (var_x38 * (-0.081415929203539822 * var_x25 - 0.081415929203539822 * var_x29))); + rJacobian[3][1] = 0.0; + rJacobian[3][2] = -(mDt * (var_x37 * var_x39)); + rJacobian[3][3] = 1.0 - (mDt * (var_x38 * (-0.14749262536873156 - var_x47 - var_x48 - 3.0851110000007915e-5 * ((var_x45) ? (var_x41 * var_x44) : (var_x44 * var_x46)) - var_x50 * var_x58 * var_x62 + 3.0851110000007915e-5 * var_x35 * var_chaste_interface__Ca__Ca_i * mParameters[10] + 0.081415929203539822 * var_x26 * var_x27 * var_chaste_interface__Ca__Ca_i * mParameters[2] + 1.0998727917574584e-16 * var_x50 * var_x60 * var_x63 * var_x65 * var_x66 * mParameters[17] + 1.5425555000003961e-12 * var_x57 * var_x60 * var_x65 * var_x67 * var_x68 * mParameters[17]) + 1 * (0.00023800000000000004 / pow(var_x33, 3) + 7.0000000000000007e-5 / pow(var_x34, 3)) * (0.14749262536873156 * var_chaste_interface__Ca__Ca_ss_sr + 1.2340444000003168e-5 * var_x82 - 0.14749262536873156 * var_chaste_interface__Ca__Ca_i - 3.0851110000007915e-5 * ((var_x45) ? (var_x41 * var_x71) : (var_x46 * var_x71)) + var_x39 * var_chaste_interface__Ca__Ca_NSR + var_x58 * var_x83 - var_x47 * var_chaste_interface__Ca__Ca_i - var_x48 * var_chaste_interface__Ca__Ca_i) / pow(var_x36, 2))); + rJacobian[3][4] = 0.0; + rJacobian[3][5] = -(mDt * (var_x38 * (0.14749262536873156 - 1.2340444000003168e-5 * var_x84 - 0.081415929203539822 * var_x31 - 0.081415929203539822 * var_x32 + 2.7496819793936459e-17 * var_x60 * var_x66 * var_x79 * var_x80 * var_x85 * mParameters[17] + 3.8563887500009902e-13 * var_x60 * var_x77 * var_x80 * var_x86 * var_x87 * mParameters[17]))); + rJacobian[3][6] = 0.0; + rJacobian[3][7] = 0.0; + rJacobian[3][8] = 0.0; + rJacobian[3][9] = 0.0; + rJacobian[3][10] = 0.0; + rJacobian[3][11] = 0.0; + rJacobian[3][12] = 0.0; + rJacobian[3][13] = 0.0; + rJacobian[3][14] = 0.0; + rJacobian[3][15] = 0.0; + rJacobian[3][16] = 0.0; + rJacobian[3][17] = 0.0; + rJacobian[3][18] = 0.0; + rJacobian[3][19] = 0.0; + rJacobian[3][20] = 0.0; + rJacobian[3][21] = 0.0; + rJacobian[3][22] = 0.0; + rJacobian[3][23] = 0.0; + rJacobian[3][24] = 0.0; + rJacobian[3][25] = 0.0; + rJacobian[3][26] = 0.0; + rJacobian[3][27] = 0.0; + rJacobian[3][28] = 0.0; + rJacobian[3][29] = 0.0; + rJacobian[3][30] = 0.0; + rJacobian[3][31] = 0.0; + rJacobian[3][32] = 0.0; + rJacobian[3][33] = -(mDt * (var_x38 * (1.0998727917574584e-16 * var_x91 * var_x92 + 0.00014808532800003802 * var_x94 * var_x96))); + rJacobian[3][34] = -(mDt * (var_x38 * (3.7021332000009505e-5 * var_x101 + 2.7496819793936459e-17 * var_x98 * var_x99))); + rJacobian[4][0] = 0.0; + rJacobian[4][1] = 0.0; + rJacobian[4][2] = 0.0; + rJacobian[4][3] = 0.0; + rJacobian[4][4] = 1.0 - (mDt * (-1 * var_x105 * (5 + 0.010458526290002684 * var_x110) - 1 * (0.019557600000000001 / pow(var_x102, 3) + 8.1780000000000006e-5 / pow(var_x103, 3)) * (5 * var_chaste_interface__Ca__Ca_ss_CaL + 0.010458526290002684 * var_x114 - 5 * var_chaste_interface__Ca__Ca_ss_sr) / pow(var_x104, 2))); + rJacobian[4][5] = -(mDt * (5 * var_x105)); + rJacobian[4][6] = 0.0; + rJacobian[4][7] = 0.0; + rJacobian[4][8] = 0.0; + rJacobian[4][9] = 0.0; + rJacobian[4][10] = 0.0; + rJacobian[4][11] = 0.0; + rJacobian[4][12] = -(mDt * (var_x116)); + rJacobian[4][13] = 0.0; + rJacobian[4][14] = -(mDt * (var_x116)); + rJacobian[4][15] = 0.0; + rJacobian[4][16] = 0.0; + rJacobian[4][17] = 0.0; + rJacobian[4][18] = 0.0; + rJacobian[4][19] = 0.0; + rJacobian[4][20] = 0.0; + rJacobian[4][21] = 0.0; + rJacobian[4][22] = 0.0; + rJacobian[4][23] = 0.0; + rJacobian[4][24] = 0.0; + rJacobian[4][25] = 0.0; + rJacobian[4][26] = 0.0; + rJacobian[4][27] = 0.0; + rJacobian[4][28] = 0.0; + rJacobian[4][29] = 0.0; + rJacobian[4][30] = 0.0; + rJacobian[4][31] = 0.0; + rJacobian[4][32] = 0.0; + rJacobian[4][33] = 0.0; + rJacobian[4][34] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = 0.0; + rJacobian[5][3] = -(mDt * (5 * var_x120)); + rJacobian[5][4] = -(mDt * (0.5 * var_x120)); + rJacobian[5][5] = 1.0 - (mDt * (-var_x123 * (5.5 + 0.0004183410516001074 * var_x84 - 1.3073157862503357e-11 * var_x121 - var_x122 * var_x66) - 1 * (0.019557600000000001 / pow(var_x117, 3) + 8.1780000000000006e-5 / pow(var_x118, 3)) * (5.5 * var_chaste_interface__Ca__Ca_ss_sr - 0.5 * var_chaste_interface__Ca__Ca_ss_CaL - 0.23999999999999996 * var_chaste_interface__Irel__Irel - 5 * var_chaste_interface__Ca__Ca_i - 0.0004183410516001074 * var_x82) / pow(var_x119, 2))); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[5][8] = 0.0; + rJacobian[5][9] = 0.0; + rJacobian[5][10] = 0.0; + rJacobian[5][11] = 0.0; + rJacobian[5][12] = 0.0; + rJacobian[5][13] = 0.0; + rJacobian[5][14] = 0.0; + rJacobian[5][15] = 0.0; + rJacobian[5][16] = 0.0; + rJacobian[5][17] = 0.0; + rJacobian[5][18] = 0.0; + rJacobian[5][19] = 0.0; + rJacobian[5][20] = 0.0; + rJacobian[5][21] = 0.0; + rJacobian[5][22] = 0.0; + rJacobian[5][23] = 0.0; + rJacobian[5][24] = 0.0; + rJacobian[5][25] = 0.0; + rJacobian[5][26] = 0.0; + rJacobian[5][27] = 0.0; + rJacobian[5][28] = 0.0; + rJacobian[5][29] = 0.0; + rJacobian[5][30] = 0.0; + rJacobian[5][31] = -(mDt * (0.23999999999999996 * var_x120)); + rJacobian[5][32] = 0.0; + rJacobian[5][33] = 0.0; + rJacobian[5][34] = -(mDt * (-var_x123 * (-0.0012550231548003222 * var_x101 - var_x122 * var_x98))); + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (-0.14749262536873156 - var_x131 - var_x139 - 0.0016482105995215921 * var_x124 * mParameters[8] + 6.1298221377044294e-8 * var_x124 * var_x129 * var_x132)); + rJacobian[6][7] = -(mDt * (0.14749262536873156)); + rJacobian[6][8] = 0.0; + rJacobian[6][9] = 0.0; + rJacobian[6][10] = 0.0; + rJacobian[6][11] = 0.0; + rJacobian[6][12] = 0.0; + rJacobian[6][13] = 0.0; + rJacobian[6][14] = 0.0; + rJacobian[6][15] = 0.0; + rJacobian[6][16] = 0.0; + rJacobian[6][17] = 0.0; + rJacobian[6][18] = 0.0; + rJacobian[6][19] = 0.0; + rJacobian[6][20] = 0.0; + rJacobian[6][21] = 0.0; + rJacobian[6][22] = 0.0; + rJacobian[6][23] = 0.0; + rJacobian[6][24] = 0.0; + rJacobian[6][25] = 0.0; + rJacobian[6][26] = 0.0; + rJacobian[6][27] = 0.0; + rJacobian[6][28] = 0.0; + rJacobian[6][29] = 0.0; + rJacobian[6][30] = 0.0; + rJacobian[6][31] = 0.0; + rJacobian[6][32] = -(mDt * (-var_x140 + var_x126 * var_x141)); + rJacobian[6][33] = -(mDt * (-var_x142)); + rJacobian[6][34] = 0.0; + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = 0.0; + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = -(mDt * (5 + 0.0020917052580005369 * ((var_x148) ? (-var_x144 * var_x147) : (-var_x147 * var_x151)))); + rJacobian[7][7] = 1.0 - (mDt * (-5)); + rJacobian[7][8] = 0.0; + rJacobian[7][9] = 0.0; + rJacobian[7][10] = 0.0; + rJacobian[7][11] = 0.0; + rJacobian[7][12] = 0.0; + rJacobian[7][13] = 0.0; + rJacobian[7][14] = 0.0; + rJacobian[7][15] = 0.0; + rJacobian[7][16] = 0.0; + rJacobian[7][17] = 0.0; + rJacobian[7][18] = 0.0; + rJacobian[7][19] = 0.0; + rJacobian[7][20] = 0.0; + rJacobian[7][21] = 0.0; + rJacobian[7][22] = 0.0; + rJacobian[7][23] = 0.0; + rJacobian[7][24] = 0.0; + rJacobian[7][25] = 0.0; + rJacobian[7][26] = 0.0; + rJacobian[7][27] = 0.0; + rJacobian[7][28] = 0.0; + rJacobian[7][29] = 0.0; + rJacobian[7][30] = 0.0; + rJacobian[7][31] = -(mDt * (0.0020917052580005369 * ((var_x148) ? (-30875.200000000004 * var_x143 * var_x152) : (-1155.8403904801075 * var_x150 * var_x152)))); + rJacobian[7][32] = 0.0; + rJacobian[7][33] = 0.0; + rJacobian[7][34] = 0.0; + rJacobian[8][0] = 0.0; + rJacobian[8][1] = 0.0; + rJacobian[8][2] = 0.0; + rJacobian[8][3] = 0.0; + rJacobian[8][4] = -(mDt * (-var_x156)); + rJacobian[8][5] = 0.0; + rJacobian[8][6] = 0.0; + rJacobian[8][7] = 0.0; + rJacobian[8][8] = 1.0 - (mDt * (-var_x159 - var_x169)); + rJacobian[8][9] = -(mDt * (var_x171)); + rJacobian[8][10] = 0.0; + rJacobian[8][11] = -(mDt * (1)); + rJacobian[8][12] = -(mDt * (var_x172)); + rJacobian[8][13] = 0.0; + rJacobian[8][14] = 0.0; + rJacobian[8][15] = 0.0; + rJacobian[8][16] = 0.0; + rJacobian[8][17] = 0.0; + rJacobian[8][18] = 0.0; + rJacobian[8][19] = 0.0; + rJacobian[8][20] = 0.0; + rJacobian[8][21] = 0.0; + rJacobian[8][22] = 0.0; + rJacobian[8][23] = 0.0; + rJacobian[8][24] = 0.0; + rJacobian[8][25] = 0.0; + rJacobian[8][26] = 0.0; + rJacobian[8][27] = 0.0; + rJacobian[8][28] = 0.0; + rJacobian[8][29] = 0.0; + rJacobian[8][30] = 0.0; + rJacobian[8][31] = 0.0; + rJacobian[8][32] = 0.0; + rJacobian[8][33] = 0.0; + rJacobian[8][34] = 0.0; + rJacobian[9][0] = 0.0; + rJacobian[9][1] = 0.0; + rJacobian[9][2] = 0.0; + rJacobian[9][3] = 0.0; + rJacobian[9][4] = -(mDt * (-var_x178)); + rJacobian[9][5] = 0.0; + rJacobian[9][6] = 0.0; + rJacobian[9][7] = 0.0; + rJacobian[9][8] = -(mDt * (var_x166)); + rJacobian[9][9] = 1.0 - (mDt * (-var_x159 - var_x180)); + rJacobian[9][10] = -(mDt * (9.9999999999999995e-7)); + rJacobian[9][11] = 0.0; + rJacobian[9][12] = 0.0; + rJacobian[9][13] = -(mDt * (var_x172)); + rJacobian[9][14] = 0.0; + rJacobian[9][15] = 0.0; + rJacobian[9][16] = 0.0; + rJacobian[9][17] = 0.0; + rJacobian[9][18] = 0.0; + rJacobian[9][19] = 0.0; + rJacobian[9][20] = 0.0; + rJacobian[9][21] = 0.0; + rJacobian[9][22] = 0.0; + rJacobian[9][23] = 0.0; + rJacobian[9][24] = 0.0; + rJacobian[9][25] = 0.0; + rJacobian[9][26] = 0.0; + rJacobian[9][27] = 0.0; + rJacobian[9][28] = 0.0; + rJacobian[9][29] = 0.0; + rJacobian[9][30] = 0.0; + rJacobian[9][31] = 0.0; + rJacobian[9][32] = 0.0; + rJacobian[9][33] = 0.0; + rJacobian[9][34] = 0.0; + rJacobian[10][0] = 0.0; + rJacobian[10][1] = 0.0; + rJacobian[10][2] = 0.0; + rJacobian[10][3] = 0.0; + rJacobian[10][4] = -(mDt * (var_x178 + var_x183 - var_x185)); + rJacobian[10][5] = 0.0; + rJacobian[10][6] = 0.0; + rJacobian[10][7] = 0.0; + rJacobian[10][8] = -(mDt * (var_x186)); + rJacobian[10][9] = -(mDt * (var_x179 - var_x172)); + rJacobian[10][10] = 1.0 - (mDt * (-var_x159 - var_x188 - var_x189)); + rJacobian[10][11] = -(mDt * (var_x186 + var_x190)); + rJacobian[10][12] = -(mDt * (var_x186)); + rJacobian[10][13] = -(mDt * (var_x186)); + rJacobian[10][14] = -(mDt * (var_x186)); + rJacobian[10][15] = 0.0; + rJacobian[10][16] = 0.0; + rJacobian[10][17] = 0.0; + rJacobian[10][18] = 0.0; + rJacobian[10][19] = 0.0; + rJacobian[10][20] = 0.0; + rJacobian[10][21] = 0.0; + rJacobian[10][22] = 0.0; + rJacobian[10][23] = 0.0; + rJacobian[10][24] = 0.0; + rJacobian[10][25] = 0.0; + rJacobian[10][26] = 0.0; + rJacobian[10][27] = 0.0; + rJacobian[10][28] = 0.0; + rJacobian[10][29] = 0.0; + rJacobian[10][30] = 0.0; + rJacobian[10][31] = 0.0; + rJacobian[10][32] = 0.0; + rJacobian[10][33] = 0.0; + rJacobian[10][34] = 0.0; + rJacobian[11][0] = 0.0; + rJacobian[11][1] = 0.0; + rJacobian[11][2] = 0.0; + rJacobian[11][3] = 0.0; + rJacobian[11][4] = -(mDt * (var_x156 + var_x185 - var_x183)); + rJacobian[11][5] = 0.0; + rJacobian[11][6] = 0.0; + rJacobian[11][7] = 0.0; + rJacobian[11][8] = -(mDt * (var_x168)); + rJacobian[11][9] = 0.0; + rJacobian[11][10] = -(mDt * (var_x188)); + rJacobian[11][11] = 1.0 - (mDt * (-var_x159 - var_x191)); + rJacobian[11][12] = 0.0; + rJacobian[11][13] = 0.0; + rJacobian[11][14] = -(mDt * (var_x172)); + rJacobian[11][15] = 0.0; + rJacobian[11][16] = 0.0; + rJacobian[11][17] = 0.0; + rJacobian[11][18] = 0.0; + rJacobian[11][19] = 0.0; + rJacobian[11][20] = 0.0; + rJacobian[11][21] = 0.0; + rJacobian[11][22] = 0.0; + rJacobian[11][23] = 0.0; + rJacobian[11][24] = 0.0; + rJacobian[11][25] = 0.0; + rJacobian[11][26] = 0.0; + rJacobian[11][27] = 0.0; + rJacobian[11][28] = 0.0; + rJacobian[11][29] = 0.0; + rJacobian[11][30] = 0.0; + rJacobian[11][31] = 0.0; + rJacobian[11][32] = 0.0; + rJacobian[11][33] = 0.0; + rJacobian[11][34] = 0.0; + rJacobian[12][0] = 0.0; + rJacobian[12][1] = 0.0; + rJacobian[12][2] = 0.0; + rJacobian[12][3] = 0.0; + rJacobian[12][4] = -(mDt * (-var_x192)); + rJacobian[12][5] = 0.0; + rJacobian[12][6] = 0.0; + rJacobian[12][7] = 0.0; + rJacobian[12][8] = -(mDt * (var_x159)); + rJacobian[12][9] = 0.0; + rJacobian[12][10] = 0.0; + rJacobian[12][11] = 0.0; + rJacobian[12][12] = 1.0 - (mDt * (-var_x169 - var_x172)); + rJacobian[12][13] = -(mDt * (var_x171)); + rJacobian[12][14] = -(mDt * (1)); + rJacobian[12][15] = 0.0; + rJacobian[12][16] = 0.0; + rJacobian[12][17] = 0.0; + rJacobian[12][18] = 0.0; + rJacobian[12][19] = 0.0; + rJacobian[12][20] = 0.0; + rJacobian[12][21] = 0.0; + rJacobian[12][22] = 0.0; + rJacobian[12][23] = 0.0; + rJacobian[12][24] = 0.0; + rJacobian[12][25] = 0.0; + rJacobian[12][26] = 0.0; + rJacobian[12][27] = 0.0; + rJacobian[12][28] = 0.0; + rJacobian[12][29] = 0.0; + rJacobian[12][30] = 0.0; + rJacobian[12][31] = 0.0; + rJacobian[12][32] = 0.0; + rJacobian[12][33] = 0.0; + rJacobian[12][34] = 0.0; + rJacobian[13][0] = 0.0; + rJacobian[13][1] = 0.0; + rJacobian[13][2] = 0.0; + rJacobian[13][3] = 0.0; + rJacobian[13][4] = -(mDt * (-var_x177 * var_chaste_interface__ICaL__OI)); + rJacobian[13][5] = 0.0; + rJacobian[13][6] = 0.0; + rJacobian[13][7] = 0.0; + rJacobian[13][8] = -(mDt * (-9.9999999999999995e-7)); + rJacobian[13][9] = -(mDt * (-9.9999999999999995e-7 - var_x193)); + rJacobian[13][10] = -(mDt * (-9.9999999999999995e-7)); + rJacobian[13][11] = -(mDt * (-9.9999999999999995e-7)); + rJacobian[13][12] = -(mDt * (-9.9999999999999995e-7 + var_x166)); + rJacobian[13][13] = 1.0 - (mDt * (-var_x180 - var_x189)); + rJacobian[13][14] = -(mDt * (-9.9999999999999995e-7)); + rJacobian[13][15] = 0.0; + rJacobian[13][16] = 0.0; + rJacobian[13][17] = 0.0; + rJacobian[13][18] = 0.0; + rJacobian[13][19] = 0.0; + rJacobian[13][20] = 0.0; + rJacobian[13][21] = 0.0; + rJacobian[13][22] = 0.0; + rJacobian[13][23] = 0.0; + rJacobian[13][24] = 0.0; + rJacobian[13][25] = 0.0; + rJacobian[13][26] = 0.0; + rJacobian[13][27] = 0.0; + rJacobian[13][28] = 0.0; + rJacobian[13][29] = 0.0; + rJacobian[13][30] = 0.0; + rJacobian[13][31] = 0.0; + rJacobian[13][32] = 0.0; + rJacobian[13][33] = 0.0; + rJacobian[13][34] = 0.0; + rJacobian[14][0] = 0.0; + rJacobian[14][1] = 0.0; + rJacobian[14][2] = 0.0; + rJacobian[14][3] = 0.0; + rJacobian[14][4] = -(mDt * (var_x192 + var_x184 * (1 - var_x107 - var_chaste_interface__ICaL__C - var_chaste_interface__ICaL__CI - var_chaste_interface__ICaL__CI_star - var_chaste_interface__ICaL__C_star - var_chaste_interface__ICaL__OI) - var_x182 * var_chaste_interface__ICaL__O_star)); + rJacobian[14][5] = 0.0; + rJacobian[14][6] = 0.0; + rJacobian[14][7] = 0.0; + rJacobian[14][8] = -(mDt * (var_x194)); + rJacobian[14][9] = -(mDt * (var_x194)); + rJacobian[14][10] = -(mDt * (var_x194)); + rJacobian[14][11] = -(mDt * (-var_x188 - var_x193)); + rJacobian[14][12] = -(mDt * (var_x168 - var_x188)); + rJacobian[14][13] = -(mDt * (var_x194)); + rJacobian[14][14] = 1.0 - (mDt * (-var_x172 - var_x188 - var_x191)); + rJacobian[14][15] = 0.0; + rJacobian[14][16] = 0.0; + rJacobian[14][17] = 0.0; + rJacobian[14][18] = 0.0; + rJacobian[14][19] = 0.0; + rJacobian[14][20] = 0.0; + rJacobian[14][21] = 0.0; + rJacobian[14][22] = 0.0; + rJacobian[14][23] = 0.0; + rJacobian[14][24] = 0.0; + rJacobian[14][25] = 0.0; + rJacobian[14][26] = 0.0; + rJacobian[14][27] = 0.0; + rJacobian[14][28] = 0.0; + rJacobian[14][29] = 0.0; + rJacobian[14][30] = 0.0; + rJacobian[14][31] = 0.0; + rJacobian[14][32] = 0.0; + rJacobian[14][33] = 0.0; + rJacobian[14][34] = 0.0; + rJacobian[15][0] = 0.0; + rJacobian[15][1] = 0.0; + rJacobian[15][2] = 0.0; + rJacobian[15][3] = 0.0; + rJacobian[15][4] = 0.0; + rJacobian[15][5] = 0.0; + rJacobian[15][6] = 0.0; + rJacobian[15][7] = 0.0; + rJacobian[15][8] = 0.0; + rJacobian[15][9] = 0.0; + rJacobian[15][10] = 0.0; + rJacobian[15][11] = 0.0; + rJacobian[15][12] = 0.0; + rJacobian[15][13] = 0.0; + rJacobian[15][14] = 0.0; + rJacobian[15][15] = 1.0 - (mDt * (-var_x196)); + rJacobian[15][16] = 0.0; + rJacobian[15][17] = 0.0; + rJacobian[15][18] = 0.0; + rJacobian[15][19] = 0.0; + rJacobian[15][20] = 0.0; + rJacobian[15][21] = 0.0; + rJacobian[15][22] = -(mDt * (var_x198)); + rJacobian[15][23] = 0.0; + rJacobian[15][24] = 0.0; + rJacobian[15][25] = 0.0; + rJacobian[15][26] = 0.0; + rJacobian[15][27] = 0.0; + rJacobian[15][28] = 0.0; + rJacobian[15][29] = 0.0; + rJacobian[15][30] = 0.0; + rJacobian[15][31] = 0.0; + rJacobian[15][32] = 0.0; + rJacobian[15][33] = 0.0; + rJacobian[15][34] = 0.0; + rJacobian[16][0] = 0.0; + rJacobian[16][1] = 0.0; + rJacobian[16][2] = 0.0; + rJacobian[16][3] = 0.0; + rJacobian[16][4] = 0.0; + rJacobian[16][5] = 0.0; + rJacobian[16][6] = 0.0; + rJacobian[16][7] = 0.0; + rJacobian[16][8] = 0.0; + rJacobian[16][9] = 0.0; + rJacobian[16][10] = 0.0; + rJacobian[16][11] = 0.0; + rJacobian[16][12] = 0.0; + rJacobian[16][13] = 0.0; + rJacobian[16][14] = 0.0; + rJacobian[16][15] = 0.0; + rJacobian[16][16] = 1.0 - (mDt * (-var_x200 - var_x201)); + rJacobian[16][17] = -(mDt * (var_x198)); + rJacobian[16][18] = 0.0; + rJacobian[16][19] = 0.0; + rJacobian[16][20] = 0.0; + rJacobian[16][21] = 0.0; + rJacobian[16][22] = 0.0; + rJacobian[16][23] = 0.0; + rJacobian[16][24] = 0.0; + rJacobian[16][25] = 0.0; + rJacobian[16][26] = 0.0; + rJacobian[16][27] = -(mDt * (var_x203)); + rJacobian[16][28] = 0.0; + rJacobian[16][29] = 0.0; + rJacobian[16][30] = 0.0; + rJacobian[16][31] = 0.0; + rJacobian[16][32] = 0.0; + rJacobian[16][33] = 0.0; + rJacobian[16][34] = 0.0; + rJacobian[17][0] = 0.0; + rJacobian[17][1] = 0.0; + rJacobian[17][2] = 0.0; + rJacobian[17][3] = 0.0; + rJacobian[17][4] = 0.0; + rJacobian[17][5] = 0.0; + rJacobian[17][6] = 0.0; + rJacobian[17][7] = 0.0; + rJacobian[17][8] = 0.0; + rJacobian[17][9] = 0.0; + rJacobian[17][10] = 0.0; + rJacobian[17][11] = 0.0; + rJacobian[17][12] = 0.0; + rJacobian[17][13] = 0.0; + rJacobian[17][14] = 0.0; + rJacobian[17][15] = 0.0; + rJacobian[17][16] = -(mDt * (var_x201)); + rJacobian[17][17] = 1.0 - (mDt * (-var_x200 - var_x204 - var_x205)); + rJacobian[17][18] = -(mDt * (var_x206)); + rJacobian[17][19] = -(mDt * (var_x207)); + rJacobian[17][20] = 0.0; + rJacobian[17][21] = 0.0; + rJacobian[17][22] = 0.0; + rJacobian[17][23] = 0.0; + rJacobian[17][24] = 0.0; + rJacobian[17][25] = 0.0; + rJacobian[17][26] = 0.0; + rJacobian[17][27] = 0.0; + rJacobian[17][28] = -(mDt * (var_x208)); + rJacobian[17][29] = 0.0; + rJacobian[17][30] = 0.0; + rJacobian[17][31] = 0.0; + rJacobian[17][32] = 0.0; + rJacobian[17][33] = 0.0; + rJacobian[17][34] = 0.0; + rJacobian[18][0] = 0.0; + rJacobian[18][1] = 0.0; + rJacobian[18][2] = 0.0; + rJacobian[18][3] = 0.0; + rJacobian[18][4] = 0.0; + rJacobian[18][5] = 0.0; + rJacobian[18][6] = 0.0; + rJacobian[18][7] = 0.0; + rJacobian[18][8] = 0.0; + rJacobian[18][9] = 0.0; + rJacobian[18][10] = 0.0; + rJacobian[18][11] = 0.0; + rJacobian[18][12] = 0.0; + rJacobian[18][13] = 0.0; + rJacobian[18][14] = 0.0; + rJacobian[18][15] = 0.0; + rJacobian[18][16] = 0.0; + rJacobian[18][17] = -(mDt * (var_x204)); + rJacobian[18][18] = 1.0 - (mDt * (-var_x200 - var_x209)); + rJacobian[18][19] = 0.0; + rJacobian[18][20] = -(mDt * (var_x207)); + rJacobian[18][21] = 0.0; + rJacobian[18][22] = 0.0; + rJacobian[18][23] = 0.0; + rJacobian[18][24] = 0.0; + rJacobian[18][25] = 0.0; + rJacobian[18][26] = 0.0; + rJacobian[18][27] = 0.0; + rJacobian[18][28] = 0.0; + rJacobian[18][29] = -(mDt * (var_x210)); + rJacobian[18][30] = 0.0; + rJacobian[18][31] = 0.0; + rJacobian[18][32] = 0.0; + rJacobian[18][33] = 0.0; + rJacobian[18][34] = 0.0; + rJacobian[19][0] = 0.0; + rJacobian[19][1] = 0.0; + rJacobian[19][2] = 0.0; + rJacobian[19][3] = 0.0; + rJacobian[19][4] = 0.0; + rJacobian[19][5] = 0.0; + rJacobian[19][6] = 0.0; + rJacobian[19][7] = 0.0; + rJacobian[19][8] = 0.0; + rJacobian[19][9] = 0.0; + rJacobian[19][10] = 0.0; + rJacobian[19][11] = 0.0; + rJacobian[19][12] = 0.0; + rJacobian[19][13] = 0.0; + rJacobian[19][14] = 0.0; + rJacobian[19][15] = 0.0; + rJacobian[19][16] = 0.0; + rJacobian[19][17] = -(mDt * (var_x203)); + rJacobian[19][18] = 0.0; + rJacobian[19][19] = 1.0 - (mDt * (-var_x204 - var_x207)); + rJacobian[19][20] = -(mDt * (var_x198)); + rJacobian[19][21] = 0.0; + rJacobian[19][22] = 0.0; + rJacobian[19][23] = 0.0; + rJacobian[19][24] = 0.0; + rJacobian[19][25] = 0.0; + rJacobian[19][26] = 0.0; + rJacobian[19][27] = 0.0; + rJacobian[19][28] = 0.0; + rJacobian[19][29] = 0.0; + rJacobian[19][30] = 0.0; + rJacobian[19][31] = 0.0; + rJacobian[19][32] = 0.0; + rJacobian[19][33] = 0.0; + rJacobian[19][34] = 0.0; + rJacobian[20][0] = 0.0; + rJacobian[20][1] = 0.0; + rJacobian[20][2] = 0.0; + rJacobian[20][3] = 0.0; + rJacobian[20][4] = 0.0; + rJacobian[20][5] = 0.0; + rJacobian[20][6] = 0.0; + rJacobian[20][7] = 0.0; + rJacobian[20][8] = 0.0; + rJacobian[20][9] = 0.0; + rJacobian[20][10] = 0.0; + rJacobian[20][11] = 0.0; + rJacobian[20][12] = 0.0; + rJacobian[20][13] = 0.0; + rJacobian[20][14] = 0.0; + rJacobian[20][15] = 0.0; + rJacobian[20][16] = 0.0; + rJacobian[20][17] = 0.0; + rJacobian[20][18] = -(mDt * (var_x208)); + rJacobian[20][19] = -(mDt * (var_x204)); + rJacobian[20][20] = 1.0 - (mDt * (-var_x205 - var_x207)); + rJacobian[20][21] = -(mDt * (var_x211)); + rJacobian[20][22] = 0.0; + rJacobian[20][23] = 0.0; + rJacobian[20][24] = 0.0; + rJacobian[20][25] = 0.0; + rJacobian[20][26] = 0.0; + rJacobian[20][27] = 0.0; + rJacobian[20][28] = 0.0; + rJacobian[20][29] = 0.0; + rJacobian[20][30] = 0.0; + rJacobian[20][31] = 0.0; + rJacobian[20][32] = 0.0; + rJacobian[20][33] = 0.0; + rJacobian[20][34] = 0.0; + rJacobian[21][0] = 0.0; + rJacobian[21][1] = 0.0; + rJacobian[21][2] = 0.0; + rJacobian[21][3] = 0.0; + rJacobian[21][4] = 0.0; + rJacobian[21][5] = 0.0; + rJacobian[21][6] = 0.0; + rJacobian[21][7] = 0.0; + rJacobian[21][8] = 0.0; + rJacobian[21][9] = 0.0; + rJacobian[21][10] = 0.0; + rJacobian[21][11] = 0.0; + rJacobian[21][12] = 0.0; + rJacobian[21][13] = 0.0; + rJacobian[21][14] = 0.0; + rJacobian[21][15] = 0.0; + rJacobian[21][16] = 0.0; + rJacobian[21][17] = 0.0; + rJacobian[21][18] = 0.0; + rJacobian[21][19] = 0.0; + rJacobian[21][20] = -(mDt * (var_x203)); + rJacobian[21][21] = 1.0 - (mDt * (-0.089538306411019994 - var_x211)); + rJacobian[21][22] = 0.0; + rJacobian[21][23] = 0.0; + rJacobian[21][24] = 0.0; + rJacobian[21][25] = 0.0; + rJacobian[21][26] = 0.0; + rJacobian[21][27] = 0.0; + rJacobian[21][28] = 0.0; + rJacobian[21][29] = 0.0; + rJacobian[21][30] = -(mDt * (var_x212)); + rJacobian[21][31] = 0.0; + rJacobian[21][32] = 0.0; + rJacobian[21][33] = 0.0; + rJacobian[21][34] = 0.0; + rJacobian[22][0] = 0.0; + rJacobian[22][1] = 0.0; + rJacobian[22][2] = 0.0; + rJacobian[22][3] = 0.0; + rJacobian[22][4] = 0.0; + rJacobian[22][5] = 0.0; + rJacobian[22][6] = 0.0; + rJacobian[22][7] = 0.0; + rJacobian[22][8] = 0.0; + rJacobian[22][9] = 0.0; + rJacobian[22][10] = 0.0; + rJacobian[22][11] = 0.0; + rJacobian[22][12] = 0.0; + rJacobian[22][13] = 0.0; + rJacobian[22][14] = 0.0; + rJacobian[22][15] = -(mDt * (var_x196)); + rJacobian[22][16] = 0.0; + rJacobian[22][17] = 0.0; + rJacobian[22][18] = 0.0; + rJacobian[22][19] = 0.0; + rJacobian[22][20] = 0.0; + rJacobian[22][21] = 0.0; + rJacobian[22][22] = 1.0 - (mDt * (-var_x205 - var_x213)); + rJacobian[22][23] = -(mDt * (var_x206)); + rJacobian[22][24] = 0.0; + rJacobian[22][25] = 0.0; + rJacobian[22][26] = -(mDt * (var_x214)); + rJacobian[22][27] = 0.0; + rJacobian[22][28] = 0.0; + rJacobian[22][29] = 0.0; + rJacobian[22][30] = 0.0; + rJacobian[22][31] = 0.0; + rJacobian[22][32] = 0.0; + rJacobian[22][33] = 0.0; + rJacobian[22][34] = 0.0; + rJacobian[23][0] = 0.0; + rJacobian[23][1] = 0.0; + rJacobian[23][2] = 0.0; + rJacobian[23][3] = 0.0; + rJacobian[23][4] = 0.0; + rJacobian[23][5] = 0.0; + rJacobian[23][6] = 0.0; + rJacobian[23][7] = 0.0; + rJacobian[23][8] = 0.0; + rJacobian[23][9] = 0.0; + rJacobian[23][10] = 0.0; + rJacobian[23][11] = 0.0; + rJacobian[23][12] = 0.0; + rJacobian[23][13] = 0.0; + rJacobian[23][14] = 0.0; + rJacobian[23][15] = 0.0; + rJacobian[23][16] = 0.0; + rJacobian[23][17] = 0.0; + rJacobian[23][18] = 0.0; + rJacobian[23][19] = 0.0; + rJacobian[23][20] = 0.0; + rJacobian[23][21] = 0.0; + rJacobian[23][22] = -(mDt * (var_x213)); + rJacobian[23][23] = 1.0 - (mDt * (-var_x201 - var_x209)); + rJacobian[23][24] = -(mDt * (var_x215)); + rJacobian[23][25] = 0.0; + rJacobian[23][26] = 0.0; + rJacobian[23][27] = -(mDt * (var_x214)); + rJacobian[23][28] = 0.0; + rJacobian[23][29] = 0.0; + rJacobian[23][30] = 0.0; + rJacobian[23][31] = 0.0; + rJacobian[23][32] = 0.0; + rJacobian[23][33] = 0.0; + rJacobian[23][34] = 0.0; + rJacobian[24][0] = 0.0; + rJacobian[24][1] = 0.0; + rJacobian[24][2] = 0.0; + rJacobian[24][3] = 0.0; + rJacobian[24][4] = 0.0; + rJacobian[24][5] = 0.0; + rJacobian[24][6] = 0.0; + rJacobian[24][7] = 0.0; + rJacobian[24][8] = 0.0; + rJacobian[24][9] = 0.0; + rJacobian[24][10] = 0.0; + rJacobian[24][11] = 0.0; + rJacobian[24][12] = 0.0; + rJacobian[24][13] = 0.0; + rJacobian[24][14] = 0.0; + rJacobian[24][15] = 0.0; + rJacobian[24][16] = 0.0; + rJacobian[24][17] = 0.0; + rJacobian[24][18] = 0.0; + rJacobian[24][19] = 0.0; + rJacobian[24][20] = 0.0; + rJacobian[24][21] = 0.0; + rJacobian[24][22] = 0.0; + rJacobian[24][23] = -(mDt * (var_x201)); + rJacobian[24][24] = 1.0 - (mDt * (-var_x204 - var_x216)); + rJacobian[24][25] = -(mDt * (var_x217)); + rJacobian[24][26] = 0.0; + rJacobian[24][27] = 0.0; + rJacobian[24][28] = -(mDt * (var_x214)); + rJacobian[24][29] = 0.0; + rJacobian[24][30] = 0.0; + rJacobian[24][31] = 0.0; + rJacobian[24][32] = 0.0; + rJacobian[24][33] = 0.0; + rJacobian[24][34] = 0.0; + rJacobian[25][0] = 0.0; + rJacobian[25][1] = 0.0; + rJacobian[25][2] = 0.0; + rJacobian[25][3] = 0.0; + rJacobian[25][4] = 0.0; + rJacobian[25][5] = 0.0; + rJacobian[25][6] = 0.0; + rJacobian[25][7] = 0.0; + rJacobian[25][8] = 0.0; + rJacobian[25][9] = 0.0; + rJacobian[25][10] = 0.0; + rJacobian[25][11] = 0.0; + rJacobian[25][12] = 0.0; + rJacobian[25][13] = 0.0; + rJacobian[25][14] = 0.0; + rJacobian[25][15] = 0.0; + rJacobian[25][16] = 0.0; + rJacobian[25][17] = 0.0; + rJacobian[25][18] = 0.0; + rJacobian[25][19] = 0.0; + rJacobian[25][20] = 0.0; + rJacobian[25][21] = 0.0; + rJacobian[25][22] = 0.0; + rJacobian[25][23] = 0.0; + rJacobian[25][24] = -(mDt * (var_x204)); + rJacobian[25][25] = 1.0 - (mDt * (-var_x217 - var_x218)); + rJacobian[25][26] = 0.0; + rJacobian[25][27] = 0.0; + rJacobian[25][28] = 0.0; + rJacobian[25][29] = -(mDt * (var_x214)); + rJacobian[25][30] = 0.0; + rJacobian[25][31] = 0.0; + rJacobian[25][32] = 0.0; + rJacobian[25][33] = 0.0; + rJacobian[25][34] = 0.0; + rJacobian[26][0] = 0.0; + rJacobian[26][1] = 0.0; + rJacobian[26][2] = 0.0; + rJacobian[26][3] = 0.0; + rJacobian[26][4] = 0.0; + rJacobian[26][5] = 0.0; + rJacobian[26][6] = 0.0; + rJacobian[26][7] = 0.0; + rJacobian[26][8] = 0.0; + rJacobian[26][9] = 0.0; + rJacobian[26][10] = 0.0; + rJacobian[26][11] = 0.0; + rJacobian[26][12] = 0.0; + rJacobian[26][13] = 0.0; + rJacobian[26][14] = 0.0; + rJacobian[26][15] = 0.0; + rJacobian[26][16] = 0.0; + rJacobian[26][17] = 0.0; + rJacobian[26][18] = 0.0; + rJacobian[26][19] = 0.0; + rJacobian[26][20] = 0.0; + rJacobian[26][21] = 0.0; + rJacobian[26][22] = -(mDt * (var_x203)); + rJacobian[26][23] = 0.0; + rJacobian[26][24] = 0.0; + rJacobian[26][25] = 0.0; + rJacobian[26][26] = 1.0 - (mDt * (-var_x213 - var_x214)); + rJacobian[26][27] = -(mDt * (var_x198)); + rJacobian[26][28] = 0.0; + rJacobian[26][29] = 0.0; + rJacobian[26][30] = 0.0; + rJacobian[26][31] = 0.0; + rJacobian[26][32] = 0.0; + rJacobian[26][33] = 0.0; + rJacobian[26][34] = 0.0; + rJacobian[27][0] = 0.0; + rJacobian[27][1] = 0.0; + rJacobian[27][2] = 0.0; + rJacobian[27][3] = 0.0; + rJacobian[27][4] = 0.0; + rJacobian[27][5] = 0.0; + rJacobian[27][6] = 0.0; + rJacobian[27][7] = 0.0; + rJacobian[27][8] = 0.0; + rJacobian[27][9] = 0.0; + rJacobian[27][10] = 0.0; + rJacobian[27][11] = 0.0; + rJacobian[27][12] = 0.0; + rJacobian[27][13] = 0.0; + rJacobian[27][14] = 0.0; + rJacobian[27][15] = 0.0; + rJacobian[27][16] = -(mDt * (var_x200)); + rJacobian[27][17] = 0.0; + rJacobian[27][18] = 0.0; + rJacobian[27][19] = 0.0; + rJacobian[27][20] = 0.0; + rJacobian[27][21] = 0.0; + rJacobian[27][22] = 0.0; + rJacobian[27][23] = -(mDt * (var_x208)); + rJacobian[27][24] = 0.0; + rJacobian[27][25] = 0.0; + rJacobian[27][26] = -(mDt * (var_x213)); + rJacobian[27][27] = 1.0 - (mDt * (-var_x201 - var_x205 - var_x214)); + rJacobian[27][28] = -(mDt * (var_x206)); + rJacobian[27][29] = 0.0; + rJacobian[27][30] = 0.0; + rJacobian[27][31] = 0.0; + rJacobian[27][32] = 0.0; + rJacobian[27][33] = 0.0; + rJacobian[27][34] = 0.0; + rJacobian[28][0] = 0.0; + rJacobian[28][1] = 0.0; + rJacobian[28][2] = 0.0; + rJacobian[28][3] = 0.0; + rJacobian[28][4] = 0.0; + rJacobian[28][5] = 0.0; + rJacobian[28][6] = 0.0; + rJacobian[28][7] = 0.0; + rJacobian[28][8] = 0.0; + rJacobian[28][9] = 0.0; + rJacobian[28][10] = 0.0; + rJacobian[28][11] = 0.0; + rJacobian[28][12] = 0.0; + rJacobian[28][13] = 0.0; + rJacobian[28][14] = 0.0; + rJacobian[28][15] = 0.0; + rJacobian[28][16] = 0.0; + rJacobian[28][17] = -(mDt * (var_x200)); + rJacobian[28][18] = 0.0; + rJacobian[28][19] = 0.0; + rJacobian[28][20] = 0.0; + rJacobian[28][21] = 0.0; + rJacobian[28][22] = 0.0; + rJacobian[28][23] = 0.0; + rJacobian[28][24] = -(mDt * (var_x210)); + rJacobian[28][25] = 0.0; + rJacobian[28][26] = 0.0; + rJacobian[28][27] = -(mDt * (var_x201)); + rJacobian[28][28] = 1.0 - (mDt * (-var_x204 - var_x209 - var_x214)); + rJacobian[28][29] = -(mDt * (var_x215)); + rJacobian[28][30] = 0.0; + rJacobian[28][31] = 0.0; + rJacobian[28][32] = 0.0; + rJacobian[28][33] = 0.0; + rJacobian[28][34] = 0.0; + rJacobian[29][0] = 0.0; + rJacobian[29][1] = 0.0; + rJacobian[29][2] = 0.0; + rJacobian[29][3] = 0.0; + rJacobian[29][4] = 0.0; + rJacobian[29][5] = 0.0; + rJacobian[29][6] = 0.0; + rJacobian[29][7] = 0.0; + rJacobian[29][8] = 0.0; + rJacobian[29][9] = 0.0; + rJacobian[29][10] = 0.0; + rJacobian[29][11] = 0.0; + rJacobian[29][12] = 0.0; + rJacobian[29][13] = 0.0; + rJacobian[29][14] = 0.0; + rJacobian[29][15] = 0.0; + rJacobian[29][16] = 0.0; + rJacobian[29][17] = 0.0; + rJacobian[29][18] = -(mDt * (var_x200)); + rJacobian[29][19] = 0.0; + rJacobian[29][20] = 0.0; + rJacobian[29][21] = 0.0; + rJacobian[29][22] = 0.0; + rJacobian[29][23] = 0.0; + rJacobian[29][24] = 0.0; + rJacobian[29][25] = -(mDt * (var_x218)); + rJacobian[29][26] = 0.0; + rJacobian[29][27] = 0.0; + rJacobian[29][28] = -(mDt * (var_x204)); + rJacobian[29][29] = 1.0 - (mDt * (-var_x214 - var_x216)); + rJacobian[29][30] = 0.0; + rJacobian[29][31] = 0.0; + rJacobian[29][32] = 0.0; + rJacobian[29][33] = 0.0; + rJacobian[29][34] = 0.0; + rJacobian[30][0] = 0.0; + rJacobian[30][1] = 0.0; + rJacobian[30][2] = 0.0; + rJacobian[30][3] = 0.0; + rJacobian[30][4] = 0.0; + rJacobian[30][5] = 0.0; + rJacobian[30][6] = 0.0; + rJacobian[30][7] = 0.0; + rJacobian[30][8] = 0.0; + rJacobian[30][9] = 0.0; + rJacobian[30][10] = 0.0; + rJacobian[30][11] = 0.0; + rJacobian[30][12] = 0.0; + rJacobian[30][13] = 0.0; + rJacobian[30][14] = 0.0; + rJacobian[30][15] = -(mDt * (var_x220)); + rJacobian[30][16] = -(mDt * (var_x220)); + rJacobian[30][17] = -(mDt * (var_x220)); + rJacobian[30][18] = -(mDt * (var_x220)); + rJacobian[30][19] = -(mDt * (var_x220)); + rJacobian[30][20] = -(mDt * (var_x220)); + rJacobian[30][21] = -(mDt * (0.089538306411019994 - var_x219)); + rJacobian[30][22] = -(mDt * (var_x220)); + rJacobian[30][23] = -(mDt * (var_x220)); + rJacobian[30][24] = -(mDt * (var_x220)); + rJacobian[30][25] = -(mDt * (var_x220)); + rJacobian[30][26] = -(mDt * (var_x220)); + rJacobian[30][27] = -(mDt * (var_x220)); + rJacobian[30][28] = -(mDt * (var_x220)); + rJacobian[30][29] = -(mDt * (var_x220)); + rJacobian[30][30] = 1.0 - (mDt * (-var_x212 - var_x219 + _lt_0_row[38])); + rJacobian[30][31] = 0.0; + rJacobian[30][32] = 0.0; + rJacobian[30][33] = 0.0; + rJacobian[30][34] = 0.0; + rJacobian[31][0] = -(mDt * (6.2357214041141957e-6 * var_x225 * var_x235 + 0.00014069346418032653 * var_x225 * var_x238)); + rJacobian[31][1] = -(mDt * (-0.0123 * var_x234 * var_x236 / pow(var_chaste_interface__Ca__Ca_JSR, 2) - 8 * var_x114 * var_x226 * var_x227 * var_x230 * mParameters[1] / pow(var_x231, 2))); + rJacobian[31][2] = 0.0; + rJacobian[31][3] = 0.0; + rJacobian[31][4] = -(mDt * (-var_x110 * var_x239)); + rJacobian[31][5] = -(mDt * (-4.6767910530856466e-10 * var_x235 * var_x240 - 1.0552009813524491e-8 * var_x238 * var_x240)); + rJacobian[31][6] = 0.0; + rJacobian[31][7] = 0.0; + rJacobian[31][8] = 0.0; + rJacobian[31][9] = 0.0; + rJacobian[31][10] = 0.0; + rJacobian[31][11] = 0.0; + rJacobian[31][12] = -(mDt * (var_x241)); + rJacobian[31][13] = 0.0; + rJacobian[31][14] = -(mDt * (var_x241)); + rJacobian[31][15] = 0.0; + rJacobian[31][16] = 0.0; + rJacobian[31][17] = 0.0; + rJacobian[31][18] = 0.0; + rJacobian[31][19] = 0.0; + rJacobian[31][20] = 0.0; + rJacobian[31][21] = 0.0; + rJacobian[31][22] = 0.0; + rJacobian[31][23] = 0.0; + rJacobian[31][24] = 0.0; + rJacobian[31][25] = 0.0; + rJacobian[31][26] = 0.0; + rJacobian[31][27] = 0.0; + rJacobian[31][28] = 0.0; + rJacobian[31][29] = 0.0; + rJacobian[31][30] = 0.0; + rJacobian[31][31] = 1.0 - (mDt * (-var_x237)); + rJacobian[31][32] = 0.0; + rJacobian[31][33] = 0.0; + rJacobian[31][34] = 0.0; + rJacobian[32][0] = 0.0; + rJacobian[32][1] = 0.0; + rJacobian[32][2] = 0.0; + rJacobian[32][3] = -(mDt * (-3.3595190743871034e-11 * var_x242 * var_x243 * var_x246 * var_x247 * mParameters[16] / pow(var_x244, 2))); + rJacobian[32][4] = 0.0; + rJacobian[32][5] = 0.0; + rJacobian[32][6] = -(mDt * (-var_x131 + var_x124 * var_x141)); + rJacobian[32][7] = 0.0; + rJacobian[32][8] = 0.0; + rJacobian[32][9] = 0.0; + rJacobian[32][10] = 0.0; + rJacobian[32][11] = 0.0; + rJacobian[32][12] = 0.0; + rJacobian[32][13] = 0.0; + rJacobian[32][14] = 0.0; + rJacobian[32][15] = -(mDt * (var_x249)); + rJacobian[32][16] = -(mDt * (var_x249)); + rJacobian[32][17] = -(mDt * (var_x249)); + rJacobian[32][18] = -(mDt * (var_x249)); + rJacobian[32][19] = -(mDt * (var_x249)); + rJacobian[32][20] = -(mDt * (var_x249)); + rJacobian[32][21] = -(mDt * (var_x249)); + rJacobian[32][22] = -(mDt * (var_x249)); + rJacobian[32][23] = -(mDt * (var_x249)); + rJacobian[32][24] = -(mDt * (var_x249)); + rJacobian[32][25] = -(mDt * (var_x249)); + rJacobian[32][26] = -(mDt * (var_x249)); + rJacobian[32][27] = -(mDt * (var_x249)); + rJacobian[32][28] = -(mDt * (var_x249)); + rJacobian[32][29] = -(mDt * (var_x249)); + rJacobian[32][30] = 0.0; + rJacobian[32][31] = 0.0; + rJacobian[32][32] = 1.0 - (mDt * (-var_x140 - 0.0016482105995215921 * var_x251 - var_x250 * _lt_0_row[8] * mParameters[14] + 6.1298221377044294e-8 * var_x126 * var_x129 * var_x132 - 0.00072346244967216237 * var_x253 * var_x264 * var_x265 - 0.00070927691144329649 * var_x253 * _lt_0_row[9] * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr - 2.6031772383887529e-5 * var_x252 * var_x265 * var_x267 * (-var_x259 * (1.053972635420138 * var_x126 * var_x260 + 1.6494869150645177 * var_x126 * var_x261) + 6.4983106368865622 * var_x126 * var_x254 * var_x266 - 13.738155796237757 * var_x126 * var_x257 * var_x262 / pow(var_x258, 2)) / pow((var_x256 + 0.98039215686274506 * var_x263), 2) - var_x250 * pow(var_chaste_interface__Ito1_a_gate__a, 3) * mParameters[20] * var_chaste_interface__Ito1_i1f_gate__i1f * var_chaste_interface__Ito1_i1s_gate__i1s * _lt_0_row[10] + 0.00017254579424681073 * var_x126 * var_x252 * var_x254 * var_x264 * var_x266 * var_x267 * mParameters[12])); + rJacobian[32][33] = -(mDt * (-3.0211700289230781e-5 * var_x251 - 8.1013733762844218e-6 * var_x269 * var_x272 * var_x51 + 2.1063570778339494e-5 * var_x270 * var_x271 * var_x273 * var_x88 * mParameters[18] * mParameters[4])); + rJacobian[32][34] = 0.0; + rJacobian[33][0] = 0.0; + rJacobian[33][1] = 0.0; + rJacobian[33][2] = 0.0; + rJacobian[33][3] = -(mDt * (-var_x274 * var_x66 - 4.6276665000011881e-12 * var_x65 * var_x67 * var_x68 * var_x93 + 0.00014808532800003802 * var_x50 * var_x53 * var_x57 * var_x59 * var_x60 * mParameters[17])); + rJacobian[33][4] = 0.0; + rJacobian[33][5] = -(mDt * (-1.156916625000297e-12 * var_x121 - var_x275 * var_x66 + 3.7021332000009505e-5 * var_x53 * var_x59 * var_x60 * var_x77 * var_x79 * mParameters[17])); + rJacobian[33][6] = -(mDt * (-var_x139)); + rJacobian[33][7] = 0.0; + rJacobian[33][8] = 0.0; + rJacobian[33][9] = 0.0; + rJacobian[33][10] = 0.0; + rJacobian[33][11] = 0.0; + rJacobian[33][12] = 0.0; + rJacobian[33][13] = 0.0; + rJacobian[33][14] = 0.0; + rJacobian[33][15] = 0.0; + rJacobian[33][16] = 0.0; + rJacobian[33][17] = 0.0; + rJacobian[33][18] = 0.0; + rJacobian[33][19] = 0.0; + rJacobian[33][20] = 0.0; + rJacobian[33][21] = 0.0; + rJacobian[33][22] = 0.0; + rJacobian[33][23] = 0.0; + rJacobian[33][24] = 0.0; + rJacobian[33][25] = 0.0; + rJacobian[33][26] = 0.0; + rJacobian[33][27] = 0.0; + rJacobian[33][28] = 0.0; + rJacobian[33][29] = 0.0; + rJacobian[33][30] = 0.0; + rJacobian[33][31] = 0.0; + rJacobian[33][32] = 0.0; + rJacobian[33][33] = 1.0 - (mDt * (-0.14749262536873156 - var_x142 - 6.1702220000015831e-5 * ((var_x148) ? (var_x144 * var_x276) : (var_x151 * var_x276)) - var_x274 * var_x91 - 0.00044425598400011404 * var_x94 * var_x96 - 3.1595356167509241e-5 * var_x272 * var_x273 * var_x88 - var_x277 * pow(var_chaste_interface__INaL_mL_gate__mL, 3) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL - var_x277 * pow(var_chaste_interface__INa_m_gate__m, 3) * mParameters[11] * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j + 1.2152060064426631e-5 * var_x269 * var_x270 * var_x271 * var_x51 * mParameters[18] * mParameters[4])); + rJacobian[33][34] = -(mDt * (0.14749262536873156 - 0.00011106399600002851 * var_x101 - var_x275 * var_x98)); + rJacobian[34][0] = 0.0; + rJacobian[34][1] = 0.0; + rJacobian[34][2] = 0.0; + rJacobian[34][3] = 0.0; + rJacobian[34][4] = 0.0; + rJacobian[34][5] = -(mDt * (-3.9219473587510072e-11 * var_x121 - var_x278 * var_x66 + 0.0012550231548003222 * var_x53 * var_x59 * var_x60 * var_x77 * var_x79 * mParameters[17])); + rJacobian[34][6] = 0.0; + rJacobian[34][7] = 0.0; + rJacobian[34][8] = 0.0; + rJacobian[34][9] = 0.0; + rJacobian[34][10] = 0.0; + rJacobian[34][11] = 0.0; + rJacobian[34][12] = 0.0; + rJacobian[34][13] = 0.0; + rJacobian[34][14] = 0.0; + rJacobian[34][15] = 0.0; + rJacobian[34][16] = 0.0; + rJacobian[34][17] = 0.0; + rJacobian[34][18] = 0.0; + rJacobian[34][19] = 0.0; + rJacobian[34][20] = 0.0; + rJacobian[34][21] = 0.0; + rJacobian[34][22] = 0.0; + rJacobian[34][23] = 0.0; + rJacobian[34][24] = 0.0; + rJacobian[34][25] = 0.0; + rJacobian[34][26] = 0.0; + rJacobian[34][27] = 0.0; + rJacobian[34][28] = 0.0; + rJacobian[34][29] = 0.0; + rJacobian[34][30] = 0.0; + rJacobian[34][31] = 0.0; + rJacobian[34][32] = 0.0; + rJacobian[34][33] = -(mDt * (5)); + rJacobian[34][34] = 1.0 - (mDt * (-5 - 0.0037650694644009667 * var_x101 - var_x278 * var_x98)); + } + + void Celldecker_2009FromCellMLBackwardEulerOpt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -87.4947322902196 + double var_chaste_interface__Ca__Ca_i = rY[1]; + // Units: mM; Initial value: 8.38749860095482e-05 + double var_chaste_interface__IKs__C1 = rY[2]; + // Units: dimensionless; Initial value: 0.476679784307081 + double var_chaste_interface__IKs__C2 = rY[3]; + // Units: dimensionless; Initial value: 0.255181042718489 + double var_chaste_interface__IKs__C3 = rY[4]; + // Units: dimensionless; Initial value: 0.0512272866698557 + double var_chaste_interface__IKs__C4 = rY[5]; + // Units: dimensionless; Initial value: 0.0045705849736195 + double var_chaste_interface__IKs__C5 = rY[6]; + // Units: dimensionless; Initial value: 0.000152923243503507 + double var_chaste_interface__IKs__C6 = rY[7]; + // Units: dimensionless; Initial value: 0.132814156809568 + double var_chaste_interface__IKs__C7 = rY[8]; + // Units: dimensionless; Initial value: 0.053324572164618 + double var_chaste_interface__IKs__C8 = rY[9]; + // Units: dimensionless; Initial value: 0.00713656414955778 + double var_chaste_interface__IKs__C9 = rY[10]; + // Units: dimensionless; Initial value: 0.000318368292970148 + double var_chaste_interface__IKs__C10 = rY[11]; + // Units: dimensionless; Initial value: 0.0138769647384953 + double var_chaste_interface__IKs__C11 = rY[12]; + // Units: dimensionless; Initial value: 0.00371438476499172 + double var_chaste_interface__IKs__C12 = rY[13]; + // Units: dimensionless; Initial value: 0.000248553788631871 + double var_chaste_interface__IKs__C13 = rY[14]; + // Units: dimensionless; Initial value: 0.000644426171899078 + double var_chaste_interface__IKs__C14 = rY[15]; + // Units: dimensionless; Initial value: 8.62495047666861e-05 + double var_chaste_interface__IKs__C15 = rY[16]; + // Units: dimensionless; Initial value: 1.12344645485893e-05 + double var_chaste_interface__IKs__O1 = rY[17]; + // Units: dimensionless; Initial value: 1.05292905767805e-05 + double var_chaste_interface__ICaL__O = rY[19]; + // Units: dimensionless; Initial value: 2.26882961412491e-05 + double var_chaste_interface__ICaL__O_star = rY[21]; + // Units: dimensionless; Initial value: 1.23556404128518e-10 + double var_chaste_interface__INa_m_gate__m = rY[25]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INa_h_gate__h = rY[26]; + // Units: dimensionless; Initial value: 0.991354143386887 + double var_chaste_interface__INa_j_gate__j = rY[27]; + // Units: dimensionless; Initial value: 0.99709036251243 + double var_chaste_interface__INaL_mL_gate__mL = rY[28]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INaL_hL_gate__hL = rY[29]; + // Units: dimensionless; Initial value: 0.319611809402137 + double var_chaste_interface__IKr_xr_gate__xr = rY[30]; + // Units: dimensionless; Initial value: 4.06959064407486e-06 + double var_chaste_interface__Ito1_a_gate__a = rY[31]; + // Units: dimensionless; Initial value: 1.76776038804228e-05 + double var_chaste_interface__Ito1_i1f_gate__i1f = rY[32]; + // Units: dimensionless; Initial value: 0.997976503910799 + double var_chaste_interface__Ito1_i1s_gate__i1s = rY[33]; + // Units: dimensionless; Initial value: 0.947581184798815 + double var_chaste_interface__Ito2_i2f_gate__i2f = rY[34]; + // Units: dimensionless; Initial value: 0.996044894628276 + double var_chaste_interface__Irel__Irel = rY[35]; + // Units: mM_per_ms; Initial value: 0.000714227102027745 + double var_chaste_interface__Ca__Ca_ss_sr = rY[38]; + // Units: mM; Initial value: 0.00011296707102434 + double var_chaste_interface__Ca__Ca_ss_CaL = rY[39]; + // Units: mM; Initial value: 0.000119239795531548 + double var_chaste_interface__Na__Na_i = rY[40]; + // Units: mM; Initial value: 8.01031392415197 + double var_chaste_interface__Na__Na_ss_sr = rY[41]; + // Units: mM; Initial value: 8.01033434859049 + double var_chaste_interface__Cl__Cl_i = rY[42]; + // Units: mM; Initial value: 20.6683603724432 + double var_chaste_interface__K__K_i = rY[44]; + // Units: mM; Initial value: 144.907134343314 + + // Lookup table indexing + const bool _oob_0 = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_IKs__O2 = 1 - var_chaste_interface__IKs__C1 - var_chaste_interface__IKs__C10 - var_chaste_interface__IKs__C11 - var_chaste_interface__IKs__C12 - var_chaste_interface__IKs__C13 - var_chaste_interface__IKs__C14 - var_chaste_interface__IKs__C15 - var_chaste_interface__IKs__C2 - var_chaste_interface__IKs__C3 - var_chaste_interface__IKs__C4 - var_chaste_interface__IKs__C5 - var_chaste_interface__IKs__C6 - var_chaste_interface__IKs__C7 - var_chaste_interface__IKs__C8 - var_chaste_interface__IKs__C9 - var_chaste_interface__IKs__O1; // dimensionless + const double var_IpCa__IpCa = var_chaste_interface__Ca__Ca_i * mParameters[10] / (0.00050000000000000001 + var_chaste_interface__Ca__Ca_i); // uA_per_uF + const double var_membrane__i_Stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF + const double var_ICaL__ICaL = (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (14448.004881001343 * _lt_0_row[5] * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6] * var_chaste_interface__membrane__Vm)); // uA_per_uF + const double var_ICab__ICab = (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (14448.004881001343 * _lt_0_row[5] * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7] * var_chaste_interface__membrane__Vm)); // uA_per_uF + const double var_INaCa__INaCa_ss_sr = 0.20000000000000001 * _lt_0_row[2] * (pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr * _lt_0_row[1]) * mParameters[17] / ((1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_ss_sr, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_ss_sr + 1.3 * pow(var_chaste_interface__Na__Na_ss_sr, 3) + pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_ss_sr, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3])); // uA_per_uF + const double var_INaCa__INaCa = 0.80000000000000004 * _lt_0_row[2] * (pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * _lt_0_row[1]) * mParameters[17] / ((1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_i, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_i + 1.3 * pow(var_chaste_interface__Na__Na_i, 3) + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_i, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_i) * mParameters[3])) + var_INaCa__INaCa_ss_sr; // uA_per_uF + const double var_INaK__INaK = 0.056895766954938545 * _lt_0_row[3] * pow(var_chaste_interface__Na__Na_i, 3) * mParameters[18] * mParameters[4] / (pow((1 + 0.38461538461538458 * var_chaste_interface__Na__Na_i), 3) * (1.5 + mParameters[4])); // uA_per_uF + const double var_INab__phi = 0.037435883507802616 * var_chaste_interface__membrane__Vm; // dimensionless + const double var_INab__INab = (((1 * var_INab__phi >= -9.9999999999999995e-8) && (1 * var_INab__phi <= 9.9999999999999995e-8)) ? (96485 * (1 - 0.5 * var_INab__phi) * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9]) : (96485 * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9] * var_INab__phi / (-1 + exp(1 * var_INab__phi)))); // uA_per_uF + const double var_Ito2__Ito2 = 1 * (1 - 1 / (1 + 6.2499999999999991 * pow(var_chaste_interface__Irel__Irel, 2))) * (((0.037435883507802616 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.037435883507802616 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (-96485 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-3612.0012202503358 * _lt_0_row[7] * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19] * var_chaste_interface__membrane__Vm)) * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF + const double var_reversal_potentials__ECl = -26.712338705498265 * log(100 / var_chaste_interface__Cl__Cl_i); // mV + const double var_IClb__IClb = (-var_reversal_potentials__ECl + var_chaste_interface__membrane__Vm) * mParameters[8]; // uA_per_uF + const double var_reversal_potentials__EK = 26.712338705498265 * log(mParameters[4] / var_chaste_interface__K__K_i); // mV + const double var_IK1__IK1 = 0.4389381125701739 * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[12] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__Vm - 0.080320000000000003 * var_reversal_potentials__EK) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__Vm - 0.061749999999999999 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__membrane__Vm)))); // uA_per_uF + const double var_IKp__IKp = 1 * _lt_0_row[8] * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[14]; // uA_per_uF + const double var_IKr__IKr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr; // uA_per_uF + const double var_Ito1__Ito1 = pow(var_chaste_interface__Ito1_a_gate__a, 3) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[20] * var_chaste_interface__Ito1_i1f_gate__i1f * var_chaste_interface__Ito1_i1s_gate__i1s * _lt_0_row[10]; // uA_per_uF + const double var_reversal_potentials__ENa = 26.712338705498265 * log(mParameters[5] / var_chaste_interface__Na__Na_i); // mV + const double var_INa__INa = pow(var_chaste_interface__INa_m_gate__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[11] * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // uA_per_uF + const double var_INaL__INaL = pow(var_chaste_interface__INaL_mL_gate__mL, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL; // uA_per_uF + const double var_IKs__IKs = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[5] + mParameters[4]) / (0.018329999999999999 * var_chaste_interface__Na__Na_i + var_chaste_interface__K__K_i)) + var_chaste_interface__membrane__Vm) * (var_chaste_interface__IKs__O1 + var_IKs__O2) * mParameters[16]; // uA_per_uF + const double d_dt_chaste_interface_var_membrane__Vm = -var_ICaL__ICaL - var_ICab__ICab - var_IClb__IClb - var_IK1__IK1 - var_IKp__IKp - var_IKr__IKr - var_IKs__IKs - var_INa__INa - var_INaL__INaL - var_INab__INab - var_IpCa__IpCa - var_Ito1__Ito1 - var_Ito2__Ito2 - var_membrane__i_Stim - 1 * var_INaCa__INaCa - 1 * var_INaCa__INaCa_ss_sr - 1 * var_INaK__INaK; // mV / ms + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__Vm; + } + + void Celldecker_2009FromCellMLBackwardEulerOpt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -87.4947322902196 + double var_chaste_interface__INa_m_gate__m = rY[25]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INa_h_gate__h = rY[26]; + // Units: dimensionless; Initial value: 0.991354143386887 + double var_chaste_interface__INa_j_gate__j = rY[27]; + // Units: dimensionless; Initial value: 0.99709036251243 + double var_chaste_interface__INaL_mL_gate__mL = rY[28]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INaL_hL_gate__hL = rY[29]; + // Units: dimensionless; Initial value: 0.319611809402137 + double var_chaste_interface__IKr_xr_gate__xr = rY[30]; + // Units: dimensionless; Initial value: 4.06959064407486e-06 + double var_chaste_interface__Ito1_a_gate__a = rY[31]; + // Units: dimensionless; Initial value: 1.76776038804228e-05 + double var_chaste_interface__Ito1_i1f_gate__i1f = rY[32]; + // Units: dimensionless; Initial value: 0.997976503910799 + double var_chaste_interface__Ito1_i1s_gate__i1s = rY[33]; + // Units: dimensionless; Initial value: 0.947581184798815 + double var_chaste_interface__Ito2_i2f_gate__i2f = rY[34]; + // Units: dimensionless; Initial value: 0.996044894628276 + + // Lookup table indexing + const bool _oob_0 = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_IKr_xr_gate__B_1 = -0.13600000000000001; + const double var_IKr_xr_gate__A_1 = -0.00059999999999999995 / var_IKr_xr_gate__B_1; + const double var_IKr_xr_gate__B_2 = 0.1522; + const double var_IKr_xr_gate__A_2 = 0.00029999999999999997 / var_IKr_xr_gate__B_2; + const double var_IKr_xr_gate__v0_1 = 1.7383999999999999; + const double var_IKr_xr_gate__v0_2 = -38.360799999999998; + const double var_INaL_hL_gate__tau_hL = 600; + const double var_INaL_mL_gate__B = -0.10000000000000001; + const double var_INaL_mL_gate__A = -0.32000000000000001 / var_INaL_mL_gate__B; + const double var_INaL_mL_gate__v0 = -47.130000000000003; + const double var_INa_m_gate__B = -0.10000000000000001; + const double var_INa_m_gate__A = -0.32000000000000001 / var_INa_m_gate__B; + const double var_INa_m_gate__v0 = -47.130000000000003; + const double var_Ito2_i2f_gate__tau_i2f = 8; + const double var_IKr_xr_gate__U_1 = (-var_IKr_xr_gate__v0_1 + var_chaste_interface__membrane__Vm) * var_IKr_xr_gate__B_1; + const double var_IKr_xr_gate__U_2 = (-var_IKr_xr_gate__v0_2 + var_chaste_interface__membrane__Vm) * var_IKr_xr_gate__B_2; + const double var_IKr_xr_gate__temp_part_1 = (((var_IKr_xr_gate__U_1 >= -9.9999999999999995e-8) && (var_IKr_xr_gate__U_1 <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_IKr_xr_gate__U_1) * var_IKr_xr_gate__A_1) : (var_IKr_xr_gate__A_1 * var_IKr_xr_gate__U_1 / (-1 + exp(var_IKr_xr_gate__U_1)))); + const double var_IKr_xr_gate__temp_part_2 = (((var_IKr_xr_gate__U_2 >= -9.9999999999999995e-8) && (var_IKr_xr_gate__U_2 <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_IKr_xr_gate__U_2) * var_IKr_xr_gate__A_2) : (var_IKr_xr_gate__A_2 * var_IKr_xr_gate__U_2 / (-1 + exp(var_IKr_xr_gate__U_2)))); + const double var_IKr_xr_gate__tau_xr = 1 / (var_IKr_xr_gate__temp_part_1 + var_IKr_xr_gate__temp_part_2); + const double var_IKr_xr_gate__xr_infinity = _lt_0_row[18]; + const double var_INaL_hL_gate__hL_infinity = 1 / (1 + exp(14.918032786885247 + 0.16393442622950821 * var_chaste_interface__membrane__Vm)); + const double var_INaL_mL_gate__U = (-var_INaL_mL_gate__v0 + var_chaste_interface__membrane__Vm) * var_INaL_mL_gate__B; + const double var_INaL_mL_gate__amL = (((var_INaL_mL_gate__U >= -9.9999999999999995e-8) && (var_INaL_mL_gate__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_INaL_mL_gate__U) * var_INaL_mL_gate__A) : (var_INaL_mL_gate__A * var_INaL_mL_gate__U / (-1 + exp(var_INaL_mL_gate__U)))); + const double var_INaL_mL_gate__bmL = 0.080000000000000002 * _lt_0_row[22]; + const double var_INa_h_gate__ah = _lt_0_row[23]; + const double var_INa_h_gate__bh = _lt_0_row[24]; + const double var_INa_j_gate__aj = _lt_0_row[25]; + const double var_INa_j_gate__bj = _lt_0_row[26]; + const double var_INa_m_gate__U = (-var_INa_m_gate__v0 + var_chaste_interface__membrane__Vm) * var_INa_m_gate__B; + const double var_INa_m_gate__am = (((var_INa_m_gate__U >= -9.9999999999999995e-8) && (var_INa_m_gate__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_INa_m_gate__U) * var_INa_m_gate__A) : (var_INa_m_gate__A * var_INa_m_gate__U / (-1 + exp(var_INa_m_gate__U)))); + const double var_INa_m_gate__bm = 0.080000000000000002 * _lt_0_row[22]; + const double var_Ito1_a_gate__a_infinity = _lt_0_row[27]; + const double var_Ito1_a_gate__alpha_a = 0.82719827942757873 / (1 + exp(0.62658348478969694 - 0.034035137876343539 * var_chaste_interface__membrane__Vm)); + const double var_Ito1_a_gate__beta_a = 3.5 / (1 + exp(3.403513787634354 + 0.034035137876343539 * var_chaste_interface__membrane__Vm)); + const double var_Ito1_a_gate__tau_a = 1 / (var_Ito1_a_gate__alpha_a + var_Ito1_a_gate__beta_a); + const double var_Ito1_i1f_gate__alpha_i1f = 0.025000000000000001 * _lt_0_row[29]; + const double var_Ito1_i1f_gate__beta_i1f = 0.10208977775055385 * _lt_0_row[30]; + const double var_Ito1_i1s_gate__alpha_i1s = 0.0040000000000000001 * _lt_0_row[31]; + const double var_Ito1_i1s_gate__beta_i1s = 0.10208977775055385 * _lt_0_row[30]; + const double var_Ito2_i2f_gate__alpha_i2f = 0.025000000000000001 * _lt_0_row[29]; + const double var_Ito2_i2f_gate__beta_i2f = 0.20000000000000001 * _lt_0_row[30]; + const double var_Ito2_i2f_gate__i2f_infinity = var_Ito2_i2f_gate__alpha_i2f / (var_Ito2_i2f_gate__alpha_i2f + var_Ito2_i2f_gate__beta_i2f); + + + rY[30] = (var_chaste_interface__IKr_xr_gate__xr + ((var_IKr_xr_gate__xr_infinity / var_IKr_xr_gate__tau_xr) * mDt)) / (1.0 - ((-1 / var_IKr_xr_gate__tau_xr) * mDt)); + rY[29] = (var_chaste_interface__INaL_hL_gate__hL + ((var_INaL_hL_gate__hL_infinity / var_INaL_hL_gate__tau_hL) * mDt)) / (1.0 - ((-1 / var_INaL_hL_gate__tau_hL) * mDt)); + rY[28] = (var_chaste_interface__INaL_mL_gate__mL + ((1 * var_INaL_mL_gate__amL) * mDt)) / (1.0 - ((-var_INaL_mL_gate__amL - var_INaL_mL_gate__bmL) * mDt)); + rY[31] = (var_chaste_interface__Ito1_a_gate__a + ((var_Ito1_a_gate__a_infinity / var_Ito1_a_gate__tau_a) * mDt)) / (1.0 - ((-1 / var_Ito1_a_gate__tau_a) * mDt)); + rY[32] = (var_chaste_interface__Ito1_i1f_gate__i1f + ((1 * var_Ito1_i1f_gate__alpha_i1f) * mDt)) / (1.0 - ((-var_Ito1_i1f_gate__alpha_i1f - var_Ito1_i1f_gate__beta_i1f) * mDt)); + rY[33] = (var_chaste_interface__Ito1_i1s_gate__i1s + ((1 * var_Ito1_i1s_gate__alpha_i1s) * mDt)) / (1.0 - ((-var_Ito1_i1s_gate__alpha_i1s - var_Ito1_i1s_gate__beta_i1s) * mDt)); + rY[34] = (var_chaste_interface__Ito2_i2f_gate__i2f + ((var_Ito2_i2f_gate__i2f_infinity / var_Ito2_i2f_gate__tau_i2f) * mDt)) / (1.0 - ((-1 / var_Ito2_i2f_gate__tau_i2f) * mDt)); + rY[26] = (var_chaste_interface__INa_h_gate__h + ((1 * var_INa_h_gate__ah) * mDt)) / (1.0 - ((-var_INa_h_gate__ah - var_INa_h_gate__bh) * mDt)); + rY[27] = (var_chaste_interface__INa_j_gate__j + ((1 * var_INa_j_gate__aj) * mDt)) / (1.0 - ((-var_INa_j_gate__aj - var_INa_j_gate__bj) * mDt)); + rY[25] = (var_chaste_interface__INa_m_gate__m + ((1 * var_INa_m_gate__am) * mDt)) / (1.0 - ((-var_INa_m_gate__am - var_INa_m_gate__bm) * mDt)); + + double _guess[35] = {rY[45],rY[36],rY[37],rY[1],rY[39],rY[38],rY[42],rY[43],rY[18],rY[22],rY[24],rY[20],rY[19],rY[23],rY[21],rY[2],rY[11],rY[12],rY[13],rY[14],rY[15],rY[16],rY[3],rY[4],rY[5],rY[6],rY[7],rY[8],rY[9],rY[10],rY[17],rY[35],rY[44],rY[40],rY[41]}; + CardiacNewtonSolver<35,Celldecker_2009FromCellMLBackwardEulerOpt>* _p_solver = CardiacNewtonSolver<35,Celldecker_2009FromCellMLBackwardEulerOpt>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[45] = _guess[0]; + rY[36] = _guess[1]; + rY[37] = _guess[2]; + rY[1] = _guess[3]; + rY[39] = _guess[4]; + rY[38] = _guess[5]; + rY[42] = _guess[6]; + rY[43] = _guess[7]; + rY[18] = _guess[8]; + rY[22] = _guess[9]; + rY[24] = _guess[10]; + rY[20] = _guess[11]; + rY[19] = _guess[12]; + rY[23] = _guess[13]; + rY[21] = _guess[14]; + rY[2] = _guess[15]; + rY[11] = _guess[16]; + rY[12] = _guess[17]; + rY[13] = _guess[18]; + rY[14] = _guess[19]; + rY[15] = _guess[20]; + rY[16] = _guess[21]; + rY[3] = _guess[22]; + rY[4] = _guess[23]; + rY[5] = _guess[24]; + rY[6] = _guess[25]; + rY[7] = _guess[26]; + rY[8] = _guess[27]; + rY[9] = _guess[28]; + rY[10] = _guess[29]; + rY[17] = _guess[30]; + rY[35] = _guess[31]; + rY[44] = _guess[32]; + rY[40] = _guess[33]; + rY[41] = _guess[34]; + } + + std::vector Celldecker_2009FromCellMLBackwardEulerOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -87.4947322902196 + double var_chaste_interface__Ca__Ca_i = rY[1]; + // Units: mM; Initial value: 8.38749860095482e-05 + double var_chaste_interface__IKs__C1 = rY[2]; + // Units: dimensionless; Initial value: 0.476679784307081 + double var_chaste_interface__IKs__C2 = rY[3]; + // Units: dimensionless; Initial value: 0.255181042718489 + double var_chaste_interface__IKs__C3 = rY[4]; + // Units: dimensionless; Initial value: 0.0512272866698557 + double var_chaste_interface__IKs__C4 = rY[5]; + // Units: dimensionless; Initial value: 0.0045705849736195 + double var_chaste_interface__IKs__C5 = rY[6]; + // Units: dimensionless; Initial value: 0.000152923243503507 + double var_chaste_interface__IKs__C6 = rY[7]; + // Units: dimensionless; Initial value: 0.132814156809568 + double var_chaste_interface__IKs__C7 = rY[8]; + // Units: dimensionless; Initial value: 0.053324572164618 + double var_chaste_interface__IKs__C8 = rY[9]; + // Units: dimensionless; Initial value: 0.00713656414955778 + double var_chaste_interface__IKs__C9 = rY[10]; + // Units: dimensionless; Initial value: 0.000318368292970148 + double var_chaste_interface__IKs__C10 = rY[11]; + // Units: dimensionless; Initial value: 0.0138769647384953 + double var_chaste_interface__IKs__C11 = rY[12]; + // Units: dimensionless; Initial value: 0.00371438476499172 + double var_chaste_interface__IKs__C12 = rY[13]; + // Units: dimensionless; Initial value: 0.000248553788631871 + double var_chaste_interface__IKs__C13 = rY[14]; + // Units: dimensionless; Initial value: 0.000644426171899078 + double var_chaste_interface__IKs__C14 = rY[15]; + // Units: dimensionless; Initial value: 8.62495047666861e-05 + double var_chaste_interface__IKs__C15 = rY[16]; + // Units: dimensionless; Initial value: 1.12344645485893e-05 + double var_chaste_interface__IKs__O1 = rY[17]; + // Units: dimensionless; Initial value: 1.05292905767805e-05 + double var_chaste_interface__ICaL__O = rY[19]; + // Units: dimensionless; Initial value: 2.26882961412491e-05 + double var_chaste_interface__ICaL__O_star = rY[21]; + // Units: dimensionless; Initial value: 1.23556404128518e-10 + double var_chaste_interface__INa_m_gate__m = rY[25]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INa_h_gate__h = rY[26]; + // Units: dimensionless; Initial value: 0.991354143386887 + double var_chaste_interface__INa_j_gate__j = rY[27]; + // Units: dimensionless; Initial value: 0.99709036251243 + double var_chaste_interface__INaL_mL_gate__mL = rY[28]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INaL_hL_gate__hL = rY[29]; + // Units: dimensionless; Initial value: 0.319611809402137 + double var_chaste_interface__IKr_xr_gate__xr = rY[30]; + // Units: dimensionless; Initial value: 4.06959064407486e-06 + double var_chaste_interface__Ito1_a_gate__a = rY[31]; + // Units: dimensionless; Initial value: 1.76776038804228e-05 + double var_chaste_interface__Ito1_i1f_gate__i1f = rY[32]; + // Units: dimensionless; Initial value: 0.997976503910799 + double var_chaste_interface__Ito1_i1s_gate__i1s = rY[33]; + // Units: dimensionless; Initial value: 0.947581184798815 + double var_chaste_interface__Ito2_i2f_gate__i2f = rY[34]; + // Units: dimensionless; Initial value: 0.996044894628276 + double var_chaste_interface__Irel__Irel = rY[35]; + // Units: mM_per_ms; Initial value: 0.000714227102027745 + double var_chaste_interface__Ca__Ca_NSR = rY[37]; + // Units: mM; Initial value: 1.01475649943057 + double var_chaste_interface__Ca__Ca_ss_sr = rY[38]; + // Units: mM; Initial value: 0.00011296707102434 + double var_chaste_interface__Ca__Ca_ss_CaL = rY[39]; + // Units: mM; Initial value: 0.000119239795531548 + double var_chaste_interface__Na__Na_i = rY[40]; + // Units: mM; Initial value: 8.01031392415197 + double var_chaste_interface__Na__Na_ss_sr = rY[41]; + // Units: mM; Initial value: 8.01033434859049 + double var_chaste_interface__Cl__Cl_i = rY[42]; + // Units: mM; Initial value: 20.6683603724432 + double var_chaste_interface__K__K_i = rY[44]; + // Units: mM; Initial value: 144.907134343314 + double var_chaste_interface__CaMK_active__CaMK_trap = rY[45]; + // Units: dimensionless; Initial value: 0.0114911034744777 + + // Lookup table indexing + const bool _oob_0 = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_CaMK_active__CaMK_0 = 0.050000000000000003; // dimensionless + const double var_CaMK_active__Km = 0.0015; // mM + const double var_CaMK_active__CaMK_active = (1 - var_chaste_interface__CaMK_active__CaMK_trap) * var_CaMK_active__CaMK_0 / (1 + var_CaMK_active__Km / var_chaste_interface__Ca__Ca_ss_sr) + var_chaste_interface__CaMK_active__CaMK_trap; // dimensionless + const double var_ICaL__gamma_Cai = 1; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__v0 = 0; // mV + const double var_ICab__gamma_Ca_i = 1; // dimensionless + const double var_ICab__gamma_Ca_o = 0.34100000000000003; // dimensionless + const double var_ICab__v0 = 0; // mV + const double var_IKs__O2 = 1 - var_chaste_interface__IKs__C1 - var_chaste_interface__IKs__C10 - var_chaste_interface__IKs__C11 - var_chaste_interface__IKs__C12 - var_chaste_interface__IKs__C13 - var_chaste_interface__IKs__C14 - var_chaste_interface__IKs__C15 - var_chaste_interface__IKs__C2 - var_chaste_interface__IKs__C3 - var_chaste_interface__IKs__C4 - var_chaste_interface__IKs__C5 - var_chaste_interface__IKs__C6 - var_chaste_interface__IKs__C7 - var_chaste_interface__IKs__C8 - var_chaste_interface__IKs__C9 - var_chaste_interface__IKs__O1; // dimensionless + const double var_IKs__OKs = var_chaste_interface__IKs__O1 + var_IKs__O2; // dimensionless + const double var_IKs__gKs = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca__Ca_i), 1.3999999999999999))) * mParameters[16]; // mS_per_uF + const double var_INaCa__KmCa_act = 0.000125; // mM + const double var_INaCa__KmCai = 0.0035999999999999999; // mM + const double var_INaCa__KmCao = 1.3; // mM + const double var_INaCa__KmNai = 12.300000000000001; // mM + const double var_INaCa__KmNao = 87.5; // mM + const double var_INaCa__denom_1 = 1 + pow(var_INaCa__KmCa_act, 2) / pow(var_chaste_interface__Ca__Ca_i, 2); // dimensionless + const double var_INaCa__denom_ss_1 = 1 + pow(var_INaCa__KmCa_act, 2) / pow(var_chaste_interface__Ca__Ca_ss_sr, 2); // dimensionless + const double var_INaCa__eta = 0.27000000000000002; // dimensionless + const double var_INaCa__ksat = 0.32000000000000001; // dimensionless + const double var_INaK__V_half = -92; // mV + const double var_INaK__kmko = 1.5; // mM + const double var_INaK__kmnai = 2.6000000000000001; // mM + const double var_INaK__sigma = 1; // dimensionless + const double var_INab__B = 1; // dimensionless + const double var_INab__v0 = 0; // dimensionless + const double var_Ileak__nsrbar = 15; // mM + const double var_Ileak__Ileak = var_chaste_interface__Ca__Ca_NSR * mParameters[0] / var_Ileak__nsrbar; // mM_per_ms + const double var_IpCa__KmpCa = 0.00050000000000000001; // mM + const double var_IpCa__IpCa = var_chaste_interface__Ca__Ca_i * mParameters[10] / (var_chaste_interface__Ca__Ca_i + var_IpCa__KmpCa); // uA_per_uF + const double var_IpCa__IpCa_converted = HeartConfig::Instance()->GetCapacitance() * var_IpCa__IpCa; // uA_per_cm2 + const double var_Ito2__Ito2_max_scaling_factor = 1; // dimensionless + const double var_Ito2__kCa_ito2 = 0.40000000000000002; // mM_per_ms + const double var_Ito2__KCa_ito2 = 1 - 1 / (1 + pow(var_chaste_interface__Irel__Irel, 2) / pow(var_Ito2__kCa_ito2, 2)); // dimensionless + const double var_Ito2__v0 = 0; // mV + const double var_Ito2__zCl = -1; // dimensionless + const double var_Iup__delta_iupCaMK_bar = 0.75; // dimensionless + const double var_Iup__delta_kmPLB_bar = 0.00017000000000000001; // mM + const double var_Iup__kmCaMK = 0.14999999999999999; // mM + const double var_Iup__delta_iupCaMK = 1 * var_CaMK_active__CaMK_active * var_Iup__delta_iupCaMK_bar / (1 * var_CaMK_active__CaMK_active + var_Iup__kmCaMK); // dimensionless + const double var_Iup__delta_kmPLB = 1 * var_CaMK_active__CaMK_active * var_Iup__delta_kmPLB_bar / (1 * var_CaMK_active__CaMK_active + var_Iup__kmCaMK); // mM + const double var_Iup__kmup = 0.00092000000000000003; // mM + const double var_Iup__Iup = (1 + var_Iup__delta_iupCaMK) * var_chaste_interface__Ca__Ca_i * mParameters[2] / (-var_Iup__delta_kmPLB + var_chaste_interface__Ca__Ca_i + var_Iup__kmup); // mM_per_ms + const double var_INaK__PNa = pow(var_chaste_interface__Na__Na_i, 3) / pow((var_INaK__kmnai + var_chaste_interface__Na__Na_i), 3); // dimensionless + const double var_IKp__Kp = 1 * _lt_0_row[8]; // dimensionless + const double var_IKr_r_gate__r = 1 * _lt_0_row[9]; // dimensionless + const double var_Ito1__rto1 = _lt_0_row[10]; // dimensionless + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_INaCa__denom_3 = pow(var_INaCa__KmNao, 3) * var_chaste_interface__Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * var_INaCa__KmCao + pow(var_INaCa__KmNai, 3) * (1 + var_chaste_interface__Ca__Ca_i / var_INaCa__KmCai) * mParameters[3]; // mM4 + const double var_INaCa__denom_ss_3 = pow(var_INaCa__KmNao, 3) * var_chaste_interface__Ca__Ca_ss_sr + pow(var_chaste_interface__Na__Na_ss_sr, 3) * var_INaCa__KmCao + pow(var_INaCa__KmNai, 3) * (1 + var_chaste_interface__Ca__Ca_ss_sr / var_INaCa__KmCai) * mParameters[3]; // mM4 + const double var_model_parameters__Cl_o = 100; // mM + const double var_model_parameters__F = 96485; // C_per_mole + const double var_IK1__gK1 = 0.43033148291193518 * sqrt(mParameters[4]) * mParameters[12]; // mS_per_uF + const double var_IKr__gKr = 0.43033148291193518 * sqrt(mParameters[4]) * mParameters[15]; // mS_per_uF + const double var_INaK__PK = mParameters[4] / (var_INaK__kmko + mParameters[4]); // dimensionless + const double var_INaCa__denom_4 = pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + pow(mParameters[5], 3) * (1 + pow(var_chaste_interface__Na__Na_i, 3) / pow(var_INaCa__KmNai, 3)) * var_INaCa__KmCai; // mM4 + const double var_INaCa__denom_ss_4 = pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr + pow(mParameters[5], 3) * (1 + pow(var_chaste_interface__Na__Na_ss_sr, 3) / pow(var_INaCa__KmNai, 3)) * var_INaCa__KmCai; // mM4 + const double var_model_parameters__R = 8314; // J_per_kmole_K + const double var_model_parameters__T = 310; // kelvin + const double var_ICaL__B = 2 * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T); // per_mV + const double var_ICaL__A = 4 * pow(var_model_parameters__F, 2) * (-var_ICaL__gamma_Cao * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * mParameters[6] / (var_ICaL__B * var_model_parameters__R * var_model_parameters__T); // uA_per_uF + const double var_ICaL__U = (-var_ICaL__v0 + var_chaste_interface__membrane__Vm) * var_ICaL__B; // dimensionless + const double var_ICaL__ICaL_max = (((var_ICaL__U >= -9.9999999999999995e-8) && (var_ICaL__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_ICaL__U) * var_ICaL__A) : (var_ICaL__A * var_ICaL__U / (-1 + exp(var_ICaL__U)))); // uA_per_uF + const double var_ICaL__ICaL = (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * var_ICaL__ICaL_max; // uA_per_uF + const double var_ICaL__ICaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__ICaL; // uA_per_cm2 + const double var_ICab__B = 2 * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T); // per_mV + const double var_ICab__A = 4 * pow(var_model_parameters__F, 2) * (-var_ICab__gamma_Ca_o * mParameters[3] + var_chaste_interface__Ca__Ca_i * var_ICab__gamma_Ca_i * exp(2 * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * mParameters[7] / (var_ICab__B * var_model_parameters__R * var_model_parameters__T); // uA_per_uF + const double var_ICab__U = (-var_ICab__v0 + var_chaste_interface__membrane__Vm) * var_ICab__B; // dimensionless + const double var_ICab__ICab = (((var_ICab__U >= -9.9999999999999995e-8) && (var_ICab__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_ICab__U) * var_ICab__A) : (var_ICab__A * var_ICab__U / (-1 + exp(var_ICab__U)))); // uA_per_uF + const double var_ICab__ICab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__ICab; // uA_per_cm2 + const double var_INaCa__denom_2 = 1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)); // dimensionless + const double var_INaCa__denom_ss_2 = 1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)); // dimensionless + const double var_INaCa__num_ss = 0.20000000000000001 * (pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] * exp(var_INaCa__eta * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr * exp((-1 + var_INaCa__eta) * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * mParameters[17]; // mM4_uA_per_uF + const double var_INaCa__INaCa_ss_sr = var_INaCa__num_ss / ((var_INaCa__denom_ss_3 + var_INaCa__denom_ss_4) * var_INaCa__denom_ss_1 * var_INaCa__denom_ss_2); // uA_per_uF + const double var_INaCa__INaCa_ss_sr_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__INaCa_ss_sr; // uA_per_cm2 + const double var_INaCa__numerator = 0.80000000000000004 * (pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * exp(var_INaCa__eta * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * exp((-1 + var_INaCa__eta) * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * mParameters[17]; // mM4_uA_per_uF + const double var_INaCa__INaCa_cai = var_INaCa__numerator / ((var_INaCa__denom_3 + var_INaCa__denom_4) * var_INaCa__denom_1 * var_INaCa__denom_2); // uA_per_uF + const double var_INaCa__INaCa = var_INaCa__INaCa_cai + var_INaCa__INaCa_ss_sr; // uA_per_uF + const double var_INaCa__INaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__INaCa; // uA_per_cm2 + const double var_INaK__phi = (-var_INaK__V_half + var_chaste_interface__membrane__Vm) * var_INaK__sigma * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T); // dimensionless + const double var_INaK__fv = 1 / (1 + exp(-var_INaK__phi)); // dimensionless + const double var_INaK__INaK = var_INaK__PK * var_INaK__PNa * var_INaK__fv * mParameters[18]; // uA_per_uF + const double var_INaK__INaK_converted = HeartConfig::Instance()->GetCapacitance() * var_INaK__INaK; // uA_per_cm2 + const double var_INab__phi = var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T); // dimensionless + const double var_INab__A = (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9] * var_model_parameters__F / var_INab__B; // uA_per_uF + const double var_INab__U = (-var_INab__v0 + var_INab__phi) * var_INab__B; // dimensionless + const double var_INab__INab = (((var_INab__U >= -9.9999999999999995e-8) && (var_INab__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_INab__U) * var_INab__A) : (var_INab__A * var_INab__U / (-1 + exp(var_INab__U)))); // uA_per_uF + const double var_INab__INab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__INab; // uA_per_cm2 + const double var_Ito2__B = var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T); // per_mV + const double var_Ito2__A = -pow(var_Ito2__zCl, 2) * pow(var_model_parameters__F, 2) * (-var_model_parameters__Cl_o * exp(var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + var_chaste_interface__Cl__Cl_i) * mParameters[19] / (var_Ito2__B * var_model_parameters__R * var_model_parameters__T); // uA_per_uF + const double var_Ito2__U = (-var_Ito2__v0 + var_chaste_interface__membrane__Vm) * var_Ito2__B; // dimensionless + const double var_Ito2__Ito2_max = (((var_Ito2__U >= -9.9999999999999995e-8) && (var_Ito2__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_Ito2__U) * var_Ito2__A) : (var_Ito2__A * var_Ito2__U / (-1 + exp(var_Ito2__U)))); // uA_per_uF + const double var_Ito2__Ito2 = var_Ito2__Ito2_max * var_Ito2__Ito2_max_scaling_factor * var_Ito2__KCa_ito2 * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF + const double var_Ito2__Ito2_converted = HeartConfig::Instance()->GetCapacitance() * var_Ito2__Ito2; // uA_per_cm2 + const double var_reversal_potentials__ECl = -var_model_parameters__R * var_model_parameters__T * log(var_model_parameters__Cl_o / var_chaste_interface__Cl__Cl_i) / var_model_parameters__F; // mV + const double var_IClb__IClb = (-var_reversal_potentials__ECl + var_chaste_interface__membrane__Vm) * mParameters[8]; // uA_per_uF + const double var_IClb__IClb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__IClb; // uA_per_cm2 + const double var_reversal_potentials__EK = var_model_parameters__R * var_model_parameters__T * log(mParameters[4] / var_chaste_interface__K__K_i) / var_model_parameters__F; // mV + const double var_IK1_K1_gate__alpha_k1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)); // dimensionless + const double var_IK1_K1_gate__beta_k1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__Vm - 0.080320000000000003 * var_reversal_potentials__EK) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__Vm - 0.061749999999999999 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__membrane__Vm)); // dimensionless + const double var_IK1_K1_gate__K1 = var_IK1_K1_gate__alpha_k1 / (var_IK1_K1_gate__alpha_k1 + var_IK1_K1_gate__beta_k1); // dimensionless + const double var_IK1__IK1 = (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * var_IK1__gK1 * var_IK1_K1_gate__K1; // uA_per_uF + const double var_IK1__IK1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__IK1; // uA_per_cm2 + const double var_IKp__IKp = (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * var_IKp__Kp * mParameters[14]; // uA_per_uF + const double var_IKp__IKp_converted = HeartConfig::Instance()->GetCapacitance() * var_IKp__IKp; // uA_per_cm2 + const double var_IKr__IKr = (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * var_IKr__gKr * var_IKr_r_gate__r * var_chaste_interface__IKr_xr_gate__xr; // uA_per_uF + const double var_IKr__IKr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__IKr; // uA_per_cm2 + const double var_Ito1__Ito1 = pow(var_chaste_interface__Ito1_a_gate__a, 3) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[20] * var_Ito1__rto1 * var_chaste_interface__Ito1_i1f_gate__i1f * var_chaste_interface__Ito1_i1s_gate__i1s; // uA_per_uF + const double var_Ito1__Ito1_converted = HeartConfig::Instance()->GetCapacitance() * var_Ito1__Ito1; // uA_per_cm2 + const double var_reversal_potentials__ENa = var_model_parameters__R * var_model_parameters__T * log(mParameters[5] / var_chaste_interface__Na__Na_i) / var_model_parameters__F; // mV + const double var_INa__INa = pow(var_chaste_interface__INa_m_gate__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[11] * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // uA_per_uF + const double var_INa__INa_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__INa; // uA_per_cm2 + const double var_INaL__INaL = pow(var_chaste_interface__INaL_mL_gate__mL, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL; // uA_per_uF + const double var_INaL__INaL_converted = HeartConfig::Instance()->GetCapacitance() * var_INaL__INaL; // uA_per_cm2 + const double var_reversal_potentials__prnak = 0.018329999999999999; // dimensionless + const double var_reversal_potentials__EKs = var_model_parameters__R * var_model_parameters__T * log((mParameters[5] * var_reversal_potentials__prnak + mParameters[4]) / (var_chaste_interface__Na__Na_i * var_reversal_potentials__prnak + var_chaste_interface__K__K_i)) / var_model_parameters__F; // mV + const double var_IKs__IKs = (-var_reversal_potentials__EKs + var_chaste_interface__membrane__Vm) * var_IKs__OKs * var_IKs__gKs; // uA_per_uF + const double var_IKs__IKs_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__IKs; // uA_per_cm2 + + std::vector dqs(20); + dqs[0] = var_Ileak__Ileak; + dqs[1] = var_Iup__Iup; + dqs[2] = var_ICaL__ICaL_converted; + dqs[3] = var_ICab__ICab_converted; + dqs[4] = var_IClb__IClb_converted; + dqs[5] = var_INab__INab_converted; + dqs[6] = var_IpCa__IpCa_converted; + dqs[7] = var_INa__INa_converted; + dqs[8] = var_IK1__IK1_converted; + dqs[9] = var_INaL__INaL_converted; + dqs[10] = var_IKp__IKp_converted; + dqs[11] = var_IKr__IKr_converted; + dqs[12] = var_IKs__IKs_converted; + dqs[13] = var_INaCa__INaCa_converted; + dqs[14] = var_INaCa__INaCa_ss_sr_converted; + dqs[15] = var_INaK__INaK_converted; + dqs[16] = var_membrane__i_Stim_converted; + dqs[17] = var_Ito2__Ito2_converted; + dqs[18] = var_Ito1__Ito1_converted; + dqs[19] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "decker_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "ms"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-87.4947322902196); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.38749860095482e-05); + + // rY[2]: + this->mVariableNames.push_back("IKs__C1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.476679784307081); + + // rY[3]: + this->mVariableNames.push_back("IKs__C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.255181042718489); + + // rY[4]: + this->mVariableNames.push_back("IKs__C3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0512272866698557); + + // rY[5]: + this->mVariableNames.push_back("IKs__C4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0045705849736195); + + // rY[6]: + this->mVariableNames.push_back("IKs__C5"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000152923243503507); + + // rY[7]: + this->mVariableNames.push_back("IKs__C6"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.132814156809568); + + // rY[8]: + this->mVariableNames.push_back("IKs__C7"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.053324572164618); + + // rY[9]: + this->mVariableNames.push_back("IKs__C8"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00713656414955778); + + // rY[10]: + this->mVariableNames.push_back("IKs__C9"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000318368292970148); + + // rY[11]: + this->mVariableNames.push_back("IKs__C10"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0138769647384953); + + // rY[12]: + this->mVariableNames.push_back("IKs__C11"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00371438476499172); + + // rY[13]: + this->mVariableNames.push_back("IKs__C12"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000248553788631871); + + // rY[14]: + this->mVariableNames.push_back("IKs__C13"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000644426171899078); + + // rY[15]: + this->mVariableNames.push_back("IKs__C14"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.62495047666861e-05); + + // rY[16]: + this->mVariableNames.push_back("IKs__C15"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.12344645485893e-05); + + // rY[17]: + this->mVariableNames.push_back("IKs__O1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.05292905767805e-05); + + // rY[18]: + this->mVariableNames.push_back("ICaL__C"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99996982093287); + + // rY[19]: + this->mVariableNames.push_back("ICaL__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.26882961412491e-05); + + // rY[20]: + this->mVariableNames.push_back("ICaL__C_star"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.49117189549873e-06); + + // rY[21]: + this->mVariableNames.push_back("ICaL__O_star"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.23556404128518e-10); + + // rY[22]: + this->mVariableNames.push_back("ICaL__CI"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(5.89853003114132e-11); + + // rY[23]: + this->mVariableNames.push_back("ICaL__OI"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.01952813127322e-17); + + // rY[24]: + this->mVariableNames.push_back("ICaL__CI_star"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.9237001017021e-09); + + // rY[25]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00101841101248412); + + // rY[26]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.991354143386887); + + // rY[27]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99709036251243); + + // rY[28]: + this->mVariableNames.push_back("INaL_mL_gate__mL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00101841101248412); + + // rY[29]: + this->mVariableNames.push_back("INaL_hL_gate__hL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.319611809402137); + + // rY[30]: + this->mVariableNames.push_back("IKr_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(4.06959064407486e-06); + + // rY[31]: + this->mVariableNames.push_back("Ito1_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.76776038804228e-05); + + // rY[32]: + this->mVariableNames.push_back("Ito1_i1f_gate__i1f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.997976503910799); + + // rY[33]: + this->mVariableNames.push_back("Ito1_i1s_gate__i1s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.947581184798815); + + // rY[34]: + this->mVariableNames.push_back("Ito2_i2f_gate__i2f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.996044894628276); + + // rY[35]: + this->mVariableNames.push_back("SR_release_current"); + this->mVariableUnits.push_back("mM_per_ms"); + this->mInitialConditions.push_back(0.000714227102027745); + + // rY[36]: + this->mVariableNames.push_back("Ca__Ca_JSR"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.993914988616979); + + // rY[37]: + this->mVariableNames.push_back("Ca__Ca_NSR"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(1.01475649943057); + + // rY[38]: + this->mVariableNames.push_back("Ca__Ca_ss_sr"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00011296707102434); + + // rY[39]: + this->mVariableNames.push_back("Ca__Ca_ss_CaL"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000119239795531548); + + // rY[40]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.01031392415197); + + // rY[41]: + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.01033434859049); + + // rY[42]: + this->mVariableNames.push_back("cytosolic_chloride_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(20.6683603724432); + + // rY[43]: + this->mVariableNames.push_back("dyadic_space_chloride_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(20.6683605553303); + + // rY[44]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(144.907134343314); + + // rY[45]: + this->mVariableNames.push_back("CaMK_active__CaMK_trap"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0114911034744777); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("mM_per_ms"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("mM_per_uA_per_uF_per_ms_per_ms"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("mM_per_ms"); + + // mParameters[3]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("L_per_F_ms"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_background_calcium_current_conductance"); + this->mParameterUnits.push_back("L_per_F_ms"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_background_chloride_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_background_sodium_current_conductance"); + this->mParameterUnits.push_back("L_per_F_ms"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_calcium_pump_current_conductance"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_persistent_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_potassium_pump_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_sodium_potassium_pump_current_permeability"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_transient_outward_chloride_current_conductance"); + this->mParameterUnits.push_back("L_per_F_ms"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_leak_current"); + this->mDerivedQuantityUnits.push_back("mM_per_ms"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("SR_uptake_current"); + this->mDerivedQuantityUnits.push_back("mM_per_ms"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_background_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_background_chloride_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_background_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_persistent_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_potassium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_dyadic_space_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_sodium_potassium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_chloride_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("ms"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Celldecker_2009FromCellMLBackwardEulerOpt) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009--sympy_1_14.cpp new file mode 100644 index 00000000..bd193698 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/decker_2009--sympy_1_14.cpp @@ -0,0 +1,3657 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: decker_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEulerOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "decker_2009.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + +class Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<47; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__Vm) + { + const double _offset_0 = var_chaste_interface__membrane__Vm - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__Vm) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__Vm>mTableMaxs[0] || var_chaste_interface__membrane__Vm= 2){ + EXCEPTION("Lookup table 4 at ["<= 2){ + EXCEPTION("Lookup table 5 at ["<= 2){ + EXCEPTION("Lookup table 6 at ["<= 2){ + EXCEPTION("Lookup table 7 at ["<= -9.9999999999999995e-8) && (-0.2364224 + 0.13600000000000001 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (0.0038902447058823523 + 0.00029999999999999997 * var_chaste_interface__membrane__Vm) : (-0.004411764705882352 * (-0.2364224 + 0.13600000000000001 * var_chaste_interface__membrane__Vm) / (-1 + exp(0.2364224 - 0.13600000000000001 * var_chaste_interface__membrane__Vm)))) + 1 * (((5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (-0.0037830293298291716 - 0.00014999999999999999 * var_chaste_interface__membrane__Vm) : (0.0019710906701708277 * (5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm) / (-1 + exp(5.8385137599999997 + 0.1522 * var_chaste_interface__membrane__Vm)))); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + + _lookup_table_0[i][19] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__Vm) { + return 0.0016666666666666668 / (1 + exp(14.918032786885247 + 0.16393442622950821 * var_chaste_interface__membrane__Vm)); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + + _lookup_table_0[i][20] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__Vm) { + return (((4.7130000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (4.7130000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (10.7408 + 0.16 * var_chaste_interface__membrane__Vm) : (-3.1999999999999997 * (4.7130000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__Vm) / (-1 + exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__Vm)))); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[21] < 2){ + double left = f(var_chaste_interface__membrane__Vm - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__Vm + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[21] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[21] >= 2){ + EXCEPTION("Lookup table 21 at ["<= -40) ? (0) : (0.13500000000000001 * exp(-11.764705882352942 - 0.14705882352941177 * var_chaste_interface__membrane__Vm))); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[23] < 2){ + double left = f(var_chaste_interface__membrane__Vm - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__Vm + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[23] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[23] >= 2){ + EXCEPTION("Lookup table 23 at ["<= -40) ? (7.6923076923076916 / (1 + exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__membrane__Vm))) : (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__Vm) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__Vm))); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[24] < 2){ + double left = f(var_chaste_interface__membrane__Vm - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__Vm + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[24] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[24] >= 2){ + EXCEPTION("Lookup table 24 at ["<= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane__Vm) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__Vm) - 6.9480000000000006e-5 * exp(-0.043909999999999998 * var_chaste_interface__membrane__Vm)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__Vm)))); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[25] < 2){ + double left = f(var_chaste_interface__membrane__Vm - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__Vm + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[25] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[25] >= 2){ + EXCEPTION("Lookup table 25 at ["<= -40) ? (0.29999999999999999 * exp(-2.5349999999999999e-7 * var_chaste_interface__membrane__Vm) / (1 + exp(-3.2000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__Vm))) : (0.1212 * exp(-0.01052 * var_chaste_interface__membrane__Vm) / (1 + exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__membrane__Vm)))); + }; + const double var_chaste_interface__membrane__Vm = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__Vm); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[26] < 2){ + double left = f(var_chaste_interface__membrane__Vm - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__Vm + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[26] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[26] >= 2){ + EXCEPTION("Lookup table 26 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[47]; + + // Lookup tables + double (*_lookup_table_0)[47]; + int _lookup_table_0_num_misshit_piecewise[47] = {0}; + +}; + +std::shared_ptr Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::mpInstance; + + + boost::shared_ptr Celldecker_2009FromCellMLBackwardEulerOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 0.5; // ms + const double var_chaste_interface__membrane__stim_offset = 0; // ms + const double var_chaste_interface__membrane__stim_period = 1000; // ms + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_offset + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Celldecker_2009FromCellMLBackwardEulerOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Celldecker_2009FromCellMLBackwardEulerOpt::Celldecker_2009FromCellMLBackwardEulerOpt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<35>( + 46, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 0.0043750000000000004; // (var_Ileak__Ileak_max) [mM_per_ms] + this->mParameters[1] = 0.1125; // (var_Irel__kappa) [mM_per_uA_per_uF_per_ms_per_ms] + this->mParameters[2] = 0.0043750000000000004; // (var_Iup__iupbar) [mM_per_ms] + this->mParameters[3] = 1.8; // (var_model_parameters__Ca_o) [mM] + this->mParameters[4] = 5.4000000000000004; // (var_model_parameters__K_o) [mM] + this->mParameters[5] = 140; // (var_model_parameters__Na_o) [mM] + this->mParameters[6] = 0.00015552; // (var_ICaL__PCa) [L_per_F_ms] + this->mParameters[7] = 1.9950799999999999e-7; // (var_ICab__PCab) [L_per_F_ms] + this->mParameters[8] = 0.00022499999999999999; // (var_IClb__gClb) [mS_per_uF] + this->mParameters[9] = 3.2000000000000001e-9; // (var_INab__PNab) [L_per_F_ms] + this->mParameters[10] = 0.057500000000000002; // (var_IpCa__gpCa) [uA_per_uF] + this->mParameters[11] = 9.0749999999999993; // (var_INa__g_Na) [mS_per_uF] + this->mParameters[12] = 0.5; // (var_IK1__g_K1_max) [mS_per_uF] + this->mParameters[13] = 0.0064999999999999997; // (var_INaL__gNaL) [mS_per_uF] + this->mParameters[14] = 0.0027599999999999999; // (var_IKp__gKp) [mS_per_uF] + this->mParameters[15] = 0.013854200000000001; // (var_IKr__gKr_max) [mS_per_uF] + this->mParameters[16] = 0.082600000000000007; // (var_IKs__gKs_max) [mS_per_uF] + this->mParameters[17] = 4.5; // (var_INaCa__Vmax) [uA_per_uF] + this->mParameters[18] = 1.3999999999999999; // (var_INaK__ibarnak) [uA_per_uF] + this->mParameters[19] = 8.9999999999999996e-7; // (var_Ito2__PCl) [L_per_F_ms] + this->mParameters[20] = 0.49745800000000001; // (var_Ito1__gto1) [mS_per_uF] + } + + Celldecker_2009FromCellMLBackwardEulerOpt::~Celldecker_2009FromCellMLBackwardEulerOpt() + { + } + + AbstractLookupTableCollection* Celldecker_2009FromCellMLBackwardEulerOpt::GetLookupTableCollection() + { + return Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance(); + } + + void Celldecker_2009FromCellMLBackwardEulerOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 46; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Celldecker_2009FromCellMLBackwardEulerOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -87.4947322902196 + double var_chaste_interface__Ca__Ca_i = rY[1]; + // Units: mM; Initial value: 8.38749860095482e-05 + double var_chaste_interface__IKs__C1 = rY[2]; + // Units: dimensionless; Initial value: 0.476679784307081 + double var_chaste_interface__IKs__C2 = rY[3]; + // Units: dimensionless; Initial value: 0.255181042718489 + double var_chaste_interface__IKs__C3 = rY[4]; + // Units: dimensionless; Initial value: 0.0512272866698557 + double var_chaste_interface__IKs__C4 = rY[5]; + // Units: dimensionless; Initial value: 0.0045705849736195 + double var_chaste_interface__IKs__C5 = rY[6]; + // Units: dimensionless; Initial value: 0.000152923243503507 + double var_chaste_interface__IKs__C6 = rY[7]; + // Units: dimensionless; Initial value: 0.132814156809568 + double var_chaste_interface__IKs__C7 = rY[8]; + // Units: dimensionless; Initial value: 0.053324572164618 + double var_chaste_interface__IKs__C8 = rY[9]; + // Units: dimensionless; Initial value: 0.00713656414955778 + double var_chaste_interface__IKs__C9 = rY[10]; + // Units: dimensionless; Initial value: 0.000318368292970148 + double var_chaste_interface__IKs__C10 = rY[11]; + // Units: dimensionless; Initial value: 0.0138769647384953 + double var_chaste_interface__IKs__C11 = rY[12]; + // Units: dimensionless; Initial value: 0.00371438476499172 + double var_chaste_interface__IKs__C12 = rY[13]; + // Units: dimensionless; Initial value: 0.000248553788631871 + double var_chaste_interface__IKs__C13 = rY[14]; + // Units: dimensionless; Initial value: 0.000644426171899078 + double var_chaste_interface__IKs__C14 = rY[15]; + // Units: dimensionless; Initial value: 8.62495047666861e-05 + double var_chaste_interface__IKs__C15 = rY[16]; + // Units: dimensionless; Initial value: 1.12344645485893e-05 + double var_chaste_interface__ICaL__O = rY[19]; + // Units: dimensionless; Initial value: 2.26882961412491e-05 + double var_chaste_interface__ICaL__O_star = rY[21]; + // Units: dimensionless; Initial value: 1.23556404128518e-10 + double var_chaste_interface__INa_m_gate__m = rY[25]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INa_h_gate__h = rY[26]; + // Units: dimensionless; Initial value: 0.991354143386887 + double var_chaste_interface__INa_j_gate__j = rY[27]; + // Units: dimensionless; Initial value: 0.99709036251243 + double var_chaste_interface__INaL_mL_gate__mL = rY[28]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INaL_hL_gate__hL = rY[29]; + // Units: dimensionless; Initial value: 0.319611809402137 + double var_chaste_interface__IKr_xr_gate__xr = rY[30]; + // Units: dimensionless; Initial value: 4.06959064407486e-06 + double var_chaste_interface__Ito1_a_gate__a = rY[31]; + // Units: dimensionless; Initial value: 1.76776038804228e-05 + double var_chaste_interface__Ito1_i1f_gate__i1f = rY[32]; + // Units: dimensionless; Initial value: 0.997976503910799 + double var_chaste_interface__Ito1_i1s_gate__i1s = rY[33]; + // Units: dimensionless; Initial value: 0.947581184798815 + double var_chaste_interface__Ito2_i2f_gate__i2f = rY[34]; + // Units: dimensionless; Initial value: 0.996044894628276 + double var_chaste_interface__Irel__Irel = rY[35]; + // Units: mM_per_ms; Initial value: 0.000714227102027745 + double var_chaste_interface__Ca__Ca_ss_sr = rY[38]; + // Units: mM; Initial value: 0.00011296707102434 + double var_chaste_interface__Ca__Ca_ss_CaL = rY[39]; + // Units: mM; Initial value: 0.000119239795531548 + double var_chaste_interface__Na__Na_i = rY[40]; + // Units: mM; Initial value: 8.01031392415197 + double var_chaste_interface__Na__Na_ss_sr = rY[41]; + // Units: mM; Initial value: 8.01033434859049 + double var_chaste_interface__Cl__Cl_i = rY[42]; + // Units: mM; Initial value: 20.6683603724432 + double var_chaste_interface__K__K_i = rY[44]; + // Units: mM; Initial value: 144.907134343314 + + // Lookup table indexing + const bool _oob_0 = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_INaCa__INaCa_ss_sr = 0.20000000000000001 * _lt_0_row[2] * (pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr * _lt_0_row[1]) * mParameters[17] / ((1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_ss_sr, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_ss_sr + 1.3 * pow(var_chaste_interface__Na__Na_ss_sr, 3) + pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_ss_sr, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3])); // uA_per_uF + const double var_INaCa__INaCa = 0.80000000000000004 * _lt_0_row[2] * (pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * _lt_0_row[1]) * mParameters[17] / ((1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_i, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_i + 1.3 * pow(var_chaste_interface__Na__Na_i, 3) + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_i, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_i) * mParameters[3])) + var_INaCa__INaCa_ss_sr; // uA_per_uF + const double var_INaK__INaK = 1 * _lt_0_row[3] * pow(var_chaste_interface__Na__Na_i, 3) * mParameters[18] * mParameters[4] / ((1.5 + mParameters[4]) * pow((2.6000000000000001 + var_chaste_interface__Na__Na_i), 3)); // uA_per_uF + const double var_INab__phi = 0.037435883507802616 * var_chaste_interface__membrane__Vm; // dimensionless + const double var_membrane__caiont = -2 * var_INaCa__INaCa - 2 * var_INaCa__INaCa_ss_sr + (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (14448.004881001343 * _lt_0_row[5] * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6] * var_chaste_interface__membrane__Vm)) + var_chaste_interface__Ca__Ca_i * mParameters[10] / (0.00050000000000000001 + var_chaste_interface__Ca__Ca_i) + (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (14448.004881001343 * _lt_0_row[5] * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7] * var_chaste_interface__membrane__Vm)); // uA_per_uF + const double var_membrane__clont = (26.712338705498265 * log(100 / var_chaste_interface__Cl__Cl_i) + var_chaste_interface__membrane__Vm) * mParameters[8] + 1 * (1 - 1 / (1 + 6.2499999999999991 * pow(var_chaste_interface__Irel__Irel, 2))) * (((0.037435883507802616 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.037435883507802616 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (-96485 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-3612.0012202503358 * _lt_0_row[7] * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19] * var_chaste_interface__membrane__Vm)) * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF + const double var_reversal_potentials__EK = 26.712338705498265 * log(mParameters[4] / var_chaste_interface__K__K_i); // mV + const double var_reversal_potentials__ENa = 26.712338705498265 * log(mParameters[5] / var_chaste_interface__Na__Na_i); // mV + const double var_membrane__naiont = 3 * var_INaCa__INaCa + 3 * var_INaCa__INaCa_ss_sr + 3 * var_INaK__INaK + pow(var_chaste_interface__INaL_mL_gate__mL, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL + pow(var_chaste_interface__INa_m_gate__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[11] * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j + (((1 * var_INab__phi >= -9.9999999999999995e-8) && (1 * var_INab__phi <= 9.9999999999999995e-8)) ? (96485 * (1 - 0.5 * var_INab__phi) * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9]) : (96485 * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9] * var_INab__phi / (-1 + exp(1 * var_INab__phi)))); // uA_per_uF + const double var_membrane__kiont = -2 * var_INaK__INaK + 1 * _lt_0_row[8] * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[14] + (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[5] + mParameters[4]) / (0.018329999999999999 * var_chaste_interface__Na__Na_i + var_chaste_interface__K__K_i)) + var_chaste_interface__membrane__Vm) * (1 - var_chaste_interface__IKs__C1 - var_chaste_interface__IKs__C10 - var_chaste_interface__IKs__C11 - var_chaste_interface__IKs__C12 - var_chaste_interface__IKs__C13 - var_chaste_interface__IKs__C14 - var_chaste_interface__IKs__C15 - var_chaste_interface__IKs__C2 - var_chaste_interface__IKs__C3 - var_chaste_interface__IKs__C4 - var_chaste_interface__IKs__C5 - var_chaste_interface__IKs__C6 - var_chaste_interface__IKs__C7 - var_chaste_interface__IKs__C8 - var_chaste_interface__IKs__C9) * mParameters[16] + 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr + 0.4389381125701739 * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[12] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__Vm - 0.080320000000000003 * var_reversal_potentials__EK) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__Vm - 0.061749999999999999 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__membrane__Vm)))) + pow(var_chaste_interface__Ito1_a_gate__a, 3) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[20] * var_chaste_interface__Ito1_i1f_gate__i1f * var_chaste_interface__Ito1_i1s_gate__i1s * _lt_0_row[10]; // uA_per_uF + const double var_chaste_interface__i_ionic = (var_membrane__caiont + var_membrane__clont + var_membrane__kiont + var_membrane__naiont) * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Celldecker_2009FromCellMLBackwardEulerOpt::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[35], double rResidual[35]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -87.4947322902196 + double var_chaste_interface__INa_m_gate__m = rY[25]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INa_h_gate__h = rY[26]; + // Units: dimensionless; Initial value: 0.991354143386887 + double var_chaste_interface__INa_j_gate__j = rY[27]; + // Units: dimensionless; Initial value: 0.99709036251243 + double var_chaste_interface__INaL_mL_gate__mL = rY[28]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INaL_hL_gate__hL = rY[29]; + // Units: dimensionless; Initial value: 0.319611809402137 + double var_chaste_interface__IKr_xr_gate__xr = rY[30]; + // Units: dimensionless; Initial value: 4.06959064407486e-06 + double var_chaste_interface__Ito1_a_gate__a = rY[31]; + // Units: dimensionless; Initial value: 1.76776038804228e-05 + double var_chaste_interface__Ito1_i1f_gate__i1f = rY[32]; + // Units: dimensionless; Initial value: 0.997976503910799 + double var_chaste_interface__Ito1_i1s_gate__i1s = rY[33]; + // Units: dimensionless; Initial value: 0.947581184798815 + double var_chaste_interface__Ito2_i2f_gate__i2f = rY[34]; + // Units: dimensionless; Initial value: 0.996044894628276 + + //output_nonlinear_state_assignments + double var_chaste_interface__CaMK_active__CaMK_trap = rCurrentGuess[0]; + double var_chaste_interface__Ca__Ca_JSR = rCurrentGuess[1]; + double var_chaste_interface__Ca__Ca_NSR = rCurrentGuess[2]; + double var_chaste_interface__Ca__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__Ca__Ca_ss_CaL = rCurrentGuess[4]; + double var_chaste_interface__Ca__Ca_ss_sr = rCurrentGuess[5]; + double var_chaste_interface__Cl__Cl_i = rCurrentGuess[6]; + double var_chaste_interface__Cl__Cl_ss = rCurrentGuess[7]; + double var_chaste_interface__ICaL__C = rCurrentGuess[8]; + double var_chaste_interface__ICaL__CI = rCurrentGuess[9]; + double var_chaste_interface__ICaL__CI_star = rCurrentGuess[10]; + double var_chaste_interface__ICaL__C_star = rCurrentGuess[11]; + double var_chaste_interface__ICaL__O = rCurrentGuess[12]; + double var_chaste_interface__ICaL__OI = rCurrentGuess[13]; + double var_chaste_interface__ICaL__O_star = rCurrentGuess[14]; + double var_chaste_interface__IKs__C1 = rCurrentGuess[15]; + double var_chaste_interface__IKs__C10 = rCurrentGuess[16]; + double var_chaste_interface__IKs__C11 = rCurrentGuess[17]; + double var_chaste_interface__IKs__C12 = rCurrentGuess[18]; + double var_chaste_interface__IKs__C13 = rCurrentGuess[19]; + double var_chaste_interface__IKs__C14 = rCurrentGuess[20]; + double var_chaste_interface__IKs__C15 = rCurrentGuess[21]; + double var_chaste_interface__IKs__C2 = rCurrentGuess[22]; + double var_chaste_interface__IKs__C3 = rCurrentGuess[23]; + double var_chaste_interface__IKs__C4 = rCurrentGuess[24]; + double var_chaste_interface__IKs__C5 = rCurrentGuess[25]; + double var_chaste_interface__IKs__C6 = rCurrentGuess[26]; + double var_chaste_interface__IKs__C7 = rCurrentGuess[27]; + double var_chaste_interface__IKs__C8 = rCurrentGuess[28]; + double var_chaste_interface__IKs__C9 = rCurrentGuess[29]; + double var_chaste_interface__IKs__O1 = rCurrentGuess[30]; + double var_chaste_interface__Irel__Irel = rCurrentGuess[31]; + double var_chaste_interface__K__K_i = rCurrentGuess[32]; + double var_chaste_interface__Na__Na_i = rCurrentGuess[33]; + double var_chaste_interface__Na__Na_ss_sr = rCurrentGuess[34]; + + // Lookup table indexing + const bool _oob_0 = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + //output_equations + const double var_Ca__Idiff = 5 * var_chaste_interface__Ca__Ca_ss_sr - 5 * var_chaste_interface__Ca__Ca_i; // mM_per_ms + const double var_Ca__Idiff_ss = 0.5 * var_chaste_interface__Ca__Ca_ss_sr - 0.5 * var_chaste_interface__Ca__Ca_ss_CaL; // mM_per_ms + const double var_CaMK_active__CaMK_active = 0.050000000000000003 * (1 - var_chaste_interface__CaMK_active__CaMK_trap) / (1 + 0.0015 / var_chaste_interface__Ca__Ca_ss_sr) + var_chaste_interface__CaMK_active__CaMK_trap; // dimensionless + const double var_Cl__Idiff_Cl = 5 * var_chaste_interface__Cl__Cl_ss - 5 * var_chaste_interface__Cl__Cl_i; // mM_per_ms + const double d_dt_chaste_interface_var_CaMK_active__CaMK_trap = -0.00068000000000000005 * var_chaste_interface__CaMK_active__CaMK_trap + 0.050000000000000003 * (-var_chaste_interface__CaMK_active__CaMK_trap + var_CaMK_active__CaMK_active) * var_CaMK_active__CaMK_active; // 1 / ms + const double var_ICaL__OI_star = 1 - var_chaste_interface__ICaL__C - var_chaste_interface__ICaL__CI - var_chaste_interface__ICaL__CI_star - var_chaste_interface__ICaL__C_star - var_chaste_interface__ICaL__O - var_chaste_interface__ICaL__OI - var_chaste_interface__ICaL__O_star; // dimensionless + const double var_ICaL__delta = 3 / (1 + 8.1000000000000005e-11 / pow(var_chaste_interface__Ca__Ca_ss_CaL, 4)); // per_ms + const double var_IKs__O2 = 1 - var_chaste_interface__IKs__C1 - var_chaste_interface__IKs__C10 - var_chaste_interface__IKs__C11 - var_chaste_interface__IKs__C12 - var_chaste_interface__IKs__C13 - var_chaste_interface__IKs__C14 - var_chaste_interface__IKs__C15 - var_chaste_interface__IKs__C2 - var_chaste_interface__IKs__C3 - var_chaste_interface__IKs__C4 - var_chaste_interface__IKs__C5 - var_chaste_interface__IKs__C6 - var_chaste_interface__IKs__C7 - var_chaste_interface__IKs__C8 - var_chaste_interface__IKs__C9 - var_chaste_interface__IKs__O1; // dimensionless + const double var_Ileak__Ileak = 0.066666666666666666 * var_chaste_interface__Ca__Ca_NSR * mParameters[0]; // mM_per_ms + const double var_IpCa__IpCa = var_chaste_interface__Ca__Ca_i * mParameters[10] / (0.00050000000000000001 + var_chaste_interface__Ca__Ca_i); // uA_per_uF + const double var_Irel__beta_tau = 4.75 + 4.75 / (1 + 2.9619676669542428e-6 * pow((1 / var_CaMK_active__CaMK_active), 10)); // ms + const double var_Itr__Itr = 0.040000000000000001 * var_chaste_interface__Ca__Ca_NSR - 0.040000000000000001 * var_chaste_interface__Ca__Ca_JSR; // mM_per_ms + const double d_dt_chaste_interface_var_Ca__Ca_JSR = 1 * (-var_chaste_interface__Irel__Irel + var_Itr__Itr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__Ca__Ca_JSR), 2)); // mM / ms + const double var_Iup__Iup = (1 + 0.75 * var_CaMK_active__CaMK_active / (0.14999999999999999 + 1 * var_CaMK_active__CaMK_active)) * var_chaste_interface__Ca__Ca_i * mParameters[2] / (0.00092000000000000003 - 0.00017000000000000001 * var_CaMK_active__CaMK_active / (0.14999999999999999 + 1 * var_CaMK_active__CaMK_active) + var_chaste_interface__Ca__Ca_i); // mM_per_ms + const double var_Na__Idiff_Na = 5 * var_chaste_interface__Na__Na_ss_sr - 5 * var_chaste_interface__Na__Na_i; // mM_per_ms + const double var_cell_geometry__vcell = 1.2100000000000001e-5 * M_PI; // uL + const double var_cell_geometry__Vjsr = 0.0047999999999999996 * var_cell_geometry__vcell; // uL + const double var_cell_geometry__Vmyo = 0.67800000000000005 * var_cell_geometry__vcell; // uL + const double var_cell_geometry__Vnsr = 0.055199999999999999 * var_cell_geometry__vcell; // uL + const double d_dt_chaste_interface_var_Ca__Ca_NSR = -var_Ileak__Ileak - var_Itr__Itr * var_cell_geometry__Vjsr / var_cell_geometry__Vnsr + var_Iup__Iup; // mM / ms + const double var_cell_geometry__Vss_sr = 0.02 * var_cell_geometry__vcell; // uL + const double var_ICaL__ACT_infinity = _lt_0_row[11]; // dimensionless + const double var_ICaL__ACT_tau = _lt_0_row[12]; // ms + const double var_ICaL__IV_infinity = _lt_0_row[13]; // dimensionless + const double var_ICaL__IV_infinity_star = _lt_0_row[14]; // dimensionless + const double var_ICaL__IV_tau = _lt_0_row[15]; // ms + const double var_ICaL__IV_tau_star = 1 / (_lt_0_row[17] + 1 * _lt_0_row[16] / (25 - 17.5 / (1 + 8.1000000000000005e-11 / pow(var_chaste_interface__Ca__Ca_ss_CaL, 4)))); // ms + const double var_ICaL__alpha = var_ICaL__ACT_infinity / var_ICaL__ACT_tau; // per_ms + const double var_ICaL__beta = (1 - var_ICaL__ACT_infinity) / var_ICaL__ACT_tau; // per_ms + const double var_ICaL__x = var_ICaL__IV_infinity / var_ICaL__IV_tau; // per_ms + const double var_ICaL__x_star = var_ICaL__IV_infinity_star / var_ICaL__IV_tau_star; // per_ms + const double var_ICaL__y = (1 - var_ICaL__IV_infinity) / var_ICaL__IV_tau; // per_ms + const double d_dt_chaste_interface_var_ICaL__C = 1 * var_chaste_interface__ICaL__C_star + (-var_ICaL__alpha - var_ICaL__delta - var_ICaL__y) * var_chaste_interface__ICaL__C + var_chaste_interface__ICaL__CI * var_ICaL__x + var_chaste_interface__ICaL__O * var_ICaL__beta; // 1 / ms + const double d_dt_chaste_interface_var_ICaL__O = 1 * var_chaste_interface__ICaL__O_star + (-var_ICaL__beta - var_ICaL__delta - var_ICaL__y) * var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__C * var_ICaL__alpha + var_chaste_interface__ICaL__OI * var_ICaL__x; // 1 / ms + const double var_ICaL__y_star = (1 - var_ICaL__IV_infinity_star) / var_ICaL__IV_tau_star; // per_ms + const double d_dt_chaste_interface_var_ICaL__C_star = (-1 - var_ICaL__alpha - var_ICaL__y_star) * var_chaste_interface__ICaL__C_star + var_chaste_interface__ICaL__C * var_ICaL__delta + var_chaste_interface__ICaL__CI_star * var_ICaL__x_star + var_chaste_interface__ICaL__O_star * var_ICaL__beta; // 1 / ms + const double d_dt_chaste_interface_var_ICaL__O_star = (-1 - var_ICaL__beta - var_ICaL__y_star) * var_chaste_interface__ICaL__O_star + var_chaste_interface__ICaL__C_star * var_ICaL__alpha + var_chaste_interface__ICaL__O * var_ICaL__delta + var_ICaL__OI_star * var_ICaL__x_star; // 1 / ms + const double var_ICaL__delta_I = 9.9999999999999995e-7 * var_ICaL__delta * var_ICaL__x * var_ICaL__y_star / (var_ICaL__x_star * var_ICaL__y); // per_ms + const double d_dt_chaste_interface_var_ICaL__CI = 9.9999999999999995e-7 * var_chaste_interface__ICaL__CI_star + (-var_ICaL__alpha - var_ICaL__delta_I - var_ICaL__x) * var_chaste_interface__ICaL__CI + var_chaste_interface__ICaL__C * var_ICaL__y + var_chaste_interface__ICaL__OI * var_ICaL__beta; // 1 / ms + const double d_dt_chaste_interface_var_ICaL__CI_star = (-9.9999999999999995e-7 - var_ICaL__alpha - var_ICaL__x_star) * var_chaste_interface__ICaL__CI_star + var_chaste_interface__ICaL__CI * var_ICaL__delta_I + var_chaste_interface__ICaL__C_star * var_ICaL__y_star + var_ICaL__OI_star * var_ICaL__beta; // 1 / ms + const double d_dt_chaste_interface_var_ICaL__OI = 9.9999999999999995e-7 * var_ICaL__OI_star + (-var_ICaL__beta - var_ICaL__delta_I - var_ICaL__x) * var_chaste_interface__ICaL__OI + var_chaste_interface__ICaL__CI * var_ICaL__alpha + var_chaste_interface__ICaL__O * var_ICaL__y; // 1 / ms + const double var_membrane__i_Stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF + const double var_cell_geometry__AF = 5.0619267243613002e-10 * M_PI; // uF_mole_per_C + const double var_ICaL__ICaL = (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (14448.004881001343 * _lt_0_row[5] * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6] * var_chaste_interface__membrane__Vm)); // uA_per_uF + const double d_dt_chaste_interface_var_Ca__Ca_ss_CaL = -1 * (250 * var_ICaL__ICaL * var_cell_geometry__AF / var_cell_geometry__vcell - 500 * var_Ca__Idiff_ss * var_cell_geometry__Vss_sr / var_cell_geometry__vcell) / (1 + 0.0097788000000000007 / pow((0.0086999999999999994 + var_chaste_interface__Ca__Ca_ss_CaL), 2) + 4.0890000000000003e-5 / pow((0.00087000000000000001 + var_chaste_interface__Ca__Ca_ss_CaL), 2)); // mM / ms + const double var_ICab__ICab = (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (14448.004881001343 * _lt_0_row[5] * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7] * var_chaste_interface__membrane__Vm)); // uA_per_uF + const double var_IKs__alpha = _lt_0_row[33]; // per_ms + const double var_IKs__beta = _lt_0_row[34]; // per_ms + const double d_dt_chaste_interface_var_IKs__C1 = var_chaste_interface__IKs__C2 * var_IKs__beta - 4 * var_chaste_interface__IKs__C1 * var_IKs__alpha; // 1 / ms + const double var_IKs__delta = _lt_0_row[35]; // per_ms + const double var_IKs__eta = _lt_0_row[36]; // per_ms + const double var_IKs__gamma = _lt_0_row[37]; // per_ms + const double d_dt_chaste_interface_var_IKs__C10 = (-2 * var_IKs__alpha - 2 * var_IKs__delta) * var_chaste_interface__IKs__C10 + var_chaste_interface__IKs__C11 * var_IKs__beta + var_chaste_interface__IKs__C7 * var_IKs__gamma; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C11 = (-var_IKs__alpha - var_IKs__beta - var_IKs__gamma - 2 * var_IKs__delta) * var_chaste_interface__IKs__C11 + 2 * var_chaste_interface__IKs__C10 * var_IKs__alpha + 2 * var_chaste_interface__IKs__C12 * var_IKs__beta + 2 * var_chaste_interface__IKs__C8 * var_IKs__gamma + 3 * var_chaste_interface__IKs__C13 * var_IKs__delta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C12 = (-2 * var_IKs__beta - 2 * var_IKs__delta - 2 * var_IKs__gamma) * var_chaste_interface__IKs__C12 + var_chaste_interface__IKs__C11 * var_IKs__alpha + 3 * var_chaste_interface__IKs__C14 * var_IKs__delta + 3 * var_chaste_interface__IKs__C9 * var_IKs__gamma; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C13 = (-var_IKs__alpha - 3 * var_IKs__delta) * var_chaste_interface__IKs__C13 + var_chaste_interface__IKs__C11 * var_IKs__gamma + var_chaste_interface__IKs__C14 * var_IKs__beta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C14 = (-var_IKs__beta - var_IKs__gamma - 3 * var_IKs__delta) * var_chaste_interface__IKs__C14 + var_chaste_interface__IKs__C13 * var_IKs__alpha + 2 * var_chaste_interface__IKs__C12 * var_IKs__gamma + 4 * var_chaste_interface__IKs__C15 * var_IKs__delta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C15 = (-0.089538306411019994 - 4 * var_IKs__delta) * var_chaste_interface__IKs__C15 + var_chaste_interface__IKs__C14 * var_IKs__gamma + var_chaste_interface__IKs__O1 * var_IKs__eta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C2 = (-var_IKs__beta - var_IKs__gamma - 3 * var_IKs__alpha) * var_chaste_interface__IKs__C2 + var_chaste_interface__IKs__C6 * var_IKs__delta + 2 * var_chaste_interface__IKs__C3 * var_IKs__beta + 4 * var_chaste_interface__IKs__C1 * var_IKs__alpha; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C3 = (-2 * var_IKs__alpha - 2 * var_IKs__beta - 2 * var_IKs__gamma) * var_chaste_interface__IKs__C3 + var_chaste_interface__IKs__C7 * var_IKs__delta + 3 * var_chaste_interface__IKs__C2 * var_IKs__alpha + 3 * var_chaste_interface__IKs__C4 * var_IKs__beta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C4 = (-var_IKs__alpha - 3 * var_IKs__beta - 3 * var_IKs__gamma) * var_chaste_interface__IKs__C4 + var_chaste_interface__IKs__C8 * var_IKs__delta + 2 * var_chaste_interface__IKs__C3 * var_IKs__alpha + 4 * var_chaste_interface__IKs__C5 * var_IKs__beta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C5 = (-4 * var_IKs__beta - 4 * var_IKs__gamma) * var_chaste_interface__IKs__C5 + var_chaste_interface__IKs__C4 * var_IKs__alpha + var_chaste_interface__IKs__C9 * var_IKs__delta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C6 = (-var_IKs__delta - 3 * var_IKs__alpha) * var_chaste_interface__IKs__C6 + var_chaste_interface__IKs__C2 * var_IKs__gamma + var_chaste_interface__IKs__C7 * var_IKs__beta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C7 = (-var_IKs__beta - var_IKs__delta - var_IKs__gamma - 2 * var_IKs__alpha) * var_chaste_interface__IKs__C7 + 2 * var_chaste_interface__IKs__C10 * var_IKs__delta + 2 * var_chaste_interface__IKs__C3 * var_IKs__gamma + 2 * var_chaste_interface__IKs__C8 * var_IKs__beta + 3 * var_chaste_interface__IKs__C6 * var_IKs__alpha; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C8 = (-var_IKs__alpha - var_IKs__delta - 2 * var_IKs__beta - 2 * var_IKs__gamma) * var_chaste_interface__IKs__C8 + 2 * var_chaste_interface__IKs__C11 * var_IKs__delta + 2 * var_chaste_interface__IKs__C7 * var_IKs__alpha + 3 * var_chaste_interface__IKs__C4 * var_IKs__gamma + 3 * var_chaste_interface__IKs__C9 * var_IKs__beta; // 1 / ms + const double d_dt_chaste_interface_var_IKs__C9 = (-var_IKs__delta - 3 * var_IKs__beta - 3 * var_IKs__gamma) * var_chaste_interface__IKs__C9 + var_chaste_interface__IKs__C8 * var_IKs__alpha + 2 * var_chaste_interface__IKs__C12 * var_IKs__delta + 4 * var_chaste_interface__IKs__C5 * var_IKs__gamma; // 1 / ms + const double d_dt_chaste_interface_var_IKs__O1 = 0.089538306411019994 * var_chaste_interface__IKs__C15 + (-var_IKs__eta + _lt_0_row[38]) * var_chaste_interface__IKs__O1 + 0.79405459958640001 * var_IKs__O2 * _lt_0_row[39]; // 1 / ms + const double var_INaCa__INaCa_ss_sr = 0.20000000000000001 * _lt_0_row[2] * (pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr * _lt_0_row[1]) * mParameters[17] / ((1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_ss_sr, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_ss_sr + 1.3 * pow(var_chaste_interface__Na__Na_ss_sr, 3) + pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_ss_sr, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3])); // uA_per_uF + const double d_dt_chaste_interface_var_Ca__Ca_ss_sr = -1 * (-var_chaste_interface__Irel__Irel * var_cell_geometry__Vjsr / var_cell_geometry__Vss_sr - 1 * var_INaCa__INaCa_ss_sr * var_cell_geometry__AF / var_cell_geometry__Vss_sr + var_Ca__Idiff + var_Ca__Idiff_ss) / (1 + 0.0097788000000000007 / pow((0.0086999999999999994 + var_chaste_interface__Ca__Ca_ss_sr), 2) + 4.0890000000000003e-5 / pow((0.00087000000000000001 + var_chaste_interface__Ca__Ca_ss_sr), 2)); // mM / ms + const double d_dt_chaste_interface_var_Na__Na_ss_sr = -var_Na__Idiff_Na - 3 * var_INaCa__INaCa_ss_sr * var_cell_geometry__AF / var_cell_geometry__Vss_sr; // mM / ms + const double var_INaCa__INaCa = 0.80000000000000004 * _lt_0_row[2] * (pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * _lt_0_row[1]) * mParameters[17] / ((1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_i, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_i + 1.3 * pow(var_chaste_interface__Na__Na_i, 3) + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_i, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_i) * mParameters[3])) + var_INaCa__INaCa_ss_sr; // uA_per_uF + const double d_dt_chaste_interface_var_Ca__Ca_i = 1 * ((-var_Iup__Iup + var_Ileak__Ileak) * var_cell_geometry__Vnsr / var_cell_geometry__Vmyo + var_Ca__Idiff * var_cell_geometry__Vss_sr / var_cell_geometry__Vmyo + 0.5 * (-var_ICab__ICab - var_IpCa__IpCa + 2 * var_INaCa__INaCa) * var_cell_geometry__AF / var_cell_geometry__Vmyo) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__Ca__Ca_i), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__Ca__Ca_i), 2)); // mM / ms + const double var_INaK__INaK = 1 * _lt_0_row[3] * pow(var_chaste_interface__Na__Na_i, 3) * mParameters[18] * mParameters[4] / ((1.5 + mParameters[4]) * pow((2.6000000000000001 + var_chaste_interface__Na__Na_i), 3)); // uA_per_uF + const double var_INab__phi = 0.037435883507802616 * var_chaste_interface__membrane__Vm; // dimensionless + const double var_INab__INab = (((1 * var_INab__phi >= -9.9999999999999995e-8) && (1 * var_INab__phi <= 9.9999999999999995e-8)) ? (96485 * (1 - 0.5 * var_INab__phi) * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9]) : (96485 * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9] * var_INab__phi / (-1 + exp(1 * var_INab__phi)))); // uA_per_uF + const double d_dt_chaste_interface_var_Irel__Irel = (1 + 0.0123 / var_chaste_interface__Ca__Ca_JSR) * (-var_chaste_interface__Irel__Irel - var_ICaL__ICaL * var_Irel__beta_tau * mParameters[1] / (1 + 1 * pow((1 / var_chaste_interface__Ca__Ca_JSR), 8))) / var_Irel__beta_tau; // mM_per_ms / ms + const double var_Ito2__Ito2 = 1 * (1 - 1 / (1 + 6.2499999999999991 * pow(var_chaste_interface__Irel__Irel, 2))) * (((0.037435883507802616 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.037435883507802616 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (-96485 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-3612.0012202503358 * _lt_0_row[7] * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19] * var_chaste_interface__membrane__Vm)) * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF + const double d_dt_chaste_interface_var_Cl__Cl_ss = -var_Cl__Idiff_Cl + 1 * var_Ito2__Ito2 * var_cell_geometry__AF / var_cell_geometry__Vss_sr; // mM / ms + const double var_reversal_potentials__ECl = -26.712338705498265 * log(100 / var_chaste_interface__Cl__Cl_i); // mV + const double var_IClb__IClb = (-var_reversal_potentials__ECl + var_chaste_interface__membrane__Vm) * mParameters[8]; // uA_per_uF + const double var_reversal_potentials__EK = 26.712338705498265 * log(mParameters[4] / var_chaste_interface__K__K_i); // mV + const double var_CT_K_Cl__CT_K_Cl = 1.77e-5 * (-var_reversal_potentials__ECl + var_reversal_potentials__EK) / (87.825100000000006 - var_reversal_potentials__ECl + var_reversal_potentials__EK); // mM_per_ms + const double var_IK1__IK1 = 0.4389381125701739 * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[12] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__Vm - 0.080320000000000003 * var_reversal_potentials__EK) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__Vm - 0.061749999999999999 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__membrane__Vm)))); // uA_per_uF + const double var_IKp__IKp = 1 * _lt_0_row[8] * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[14]; // uA_per_uF + const double var_IKr__IKr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr; // uA_per_uF + const double var_Ito1__Ito1 = pow(var_chaste_interface__Ito1_a_gate__a, 3) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[20] * var_chaste_interface__Ito1_i1f_gate__i1f * var_chaste_interface__Ito1_i1s_gate__i1s * _lt_0_row[10]; // uA_per_uF + const double var_reversal_potentials__ENa = 26.712338705498265 * log(mParameters[5] / var_chaste_interface__Na__Na_i); // mV + const double var_CT_Na_Cl__CT_Na_Cl = 2.4610800000000002e-5 * pow((-var_reversal_potentials__ECl + var_reversal_potentials__ENa), 4) / (59494197.640692554 + pow((-var_reversal_potentials__ECl + var_reversal_potentials__ENa), 4)); // mM_per_ms + const double d_dt_chaste_interface_var_Cl__Cl_i = var_Cl__Idiff_Cl * var_cell_geometry__Vss_sr / var_cell_geometry__Vmyo + 1 * var_IClb__IClb * var_cell_geometry__AF / var_cell_geometry__Vmyo + var_CT_K_Cl__CT_K_Cl + var_CT_Na_Cl__CT_Na_Cl; // mM / ms + const double var_INa__INa = pow(var_chaste_interface__INa_m_gate__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[11] * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // uA_per_uF + const double var_INaL__INaL = pow(var_chaste_interface__INaL_mL_gate__mL, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL; // uA_per_uF + const double d_dt_chaste_interface_var_Na__Na_i = var_Na__Idiff_Na * var_cell_geometry__Vss_sr / var_cell_geometry__Vmyo - (3 * var_INaCa__INaCa + 3 * var_INaK__INaK + var_INa__INa + var_INaL__INaL + var_INab__INab) * var_cell_geometry__AF / var_cell_geometry__Vmyo + var_CT_Na_Cl__CT_Na_Cl; // mM / ms + const double var_IKs__IKs = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[5] + mParameters[4]) / (0.018329999999999999 * var_chaste_interface__Na__Na_i + var_chaste_interface__K__K_i)) + var_chaste_interface__membrane__Vm) * (var_chaste_interface__IKs__O1 + var_IKs__O2) * mParameters[16]; // uA_per_uF + const double d_dt_chaste_interface_var_K__K_i = -(-2 * var_INaK__INaK + var_IK1__IK1 + var_IKp__IKp + var_IKr__IKr + var_IKs__IKs + var_Ito1__Ito1 + var_membrane__i_Stim) * var_cell_geometry__AF / var_cell_geometry__Vmyo + var_CT_K_Cl__CT_K_Cl; // mM / ms + + rResidual[3] = rCurrentGuess[3] - rY[1] - mDt*d_dt_chaste_interface_var_Ca__Ca_i; + rResidual[15] = rCurrentGuess[15] - rY[2] - mDt*d_dt_chaste_interface_var_IKs__C1; + rResidual[22] = rCurrentGuess[22] - rY[3] - mDt*d_dt_chaste_interface_var_IKs__C2; + rResidual[23] = rCurrentGuess[23] - rY[4] - mDt*d_dt_chaste_interface_var_IKs__C3; + rResidual[24] = rCurrentGuess[24] - rY[5] - mDt*d_dt_chaste_interface_var_IKs__C4; + rResidual[25] = rCurrentGuess[25] - rY[6] - mDt*d_dt_chaste_interface_var_IKs__C5; + rResidual[26] = rCurrentGuess[26] - rY[7] - mDt*d_dt_chaste_interface_var_IKs__C6; + rResidual[27] = rCurrentGuess[27] - rY[8] - mDt*d_dt_chaste_interface_var_IKs__C7; + rResidual[28] = rCurrentGuess[28] - rY[9] - mDt*d_dt_chaste_interface_var_IKs__C8; + rResidual[29] = rCurrentGuess[29] - rY[10] - mDt*d_dt_chaste_interface_var_IKs__C9; + rResidual[16] = rCurrentGuess[16] - rY[11] - mDt*d_dt_chaste_interface_var_IKs__C10; + rResidual[17] = rCurrentGuess[17] - rY[12] - mDt*d_dt_chaste_interface_var_IKs__C11; + rResidual[18] = rCurrentGuess[18] - rY[13] - mDt*d_dt_chaste_interface_var_IKs__C12; + rResidual[19] = rCurrentGuess[19] - rY[14] - mDt*d_dt_chaste_interface_var_IKs__C13; + rResidual[20] = rCurrentGuess[20] - rY[15] - mDt*d_dt_chaste_interface_var_IKs__C14; + rResidual[21] = rCurrentGuess[21] - rY[16] - mDt*d_dt_chaste_interface_var_IKs__C15; + rResidual[30] = rCurrentGuess[30] - rY[17] - mDt*d_dt_chaste_interface_var_IKs__O1; + rResidual[8] = rCurrentGuess[8] - rY[18] - mDt*d_dt_chaste_interface_var_ICaL__C; + rResidual[12] = rCurrentGuess[12] - rY[19] - mDt*d_dt_chaste_interface_var_ICaL__O; + rResidual[11] = rCurrentGuess[11] - rY[20] - mDt*d_dt_chaste_interface_var_ICaL__C_star; + rResidual[14] = rCurrentGuess[14] - rY[21] - mDt*d_dt_chaste_interface_var_ICaL__O_star; + rResidual[9] = rCurrentGuess[9] - rY[22] - mDt*d_dt_chaste_interface_var_ICaL__CI; + rResidual[13] = rCurrentGuess[13] - rY[23] - mDt*d_dt_chaste_interface_var_ICaL__OI; + rResidual[10] = rCurrentGuess[10] - rY[24] - mDt*d_dt_chaste_interface_var_ICaL__CI_star; + rResidual[31] = rCurrentGuess[31] - rY[35] - mDt*d_dt_chaste_interface_var_Irel__Irel; + rResidual[1] = rCurrentGuess[1] - rY[36] - mDt*d_dt_chaste_interface_var_Ca__Ca_JSR; + rResidual[2] = rCurrentGuess[2] - rY[37] - mDt*d_dt_chaste_interface_var_Ca__Ca_NSR; + rResidual[5] = rCurrentGuess[5] - rY[38] - mDt*d_dt_chaste_interface_var_Ca__Ca_ss_sr; + rResidual[4] = rCurrentGuess[4] - rY[39] - mDt*d_dt_chaste_interface_var_Ca__Ca_ss_CaL; + rResidual[33] = rCurrentGuess[33] - rY[40] - mDt*d_dt_chaste_interface_var_Na__Na_i; + rResidual[34] = rCurrentGuess[34] - rY[41] - mDt*d_dt_chaste_interface_var_Na__Na_ss_sr; + rResidual[6] = rCurrentGuess[6] - rY[42] - mDt*d_dt_chaste_interface_var_Cl__Cl_i; + rResidual[7] = rCurrentGuess[7] - rY[43] - mDt*d_dt_chaste_interface_var_Cl__Cl_ss; + rResidual[32] = rCurrentGuess[32] - rY[44] - mDt*d_dt_chaste_interface_var_K__K_i; + rResidual[0] = rCurrentGuess[0] - rY[45] - mDt*d_dt_chaste_interface_var_CaMK_active__CaMK_trap; + } + + void Celldecker_2009FromCellMLBackwardEulerOpt::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[35], double rJacobian[35][35]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -87.4947322902196 + double var_chaste_interface__INa_m_gate__m = rY[25]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INa_h_gate__h = rY[26]; + // Units: dimensionless; Initial value: 0.991354143386887 + double var_chaste_interface__INa_j_gate__j = rY[27]; + // Units: dimensionless; Initial value: 0.99709036251243 + double var_chaste_interface__INaL_mL_gate__mL = rY[28]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INaL_hL_gate__hL = rY[29]; + // Units: dimensionless; Initial value: 0.319611809402137 + double var_chaste_interface__IKr_xr_gate__xr = rY[30]; + // Units: dimensionless; Initial value: 4.06959064407486e-06 + double var_chaste_interface__Ito1_a_gate__a = rY[31]; + // Units: dimensionless; Initial value: 1.76776038804228e-05 + double var_chaste_interface__Ito1_i1f_gate__i1f = rY[32]; + // Units: dimensionless; Initial value: 0.997976503910799 + double var_chaste_interface__Ito1_i1s_gate__i1s = rY[33]; + // Units: dimensionless; Initial value: 0.947581184798815 + double var_chaste_interface__Ito2_i2f_gate__i2f = rY[34]; + // Units: dimensionless; Initial value: 0.996044894628276 + + // Lookup table indexing + const bool _oob_0 = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + double var_chaste_interface__CaMK_active__CaMK_trap = rCurrentGuess[0]; + double var_chaste_interface__Ca__Ca_JSR = rCurrentGuess[1]; + double var_chaste_interface__Ca__Ca_NSR = rCurrentGuess[2]; + double var_chaste_interface__Ca__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__Ca__Ca_ss_CaL = rCurrentGuess[4]; + double var_chaste_interface__Ca__Ca_ss_sr = rCurrentGuess[5]; + double var_chaste_interface__Cl__Cl_i = rCurrentGuess[6]; + double var_chaste_interface__ICaL__C = rCurrentGuess[8]; + double var_chaste_interface__ICaL__CI = rCurrentGuess[9]; + double var_chaste_interface__ICaL__CI_star = rCurrentGuess[10]; + double var_chaste_interface__ICaL__C_star = rCurrentGuess[11]; + double var_chaste_interface__ICaL__O = rCurrentGuess[12]; + double var_chaste_interface__ICaL__OI = rCurrentGuess[13]; + double var_chaste_interface__ICaL__O_star = rCurrentGuess[14]; + double var_chaste_interface__IKs__C1 = rCurrentGuess[15]; + double var_chaste_interface__IKs__C10 = rCurrentGuess[16]; + double var_chaste_interface__IKs__C11 = rCurrentGuess[17]; + double var_chaste_interface__IKs__C12 = rCurrentGuess[18]; + double var_chaste_interface__IKs__C13 = rCurrentGuess[19]; + double var_chaste_interface__IKs__C14 = rCurrentGuess[20]; + double var_chaste_interface__IKs__C15 = rCurrentGuess[21]; + double var_chaste_interface__IKs__C2 = rCurrentGuess[22]; + double var_chaste_interface__IKs__C3 = rCurrentGuess[23]; + double var_chaste_interface__IKs__C4 = rCurrentGuess[24]; + double var_chaste_interface__IKs__C5 = rCurrentGuess[25]; + double var_chaste_interface__IKs__C6 = rCurrentGuess[26]; + double var_chaste_interface__IKs__C7 = rCurrentGuess[27]; + double var_chaste_interface__IKs__C8 = rCurrentGuess[28]; + double var_chaste_interface__IKs__C9 = rCurrentGuess[29]; + double var_chaste_interface__Irel__Irel = rCurrentGuess[31]; + double var_chaste_interface__K__K_i = rCurrentGuess[32]; + double var_chaste_interface__Na__Na_i = rCurrentGuess[33]; + double var_chaste_interface__Na__Na_ss_sr = rCurrentGuess[34]; + + const double var_x0 = 1 - var_chaste_interface__CaMK_active__CaMK_trap; + const double var_x1 = 1 + 0.0015 / var_chaste_interface__Ca__Ca_ss_sr; + const double var_x2 = 1 / var_x1; + const double var_x3 = 0.050000000000000003 * var_x2; + const double var_x4 = var_x0 * var_x3; + const double var_x5 = var_x4 + var_chaste_interface__CaMK_active__CaMK_trap; + const double var_x6 = -var_x3; + const double var_x7 = 1 + var_x6; + const double var_x8 = pow(var_chaste_interface__Ca__Ca_ss_sr, (-2)); + const double var_x9 = pow(var_x1, (-2)); + const double var_x10 = var_x0 * var_x8 * var_x9; + const double var_x11 = 0.80000000000000004 + var_chaste_interface__Ca__Ca_JSR; + const double var_x12 = 1 + 8 / pow(var_x11, 2); + const double var_x13 = 1 / var_x12; + const double var_x14 = 0.040000000000000001 * var_x13; + const double var_x15 = 0.14999999999999999 + var_x4 + 1 * var_chaste_interface__CaMK_active__CaMK_trap; + const double var_x16 = 1 / var_x15; + const double var_x17 = var_x16 * var_x7; + const double var_x18 = var_x5 / pow(var_x15, 2); + const double var_x19 = var_x18 * (-1 - var_x6); + const double var_x20 = var_x16 * var_x5; + const double var_x21 = 0.00092000000000000003 - 0.00017000000000000001 * var_x20 + var_chaste_interface__Ca__Ca_i; + const double var_x22 = 1 / var_x21; + const double var_x23 = var_x22 * mParameters[2]; + const double var_x24 = var_x23 * var_chaste_interface__Ca__Ca_i; + const double var_x25 = var_x24 * (0.75 * var_x17 + 0.75 * var_x19); + const double var_x26 = pow(var_x21, (-2)); + const double var_x27 = 1 + 0.75 * var_x20; + const double var_x28 = var_x26 * var_x27 * var_chaste_interface__Ca__Ca_i * mParameters[2]; + const double var_x29 = var_x28 * (0.00017000000000000001 * var_x17 + 0.00017000000000000001 * var_x19); + const double var_x30 = var_x10 * var_x18; + const double var_x31 = var_x24 * (-5.6250000000000005e-5 * var_x30 + 5.6250000000000005e-5 * var_x0 * var_x16 * var_x8 * var_x9); + const double var_x32 = var_x28 * (-1.2750000000000002e-8 * var_x30 + 1.2750000000000002e-8 * var_x0 * var_x16 * var_x8 * var_x9); + const double var_x33 = 0.0023800000000000002 + var_chaste_interface__Ca__Ca_i; + const double var_x34 = 0.00050000000000000001 + var_chaste_interface__Ca__Ca_i; + const double var_x35 = pow(var_x34, (-2)); + const double var_x36 = 1 + 0.00011900000000000002 / pow(var_x33, 2) + 3.5000000000000004e-5 * var_x35; + const double var_x37 = 1 / var_x36; + const double var_x38 = 1 * var_x37; + const double var_x39 = 0.0054277286135693209 * mParameters[0]; + const double var_x40 = 0.037435883507802616 * var_chaste_interface__membrane__Vm; + const double var_x41 = 192970 - 192970 * var_x40; + const double var_x42 = 0.074871767015605231 * var_chaste_interface__membrane__Vm; + const double var_x43 = exp(var_x42); + const double var_x44 = var_x43 * mParameters[7]; + const double var_x45 = (var_x42 >= -9.9999999999999995e-8) && (var_x42 <= 9.9999999999999995e-8); + const double var_x46 = 14448.004881001343 * var_chaste_interface__membrane__Vm / (-1 + var_x43); + const double var_x47 = 3.0851110000007915e-5 * mParameters[10] / var_x34; + const double var_x48 = 0.081415929203539822 * var_x23 * var_x27; + const double var_x49 = _lt_0_row[1]; + const double var_x50 = 1 / (1 + 0.32000000000000001 * var_x49); + const double var_x51 = var_x50 * mParameters[17]; + const double var_x52 = 1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_i, 2); + const double var_x53 = 1 / var_x52; + const double var_x54 = 4.9361776000012672e-5 * var_x53; + const double var_x55 = var_x51 * var_x54; + const double var_x56 = pow(var_chaste_interface__Na__Na_i, 3); + const double var_x57 = pow(mParameters[5], 3); + const double var_x58 = var_x57 * var_chaste_interface__Ca__Ca_i; + const double var_x59 = 0.0035999999999999999 * var_x57; + const double var_x60 = 1860.8670000000004 * mParameters[3]; + const double var_x61 = var_x58 + 669921.875 * var_chaste_interface__Ca__Ca_i + 1.3 * var_x56 + var_x56 * mParameters[3] + var_x59 * (1 + 0.00053738391835633597 * var_x56) + var_x60 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_i); + const double var_x62 = 1 / var_x61; + const double var_x63 = var_x49 * var_x57; + const double var_x64 = pow(var_x61, (-2)); + const double var_x65 = _lt_0_row[0]; + const double var_x66 = -var_x49 * var_x58 + var_x56 * var_x65 * mParameters[3]; + const double var_x67 = -669921.875 - var_x57 - 516907.50000000012 * mParameters[3]; + const double var_x68 = pow(var_x52, (-2)); + const double var_x69 = pow(var_chaste_interface__Ca__Ca_i, (-3)); + const double var_x70 = -0.34100000000000003 * mParameters[3]; + const double var_x71 = 1 * var_x43; + const double var_x72 = (var_x70 + var_x71 * var_chaste_interface__Ca__Ca_i) * mParameters[7]; + const double var_x73 = 1 + 1.5624999999999999e-8 * var_x8; + const double var_x74 = 1 / var_x73; + const double var_x75 = pow(var_chaste_interface__Na__Na_ss_sr, 3); + const double var_x76 = var_x57 * var_chaste_interface__Ca__Ca_ss_sr; + const double var_x77 = var_x76 + 669921.875 * var_chaste_interface__Ca__Ca_ss_sr + 1.3 * var_x75 + var_x59 * (1 + 0.00053738391835633597 * var_x75) + var_x60 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_ss_sr) + var_x75 * mParameters[3]; + const double var_x78 = 1 / var_x77; + const double var_x79 = -var_x49 * var_x76 + var_x65 * var_x75 * mParameters[3]; + const double var_x80 = var_x51 * var_x78 * var_x79; + const double var_x81 = var_x74 * var_x80; + const double var_x82 = var_x51 * var_x62 * var_x66; + const double var_x83 = var_x51 * var_x74; + const double var_x84 = 1.2340444000003168e-5 * var_x83; + const double var_x85 = var_x63 * var_x78; + const double var_x86 = pow(var_x77, (-2)); + const double var_x87 = pow(var_x73, (-2)); + const double var_x88 = pow(var_chaste_interface__Ca__Ca_ss_sr, (-3)); + const double var_x89 = pow(var_chaste_interface__Na__Na_i, 2); + const double var_x90 = 3 * mParameters[3]; + const double var_x91 = 5.8037463182484285e-6 * var_x57; + const double var_x92 = -3.9000000000000004 * var_x89 - var_x89 * var_x90 - var_x89 * var_x91; + const double var_x93 = var_x64 * var_x66; + const double var_x94 = var_x51 * var_x53; + const double var_x95 = 0.00014808532800003802 * var_x94; + const double var_x96 = var_x65 * mParameters[3]; + const double var_x97 = var_x62 * var_x89 * var_x96; + const double var_x98 = pow(var_chaste_interface__Na__Na_ss_sr, 2); + const double var_x99 = -3.9000000000000004 * var_x98 - var_x90 * var_x98 - var_x91 * var_x98; + const double var_x100 = var_x79 * var_x86; + const double var_x101 = 3.7021332000009505e-5 * var_x83; + const double var_x102 = var_x78 * var_x96 * var_x98; + const double var_x103 = 0.0086999999999999994 + var_chaste_interface__Ca__Ca_ss_CaL; + const double var_x104 = 0.00087000000000000001 + var_chaste_interface__Ca__Ca_ss_CaL; + const double var_x105 = 1 + 0.0097788000000000007 / pow(var_x103, 2) + 4.0890000000000003e-5 / pow(var_x104, 2); + const double var_x106 = 1 / var_x105; + const double var_x107 = var_x41 * mParameters[6]; + const double var_x108 = var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star; + const double var_x109 = var_x108 * var_x43; + const double var_x110 = var_x46 * mParameters[6]; + const double var_x111 = ((var_x45) ? (var_x107 * var_x109) : (var_x109 * var_x110)); + const double var_x112 = var_x70 + var_x71 * var_chaste_interface__Ca__Ca_ss_CaL; + const double var_x113 = var_x107 * var_x112; + const double var_x114 = var_x110 * var_x112; + const double var_x115 = ((var_x45) ? (var_x108 * var_x113) : (var_x108 * var_x114)); + const double var_x116 = ((var_x45) ? (var_x113) : (var_x114)); + const double var_x117 = -0.010458526290002684 * var_x106 * var_x116; + const double var_x118 = 0.0086999999999999994 + var_chaste_interface__Ca__Ca_ss_sr; + const double var_x119 = 0.00087000000000000001 + var_chaste_interface__Ca__Ca_ss_sr; + const double var_x120 = 1 + 0.0097788000000000007 / pow(var_x118, 2) + 4.0890000000000003e-5 / pow(var_x119, 2); + const double var_x121 = 1 / var_x120; + const double var_x122 = 0.0004183410516001074 * var_x83; + const double var_x123 = var_x80 * var_x87 * var_x88; + const double var_x124 = var_x100 * var_x122; + const double var_x125 = 1 * var_x121; + const double var_x126 = 0.0012550231548003222 * var_x83; + const double var_x127 = 1 / var_chaste_interface__Cl__Cl_i; + const double var_x128 = 26.712338705498265 * log(100 * var_x127); + const double var_x129 = 1 / var_chaste_interface__K__K_i; + const double var_x130 = log(var_x129 * mParameters[4]); + const double var_x131 = 26.712338705498265 * var_x130; + const double var_x132 = var_x128 + var_x131; + const double var_x133 = 87.825100000000006 + var_x132; + const double var_x134 = 0.00047280839508731927 / var_x133; + const double var_x135 = var_x127 * var_x134; + const double var_x136 = pow(var_x133, (-2)); + const double var_x137 = 1 / var_chaste_interface__Na__Na_i; + const double var_x138 = var_x128 + 26.712338705498265 * log(var_x137 * mParameters[5]); + const double var_x139 = 59494197.640692554 + pow(var_x138, 4); + const double var_x140 = pow(var_x138, 3) / var_x139; + const double var_x141 = pow(var_x139, (-2)); + const double var_x142 = pow(var_x138, 7); + const double var_x143 = 0.002629648101653107 * var_x127 * var_x140 - 0.002629648101653107 * var_x127 * var_x141 * var_x142; + const double var_x144 = var_x129 * var_x134; + const double var_x145 = 0.00047280839508731927 * var_x132 * var_x136; + const double var_x146 = 0.002629648101653107 * var_x137 * var_x140 - 0.002629648101653107 * var_x137 * var_x141 * var_x142; + const double var_x147 = 1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm; + const double var_x148 = 96485 * var_x147; + const double var_x149 = 1 + 6.2499999999999991 * pow(var_chaste_interface__Irel__Irel, 2); + const double var_x150 = mParameters[19] * var_chaste_interface__Ito2_i2f_gate__i2f; + const double var_x151 = var_x150 * (1 - 1 / var_x149); + const double var_x152 = (var_x40 >= -9.9999999999999995e-8) && (var_x40 <= 9.9999999999999995e-8); + const double var_x153 = exp(var_x40); + const double var_x154 = var_chaste_interface__membrane__Vm / (-1 + var_x153); + const double var_x155 = 3612.0012202503358 * var_x154; + const double var_x156 = var_x150 * (-100 * var_x153 + var_chaste_interface__Cl__Cl_i) * var_chaste_interface__Irel__Irel / pow(var_x149, 2); + const double var_x157 = 1 + 8.1000000000000005e-11 / pow(var_chaste_interface__Ca__Ca_ss_CaL, 4); + const double var_x158 = 1 / (pow(var_x157, 2) * pow(var_chaste_interface__Ca__Ca_ss_CaL, 5)); + const double var_x159 = 9.7200000000000016e-10 * var_x158; + const double var_x160 = var_x159 * var_chaste_interface__ICaL__C; + const double var_x161 = _lt_0_row[40]; + const double var_x162 = _lt_0_row[11]; + const double var_x163 = var_x161 * var_x162; + const double var_x164 = _lt_0_row[41]; + const double var_x165 = 0.80000000000000004 * var_x164; + const double var_x166 = 0.80000000000000004 - var_x165; + const double var_x167 = _lt_0_row[17]; + const double var_x168 = _lt_0_row[16]; + const double var_x169 = var_x167 + 0.032730010146303147 * var_x168; + const double var_x170 = var_x166 * var_x169; + const double var_x171 = 1 / var_x157; + const double var_x172 = 3 * var_x171; + const double var_x173 = var_x170 + var_x172; + const double var_x174 = 0.20000000000000001 + var_x165; + const double var_x175 = var_x169 * var_x174; + const double var_x176 = var_x161 * (1 - var_x162); + const double var_x177 = 0.99990000999900008 * var_x164; + const double var_x178 = 0.99990000999900008 - var_x177; + const double var_x179 = 9.9990000999900015e-5 + var_x177; + const double var_x180 = var_x174 * var_x178 / (var_x166 * var_x179); + const double var_x181 = 9.7200000000000002e-16 * var_x158 * var_x180; + const double var_x182 = var_x181 * var_chaste_interface__ICaL__CI; + const double var_x183 = 3.0000000000000001e-6 * var_x171 * var_x180; + const double var_x184 = var_x175 + var_x183; + const double var_x185 = 25 - 17.5 * var_x171; + const double var_x186 = 5.6700000000000005e-9 * var_x158 * var_x168 / pow(var_x185, 2); + const double var_x187 = var_x178 * var_x186; + const double var_x188 = var_x187 * var_chaste_interface__ICaL__C_star; + const double var_x189 = var_x179 * var_x186; + const double var_x190 = var_x189 * var_chaste_interface__ICaL__CI_star; + const double var_x191 = -var_x176; + const double var_x192 = var_x167 + 1 * var_x168 / var_x185; + const double var_x193 = var_x179 * var_x192; + const double var_x194 = 9.9999999999999995e-7 + var_x176; + const double var_x195 = var_x178 * var_x192; + const double var_x196 = 1 + var_x195; + const double var_x197 = var_x159 * var_chaste_interface__ICaL__O; + const double var_x198 = -var_x163; + const double var_x199 = -var_x193; + const double var_x200 = _lt_0_row[42]; + const double var_x201 = 0.059458391923439997 * var_x200; + const double var_x202 = _lt_0_row[43]; + const double var_x203 = 0.083986312199829993 * var_x202; + const double var_x204 = _lt_0_row[44]; + const double var_x205 = 0.0062346537747999999 * var_x204; + const double var_x206 = 0.029729195961719999 * var_x200; + const double var_x207 = _lt_0_row[45]; + const double var_x208 = 0.01460066118316 * var_x207; + const double var_x209 = 0.014864597980859999 * var_x200; + const double var_x210 = var_x203 + var_x208; + const double var_x211 = 0.16797262439965999 * var_x202; + const double var_x212 = 0.009351980662199999 * var_x204; + const double var_x213 = 0.02920132236632 * var_x207; + const double var_x214 = var_x211 + var_x213; + const double var_x215 = 0.043801983549479999 * var_x207; + const double var_x216 = 0.0124693075496 * var_x204; + const double var_x217 = _lt_0_row[36]; + const double var_x218 = 0.04459379394258 * var_x200; + const double var_x219 = 0.0031173268874 * var_x204; + const double var_x220 = 0.25195893659948998 * var_x202; + const double var_x221 = var_x215 + var_x220; + const double var_x222 = 0.33594524879931997 * var_x202; + const double var_x223 = 0.058402644732640001 * var_x207; + const double var_x224 = _lt_0_row[46]; + const double var_x225 = -var_x224; + const double var_x226 = 1 / var_x5; + const double var_x227 = pow(var_x226, 10); + const double var_x228 = 1 + 2.9619676669542428e-6 * var_x227; + const double var_x229 = var_x226 * var_x227 / pow(var_x228, 2); + const double var_x230 = -0.00014069346418032653 * var_x229 * var_x7; + const double var_x231 = 1 / var_chaste_interface__Ca__Ca_JSR; + const double var_x232 = 1 + 0.0123 * var_x231; + const double var_x233 = 4.75 + 4.75 / var_x228; + const double var_x234 = pow(var_x231, 8); + const double var_x235 = 1 + 1 * var_x234; + const double var_x236 = mParameters[1] / var_x235; + const double var_x237 = var_x115 * var_x236; + const double var_x238 = -var_chaste_interface__Irel__Irel - var_x233 * var_x237; + const double var_x239 = var_x232 * var_x238 / pow(var_x233, 2); + const double var_x240 = 1 / var_x233; + const double var_x241 = var_x232 * var_x240; + const double var_x242 = var_x237 * var_x241; + const double var_x243 = var_x232 * var_x236; + const double var_x244 = 1.0552009813524491e-8 * var_x10 * var_x229; + const double var_x245 = -var_x116 * var_x243; + const double var_x246 = 1 / var_chaste_interface__Ca__Ca_i; + const double var_x247 = pow(var_x246, 1.3999999999999999); + const double var_x248 = 1 + 6.4818210260626455e-7 * var_x247; + const double var_x249 = 1 / (0.018329999999999999 * var_chaste_interface__Na__Na_i + var_chaste_interface__K__K_i); + const double var_x250 = -26.712338705498265 * log(var_x249 * (0.018329999999999999 * mParameters[5] + mParameters[4])) + var_chaste_interface__membrane__Vm; + const double var_x251 = 1 - var_chaste_interface__IKs__C1 - var_chaste_interface__IKs__C10 - var_chaste_interface__IKs__C11 - var_chaste_interface__IKs__C12 - var_chaste_interface__IKs__C13 - var_chaste_interface__IKs__C14 - var_chaste_interface__IKs__C15 - var_chaste_interface__IKs__C2 - var_chaste_interface__IKs__C3 - var_chaste_interface__IKs__C4 - var_chaste_interface__IKs__C5 - var_chaste_interface__IKs__C6 - var_chaste_interface__IKs__C7 - var_chaste_interface__IKs__C8 - var_chaste_interface__IKs__C9; + const double var_x252 = (1 + 0.59999999999999998 / var_x248) * mParameters[16]; + const double var_x253 = 6.1702220000015831e-5 * var_x250 * var_x252; + const double var_x254 = 0.0016482105995215921 * var_x129; + const double var_x255 = var_x249 * var_x251 * var_x252; + const double var_x256 = sqrt(mParameters[4]); + const double var_x257 = var_x129 * var_x256; + const double var_x258 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 6.3708927812613361 * var_x130); + const double var_x259 = 1 + var_x258; + const double var_x260 = 1 / var_x259; + const double var_x261 = exp(-2.4444678999999998 + 13.738155796237757 * var_x130 - 0.51429999999999998 * var_chaste_interface__membrane__Vm); + const double var_x262 = 1 + var_x261; + const double var_x263 = 1 / var_x262; + const double var_x264 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__Vm - 2.1455350448256207 * var_x130); + const double var_x265 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__Vm - 1.6494869150645177 * var_x130); + const double var_x266 = var_x265 + 0.49124000000000001 * var_x264; + const double var_x267 = 1.02 * var_x260 + var_x263 * var_x266; + const double var_x268 = 1 / var_x267; + const double var_x269 = var_x260 * mParameters[12]; + const double var_x270 = pow(var_x259, (-2)); + const double var_x271 = -var_x131 + var_chaste_interface__membrane__Vm; + const double var_x272 = 1 / (1 + exp(-3.444101282717841 - var_x40)); + const double var_x273 = 1 / (1.5 + mParameters[4]); + const double var_x274 = var_x272 * var_x273 * mParameters[18] * mParameters[4]; + const double var_x275 = 2.6000000000000001 + var_chaste_interface__Na__Na_i; + const double var_x276 = pow(var_x275, (-4)); + const double var_x277 = pow(var_x275, (-3)); + const double var_x278 = var_x93 * var_x95; + const double var_x279 = var_x100 * var_x101; + const double var_x280 = var_x153 * mParameters[9]; + const double var_x281 = 0.0016482105995215921 * var_x137; + const double var_x282 = var_x102 * var_x83; + const double var_x283 = var_x100 * var_x126; + + + rJacobian[0][0] = 1.0 - (mDt * (-0.00068000000000000005 - 0.0025000000000000005 * var_x2 * var_x5 + 0.0025000000000000005 * var_x0 * var_x2 * var_x7)); + rJacobian[0][1] = 0.0; + rJacobian[0][2] = 0.0; + rJacobian[0][3] = 0.0; + rJacobian[0][4] = 0.0; + rJacobian[0][5] = -(mDt * (3.7500000000000005e-6 * var_x10 * var_x5 + 1.8750000000000003e-7 * var_x8 * pow(var_x0, 2) / pow(var_x1, 3))); + rJacobian[0][6] = 0.0; + rJacobian[0][7] = 0.0; + rJacobian[0][8] = 0.0; + rJacobian[0][9] = 0.0; + rJacobian[0][10] = 0.0; + rJacobian[0][11] = 0.0; + rJacobian[0][12] = 0.0; + rJacobian[0][13] = 0.0; + rJacobian[0][14] = 0.0; + rJacobian[0][15] = 0.0; + rJacobian[0][16] = 0.0; + rJacobian[0][17] = 0.0; + rJacobian[0][18] = 0.0; + rJacobian[0][19] = 0.0; + rJacobian[0][20] = 0.0; + rJacobian[0][21] = 0.0; + rJacobian[0][22] = 0.0; + rJacobian[0][23] = 0.0; + rJacobian[0][24] = 0.0; + rJacobian[0][25] = 0.0; + rJacobian[0][26] = 0.0; + rJacobian[0][27] = 0.0; + rJacobian[0][28] = 0.0; + rJacobian[0][29] = 0.0; + rJacobian[0][30] = 0.0; + rJacobian[0][31] = 0.0; + rJacobian[0][32] = 0.0; + rJacobian[0][33] = 0.0; + rJacobian[0][34] = 0.0; + rJacobian[1][0] = 0.0; + rJacobian[1][1] = 1.0 - (mDt * (-var_x14 + 16 * (-var_chaste_interface__Irel__Irel + 0.040000000000000001 * var_chaste_interface__Ca__Ca_NSR - 0.040000000000000001 * var_chaste_interface__Ca__Ca_JSR) / (pow(var_x11, 3) * pow(var_x12, 2)))); + rJacobian[1][2] = -(mDt * (var_x14)); + rJacobian[1][3] = 0.0; + rJacobian[1][4] = 0.0; + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = 0.0; + rJacobian[1][8] = 0.0; + rJacobian[1][9] = 0.0; + rJacobian[1][10] = 0.0; + rJacobian[1][11] = 0.0; + rJacobian[1][12] = 0.0; + rJacobian[1][13] = 0.0; + rJacobian[1][14] = 0.0; + rJacobian[1][15] = 0.0; + rJacobian[1][16] = 0.0; + rJacobian[1][17] = 0.0; + rJacobian[1][18] = 0.0; + rJacobian[1][19] = 0.0; + rJacobian[1][20] = 0.0; + rJacobian[1][21] = 0.0; + rJacobian[1][22] = 0.0; + rJacobian[1][23] = 0.0; + rJacobian[1][24] = 0.0; + rJacobian[1][25] = 0.0; + rJacobian[1][26] = 0.0; + rJacobian[1][27] = 0.0; + rJacobian[1][28] = 0.0; + rJacobian[1][29] = 0.0; + rJacobian[1][30] = 0.0; + rJacobian[1][31] = -(mDt * (-1 * var_x13)); + rJacobian[1][32] = 0.0; + rJacobian[1][33] = 0.0; + rJacobian[1][34] = 0.0; + rJacobian[2][0] = -(mDt * (var_x25 + var_x29)); + rJacobian[2][1] = -(mDt * (0.0034782608695652171)); + rJacobian[2][2] = 1.0 - (mDt * (-0.0034782608695652171 - 0.066666666666666666 * mParameters[0])); + rJacobian[2][3] = -(mDt * (-var_x28 + var_x22 * var_x27 * mParameters[2])); + rJacobian[2][4] = 0.0; + rJacobian[2][5] = -(mDt * (var_x31 + var_x32)); + rJacobian[2][6] = 0.0; + rJacobian[2][7] = 0.0; + rJacobian[2][8] = 0.0; + rJacobian[2][9] = 0.0; + rJacobian[2][10] = 0.0; + rJacobian[2][11] = 0.0; + rJacobian[2][12] = 0.0; + rJacobian[2][13] = 0.0; + rJacobian[2][14] = 0.0; + rJacobian[2][15] = 0.0; + rJacobian[2][16] = 0.0; + rJacobian[2][17] = 0.0; + rJacobian[2][18] = 0.0; + rJacobian[2][19] = 0.0; + rJacobian[2][20] = 0.0; + rJacobian[2][21] = 0.0; + rJacobian[2][22] = 0.0; + rJacobian[2][23] = 0.0; + rJacobian[2][24] = 0.0; + rJacobian[2][25] = 0.0; + rJacobian[2][26] = 0.0; + rJacobian[2][27] = 0.0; + rJacobian[2][28] = 0.0; + rJacobian[2][29] = 0.0; + rJacobian[2][30] = 0.0; + rJacobian[2][31] = 0.0; + rJacobian[2][32] = 0.0; + rJacobian[2][33] = 0.0; + rJacobian[2][34] = 0.0; + rJacobian[3][0] = -(mDt * (var_x38 * (-0.081415929203539822 * var_x25 - 0.081415929203539822 * var_x29))); + rJacobian[3][1] = 0.0; + rJacobian[3][2] = -(mDt * (var_x37 * var_x39)); + rJacobian[3][3] = 1.0 - (mDt * (var_x38 * (-0.14749262536873156 - var_x47 - var_x48 - 3.0851110000007915e-5 * ((var_x45) ? (var_x41 * var_x44) : (var_x44 * var_x46)) - var_x55 * var_x62 * var_x63 + 3.0851110000007915e-5 * var_x35 * var_chaste_interface__Ca__Ca_i * mParameters[10] + 0.081415929203539822 * var_x26 * var_x27 * var_chaste_interface__Ca__Ca_i * mParameters[2] + 4.9361776000012672e-5 * var_x50 * var_x53 * var_x64 * var_x66 * var_x67 * mParameters[17] + 1.5425555000003961e-12 * var_x50 * var_x62 * var_x66 * var_x68 * var_x69 * mParameters[17]) + 1 * (0.00023800000000000004 / pow(var_x33, 3) + 7.0000000000000007e-5 / pow(var_x34, 3)) * (0.14749262536873156 * var_chaste_interface__Ca__Ca_ss_sr + 1.2340444000003168e-5 * var_x81 - 0.14749262536873156 * var_chaste_interface__Ca__Ca_i - 3.0851110000007915e-5 * ((var_x45) ? (var_x41 * var_x72) : (var_x46 * var_x72)) + var_x39 * var_chaste_interface__Ca__Ca_NSR + var_x54 * var_x82 - var_x47 * var_chaste_interface__Ca__Ca_i - var_x48 * var_chaste_interface__Ca__Ca_i) / pow(var_x36, 2))); + rJacobian[3][4] = 0.0; + rJacobian[3][5] = -(mDt * (var_x38 * (0.14749262536873156 - 0.081415929203539822 * var_x31 - 0.081415929203539822 * var_x32 - var_x84 * var_x85 + 1.2340444000003168e-5 * var_x50 * var_x67 * var_x74 * var_x79 * var_x86 * mParameters[17] + 3.8563887500009902e-13 * var_x50 * var_x78 * var_x79 * var_x87 * var_x88 * mParameters[17]))); + rJacobian[3][6] = 0.0; + rJacobian[3][7] = 0.0; + rJacobian[3][8] = 0.0; + rJacobian[3][9] = 0.0; + rJacobian[3][10] = 0.0; + rJacobian[3][11] = 0.0; + rJacobian[3][12] = 0.0; + rJacobian[3][13] = 0.0; + rJacobian[3][14] = 0.0; + rJacobian[3][15] = 0.0; + rJacobian[3][16] = 0.0; + rJacobian[3][17] = 0.0; + rJacobian[3][18] = 0.0; + rJacobian[3][19] = 0.0; + rJacobian[3][20] = 0.0; + rJacobian[3][21] = 0.0; + rJacobian[3][22] = 0.0; + rJacobian[3][23] = 0.0; + rJacobian[3][24] = 0.0; + rJacobian[3][25] = 0.0; + rJacobian[3][26] = 0.0; + rJacobian[3][27] = 0.0; + rJacobian[3][28] = 0.0; + rJacobian[3][29] = 0.0; + rJacobian[3][30] = 0.0; + rJacobian[3][31] = 0.0; + rJacobian[3][32] = 0.0; + rJacobian[3][33] = -(mDt * (var_x38 * (var_x95 * var_x97 + var_x55 * var_x92 * var_x93))); + rJacobian[3][34] = -(mDt * (var_x38 * (var_x101 * var_x102 + var_x100 * var_x84 * var_x99))); + rJacobian[4][0] = 0.0; + rJacobian[4][1] = 0.0; + rJacobian[4][2] = 0.0; + rJacobian[4][3] = 0.0; + rJacobian[4][4] = 1.0 - (mDt * (-1 * var_x106 * (5 + 0.010458526290002684 * var_x111) - 1 * (0.019557600000000001 / pow(var_x103, 3) + 8.1780000000000006e-5 / pow(var_x104, 3)) * (5 * var_chaste_interface__Ca__Ca_ss_CaL + 0.010458526290002684 * var_x115 - 5 * var_chaste_interface__Ca__Ca_ss_sr) / pow(var_x105, 2))); + rJacobian[4][5] = -(mDt * (5 * var_x106)); + rJacobian[4][6] = 0.0; + rJacobian[4][7] = 0.0; + rJacobian[4][8] = 0.0; + rJacobian[4][9] = 0.0; + rJacobian[4][10] = 0.0; + rJacobian[4][11] = 0.0; + rJacobian[4][12] = -(mDt * (var_x117)); + rJacobian[4][13] = 0.0; + rJacobian[4][14] = -(mDt * (var_x117)); + rJacobian[4][15] = 0.0; + rJacobian[4][16] = 0.0; + rJacobian[4][17] = 0.0; + rJacobian[4][18] = 0.0; + rJacobian[4][19] = 0.0; + rJacobian[4][20] = 0.0; + rJacobian[4][21] = 0.0; + rJacobian[4][22] = 0.0; + rJacobian[4][23] = 0.0; + rJacobian[4][24] = 0.0; + rJacobian[4][25] = 0.0; + rJacobian[4][26] = 0.0; + rJacobian[4][27] = 0.0; + rJacobian[4][28] = 0.0; + rJacobian[4][29] = 0.0; + rJacobian[4][30] = 0.0; + rJacobian[4][31] = 0.0; + rJacobian[4][32] = 0.0; + rJacobian[4][33] = 0.0; + rJacobian[4][34] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = 0.0; + rJacobian[5][3] = -(mDt * (5 * var_x121)); + rJacobian[5][4] = -(mDt * (0.5 * var_x121)); + rJacobian[5][5] = 1.0 - (mDt * (-var_x125 * (5.5 - 1.3073157862503357e-11 * var_x123 + var_x122 * var_x85 - var_x124 * var_x67) - 1 * (0.019557600000000001 / pow(var_x118, 3) + 8.1780000000000006e-5 / pow(var_x119, 3)) * (5.5 * var_chaste_interface__Ca__Ca_ss_sr - 0.5 * var_chaste_interface__Ca__Ca_ss_CaL - 0.23999999999999996 * var_chaste_interface__Irel__Irel - 5 * var_chaste_interface__Ca__Ca_i - 0.0004183410516001074 * var_x81) / pow(var_x120, 2))); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[5][8] = 0.0; + rJacobian[5][9] = 0.0; + rJacobian[5][10] = 0.0; + rJacobian[5][11] = 0.0; + rJacobian[5][12] = 0.0; + rJacobian[5][13] = 0.0; + rJacobian[5][14] = 0.0; + rJacobian[5][15] = 0.0; + rJacobian[5][16] = 0.0; + rJacobian[5][17] = 0.0; + rJacobian[5][18] = 0.0; + rJacobian[5][19] = 0.0; + rJacobian[5][20] = 0.0; + rJacobian[5][21] = 0.0; + rJacobian[5][22] = 0.0; + rJacobian[5][23] = 0.0; + rJacobian[5][24] = 0.0; + rJacobian[5][25] = 0.0; + rJacobian[5][26] = 0.0; + rJacobian[5][27] = 0.0; + rJacobian[5][28] = 0.0; + rJacobian[5][29] = 0.0; + rJacobian[5][30] = 0.0; + rJacobian[5][31] = -(mDt * (0.23999999999999996 * var_x121)); + rJacobian[5][32] = 0.0; + rJacobian[5][33] = 0.0; + rJacobian[5][34] = -(mDt * (-var_x125 * (-var_x102 * var_x126 - var_x124 * var_x99))); + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (-0.14749262536873156 - var_x135 - var_x143 - 0.0016482105995215921 * var_x127 * mParameters[8] + 0.00047280839508731927 * var_x127 * var_x132 * var_x136)); + rJacobian[6][7] = -(mDt * (0.14749262536873156)); + rJacobian[6][8] = 0.0; + rJacobian[6][9] = 0.0; + rJacobian[6][10] = 0.0; + rJacobian[6][11] = 0.0; + rJacobian[6][12] = 0.0; + rJacobian[6][13] = 0.0; + rJacobian[6][14] = 0.0; + rJacobian[6][15] = 0.0; + rJacobian[6][16] = 0.0; + rJacobian[6][17] = 0.0; + rJacobian[6][18] = 0.0; + rJacobian[6][19] = 0.0; + rJacobian[6][20] = 0.0; + rJacobian[6][21] = 0.0; + rJacobian[6][22] = 0.0; + rJacobian[6][23] = 0.0; + rJacobian[6][24] = 0.0; + rJacobian[6][25] = 0.0; + rJacobian[6][26] = 0.0; + rJacobian[6][27] = 0.0; + rJacobian[6][28] = 0.0; + rJacobian[6][29] = 0.0; + rJacobian[6][30] = 0.0; + rJacobian[6][31] = 0.0; + rJacobian[6][32] = -(mDt * (-var_x144 + var_x129 * var_x145)); + rJacobian[6][33] = -(mDt * (-var_x146)); + rJacobian[6][34] = 0.0; + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = 0.0; + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = -(mDt * (5 + 0.0020917052580005369 * ((var_x152) ? (-var_x148 * var_x151) : (-var_x151 * var_x155)))); + rJacobian[7][7] = 1.0 - (mDt * (-5)); + rJacobian[7][8] = 0.0; + rJacobian[7][9] = 0.0; + rJacobian[7][10] = 0.0; + rJacobian[7][11] = 0.0; + rJacobian[7][12] = 0.0; + rJacobian[7][13] = 0.0; + rJacobian[7][14] = 0.0; + rJacobian[7][15] = 0.0; + rJacobian[7][16] = 0.0; + rJacobian[7][17] = 0.0; + rJacobian[7][18] = 0.0; + rJacobian[7][19] = 0.0; + rJacobian[7][20] = 0.0; + rJacobian[7][21] = 0.0; + rJacobian[7][22] = 0.0; + rJacobian[7][23] = 0.0; + rJacobian[7][24] = 0.0; + rJacobian[7][25] = 0.0; + rJacobian[7][26] = 0.0; + rJacobian[7][27] = 0.0; + rJacobian[7][28] = 0.0; + rJacobian[7][29] = 0.0; + rJacobian[7][30] = 0.0; + rJacobian[7][31] = -(mDt * (0.0020917052580005369 * ((var_x152) ? (-1206062.4999999998 * var_x147 * var_x156) : (-45150.01525312919 * var_x154 * var_x156)))); + rJacobian[7][32] = 0.0; + rJacobian[7][33] = 0.0; + rJacobian[7][34] = 0.0; + rJacobian[8][0] = 0.0; + rJacobian[8][1] = 0.0; + rJacobian[8][2] = 0.0; + rJacobian[8][3] = 0.0; + rJacobian[8][4] = -(mDt * (-var_x160)); + rJacobian[8][5] = 0.0; + rJacobian[8][6] = 0.0; + rJacobian[8][7] = 0.0; + rJacobian[8][8] = 1.0 - (mDt * (-var_x163 - var_x173)); + rJacobian[8][9] = -(mDt * (var_x175)); + rJacobian[8][10] = 0.0; + rJacobian[8][11] = -(mDt * (1)); + rJacobian[8][12] = -(mDt * (var_x176)); + rJacobian[8][13] = 0.0; + rJacobian[8][14] = 0.0; + rJacobian[8][15] = 0.0; + rJacobian[8][16] = 0.0; + rJacobian[8][17] = 0.0; + rJacobian[8][18] = 0.0; + rJacobian[8][19] = 0.0; + rJacobian[8][20] = 0.0; + rJacobian[8][21] = 0.0; + rJacobian[8][22] = 0.0; + rJacobian[8][23] = 0.0; + rJacobian[8][24] = 0.0; + rJacobian[8][25] = 0.0; + rJacobian[8][26] = 0.0; + rJacobian[8][27] = 0.0; + rJacobian[8][28] = 0.0; + rJacobian[8][29] = 0.0; + rJacobian[8][30] = 0.0; + rJacobian[8][31] = 0.0; + rJacobian[8][32] = 0.0; + rJacobian[8][33] = 0.0; + rJacobian[8][34] = 0.0; + rJacobian[9][0] = 0.0; + rJacobian[9][1] = 0.0; + rJacobian[9][2] = 0.0; + rJacobian[9][3] = 0.0; + rJacobian[9][4] = -(mDt * (-var_x182)); + rJacobian[9][5] = 0.0; + rJacobian[9][6] = 0.0; + rJacobian[9][7] = 0.0; + rJacobian[9][8] = -(mDt * (var_x170)); + rJacobian[9][9] = 1.0 - (mDt * (-var_x163 - var_x184)); + rJacobian[9][10] = -(mDt * (9.9999999999999995e-7)); + rJacobian[9][11] = 0.0; + rJacobian[9][12] = 0.0; + rJacobian[9][13] = -(mDt * (var_x176)); + rJacobian[9][14] = 0.0; + rJacobian[9][15] = 0.0; + rJacobian[9][16] = 0.0; + rJacobian[9][17] = 0.0; + rJacobian[9][18] = 0.0; + rJacobian[9][19] = 0.0; + rJacobian[9][20] = 0.0; + rJacobian[9][21] = 0.0; + rJacobian[9][22] = 0.0; + rJacobian[9][23] = 0.0; + rJacobian[9][24] = 0.0; + rJacobian[9][25] = 0.0; + rJacobian[9][26] = 0.0; + rJacobian[9][27] = 0.0; + rJacobian[9][28] = 0.0; + rJacobian[9][29] = 0.0; + rJacobian[9][30] = 0.0; + rJacobian[9][31] = 0.0; + rJacobian[9][32] = 0.0; + rJacobian[9][33] = 0.0; + rJacobian[9][34] = 0.0; + rJacobian[10][0] = 0.0; + rJacobian[10][1] = 0.0; + rJacobian[10][2] = 0.0; + rJacobian[10][3] = 0.0; + rJacobian[10][4] = -(mDt * (var_x182 + var_x188 - var_x190)); + rJacobian[10][5] = 0.0; + rJacobian[10][6] = 0.0; + rJacobian[10][7] = 0.0; + rJacobian[10][8] = -(mDt * (var_x191)); + rJacobian[10][9] = -(mDt * (var_x183 - var_x176)); + rJacobian[10][10] = 1.0 - (mDt * (-var_x163 - var_x193 - var_x194)); + rJacobian[10][11] = -(mDt * (var_x191 + var_x195)); + rJacobian[10][12] = -(mDt * (var_x191)); + rJacobian[10][13] = -(mDt * (var_x191)); + rJacobian[10][14] = -(mDt * (var_x191)); + rJacobian[10][15] = 0.0; + rJacobian[10][16] = 0.0; + rJacobian[10][17] = 0.0; + rJacobian[10][18] = 0.0; + rJacobian[10][19] = 0.0; + rJacobian[10][20] = 0.0; + rJacobian[10][21] = 0.0; + rJacobian[10][22] = 0.0; + rJacobian[10][23] = 0.0; + rJacobian[10][24] = 0.0; + rJacobian[10][25] = 0.0; + rJacobian[10][26] = 0.0; + rJacobian[10][27] = 0.0; + rJacobian[10][28] = 0.0; + rJacobian[10][29] = 0.0; + rJacobian[10][30] = 0.0; + rJacobian[10][31] = 0.0; + rJacobian[10][32] = 0.0; + rJacobian[10][33] = 0.0; + rJacobian[10][34] = 0.0; + rJacobian[11][0] = 0.0; + rJacobian[11][1] = 0.0; + rJacobian[11][2] = 0.0; + rJacobian[11][3] = 0.0; + rJacobian[11][4] = -(mDt * (var_x160 + var_x190 - var_x188)); + rJacobian[11][5] = 0.0; + rJacobian[11][6] = 0.0; + rJacobian[11][7] = 0.0; + rJacobian[11][8] = -(mDt * (var_x172)); + rJacobian[11][9] = 0.0; + rJacobian[11][10] = -(mDt * (var_x193)); + rJacobian[11][11] = 1.0 - (mDt * (-var_x163 - var_x196)); + rJacobian[11][12] = 0.0; + rJacobian[11][13] = 0.0; + rJacobian[11][14] = -(mDt * (var_x176)); + rJacobian[11][15] = 0.0; + rJacobian[11][16] = 0.0; + rJacobian[11][17] = 0.0; + rJacobian[11][18] = 0.0; + rJacobian[11][19] = 0.0; + rJacobian[11][20] = 0.0; + rJacobian[11][21] = 0.0; + rJacobian[11][22] = 0.0; + rJacobian[11][23] = 0.0; + rJacobian[11][24] = 0.0; + rJacobian[11][25] = 0.0; + rJacobian[11][26] = 0.0; + rJacobian[11][27] = 0.0; + rJacobian[11][28] = 0.0; + rJacobian[11][29] = 0.0; + rJacobian[11][30] = 0.0; + rJacobian[11][31] = 0.0; + rJacobian[11][32] = 0.0; + rJacobian[11][33] = 0.0; + rJacobian[11][34] = 0.0; + rJacobian[12][0] = 0.0; + rJacobian[12][1] = 0.0; + rJacobian[12][2] = 0.0; + rJacobian[12][3] = 0.0; + rJacobian[12][4] = -(mDt * (-var_x197)); + rJacobian[12][5] = 0.0; + rJacobian[12][6] = 0.0; + rJacobian[12][7] = 0.0; + rJacobian[12][8] = -(mDt * (var_x163)); + rJacobian[12][9] = 0.0; + rJacobian[12][10] = 0.0; + rJacobian[12][11] = 0.0; + rJacobian[12][12] = 1.0 - (mDt * (-var_x173 - var_x176)); + rJacobian[12][13] = -(mDt * (var_x175)); + rJacobian[12][14] = -(mDt * (1)); + rJacobian[12][15] = 0.0; + rJacobian[12][16] = 0.0; + rJacobian[12][17] = 0.0; + rJacobian[12][18] = 0.0; + rJacobian[12][19] = 0.0; + rJacobian[12][20] = 0.0; + rJacobian[12][21] = 0.0; + rJacobian[12][22] = 0.0; + rJacobian[12][23] = 0.0; + rJacobian[12][24] = 0.0; + rJacobian[12][25] = 0.0; + rJacobian[12][26] = 0.0; + rJacobian[12][27] = 0.0; + rJacobian[12][28] = 0.0; + rJacobian[12][29] = 0.0; + rJacobian[12][30] = 0.0; + rJacobian[12][31] = 0.0; + rJacobian[12][32] = 0.0; + rJacobian[12][33] = 0.0; + rJacobian[12][34] = 0.0; + rJacobian[13][0] = 0.0; + rJacobian[13][1] = 0.0; + rJacobian[13][2] = 0.0; + rJacobian[13][3] = 0.0; + rJacobian[13][4] = -(mDt * (-var_x181 * var_chaste_interface__ICaL__OI)); + rJacobian[13][5] = 0.0; + rJacobian[13][6] = 0.0; + rJacobian[13][7] = 0.0; + rJacobian[13][8] = -(mDt * (-9.9999999999999995e-7)); + rJacobian[13][9] = -(mDt * (-9.9999999999999995e-7 - var_x198)); + rJacobian[13][10] = -(mDt * (-9.9999999999999995e-7)); + rJacobian[13][11] = -(mDt * (-9.9999999999999995e-7)); + rJacobian[13][12] = -(mDt * (-9.9999999999999995e-7 + var_x170)); + rJacobian[13][13] = 1.0 - (mDt * (-var_x184 - var_x194)); + rJacobian[13][14] = -(mDt * (-9.9999999999999995e-7)); + rJacobian[13][15] = 0.0; + rJacobian[13][16] = 0.0; + rJacobian[13][17] = 0.0; + rJacobian[13][18] = 0.0; + rJacobian[13][19] = 0.0; + rJacobian[13][20] = 0.0; + rJacobian[13][21] = 0.0; + rJacobian[13][22] = 0.0; + rJacobian[13][23] = 0.0; + rJacobian[13][24] = 0.0; + rJacobian[13][25] = 0.0; + rJacobian[13][26] = 0.0; + rJacobian[13][27] = 0.0; + rJacobian[13][28] = 0.0; + rJacobian[13][29] = 0.0; + rJacobian[13][30] = 0.0; + rJacobian[13][31] = 0.0; + rJacobian[13][32] = 0.0; + rJacobian[13][33] = 0.0; + rJacobian[13][34] = 0.0; + rJacobian[14][0] = 0.0; + rJacobian[14][1] = 0.0; + rJacobian[14][2] = 0.0; + rJacobian[14][3] = 0.0; + rJacobian[14][4] = -(mDt * (var_x197 + var_x189 * (1 - var_x108 - var_chaste_interface__ICaL__C - var_chaste_interface__ICaL__CI - var_chaste_interface__ICaL__CI_star - var_chaste_interface__ICaL__C_star - var_chaste_interface__ICaL__OI) - var_x187 * var_chaste_interface__ICaL__O_star)); + rJacobian[14][5] = 0.0; + rJacobian[14][6] = 0.0; + rJacobian[14][7] = 0.0; + rJacobian[14][8] = -(mDt * (var_x199)); + rJacobian[14][9] = -(mDt * (var_x199)); + rJacobian[14][10] = -(mDt * (var_x199)); + rJacobian[14][11] = -(mDt * (-var_x193 - var_x198)); + rJacobian[14][12] = -(mDt * (var_x172 - var_x193)); + rJacobian[14][13] = -(mDt * (var_x199)); + rJacobian[14][14] = 1.0 - (mDt * (-var_x176 - var_x193 - var_x196)); + rJacobian[14][15] = 0.0; + rJacobian[14][16] = 0.0; + rJacobian[14][17] = 0.0; + rJacobian[14][18] = 0.0; + rJacobian[14][19] = 0.0; + rJacobian[14][20] = 0.0; + rJacobian[14][21] = 0.0; + rJacobian[14][22] = 0.0; + rJacobian[14][23] = 0.0; + rJacobian[14][24] = 0.0; + rJacobian[14][25] = 0.0; + rJacobian[14][26] = 0.0; + rJacobian[14][27] = 0.0; + rJacobian[14][28] = 0.0; + rJacobian[14][29] = 0.0; + rJacobian[14][30] = 0.0; + rJacobian[14][31] = 0.0; + rJacobian[14][32] = 0.0; + rJacobian[14][33] = 0.0; + rJacobian[14][34] = 0.0; + rJacobian[15][0] = 0.0; + rJacobian[15][1] = 0.0; + rJacobian[15][2] = 0.0; + rJacobian[15][3] = 0.0; + rJacobian[15][4] = 0.0; + rJacobian[15][5] = 0.0; + rJacobian[15][6] = 0.0; + rJacobian[15][7] = 0.0; + rJacobian[15][8] = 0.0; + rJacobian[15][9] = 0.0; + rJacobian[15][10] = 0.0; + rJacobian[15][11] = 0.0; + rJacobian[15][12] = 0.0; + rJacobian[15][13] = 0.0; + rJacobian[15][14] = 0.0; + rJacobian[15][15] = 1.0 - (mDt * (-var_x201)); + rJacobian[15][16] = 0.0; + rJacobian[15][17] = 0.0; + rJacobian[15][18] = 0.0; + rJacobian[15][19] = 0.0; + rJacobian[15][20] = 0.0; + rJacobian[15][21] = 0.0; + rJacobian[15][22] = -(mDt * (var_x203)); + rJacobian[15][23] = 0.0; + rJacobian[15][24] = 0.0; + rJacobian[15][25] = 0.0; + rJacobian[15][26] = 0.0; + rJacobian[15][27] = 0.0; + rJacobian[15][28] = 0.0; + rJacobian[15][29] = 0.0; + rJacobian[15][30] = 0.0; + rJacobian[15][31] = 0.0; + rJacobian[15][32] = 0.0; + rJacobian[15][33] = 0.0; + rJacobian[15][34] = 0.0; + rJacobian[16][0] = 0.0; + rJacobian[16][1] = 0.0; + rJacobian[16][2] = 0.0; + rJacobian[16][3] = 0.0; + rJacobian[16][4] = 0.0; + rJacobian[16][5] = 0.0; + rJacobian[16][6] = 0.0; + rJacobian[16][7] = 0.0; + rJacobian[16][8] = 0.0; + rJacobian[16][9] = 0.0; + rJacobian[16][10] = 0.0; + rJacobian[16][11] = 0.0; + rJacobian[16][12] = 0.0; + rJacobian[16][13] = 0.0; + rJacobian[16][14] = 0.0; + rJacobian[16][15] = 0.0; + rJacobian[16][16] = 1.0 - (mDt * (-var_x205 - var_x206)); + rJacobian[16][17] = -(mDt * (var_x203)); + rJacobian[16][18] = 0.0; + rJacobian[16][19] = 0.0; + rJacobian[16][20] = 0.0; + rJacobian[16][21] = 0.0; + rJacobian[16][22] = 0.0; + rJacobian[16][23] = 0.0; + rJacobian[16][24] = 0.0; + rJacobian[16][25] = 0.0; + rJacobian[16][26] = 0.0; + rJacobian[16][27] = -(mDt * (var_x208)); + rJacobian[16][28] = 0.0; + rJacobian[16][29] = 0.0; + rJacobian[16][30] = 0.0; + rJacobian[16][31] = 0.0; + rJacobian[16][32] = 0.0; + rJacobian[16][33] = 0.0; + rJacobian[16][34] = 0.0; + rJacobian[17][0] = 0.0; + rJacobian[17][1] = 0.0; + rJacobian[17][2] = 0.0; + rJacobian[17][3] = 0.0; + rJacobian[17][4] = 0.0; + rJacobian[17][5] = 0.0; + rJacobian[17][6] = 0.0; + rJacobian[17][7] = 0.0; + rJacobian[17][8] = 0.0; + rJacobian[17][9] = 0.0; + rJacobian[17][10] = 0.0; + rJacobian[17][11] = 0.0; + rJacobian[17][12] = 0.0; + rJacobian[17][13] = 0.0; + rJacobian[17][14] = 0.0; + rJacobian[17][15] = 0.0; + rJacobian[17][16] = -(mDt * (var_x206)); + rJacobian[17][17] = 1.0 - (mDt * (-var_x205 - var_x209 - var_x210)); + rJacobian[17][18] = -(mDt * (var_x211)); + rJacobian[17][19] = -(mDt * (var_x212)); + rJacobian[17][20] = 0.0; + rJacobian[17][21] = 0.0; + rJacobian[17][22] = 0.0; + rJacobian[17][23] = 0.0; + rJacobian[17][24] = 0.0; + rJacobian[17][25] = 0.0; + rJacobian[17][26] = 0.0; + rJacobian[17][27] = 0.0; + rJacobian[17][28] = -(mDt * (var_x213)); + rJacobian[17][29] = 0.0; + rJacobian[17][30] = 0.0; + rJacobian[17][31] = 0.0; + rJacobian[17][32] = 0.0; + rJacobian[17][33] = 0.0; + rJacobian[17][34] = 0.0; + rJacobian[18][0] = 0.0; + rJacobian[18][1] = 0.0; + rJacobian[18][2] = 0.0; + rJacobian[18][3] = 0.0; + rJacobian[18][4] = 0.0; + rJacobian[18][5] = 0.0; + rJacobian[18][6] = 0.0; + rJacobian[18][7] = 0.0; + rJacobian[18][8] = 0.0; + rJacobian[18][9] = 0.0; + rJacobian[18][10] = 0.0; + rJacobian[18][11] = 0.0; + rJacobian[18][12] = 0.0; + rJacobian[18][13] = 0.0; + rJacobian[18][14] = 0.0; + rJacobian[18][15] = 0.0; + rJacobian[18][16] = 0.0; + rJacobian[18][17] = -(mDt * (var_x209)); + rJacobian[18][18] = 1.0 - (mDt * (-var_x205 - var_x214)); + rJacobian[18][19] = 0.0; + rJacobian[18][20] = -(mDt * (var_x212)); + rJacobian[18][21] = 0.0; + rJacobian[18][22] = 0.0; + rJacobian[18][23] = 0.0; + rJacobian[18][24] = 0.0; + rJacobian[18][25] = 0.0; + rJacobian[18][26] = 0.0; + rJacobian[18][27] = 0.0; + rJacobian[18][28] = 0.0; + rJacobian[18][29] = -(mDt * (var_x215)); + rJacobian[18][30] = 0.0; + rJacobian[18][31] = 0.0; + rJacobian[18][32] = 0.0; + rJacobian[18][33] = 0.0; + rJacobian[18][34] = 0.0; + rJacobian[19][0] = 0.0; + rJacobian[19][1] = 0.0; + rJacobian[19][2] = 0.0; + rJacobian[19][3] = 0.0; + rJacobian[19][4] = 0.0; + rJacobian[19][5] = 0.0; + rJacobian[19][6] = 0.0; + rJacobian[19][7] = 0.0; + rJacobian[19][8] = 0.0; + rJacobian[19][9] = 0.0; + rJacobian[19][10] = 0.0; + rJacobian[19][11] = 0.0; + rJacobian[19][12] = 0.0; + rJacobian[19][13] = 0.0; + rJacobian[19][14] = 0.0; + rJacobian[19][15] = 0.0; + rJacobian[19][16] = 0.0; + rJacobian[19][17] = -(mDt * (var_x208)); + rJacobian[19][18] = 0.0; + rJacobian[19][19] = 1.0 - (mDt * (-var_x209 - var_x212)); + rJacobian[19][20] = -(mDt * (var_x203)); + rJacobian[19][21] = 0.0; + rJacobian[19][22] = 0.0; + rJacobian[19][23] = 0.0; + rJacobian[19][24] = 0.0; + rJacobian[19][25] = 0.0; + rJacobian[19][26] = 0.0; + rJacobian[19][27] = 0.0; + rJacobian[19][28] = 0.0; + rJacobian[19][29] = 0.0; + rJacobian[19][30] = 0.0; + rJacobian[19][31] = 0.0; + rJacobian[19][32] = 0.0; + rJacobian[19][33] = 0.0; + rJacobian[19][34] = 0.0; + rJacobian[20][0] = 0.0; + rJacobian[20][1] = 0.0; + rJacobian[20][2] = 0.0; + rJacobian[20][3] = 0.0; + rJacobian[20][4] = 0.0; + rJacobian[20][5] = 0.0; + rJacobian[20][6] = 0.0; + rJacobian[20][7] = 0.0; + rJacobian[20][8] = 0.0; + rJacobian[20][9] = 0.0; + rJacobian[20][10] = 0.0; + rJacobian[20][11] = 0.0; + rJacobian[20][12] = 0.0; + rJacobian[20][13] = 0.0; + rJacobian[20][14] = 0.0; + rJacobian[20][15] = 0.0; + rJacobian[20][16] = 0.0; + rJacobian[20][17] = 0.0; + rJacobian[20][18] = -(mDt * (var_x213)); + rJacobian[20][19] = -(mDt * (var_x209)); + rJacobian[20][20] = 1.0 - (mDt * (-var_x210 - var_x212)); + rJacobian[20][21] = -(mDt * (var_x216)); + rJacobian[20][22] = 0.0; + rJacobian[20][23] = 0.0; + rJacobian[20][24] = 0.0; + rJacobian[20][25] = 0.0; + rJacobian[20][26] = 0.0; + rJacobian[20][27] = 0.0; + rJacobian[20][28] = 0.0; + rJacobian[20][29] = 0.0; + rJacobian[20][30] = 0.0; + rJacobian[20][31] = 0.0; + rJacobian[20][32] = 0.0; + rJacobian[20][33] = 0.0; + rJacobian[20][34] = 0.0; + rJacobian[21][0] = 0.0; + rJacobian[21][1] = 0.0; + rJacobian[21][2] = 0.0; + rJacobian[21][3] = 0.0; + rJacobian[21][4] = 0.0; + rJacobian[21][5] = 0.0; + rJacobian[21][6] = 0.0; + rJacobian[21][7] = 0.0; + rJacobian[21][8] = 0.0; + rJacobian[21][9] = 0.0; + rJacobian[21][10] = 0.0; + rJacobian[21][11] = 0.0; + rJacobian[21][12] = 0.0; + rJacobian[21][13] = 0.0; + rJacobian[21][14] = 0.0; + rJacobian[21][15] = 0.0; + rJacobian[21][16] = 0.0; + rJacobian[21][17] = 0.0; + rJacobian[21][18] = 0.0; + rJacobian[21][19] = 0.0; + rJacobian[21][20] = -(mDt * (var_x208)); + rJacobian[21][21] = 1.0 - (mDt * (-0.089538306411019994 - var_x216)); + rJacobian[21][22] = 0.0; + rJacobian[21][23] = 0.0; + rJacobian[21][24] = 0.0; + rJacobian[21][25] = 0.0; + rJacobian[21][26] = 0.0; + rJacobian[21][27] = 0.0; + rJacobian[21][28] = 0.0; + rJacobian[21][29] = 0.0; + rJacobian[21][30] = -(mDt * (var_x217)); + rJacobian[21][31] = 0.0; + rJacobian[21][32] = 0.0; + rJacobian[21][33] = 0.0; + rJacobian[21][34] = 0.0; + rJacobian[22][0] = 0.0; + rJacobian[22][1] = 0.0; + rJacobian[22][2] = 0.0; + rJacobian[22][3] = 0.0; + rJacobian[22][4] = 0.0; + rJacobian[22][5] = 0.0; + rJacobian[22][6] = 0.0; + rJacobian[22][7] = 0.0; + rJacobian[22][8] = 0.0; + rJacobian[22][9] = 0.0; + rJacobian[22][10] = 0.0; + rJacobian[22][11] = 0.0; + rJacobian[22][12] = 0.0; + rJacobian[22][13] = 0.0; + rJacobian[22][14] = 0.0; + rJacobian[22][15] = -(mDt * (var_x201)); + rJacobian[22][16] = 0.0; + rJacobian[22][17] = 0.0; + rJacobian[22][18] = 0.0; + rJacobian[22][19] = 0.0; + rJacobian[22][20] = 0.0; + rJacobian[22][21] = 0.0; + rJacobian[22][22] = 1.0 - (mDt * (-var_x210 - var_x218)); + rJacobian[22][23] = -(mDt * (var_x211)); + rJacobian[22][24] = 0.0; + rJacobian[22][25] = 0.0; + rJacobian[22][26] = -(mDt * (var_x219)); + rJacobian[22][27] = 0.0; + rJacobian[22][28] = 0.0; + rJacobian[22][29] = 0.0; + rJacobian[22][30] = 0.0; + rJacobian[22][31] = 0.0; + rJacobian[22][32] = 0.0; + rJacobian[22][33] = 0.0; + rJacobian[22][34] = 0.0; + rJacobian[23][0] = 0.0; + rJacobian[23][1] = 0.0; + rJacobian[23][2] = 0.0; + rJacobian[23][3] = 0.0; + rJacobian[23][4] = 0.0; + rJacobian[23][5] = 0.0; + rJacobian[23][6] = 0.0; + rJacobian[23][7] = 0.0; + rJacobian[23][8] = 0.0; + rJacobian[23][9] = 0.0; + rJacobian[23][10] = 0.0; + rJacobian[23][11] = 0.0; + rJacobian[23][12] = 0.0; + rJacobian[23][13] = 0.0; + rJacobian[23][14] = 0.0; + rJacobian[23][15] = 0.0; + rJacobian[23][16] = 0.0; + rJacobian[23][17] = 0.0; + rJacobian[23][18] = 0.0; + rJacobian[23][19] = 0.0; + rJacobian[23][20] = 0.0; + rJacobian[23][21] = 0.0; + rJacobian[23][22] = -(mDt * (var_x218)); + rJacobian[23][23] = 1.0 - (mDt * (-var_x206 - var_x214)); + rJacobian[23][24] = -(mDt * (var_x220)); + rJacobian[23][25] = 0.0; + rJacobian[23][26] = 0.0; + rJacobian[23][27] = -(mDt * (var_x219)); + rJacobian[23][28] = 0.0; + rJacobian[23][29] = 0.0; + rJacobian[23][30] = 0.0; + rJacobian[23][31] = 0.0; + rJacobian[23][32] = 0.0; + rJacobian[23][33] = 0.0; + rJacobian[23][34] = 0.0; + rJacobian[24][0] = 0.0; + rJacobian[24][1] = 0.0; + rJacobian[24][2] = 0.0; + rJacobian[24][3] = 0.0; + rJacobian[24][4] = 0.0; + rJacobian[24][5] = 0.0; + rJacobian[24][6] = 0.0; + rJacobian[24][7] = 0.0; + rJacobian[24][8] = 0.0; + rJacobian[24][9] = 0.0; + rJacobian[24][10] = 0.0; + rJacobian[24][11] = 0.0; + rJacobian[24][12] = 0.0; + rJacobian[24][13] = 0.0; + rJacobian[24][14] = 0.0; + rJacobian[24][15] = 0.0; + rJacobian[24][16] = 0.0; + rJacobian[24][17] = 0.0; + rJacobian[24][18] = 0.0; + rJacobian[24][19] = 0.0; + rJacobian[24][20] = 0.0; + rJacobian[24][21] = 0.0; + rJacobian[24][22] = 0.0; + rJacobian[24][23] = -(mDt * (var_x206)); + rJacobian[24][24] = 1.0 - (mDt * (-var_x209 - var_x221)); + rJacobian[24][25] = -(mDt * (var_x222)); + rJacobian[24][26] = 0.0; + rJacobian[24][27] = 0.0; + rJacobian[24][28] = -(mDt * (var_x219)); + rJacobian[24][29] = 0.0; + rJacobian[24][30] = 0.0; + rJacobian[24][31] = 0.0; + rJacobian[24][32] = 0.0; + rJacobian[24][33] = 0.0; + rJacobian[24][34] = 0.0; + rJacobian[25][0] = 0.0; + rJacobian[25][1] = 0.0; + rJacobian[25][2] = 0.0; + rJacobian[25][3] = 0.0; + rJacobian[25][4] = 0.0; + rJacobian[25][5] = 0.0; + rJacobian[25][6] = 0.0; + rJacobian[25][7] = 0.0; + rJacobian[25][8] = 0.0; + rJacobian[25][9] = 0.0; + rJacobian[25][10] = 0.0; + rJacobian[25][11] = 0.0; + rJacobian[25][12] = 0.0; + rJacobian[25][13] = 0.0; + rJacobian[25][14] = 0.0; + rJacobian[25][15] = 0.0; + rJacobian[25][16] = 0.0; + rJacobian[25][17] = 0.0; + rJacobian[25][18] = 0.0; + rJacobian[25][19] = 0.0; + rJacobian[25][20] = 0.0; + rJacobian[25][21] = 0.0; + rJacobian[25][22] = 0.0; + rJacobian[25][23] = 0.0; + rJacobian[25][24] = -(mDt * (var_x209)); + rJacobian[25][25] = 1.0 - (mDt * (-var_x222 - var_x223)); + rJacobian[25][26] = 0.0; + rJacobian[25][27] = 0.0; + rJacobian[25][28] = 0.0; + rJacobian[25][29] = -(mDt * (var_x219)); + rJacobian[25][30] = 0.0; + rJacobian[25][31] = 0.0; + rJacobian[25][32] = 0.0; + rJacobian[25][33] = 0.0; + rJacobian[25][34] = 0.0; + rJacobian[26][0] = 0.0; + rJacobian[26][1] = 0.0; + rJacobian[26][2] = 0.0; + rJacobian[26][3] = 0.0; + rJacobian[26][4] = 0.0; + rJacobian[26][5] = 0.0; + rJacobian[26][6] = 0.0; + rJacobian[26][7] = 0.0; + rJacobian[26][8] = 0.0; + rJacobian[26][9] = 0.0; + rJacobian[26][10] = 0.0; + rJacobian[26][11] = 0.0; + rJacobian[26][12] = 0.0; + rJacobian[26][13] = 0.0; + rJacobian[26][14] = 0.0; + rJacobian[26][15] = 0.0; + rJacobian[26][16] = 0.0; + rJacobian[26][17] = 0.0; + rJacobian[26][18] = 0.0; + rJacobian[26][19] = 0.0; + rJacobian[26][20] = 0.0; + rJacobian[26][21] = 0.0; + rJacobian[26][22] = -(mDt * (var_x208)); + rJacobian[26][23] = 0.0; + rJacobian[26][24] = 0.0; + rJacobian[26][25] = 0.0; + rJacobian[26][26] = 1.0 - (mDt * (-var_x218 - var_x219)); + rJacobian[26][27] = -(mDt * (var_x203)); + rJacobian[26][28] = 0.0; + rJacobian[26][29] = 0.0; + rJacobian[26][30] = 0.0; + rJacobian[26][31] = 0.0; + rJacobian[26][32] = 0.0; + rJacobian[26][33] = 0.0; + rJacobian[26][34] = 0.0; + rJacobian[27][0] = 0.0; + rJacobian[27][1] = 0.0; + rJacobian[27][2] = 0.0; + rJacobian[27][3] = 0.0; + rJacobian[27][4] = 0.0; + rJacobian[27][5] = 0.0; + rJacobian[27][6] = 0.0; + rJacobian[27][7] = 0.0; + rJacobian[27][8] = 0.0; + rJacobian[27][9] = 0.0; + rJacobian[27][10] = 0.0; + rJacobian[27][11] = 0.0; + rJacobian[27][12] = 0.0; + rJacobian[27][13] = 0.0; + rJacobian[27][14] = 0.0; + rJacobian[27][15] = 0.0; + rJacobian[27][16] = -(mDt * (var_x205)); + rJacobian[27][17] = 0.0; + rJacobian[27][18] = 0.0; + rJacobian[27][19] = 0.0; + rJacobian[27][20] = 0.0; + rJacobian[27][21] = 0.0; + rJacobian[27][22] = 0.0; + rJacobian[27][23] = -(mDt * (var_x213)); + rJacobian[27][24] = 0.0; + rJacobian[27][25] = 0.0; + rJacobian[27][26] = -(mDt * (var_x218)); + rJacobian[27][27] = 1.0 - (mDt * (-var_x206 - var_x210 - var_x219)); + rJacobian[27][28] = -(mDt * (var_x211)); + rJacobian[27][29] = 0.0; + rJacobian[27][30] = 0.0; + rJacobian[27][31] = 0.0; + rJacobian[27][32] = 0.0; + rJacobian[27][33] = 0.0; + rJacobian[27][34] = 0.0; + rJacobian[28][0] = 0.0; + rJacobian[28][1] = 0.0; + rJacobian[28][2] = 0.0; + rJacobian[28][3] = 0.0; + rJacobian[28][4] = 0.0; + rJacobian[28][5] = 0.0; + rJacobian[28][6] = 0.0; + rJacobian[28][7] = 0.0; + rJacobian[28][8] = 0.0; + rJacobian[28][9] = 0.0; + rJacobian[28][10] = 0.0; + rJacobian[28][11] = 0.0; + rJacobian[28][12] = 0.0; + rJacobian[28][13] = 0.0; + rJacobian[28][14] = 0.0; + rJacobian[28][15] = 0.0; + rJacobian[28][16] = 0.0; + rJacobian[28][17] = -(mDt * (var_x205)); + rJacobian[28][18] = 0.0; + rJacobian[28][19] = 0.0; + rJacobian[28][20] = 0.0; + rJacobian[28][21] = 0.0; + rJacobian[28][22] = 0.0; + rJacobian[28][23] = 0.0; + rJacobian[28][24] = -(mDt * (var_x215)); + rJacobian[28][25] = 0.0; + rJacobian[28][26] = 0.0; + rJacobian[28][27] = -(mDt * (var_x206)); + rJacobian[28][28] = 1.0 - (mDt * (-var_x209 - var_x214 - var_x219)); + rJacobian[28][29] = -(mDt * (var_x220)); + rJacobian[28][30] = 0.0; + rJacobian[28][31] = 0.0; + rJacobian[28][32] = 0.0; + rJacobian[28][33] = 0.0; + rJacobian[28][34] = 0.0; + rJacobian[29][0] = 0.0; + rJacobian[29][1] = 0.0; + rJacobian[29][2] = 0.0; + rJacobian[29][3] = 0.0; + rJacobian[29][4] = 0.0; + rJacobian[29][5] = 0.0; + rJacobian[29][6] = 0.0; + rJacobian[29][7] = 0.0; + rJacobian[29][8] = 0.0; + rJacobian[29][9] = 0.0; + rJacobian[29][10] = 0.0; + rJacobian[29][11] = 0.0; + rJacobian[29][12] = 0.0; + rJacobian[29][13] = 0.0; + rJacobian[29][14] = 0.0; + rJacobian[29][15] = 0.0; + rJacobian[29][16] = 0.0; + rJacobian[29][17] = 0.0; + rJacobian[29][18] = -(mDt * (var_x205)); + rJacobian[29][19] = 0.0; + rJacobian[29][20] = 0.0; + rJacobian[29][21] = 0.0; + rJacobian[29][22] = 0.0; + rJacobian[29][23] = 0.0; + rJacobian[29][24] = 0.0; + rJacobian[29][25] = -(mDt * (var_x223)); + rJacobian[29][26] = 0.0; + rJacobian[29][27] = 0.0; + rJacobian[29][28] = -(mDt * (var_x209)); + rJacobian[29][29] = 1.0 - (mDt * (-var_x219 - var_x221)); + rJacobian[29][30] = 0.0; + rJacobian[29][31] = 0.0; + rJacobian[29][32] = 0.0; + rJacobian[29][33] = 0.0; + rJacobian[29][34] = 0.0; + rJacobian[30][0] = 0.0; + rJacobian[30][1] = 0.0; + rJacobian[30][2] = 0.0; + rJacobian[30][3] = 0.0; + rJacobian[30][4] = 0.0; + rJacobian[30][5] = 0.0; + rJacobian[30][6] = 0.0; + rJacobian[30][7] = 0.0; + rJacobian[30][8] = 0.0; + rJacobian[30][9] = 0.0; + rJacobian[30][10] = 0.0; + rJacobian[30][11] = 0.0; + rJacobian[30][12] = 0.0; + rJacobian[30][13] = 0.0; + rJacobian[30][14] = 0.0; + rJacobian[30][15] = -(mDt * (var_x225)); + rJacobian[30][16] = -(mDt * (var_x225)); + rJacobian[30][17] = -(mDt * (var_x225)); + rJacobian[30][18] = -(mDt * (var_x225)); + rJacobian[30][19] = -(mDt * (var_x225)); + rJacobian[30][20] = -(mDt * (var_x225)); + rJacobian[30][21] = -(mDt * (0.089538306411019994 - var_x224)); + rJacobian[30][22] = -(mDt * (var_x225)); + rJacobian[30][23] = -(mDt * (var_x225)); + rJacobian[30][24] = -(mDt * (var_x225)); + rJacobian[30][25] = -(mDt * (var_x225)); + rJacobian[30][26] = -(mDt * (var_x225)); + rJacobian[30][27] = -(mDt * (var_x225)); + rJacobian[30][28] = -(mDt * (var_x225)); + rJacobian[30][29] = -(mDt * (var_x225)); + rJacobian[30][30] = 1.0 - (mDt * (-var_x217 - var_x224 + _lt_0_row[38])); + rJacobian[30][31] = 0.0; + rJacobian[30][32] = 0.0; + rJacobian[30][33] = 0.0; + rJacobian[30][34] = 0.0; + rJacobian[31][0] = -(mDt * (var_x230 * var_x239 + var_x230 * var_x242)); + rJacobian[31][1] = -(mDt * (-0.0123 * var_x238 * var_x240 / pow(var_chaste_interface__Ca__Ca_JSR, 2) - 8 * var_x115 * var_x231 * var_x232 * var_x234 * mParameters[1] / pow(var_x235, 2))); + rJacobian[31][2] = 0.0; + rJacobian[31][3] = 0.0; + rJacobian[31][4] = -(mDt * (-var_x111 * var_x243)); + rJacobian[31][5] = -(mDt * (-var_x239 * var_x244 - var_x242 * var_x244)); + rJacobian[31][6] = 0.0; + rJacobian[31][7] = 0.0; + rJacobian[31][8] = 0.0; + rJacobian[31][9] = 0.0; + rJacobian[31][10] = 0.0; + rJacobian[31][11] = 0.0; + rJacobian[31][12] = -(mDt * (var_x245)); + rJacobian[31][13] = 0.0; + rJacobian[31][14] = -(mDt * (var_x245)); + rJacobian[31][15] = 0.0; + rJacobian[31][16] = 0.0; + rJacobian[31][17] = 0.0; + rJacobian[31][18] = 0.0; + rJacobian[31][19] = 0.0; + rJacobian[31][20] = 0.0; + rJacobian[31][21] = 0.0; + rJacobian[31][22] = 0.0; + rJacobian[31][23] = 0.0; + rJacobian[31][24] = 0.0; + rJacobian[31][25] = 0.0; + rJacobian[31][26] = 0.0; + rJacobian[31][27] = 0.0; + rJacobian[31][28] = 0.0; + rJacobian[31][29] = 0.0; + rJacobian[31][30] = 0.0; + rJacobian[31][31] = 1.0 - (mDt * (-var_x241)); + rJacobian[31][32] = 0.0; + rJacobian[31][33] = 0.0; + rJacobian[31][34] = 0.0; + rJacobian[32][0] = 0.0; + rJacobian[32][1] = 0.0; + rJacobian[32][2] = 0.0; + rJacobian[32][3] = -(mDt * (-3.3595190743871034e-11 * var_x246 * var_x247 * var_x250 * var_x251 * mParameters[16] / pow(var_x248, 2))); + rJacobian[32][4] = 0.0; + rJacobian[32][5] = 0.0; + rJacobian[32][6] = -(mDt * (-var_x135 + var_x127 * var_x145)); + rJacobian[32][7] = 0.0; + rJacobian[32][8] = 0.0; + rJacobian[32][9] = 0.0; + rJacobian[32][10] = 0.0; + rJacobian[32][11] = 0.0; + rJacobian[32][12] = 0.0; + rJacobian[32][13] = 0.0; + rJacobian[32][14] = 0.0; + rJacobian[32][15] = -(mDt * (var_x253)); + rJacobian[32][16] = -(mDt * (var_x253)); + rJacobian[32][17] = -(mDt * (var_x253)); + rJacobian[32][18] = -(mDt * (var_x253)); + rJacobian[32][19] = -(mDt * (var_x253)); + rJacobian[32][20] = -(mDt * (var_x253)); + rJacobian[32][21] = -(mDt * (var_x253)); + rJacobian[32][22] = -(mDt * (var_x253)); + rJacobian[32][23] = -(mDt * (var_x253)); + rJacobian[32][24] = -(mDt * (var_x253)); + rJacobian[32][25] = -(mDt * (var_x253)); + rJacobian[32][26] = -(mDt * (var_x253)); + rJacobian[32][27] = -(mDt * (var_x253)); + rJacobian[32][28] = -(mDt * (var_x253)); + rJacobian[32][29] = -(mDt * (var_x253)); + rJacobian[32][30] = 0.0; + rJacobian[32][31] = 0.0; + rJacobian[32][32] = 1.0 - (mDt * (-var_x144 - 0.0016482105995215921 * var_x255 - var_x254 * _lt_0_row[8] * mParameters[14] + 0.00047280839508731927 * var_x129 * var_x132 * var_x136 - 0.00072346244967216237 * var_x257 * var_x268 * var_x269 - 0.00070927691144329649 * var_x257 * _lt_0_row[9] * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr - 2.7083455988196588e-5 * var_x256 * var_x269 * var_x271 * (-var_x263 * (1.053972635420138 * var_x129 * var_x264 + 1.6494869150645177 * var_x129 * var_x265) + 6.4983106368865622 * var_x129 * var_x258 * var_x270 - 13.738155796237757 * var_x129 * var_x261 * var_x266 / pow(var_x262, 2)) / pow(var_x267, 2) - var_x254 * pow(var_chaste_interface__Ito1_a_gate__a, 3) * mParameters[20] * var_chaste_interface__Ito1_i1f_gate__i1f * var_chaste_interface__Ito1_i1s_gate__i1s * _lt_0_row[10] + 0.00017254579424681073 * var_x129 * var_x256 * var_x258 * var_x268 * var_x270 * var_x271 * mParameters[12])); + rJacobian[32][33] = -(mDt * (-3.0211700289230781e-5 * var_x255 - 0.00037021332000009499 * var_x274 * var_x276 * var_x56 + 0.00037021332000009499 * var_x272 * var_x273 * var_x277 * var_x89 * mParameters[18] * mParameters[4])); + rJacobian[32][34] = 0.0; + rJacobian[33][0] = 0.0; + rJacobian[33][1] = 0.0; + rJacobian[33][2] = 0.0; + rJacobian[33][3] = -(mDt * (-var_x278 * var_x67 - 4.6276665000011881e-12 * var_x68 * var_x69 * var_x82 + 0.00014808532800003802 * var_x49 * var_x50 * var_x53 * var_x57 * var_x62 * mParameters[17])); + rJacobian[33][4] = 0.0; + rJacobian[33][5] = -(mDt * (-1.156916625000297e-12 * var_x123 - var_x279 * var_x67 + 3.7021332000009505e-5 * var_x49 * var_x50 * var_x57 * var_x74 * var_x78 * mParameters[17])); + rJacobian[33][6] = -(mDt * (-var_x143)); + rJacobian[33][7] = 0.0; + rJacobian[33][8] = 0.0; + rJacobian[33][9] = 0.0; + rJacobian[33][10] = 0.0; + rJacobian[33][11] = 0.0; + rJacobian[33][12] = 0.0; + rJacobian[33][13] = 0.0; + rJacobian[33][14] = 0.0; + rJacobian[33][15] = 0.0; + rJacobian[33][16] = 0.0; + rJacobian[33][17] = 0.0; + rJacobian[33][18] = 0.0; + rJacobian[33][19] = 0.0; + rJacobian[33][20] = 0.0; + rJacobian[33][21] = 0.0; + rJacobian[33][22] = 0.0; + rJacobian[33][23] = 0.0; + rJacobian[33][24] = 0.0; + rJacobian[33][25] = 0.0; + rJacobian[33][26] = 0.0; + rJacobian[33][27] = 0.0; + rJacobian[33][28] = 0.0; + rJacobian[33][29] = 0.0; + rJacobian[33][30] = 0.0; + rJacobian[33][31] = 0.0; + rJacobian[33][32] = 0.0; + rJacobian[33][33] = 1.0 - (mDt * (-0.14749262536873156 - var_x146 - 6.1702220000015831e-5 * ((var_x152) ? (var_x148 * var_x280) : (var_x155 * var_x280)) - var_x278 * var_x92 - 0.00044425598400011404 * var_x94 * var_x97 - 0.00055531998000014253 * var_x274 * var_x277 * var_x89 - var_x281 * pow(var_chaste_interface__INaL_mL_gate__mL, 3) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL - var_x281 * pow(var_chaste_interface__INa_m_gate__m, 3) * mParameters[11] * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j + 0.00055531998000014253 * var_x272 * var_x273 * var_x276 * var_x56 * mParameters[18] * mParameters[4])); + rJacobian[33][34] = -(mDt * (0.14749262536873156 - 0.00011106399600002851 * var_x282 - var_x279 * var_x99)); + rJacobian[34][0] = 0.0; + rJacobian[34][1] = 0.0; + rJacobian[34][2] = 0.0; + rJacobian[34][3] = 0.0; + rJacobian[34][4] = 0.0; + rJacobian[34][5] = -(mDt * (-3.9219473587510072e-11 * var_x123 - var_x283 * var_x67 + 0.0012550231548003222 * var_x49 * var_x50 * var_x57 * var_x74 * var_x78 * mParameters[17])); + rJacobian[34][6] = 0.0; + rJacobian[34][7] = 0.0; + rJacobian[34][8] = 0.0; + rJacobian[34][9] = 0.0; + rJacobian[34][10] = 0.0; + rJacobian[34][11] = 0.0; + rJacobian[34][12] = 0.0; + rJacobian[34][13] = 0.0; + rJacobian[34][14] = 0.0; + rJacobian[34][15] = 0.0; + rJacobian[34][16] = 0.0; + rJacobian[34][17] = 0.0; + rJacobian[34][18] = 0.0; + rJacobian[34][19] = 0.0; + rJacobian[34][20] = 0.0; + rJacobian[34][21] = 0.0; + rJacobian[34][22] = 0.0; + rJacobian[34][23] = 0.0; + rJacobian[34][24] = 0.0; + rJacobian[34][25] = 0.0; + rJacobian[34][26] = 0.0; + rJacobian[34][27] = 0.0; + rJacobian[34][28] = 0.0; + rJacobian[34][29] = 0.0; + rJacobian[34][30] = 0.0; + rJacobian[34][31] = 0.0; + rJacobian[34][32] = 0.0; + rJacobian[34][33] = -(mDt * (5)); + rJacobian[34][34] = 1.0 - (mDt * (-5 - 0.0037650694644009667 * var_x282 - var_x283 * var_x99)); + } + + void Celldecker_2009FromCellMLBackwardEulerOpt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -87.4947322902196 + double var_chaste_interface__Ca__Ca_i = rY[1]; + // Units: mM; Initial value: 8.38749860095482e-05 + double var_chaste_interface__IKs__C1 = rY[2]; + // Units: dimensionless; Initial value: 0.476679784307081 + double var_chaste_interface__IKs__C2 = rY[3]; + // Units: dimensionless; Initial value: 0.255181042718489 + double var_chaste_interface__IKs__C3 = rY[4]; + // Units: dimensionless; Initial value: 0.0512272866698557 + double var_chaste_interface__IKs__C4 = rY[5]; + // Units: dimensionless; Initial value: 0.0045705849736195 + double var_chaste_interface__IKs__C5 = rY[6]; + // Units: dimensionless; Initial value: 0.000152923243503507 + double var_chaste_interface__IKs__C6 = rY[7]; + // Units: dimensionless; Initial value: 0.132814156809568 + double var_chaste_interface__IKs__C7 = rY[8]; + // Units: dimensionless; Initial value: 0.053324572164618 + double var_chaste_interface__IKs__C8 = rY[9]; + // Units: dimensionless; Initial value: 0.00713656414955778 + double var_chaste_interface__IKs__C9 = rY[10]; + // Units: dimensionless; Initial value: 0.000318368292970148 + double var_chaste_interface__IKs__C10 = rY[11]; + // Units: dimensionless; Initial value: 0.0138769647384953 + double var_chaste_interface__IKs__C11 = rY[12]; + // Units: dimensionless; Initial value: 0.00371438476499172 + double var_chaste_interface__IKs__C12 = rY[13]; + // Units: dimensionless; Initial value: 0.000248553788631871 + double var_chaste_interface__IKs__C13 = rY[14]; + // Units: dimensionless; Initial value: 0.000644426171899078 + double var_chaste_interface__IKs__C14 = rY[15]; + // Units: dimensionless; Initial value: 8.62495047666861e-05 + double var_chaste_interface__IKs__C15 = rY[16]; + // Units: dimensionless; Initial value: 1.12344645485893e-05 + double var_chaste_interface__IKs__O1 = rY[17]; + // Units: dimensionless; Initial value: 1.05292905767805e-05 + double var_chaste_interface__ICaL__O = rY[19]; + // Units: dimensionless; Initial value: 2.26882961412491e-05 + double var_chaste_interface__ICaL__O_star = rY[21]; + // Units: dimensionless; Initial value: 1.23556404128518e-10 + double var_chaste_interface__INa_m_gate__m = rY[25]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INa_h_gate__h = rY[26]; + // Units: dimensionless; Initial value: 0.991354143386887 + double var_chaste_interface__INa_j_gate__j = rY[27]; + // Units: dimensionless; Initial value: 0.99709036251243 + double var_chaste_interface__INaL_mL_gate__mL = rY[28]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INaL_hL_gate__hL = rY[29]; + // Units: dimensionless; Initial value: 0.319611809402137 + double var_chaste_interface__IKr_xr_gate__xr = rY[30]; + // Units: dimensionless; Initial value: 4.06959064407486e-06 + double var_chaste_interface__Ito1_a_gate__a = rY[31]; + // Units: dimensionless; Initial value: 1.76776038804228e-05 + double var_chaste_interface__Ito1_i1f_gate__i1f = rY[32]; + // Units: dimensionless; Initial value: 0.997976503910799 + double var_chaste_interface__Ito1_i1s_gate__i1s = rY[33]; + // Units: dimensionless; Initial value: 0.947581184798815 + double var_chaste_interface__Ito2_i2f_gate__i2f = rY[34]; + // Units: dimensionless; Initial value: 0.996044894628276 + double var_chaste_interface__Irel__Irel = rY[35]; + // Units: mM_per_ms; Initial value: 0.000714227102027745 + double var_chaste_interface__Ca__Ca_ss_sr = rY[38]; + // Units: mM; Initial value: 0.00011296707102434 + double var_chaste_interface__Ca__Ca_ss_CaL = rY[39]; + // Units: mM; Initial value: 0.000119239795531548 + double var_chaste_interface__Na__Na_i = rY[40]; + // Units: mM; Initial value: 8.01031392415197 + double var_chaste_interface__Na__Na_ss_sr = rY[41]; + // Units: mM; Initial value: 8.01033434859049 + double var_chaste_interface__Cl__Cl_i = rY[42]; + // Units: mM; Initial value: 20.6683603724432 + double var_chaste_interface__K__K_i = rY[44]; + // Units: mM; Initial value: 144.907134343314 + + // Lookup table indexing + const bool _oob_0 = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_IKs__O2 = 1 - var_chaste_interface__IKs__C1 - var_chaste_interface__IKs__C10 - var_chaste_interface__IKs__C11 - var_chaste_interface__IKs__C12 - var_chaste_interface__IKs__C13 - var_chaste_interface__IKs__C14 - var_chaste_interface__IKs__C15 - var_chaste_interface__IKs__C2 - var_chaste_interface__IKs__C3 - var_chaste_interface__IKs__C4 - var_chaste_interface__IKs__C5 - var_chaste_interface__IKs__C6 - var_chaste_interface__IKs__C7 - var_chaste_interface__IKs__C8 - var_chaste_interface__IKs__C9 - var_chaste_interface__IKs__O1; // dimensionless + const double var_IpCa__IpCa = var_chaste_interface__Ca__Ca_i * mParameters[10] / (0.00050000000000000001 + var_chaste_interface__Ca__Ca_i); // uA_per_uF + const double var_membrane__i_Stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF + const double var_ICaL__ICaL = (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6]) : (14448.004881001343 * _lt_0_row[5] * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_ss_CaL * _lt_0_row[4]) * mParameters[6] * var_chaste_interface__membrane__Vm)); // uA_per_uF + const double var_ICab__ICab = (((0.074871767015605231 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.074871767015605231 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (192970 * (1 - 0.037435883507802616 * var_chaste_interface__membrane__Vm) * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7]) : (14448.004881001343 * _lt_0_row[5] * (-0.34100000000000003 * mParameters[3] + 1 * var_chaste_interface__Ca__Ca_i * _lt_0_row[4]) * mParameters[7] * var_chaste_interface__membrane__Vm)); // uA_per_uF + const double var_INaCa__INaCa_ss_sr = 0.20000000000000001 * _lt_0_row[2] * (pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr * _lt_0_row[1]) * mParameters[17] / ((1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_ss_sr, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_ss_sr + 1.3 * pow(var_chaste_interface__Na__Na_ss_sr, 3) + pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_ss_sr, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_ss_sr) * mParameters[3])); // uA_per_uF + const double var_INaCa__INaCa = 0.80000000000000004 * _lt_0_row[2] * (pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * _lt_0_row[0] - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * _lt_0_row[1]) * mParameters[17] / ((1 + 1.5624999999999999e-8 / pow(var_chaste_interface__Ca__Ca_i, 2)) * (669921.875 * var_chaste_interface__Ca__Ca_i + 1.3 * pow(var_chaste_interface__Na__Na_i, 3) + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + 0.0035999999999999999 * pow(mParameters[5], 3) * (1 + 0.00053738391835633597 * pow(var_chaste_interface__Na__Na_i, 3)) + 1860.8670000000004 * (1 + 277.77777777777777 * var_chaste_interface__Ca__Ca_i) * mParameters[3])) + var_INaCa__INaCa_ss_sr; // uA_per_uF + const double var_INaK__INaK = 1 * _lt_0_row[3] * pow(var_chaste_interface__Na__Na_i, 3) * mParameters[18] * mParameters[4] / ((1.5 + mParameters[4]) * pow((2.6000000000000001 + var_chaste_interface__Na__Na_i), 3)); // uA_per_uF + const double var_INab__phi = 0.037435883507802616 * var_chaste_interface__membrane__Vm; // dimensionless + const double var_INab__INab = (((1 * var_INab__phi >= -9.9999999999999995e-8) && (1 * var_INab__phi <= 9.9999999999999995e-8)) ? (96485 * (1 - 0.5 * var_INab__phi) * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9]) : (96485 * (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9] * var_INab__phi / (-1 + exp(1 * var_INab__phi)))); // uA_per_uF + const double var_Ito2__Ito2 = 1 * (1 - 1 / (1 + 6.2499999999999991 * pow(var_chaste_interface__Irel__Irel, 2))) * (((0.037435883507802616 * var_chaste_interface__membrane__Vm >= -9.9999999999999995e-8) && (0.037435883507802616 * var_chaste_interface__membrane__Vm <= 9.9999999999999995e-8)) ? (-96485 * (1 - 0.018717941753901308 * var_chaste_interface__membrane__Vm) * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19]) : (-3612.0012202503358 * _lt_0_row[7] * (_lt_0_row[6] + var_chaste_interface__Cl__Cl_i) * mParameters[19] * var_chaste_interface__membrane__Vm)) * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF + const double var_reversal_potentials__ECl = -26.712338705498265 * log(100 / var_chaste_interface__Cl__Cl_i); // mV + const double var_IClb__IClb = (-var_reversal_potentials__ECl + var_chaste_interface__membrane__Vm) * mParameters[8]; // uA_per_uF + const double var_reversal_potentials__EK = 26.712338705498265 * log(mParameters[4] / var_chaste_interface__K__K_i); // mV + const double var_IK1__IK1 = 0.4389381125701739 * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[12] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__Vm - 0.080320000000000003 * var_reversal_potentials__EK) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__Vm - 0.061749999999999999 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__membrane__Vm)))); // uA_per_uF + const double var_IKp__IKp = 1 * _lt_0_row[8] * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[14]; // uA_per_uF + const double var_IKr__IKr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[4]) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[15] * var_chaste_interface__IKr_xr_gate__xr; // uA_per_uF + const double var_Ito1__Ito1 = pow(var_chaste_interface__Ito1_a_gate__a, 3) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[20] * var_chaste_interface__Ito1_i1f_gate__i1f * var_chaste_interface__Ito1_i1s_gate__i1s * _lt_0_row[10]; // uA_per_uF + const double var_reversal_potentials__ENa = 26.712338705498265 * log(mParameters[5] / var_chaste_interface__Na__Na_i); // mV + const double var_INa__INa = pow(var_chaste_interface__INa_m_gate__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[11] * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // uA_per_uF + const double var_INaL__INaL = pow(var_chaste_interface__INaL_mL_gate__mL, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL; // uA_per_uF + const double var_IKs__IKs = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[5] + mParameters[4]) / (0.018329999999999999 * var_chaste_interface__Na__Na_i + var_chaste_interface__K__K_i)) + var_chaste_interface__membrane__Vm) * (var_chaste_interface__IKs__O1 + var_IKs__O2) * mParameters[16]; // uA_per_uF + const double d_dt_chaste_interface_var_membrane__Vm = -var_ICaL__ICaL - var_ICab__ICab - var_IClb__IClb - var_IK1__IK1 - var_IKp__IKp - var_IKr__IKr - var_IKs__IKs - var_INa__INa - var_INaL__INaL - var_INab__INab - var_IpCa__IpCa - var_Ito1__Ito1 - var_Ito2__Ito2 - var_membrane__i_Stim - 1 * var_INaCa__INaCa - 1 * var_INaCa__INaCa_ss_sr - 1 * var_INaK__INaK; // mV / ms + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__Vm; + } + + void Celldecker_2009FromCellMLBackwardEulerOpt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -87.4947322902196 + double var_chaste_interface__INa_m_gate__m = rY[25]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INa_h_gate__h = rY[26]; + // Units: dimensionless; Initial value: 0.991354143386887 + double var_chaste_interface__INa_j_gate__j = rY[27]; + // Units: dimensionless; Initial value: 0.99709036251243 + double var_chaste_interface__INaL_mL_gate__mL = rY[28]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INaL_hL_gate__hL = rY[29]; + // Units: dimensionless; Initial value: 0.319611809402137 + double var_chaste_interface__IKr_xr_gate__xr = rY[30]; + // Units: dimensionless; Initial value: 4.06959064407486e-06 + double var_chaste_interface__Ito1_a_gate__a = rY[31]; + // Units: dimensionless; Initial value: 1.76776038804228e-05 + double var_chaste_interface__Ito1_i1f_gate__i1f = rY[32]; + // Units: dimensionless; Initial value: 0.997976503910799 + double var_chaste_interface__Ito1_i1s_gate__i1s = rY[33]; + // Units: dimensionless; Initial value: 0.947581184798815 + double var_chaste_interface__Ito2_i2f_gate__i2f = rY[34]; + // Units: dimensionless; Initial value: 0.996044894628276 + + // Lookup table indexing + const bool _oob_0 = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_IKr_xr_gate__B_1 = -0.13600000000000001; + const double var_IKr_xr_gate__A_1 = -0.00059999999999999995 / var_IKr_xr_gate__B_1; + const double var_IKr_xr_gate__B_2 = 0.1522; + const double var_IKr_xr_gate__A_2 = 0.00029999999999999997 / var_IKr_xr_gate__B_2; + const double var_IKr_xr_gate__v0_1 = 1.7383999999999999; + const double var_IKr_xr_gate__v0_2 = -38.360799999999998; + const double var_INaL_hL_gate__tau_hL = 600; + const double var_INaL_mL_gate__B = -0.10000000000000001; + const double var_INaL_mL_gate__A = -0.32000000000000001 / var_INaL_mL_gate__B; + const double var_INaL_mL_gate__v0 = -47.130000000000003; + const double var_INa_m_gate__B = -0.10000000000000001; + const double var_INa_m_gate__A = -0.32000000000000001 / var_INa_m_gate__B; + const double var_INa_m_gate__v0 = -47.130000000000003; + const double var_Ito2_i2f_gate__tau_i2f = 8; + const double var_IKr_xr_gate__U_1 = (-var_IKr_xr_gate__v0_1 + var_chaste_interface__membrane__Vm) * var_IKr_xr_gate__B_1; + const double var_IKr_xr_gate__U_2 = (-var_IKr_xr_gate__v0_2 + var_chaste_interface__membrane__Vm) * var_IKr_xr_gate__B_2; + const double var_IKr_xr_gate__temp_part_1 = (((var_IKr_xr_gate__U_1 >= -9.9999999999999995e-8) && (var_IKr_xr_gate__U_1 <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_IKr_xr_gate__U_1) * var_IKr_xr_gate__A_1) : (var_IKr_xr_gate__A_1 * var_IKr_xr_gate__U_1 / (-1 + exp(var_IKr_xr_gate__U_1)))); + const double var_IKr_xr_gate__temp_part_2 = (((var_IKr_xr_gate__U_2 >= -9.9999999999999995e-8) && (var_IKr_xr_gate__U_2 <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_IKr_xr_gate__U_2) * var_IKr_xr_gate__A_2) : (var_IKr_xr_gate__A_2 * var_IKr_xr_gate__U_2 / (-1 + exp(var_IKr_xr_gate__U_2)))); + const double var_IKr_xr_gate__tau_xr = 1 / (var_IKr_xr_gate__temp_part_1 + var_IKr_xr_gate__temp_part_2); + const double var_IKr_xr_gate__xr_infinity = _lt_0_row[18]; + const double var_INaL_hL_gate__hL_infinity = 1 / (1 + exp(14.918032786885247 + 0.16393442622950821 * var_chaste_interface__membrane__Vm)); + const double var_INaL_mL_gate__U = (-var_INaL_mL_gate__v0 + var_chaste_interface__membrane__Vm) * var_INaL_mL_gate__B; + const double var_INaL_mL_gate__amL = (((var_INaL_mL_gate__U >= -9.9999999999999995e-8) && (var_INaL_mL_gate__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_INaL_mL_gate__U) * var_INaL_mL_gate__A) : (var_INaL_mL_gate__A * var_INaL_mL_gate__U / (-1 + exp(var_INaL_mL_gate__U)))); + const double var_INaL_mL_gate__bmL = 0.080000000000000002 * _lt_0_row[22]; + const double var_INa_h_gate__ah = _lt_0_row[23]; + const double var_INa_h_gate__bh = _lt_0_row[24]; + const double var_INa_j_gate__aj = _lt_0_row[25]; + const double var_INa_j_gate__bj = _lt_0_row[26]; + const double var_INa_m_gate__U = (-var_INa_m_gate__v0 + var_chaste_interface__membrane__Vm) * var_INa_m_gate__B; + const double var_INa_m_gate__am = (((var_INa_m_gate__U >= -9.9999999999999995e-8) && (var_INa_m_gate__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_INa_m_gate__U) * var_INa_m_gate__A) : (var_INa_m_gate__A * var_INa_m_gate__U / (-1 + exp(var_INa_m_gate__U)))); + const double var_INa_m_gate__bm = 0.080000000000000002 * _lt_0_row[22]; + const double var_Ito1_a_gate__a_infinity = _lt_0_row[27]; + const double var_Ito1_a_gate__alpha_a = 0.82719827942757873 / (1 + exp(0.62658348478969694 - 0.034035137876343539 * var_chaste_interface__membrane__Vm)); + const double var_Ito1_a_gate__beta_a = 3.5 / (1 + exp(3.403513787634354 + 0.034035137876343539 * var_chaste_interface__membrane__Vm)); + const double var_Ito1_a_gate__tau_a = 1 / (var_Ito1_a_gate__alpha_a + var_Ito1_a_gate__beta_a); + const double var_Ito1_i1f_gate__alpha_i1f = 0.025000000000000001 * _lt_0_row[29]; + const double var_Ito1_i1f_gate__beta_i1f = 0.10208977775055385 * _lt_0_row[30]; + const double var_Ito1_i1s_gate__alpha_i1s = 0.0040000000000000001 * _lt_0_row[31]; + const double var_Ito1_i1s_gate__beta_i1s = 0.10208977775055385 * _lt_0_row[30]; + const double var_Ito2_i2f_gate__alpha_i2f = 0.025000000000000001 * _lt_0_row[29]; + const double var_Ito2_i2f_gate__beta_i2f = 0.20000000000000001 * _lt_0_row[30]; + const double var_Ito2_i2f_gate__i2f_infinity = var_Ito2_i2f_gate__alpha_i2f / (var_Ito2_i2f_gate__alpha_i2f + var_Ito2_i2f_gate__beta_i2f); + + + rY[30] = (var_chaste_interface__IKr_xr_gate__xr + ((var_IKr_xr_gate__xr_infinity / var_IKr_xr_gate__tau_xr) * mDt)) / (1.0 - ((-1 / var_IKr_xr_gate__tau_xr) * mDt)); + rY[29] = (var_chaste_interface__INaL_hL_gate__hL + ((var_INaL_hL_gate__hL_infinity / var_INaL_hL_gate__tau_hL) * mDt)) / (1.0 - ((-1 / var_INaL_hL_gate__tau_hL) * mDt)); + rY[28] = (var_chaste_interface__INaL_mL_gate__mL + ((1 * var_INaL_mL_gate__amL) * mDt)) / (1.0 - ((-var_INaL_mL_gate__amL - var_INaL_mL_gate__bmL) * mDt)); + rY[31] = (var_chaste_interface__Ito1_a_gate__a + ((var_Ito1_a_gate__a_infinity / var_Ito1_a_gate__tau_a) * mDt)) / (1.0 - ((-1 / var_Ito1_a_gate__tau_a) * mDt)); + rY[32] = (var_chaste_interface__Ito1_i1f_gate__i1f + ((1 * var_Ito1_i1f_gate__alpha_i1f) * mDt)) / (1.0 - ((-var_Ito1_i1f_gate__alpha_i1f - var_Ito1_i1f_gate__beta_i1f) * mDt)); + rY[33] = (var_chaste_interface__Ito1_i1s_gate__i1s + ((1 * var_Ito1_i1s_gate__alpha_i1s) * mDt)) / (1.0 - ((-var_Ito1_i1s_gate__alpha_i1s - var_Ito1_i1s_gate__beta_i1s) * mDt)); + rY[34] = (var_chaste_interface__Ito2_i2f_gate__i2f + ((var_Ito2_i2f_gate__i2f_infinity / var_Ito2_i2f_gate__tau_i2f) * mDt)) / (1.0 - ((-1 / var_Ito2_i2f_gate__tau_i2f) * mDt)); + rY[26] = (var_chaste_interface__INa_h_gate__h + ((1 * var_INa_h_gate__ah) * mDt)) / (1.0 - ((-var_INa_h_gate__ah - var_INa_h_gate__bh) * mDt)); + rY[27] = (var_chaste_interface__INa_j_gate__j + ((1 * var_INa_j_gate__aj) * mDt)) / (1.0 - ((-var_INa_j_gate__aj - var_INa_j_gate__bj) * mDt)); + rY[25] = (var_chaste_interface__INa_m_gate__m + ((1 * var_INa_m_gate__am) * mDt)) / (1.0 - ((-var_INa_m_gate__am - var_INa_m_gate__bm) * mDt)); + + double _guess[35] = {rY[45],rY[36],rY[37],rY[1],rY[39],rY[38],rY[42],rY[43],rY[18],rY[22],rY[24],rY[20],rY[19],rY[23],rY[21],rY[2],rY[11],rY[12],rY[13],rY[14],rY[15],rY[16],rY[3],rY[4],rY[5],rY[6],rY[7],rY[8],rY[9],rY[10],rY[17],rY[35],rY[44],rY[40],rY[41]}; + CardiacNewtonSolver<35,Celldecker_2009FromCellMLBackwardEulerOpt>* _p_solver = CardiacNewtonSolver<35,Celldecker_2009FromCellMLBackwardEulerOpt>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[45] = _guess[0]; + rY[36] = _guess[1]; + rY[37] = _guess[2]; + rY[1] = _guess[3]; + rY[39] = _guess[4]; + rY[38] = _guess[5]; + rY[42] = _guess[6]; + rY[43] = _guess[7]; + rY[18] = _guess[8]; + rY[22] = _guess[9]; + rY[24] = _guess[10]; + rY[20] = _guess[11]; + rY[19] = _guess[12]; + rY[23] = _guess[13]; + rY[21] = _guess[14]; + rY[2] = _guess[15]; + rY[11] = _guess[16]; + rY[12] = _guess[17]; + rY[13] = _guess[18]; + rY[14] = _guess[19]; + rY[15] = _guess[20]; + rY[16] = _guess[21]; + rY[3] = _guess[22]; + rY[4] = _guess[23]; + rY[5] = _guess[24]; + rY[6] = _guess[25]; + rY[7] = _guess[26]; + rY[8] = _guess[27]; + rY[9] = _guess[28]; + rY[10] = _guess[29]; + rY[17] = _guess[30]; + rY[35] = _guess[31]; + rY[44] = _guess[32]; + rY[40] = _guess[33]; + rY[41] = _guess[34]; + } + + std::vector Celldecker_2009FromCellMLBackwardEulerOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -87.4947322902196 + double var_chaste_interface__Ca__Ca_i = rY[1]; + // Units: mM; Initial value: 8.38749860095482e-05 + double var_chaste_interface__IKs__C1 = rY[2]; + // Units: dimensionless; Initial value: 0.476679784307081 + double var_chaste_interface__IKs__C2 = rY[3]; + // Units: dimensionless; Initial value: 0.255181042718489 + double var_chaste_interface__IKs__C3 = rY[4]; + // Units: dimensionless; Initial value: 0.0512272866698557 + double var_chaste_interface__IKs__C4 = rY[5]; + // Units: dimensionless; Initial value: 0.0045705849736195 + double var_chaste_interface__IKs__C5 = rY[6]; + // Units: dimensionless; Initial value: 0.000152923243503507 + double var_chaste_interface__IKs__C6 = rY[7]; + // Units: dimensionless; Initial value: 0.132814156809568 + double var_chaste_interface__IKs__C7 = rY[8]; + // Units: dimensionless; Initial value: 0.053324572164618 + double var_chaste_interface__IKs__C8 = rY[9]; + // Units: dimensionless; Initial value: 0.00713656414955778 + double var_chaste_interface__IKs__C9 = rY[10]; + // Units: dimensionless; Initial value: 0.000318368292970148 + double var_chaste_interface__IKs__C10 = rY[11]; + // Units: dimensionless; Initial value: 0.0138769647384953 + double var_chaste_interface__IKs__C11 = rY[12]; + // Units: dimensionless; Initial value: 0.00371438476499172 + double var_chaste_interface__IKs__C12 = rY[13]; + // Units: dimensionless; Initial value: 0.000248553788631871 + double var_chaste_interface__IKs__C13 = rY[14]; + // Units: dimensionless; Initial value: 0.000644426171899078 + double var_chaste_interface__IKs__C14 = rY[15]; + // Units: dimensionless; Initial value: 8.62495047666861e-05 + double var_chaste_interface__IKs__C15 = rY[16]; + // Units: dimensionless; Initial value: 1.12344645485893e-05 + double var_chaste_interface__IKs__O1 = rY[17]; + // Units: dimensionless; Initial value: 1.05292905767805e-05 + double var_chaste_interface__ICaL__O = rY[19]; + // Units: dimensionless; Initial value: 2.26882961412491e-05 + double var_chaste_interface__ICaL__O_star = rY[21]; + // Units: dimensionless; Initial value: 1.23556404128518e-10 + double var_chaste_interface__INa_m_gate__m = rY[25]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INa_h_gate__h = rY[26]; + // Units: dimensionless; Initial value: 0.991354143386887 + double var_chaste_interface__INa_j_gate__j = rY[27]; + // Units: dimensionless; Initial value: 0.99709036251243 + double var_chaste_interface__INaL_mL_gate__mL = rY[28]; + // Units: dimensionless; Initial value: 0.00101841101248412 + double var_chaste_interface__INaL_hL_gate__hL = rY[29]; + // Units: dimensionless; Initial value: 0.319611809402137 + double var_chaste_interface__IKr_xr_gate__xr = rY[30]; + // Units: dimensionless; Initial value: 4.06959064407486e-06 + double var_chaste_interface__Ito1_a_gate__a = rY[31]; + // Units: dimensionless; Initial value: 1.76776038804228e-05 + double var_chaste_interface__Ito1_i1f_gate__i1f = rY[32]; + // Units: dimensionless; Initial value: 0.997976503910799 + double var_chaste_interface__Ito1_i1s_gate__i1s = rY[33]; + // Units: dimensionless; Initial value: 0.947581184798815 + double var_chaste_interface__Ito2_i2f_gate__i2f = rY[34]; + // Units: dimensionless; Initial value: 0.996044894628276 + double var_chaste_interface__Irel__Irel = rY[35]; + // Units: mM_per_ms; Initial value: 0.000714227102027745 + double var_chaste_interface__Ca__Ca_NSR = rY[37]; + // Units: mM; Initial value: 1.01475649943057 + double var_chaste_interface__Ca__Ca_ss_sr = rY[38]; + // Units: mM; Initial value: 0.00011296707102434 + double var_chaste_interface__Ca__Ca_ss_CaL = rY[39]; + // Units: mM; Initial value: 0.000119239795531548 + double var_chaste_interface__Na__Na_i = rY[40]; + // Units: mM; Initial value: 8.01031392415197 + double var_chaste_interface__Na__Na_ss_sr = rY[41]; + // Units: mM; Initial value: 8.01033434859049 + double var_chaste_interface__Cl__Cl_i = rY[42]; + // Units: mM; Initial value: 20.6683603724432 + double var_chaste_interface__K__K_i = rY[44]; + // Units: mM; Initial value: 144.907134343314 + double var_chaste_interface__CaMK_active__CaMK_trap = rY[45]; + // Units: dimensionless; Initial value: 0.0114911034744777 + + // Lookup table indexing + const bool _oob_0 = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celldecker_2009FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_CaMK_active__CaMK_0 = 0.050000000000000003; // dimensionless + const double var_CaMK_active__Km = 0.0015; // mM + const double var_CaMK_active__CaMK_active = (1 - var_chaste_interface__CaMK_active__CaMK_trap) * var_CaMK_active__CaMK_0 / (1 + var_CaMK_active__Km / var_chaste_interface__Ca__Ca_ss_sr) + var_chaste_interface__CaMK_active__CaMK_trap; // dimensionless + const double var_ICaL__gamma_Cai = 1; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__v0 = 0; // mV + const double var_ICab__gamma_Ca_i = 1; // dimensionless + const double var_ICab__gamma_Ca_o = 0.34100000000000003; // dimensionless + const double var_ICab__v0 = 0; // mV + const double var_IKs__O2 = 1 - var_chaste_interface__IKs__C1 - var_chaste_interface__IKs__C10 - var_chaste_interface__IKs__C11 - var_chaste_interface__IKs__C12 - var_chaste_interface__IKs__C13 - var_chaste_interface__IKs__C14 - var_chaste_interface__IKs__C15 - var_chaste_interface__IKs__C2 - var_chaste_interface__IKs__C3 - var_chaste_interface__IKs__C4 - var_chaste_interface__IKs__C5 - var_chaste_interface__IKs__C6 - var_chaste_interface__IKs__C7 - var_chaste_interface__IKs__C8 - var_chaste_interface__IKs__C9 - var_chaste_interface__IKs__O1; // dimensionless + const double var_IKs__OKs = var_chaste_interface__IKs__O1 + var_IKs__O2; // dimensionless + const double var_IKs__gKs = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca__Ca_i), 1.3999999999999999))) * mParameters[16]; // mS_per_uF + const double var_INaCa__KmCa_act = 0.000125; // mM + const double var_INaCa__KmCai = 0.0035999999999999999; // mM + const double var_INaCa__KmCao = 1.3; // mM + const double var_INaCa__KmNai = 12.300000000000001; // mM + const double var_INaCa__KmNao = 87.5; // mM + const double var_INaCa__denom_1 = 1 + pow(var_INaCa__KmCa_act, 2) / pow(var_chaste_interface__Ca__Ca_i, 2); // dimensionless + const double var_INaCa__denom_ss_1 = 1 + pow(var_INaCa__KmCa_act, 2) / pow(var_chaste_interface__Ca__Ca_ss_sr, 2); // dimensionless + const double var_INaCa__eta = 0.27000000000000002; // dimensionless + const double var_INaCa__ksat = 0.32000000000000001; // dimensionless + const double var_INaK__V_half = -92; // mV + const double var_INaK__kmko = 1.5; // mM + const double var_INaK__kmnai = 2.6000000000000001; // mM + const double var_INaK__sigma = 1; // dimensionless + const double var_INab__B = 1; // dimensionless + const double var_INab__v0 = 0; // dimensionless + const double var_Ileak__nsrbar = 15; // mM + const double var_Ileak__Ileak = var_chaste_interface__Ca__Ca_NSR * mParameters[0] / var_Ileak__nsrbar; // mM_per_ms + const double var_IpCa__KmpCa = 0.00050000000000000001; // mM + const double var_IpCa__IpCa = var_chaste_interface__Ca__Ca_i * mParameters[10] / (var_chaste_interface__Ca__Ca_i + var_IpCa__KmpCa); // uA_per_uF + const double var_IpCa__IpCa_converted = HeartConfig::Instance()->GetCapacitance() * var_IpCa__IpCa; // uA_per_cm2 + const double var_Ito2__Ito2_max_scaling_factor = 1; // dimensionless + const double var_Ito2__kCa_ito2 = 0.40000000000000002; // mM_per_ms + const double var_Ito2__KCa_ito2 = 1 - 1 / (1 + pow(var_chaste_interface__Irel__Irel, 2) / pow(var_Ito2__kCa_ito2, 2)); // dimensionless + const double var_Ito2__v0 = 0; // mV + const double var_Ito2__zCl = -1; // dimensionless + const double var_Iup__delta_iupCaMK_bar = 0.75; // dimensionless + const double var_Iup__delta_kmPLB_bar = 0.00017000000000000001; // mM + const double var_Iup__kmCaMK = 0.14999999999999999; // mM + const double var_Iup__delta_iupCaMK = 1 * var_CaMK_active__CaMK_active * var_Iup__delta_iupCaMK_bar / (1 * var_CaMK_active__CaMK_active + var_Iup__kmCaMK); // dimensionless + const double var_Iup__delta_kmPLB = 1 * var_CaMK_active__CaMK_active * var_Iup__delta_kmPLB_bar / (1 * var_CaMK_active__CaMK_active + var_Iup__kmCaMK); // mM + const double var_Iup__kmup = 0.00092000000000000003; // mM + const double var_Iup__Iup = (1 + var_Iup__delta_iupCaMK) * var_chaste_interface__Ca__Ca_i * mParameters[2] / (-var_Iup__delta_kmPLB + var_chaste_interface__Ca__Ca_i + var_Iup__kmup); // mM_per_ms + const double var_INaK__PNa = pow(var_chaste_interface__Na__Na_i, 3) / pow((var_INaK__kmnai + var_chaste_interface__Na__Na_i), 3); // dimensionless + const double var_IKp__Kp = 1 * _lt_0_row[8]; // dimensionless + const double var_IKr_r_gate__r = 1 * _lt_0_row[9]; // dimensionless + const double var_Ito1__rto1 = _lt_0_row[10]; // dimensionless + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_INaCa__denom_3 = pow(var_INaCa__KmNao, 3) * var_chaste_interface__Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * var_INaCa__KmCao + pow(var_INaCa__KmNai, 3) * (1 + var_chaste_interface__Ca__Ca_i / var_INaCa__KmCai) * mParameters[3]; // mM4 + const double var_INaCa__denom_ss_3 = pow(var_INaCa__KmNao, 3) * var_chaste_interface__Ca__Ca_ss_sr + pow(var_chaste_interface__Na__Na_ss_sr, 3) * var_INaCa__KmCao + pow(var_INaCa__KmNai, 3) * (1 + var_chaste_interface__Ca__Ca_ss_sr / var_INaCa__KmCai) * mParameters[3]; // mM4 + const double var_model_parameters__Cl_o = 100; // mM + const double var_model_parameters__F = 96485; // C_per_mole + const double var_IK1__gK1 = 0.43033148291193518 * sqrt(mParameters[4]) * mParameters[12]; // mS_per_uF + const double var_IKr__gKr = 0.43033148291193518 * sqrt(mParameters[4]) * mParameters[15]; // mS_per_uF + const double var_INaK__PK = mParameters[4] / (var_INaK__kmko + mParameters[4]); // dimensionless + const double var_INaCa__denom_4 = pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i + pow(mParameters[5], 3) * (1 + pow(var_chaste_interface__Na__Na_i, 3) / pow(var_INaCa__KmNai, 3)) * var_INaCa__KmCai; // mM4 + const double var_INaCa__denom_ss_4 = pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] + pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr + pow(mParameters[5], 3) * (1 + pow(var_chaste_interface__Na__Na_ss_sr, 3) / pow(var_INaCa__KmNai, 3)) * var_INaCa__KmCai; // mM4 + const double var_model_parameters__R = 8314; // J_per_kmole_K + const double var_model_parameters__T = 310; // kelvin + const double var_ICaL__B = 2 * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T); // per_mV + const double var_ICaL__A = 4 * pow(var_model_parameters__F, 2) * (-var_ICaL__gamma_Cao * mParameters[3] + var_chaste_interface__Ca__Ca_ss_CaL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * mParameters[6] / (var_ICaL__B * var_model_parameters__R * var_model_parameters__T); // uA_per_uF + const double var_ICaL__U = (-var_ICaL__v0 + var_chaste_interface__membrane__Vm) * var_ICaL__B; // dimensionless + const double var_ICaL__ICaL_max = (((var_ICaL__U >= -9.9999999999999995e-8) && (var_ICaL__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_ICaL__U) * var_ICaL__A) : (var_ICaL__A * var_ICaL__U / (-1 + exp(var_ICaL__U)))); // uA_per_uF + const double var_ICaL__ICaL = (var_chaste_interface__ICaL__O + var_chaste_interface__ICaL__O_star) * var_ICaL__ICaL_max; // uA_per_uF + const double var_ICaL__ICaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__ICaL; // uA_per_cm2 + const double var_ICab__B = 2 * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T); // per_mV + const double var_ICab__A = 4 * pow(var_model_parameters__F, 2) * (-var_ICab__gamma_Ca_o * mParameters[3] + var_chaste_interface__Ca__Ca_i * var_ICab__gamma_Ca_i * exp(2 * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * mParameters[7] / (var_ICab__B * var_model_parameters__R * var_model_parameters__T); // uA_per_uF + const double var_ICab__U = (-var_ICab__v0 + var_chaste_interface__membrane__Vm) * var_ICab__B; // dimensionless + const double var_ICab__ICab = (((var_ICab__U >= -9.9999999999999995e-8) && (var_ICab__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_ICab__U) * var_ICab__A) : (var_ICab__A * var_ICab__U / (-1 + exp(var_ICab__U)))); // uA_per_uF + const double var_ICab__ICab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__ICab; // uA_per_cm2 + const double var_INaCa__denom_2 = 1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)); // dimensionless + const double var_INaCa__denom_ss_2 = 1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)); // dimensionless + const double var_INaCa__num_ss = 0.20000000000000001 * (pow(var_chaste_interface__Na__Na_ss_sr, 3) * mParameters[3] * exp(var_INaCa__eta * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_ss_sr * exp((-1 + var_INaCa__eta) * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * mParameters[17]; // mM4_uA_per_uF + const double var_INaCa__INaCa_ss_sr = var_INaCa__num_ss / ((var_INaCa__denom_ss_3 + var_INaCa__denom_ss_4) * var_INaCa__denom_ss_1 * var_INaCa__denom_ss_2); // uA_per_uF + const double var_INaCa__INaCa_ss_sr_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__INaCa_ss_sr; // uA_per_cm2 + const double var_INaCa__numerator = 0.80000000000000004 * (pow(var_chaste_interface__Na__Na_i, 3) * mParameters[3] * exp(var_INaCa__eta * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) - pow(mParameters[5], 3) * var_chaste_interface__Ca__Ca_i * exp((-1 + var_INaCa__eta) * var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * mParameters[17]; // mM4_uA_per_uF + const double var_INaCa__INaCa_cai = var_INaCa__numerator / ((var_INaCa__denom_3 + var_INaCa__denom_4) * var_INaCa__denom_1 * var_INaCa__denom_2); // uA_per_uF + const double var_INaCa__INaCa = var_INaCa__INaCa_cai + var_INaCa__INaCa_ss_sr; // uA_per_uF + const double var_INaCa__INaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__INaCa; // uA_per_cm2 + const double var_INaK__phi = (-var_INaK__V_half + var_chaste_interface__membrane__Vm) * var_INaK__sigma * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T); // dimensionless + const double var_INaK__fv = 1 / (1 + exp(-var_INaK__phi)); // dimensionless + const double var_INaK__INaK = var_INaK__PK * var_INaK__PNa * var_INaK__fv * mParameters[18]; // uA_per_uF + const double var_INaK__INaK_converted = HeartConfig::Instance()->GetCapacitance() * var_INaK__INaK; // uA_per_cm2 + const double var_INab__phi = var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T); // dimensionless + const double var_INab__A = (-mParameters[5] + var_chaste_interface__Na__Na_i * exp(var_INab__phi)) * mParameters[9] * var_model_parameters__F / var_INab__B; // uA_per_uF + const double var_INab__U = (-var_INab__v0 + var_INab__phi) * var_INab__B; // dimensionless + const double var_INab__INab = (((var_INab__U >= -9.9999999999999995e-8) && (var_INab__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_INab__U) * var_INab__A) : (var_INab__A * var_INab__U / (-1 + exp(var_INab__U)))); // uA_per_uF + const double var_INab__INab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__INab; // uA_per_cm2 + const double var_Ito2__B = var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T); // per_mV + const double var_Ito2__A = -pow(var_Ito2__zCl, 2) * pow(var_model_parameters__F, 2) * (-var_model_parameters__Cl_o * exp(var_chaste_interface__membrane__Vm * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + var_chaste_interface__Cl__Cl_i) * mParameters[19] / (var_Ito2__B * var_model_parameters__R * var_model_parameters__T); // uA_per_uF + const double var_Ito2__U = (-var_Ito2__v0 + var_chaste_interface__membrane__Vm) * var_Ito2__B; // dimensionless + const double var_Ito2__Ito2_max = (((var_Ito2__U >= -9.9999999999999995e-8) && (var_Ito2__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_Ito2__U) * var_Ito2__A) : (var_Ito2__A * var_Ito2__U / (-1 + exp(var_Ito2__U)))); // uA_per_uF + const double var_Ito2__Ito2 = var_Ito2__Ito2_max * var_Ito2__Ito2_max_scaling_factor * var_Ito2__KCa_ito2 * var_chaste_interface__Ito2_i2f_gate__i2f; // uA_per_uF + const double var_Ito2__Ito2_converted = HeartConfig::Instance()->GetCapacitance() * var_Ito2__Ito2; // uA_per_cm2 + const double var_reversal_potentials__ECl = -var_model_parameters__R * var_model_parameters__T * log(var_model_parameters__Cl_o / var_chaste_interface__Cl__Cl_i) / var_model_parameters__F; // mV + const double var_IClb__IClb = (-var_reversal_potentials__ECl + var_chaste_interface__membrane__Vm) * mParameters[8]; // uA_per_uF + const double var_IClb__IClb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__IClb; // uA_per_cm2 + const double var_reversal_potentials__EK = var_model_parameters__R * var_model_parameters__T * log(mParameters[4] / var_chaste_interface__K__K_i) / var_model_parameters__F; // mV + const double var_IK1_K1_gate__alpha_k1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__Vm - 0.23849999999999999 * var_reversal_potentials__EK)); // dimensionless + const double var_IK1_K1_gate__beta_k1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__Vm - 0.080320000000000003 * var_reversal_potentials__EK) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__Vm - 0.061749999999999999 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__membrane__Vm)); // dimensionless + const double var_IK1_K1_gate__K1 = var_IK1_K1_gate__alpha_k1 / (var_IK1_K1_gate__alpha_k1 + var_IK1_K1_gate__beta_k1); // dimensionless + const double var_IK1__IK1 = (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * var_IK1__gK1 * var_IK1_K1_gate__K1; // uA_per_uF + const double var_IK1__IK1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__IK1; // uA_per_cm2 + const double var_IKp__IKp = (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * var_IKp__Kp * mParameters[14]; // uA_per_uF + const double var_IKp__IKp_converted = HeartConfig::Instance()->GetCapacitance() * var_IKp__IKp; // uA_per_cm2 + const double var_IKr__IKr = (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * var_IKr__gKr * var_IKr_r_gate__r * var_chaste_interface__IKr_xr_gate__xr; // uA_per_uF + const double var_IKr__IKr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__IKr; // uA_per_cm2 + const double var_Ito1__Ito1 = pow(var_chaste_interface__Ito1_a_gate__a, 3) * (-var_reversal_potentials__EK + var_chaste_interface__membrane__Vm) * mParameters[20] * var_Ito1__rto1 * var_chaste_interface__Ito1_i1f_gate__i1f * var_chaste_interface__Ito1_i1s_gate__i1s; // uA_per_uF + const double var_Ito1__Ito1_converted = HeartConfig::Instance()->GetCapacitance() * var_Ito1__Ito1; // uA_per_cm2 + const double var_reversal_potentials__ENa = var_model_parameters__R * var_model_parameters__T * log(mParameters[5] / var_chaste_interface__Na__Na_i) / var_model_parameters__F; // mV + const double var_INa__INa = pow(var_chaste_interface__INa_m_gate__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[11] * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // uA_per_uF + const double var_INa__INa_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__INa; // uA_per_cm2 + const double var_INaL__INaL = pow(var_chaste_interface__INaL_mL_gate__mL, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__membrane__Vm) * mParameters[13] * var_chaste_interface__INaL_hL_gate__hL; // uA_per_uF + const double var_INaL__INaL_converted = HeartConfig::Instance()->GetCapacitance() * var_INaL__INaL; // uA_per_cm2 + const double var_reversal_potentials__prnak = 0.018329999999999999; // dimensionless + const double var_reversal_potentials__EKs = var_model_parameters__R * var_model_parameters__T * log((mParameters[5] * var_reversal_potentials__prnak + mParameters[4]) / (var_chaste_interface__Na__Na_i * var_reversal_potentials__prnak + var_chaste_interface__K__K_i)) / var_model_parameters__F; // mV + const double var_IKs__IKs = (-var_reversal_potentials__EKs + var_chaste_interface__membrane__Vm) * var_IKs__OKs * var_IKs__gKs; // uA_per_uF + const double var_IKs__IKs_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__IKs; // uA_per_cm2 + + std::vector dqs(20); + dqs[0] = var_Ileak__Ileak; + dqs[1] = var_Iup__Iup; + dqs[2] = var_ICaL__ICaL_converted; + dqs[3] = var_ICab__ICab_converted; + dqs[4] = var_IClb__IClb_converted; + dqs[5] = var_INab__INab_converted; + dqs[6] = var_IpCa__IpCa_converted; + dqs[7] = var_INa__INa_converted; + dqs[8] = var_IK1__IK1_converted; + dqs[9] = var_INaL__INaL_converted; + dqs[10] = var_IKp__IKp_converted; + dqs[11] = var_IKr__IKr_converted; + dqs[12] = var_IKs__IKs_converted; + dqs[13] = var_INaCa__INaCa_converted; + dqs[14] = var_INaCa__INaCa_ss_sr_converted; + dqs[15] = var_INaK__INaK_converted; + dqs[16] = var_membrane__i_Stim_converted; + dqs[17] = var_Ito2__Ito2_converted; + dqs[18] = var_Ito1__Ito1_converted; + dqs[19] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "decker_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "ms"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-87.4947322902196); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.38749860095482e-05); + + // rY[2]: + this->mVariableNames.push_back("IKs__C1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.476679784307081); + + // rY[3]: + this->mVariableNames.push_back("IKs__C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.255181042718489); + + // rY[4]: + this->mVariableNames.push_back("IKs__C3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0512272866698557); + + // rY[5]: + this->mVariableNames.push_back("IKs__C4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0045705849736195); + + // rY[6]: + this->mVariableNames.push_back("IKs__C5"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000152923243503507); + + // rY[7]: + this->mVariableNames.push_back("IKs__C6"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.132814156809568); + + // rY[8]: + this->mVariableNames.push_back("IKs__C7"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.053324572164618); + + // rY[9]: + this->mVariableNames.push_back("IKs__C8"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00713656414955778); + + // rY[10]: + this->mVariableNames.push_back("IKs__C9"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000318368292970148); + + // rY[11]: + this->mVariableNames.push_back("IKs__C10"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0138769647384953); + + // rY[12]: + this->mVariableNames.push_back("IKs__C11"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00371438476499172); + + // rY[13]: + this->mVariableNames.push_back("IKs__C12"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000248553788631871); + + // rY[14]: + this->mVariableNames.push_back("IKs__C13"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000644426171899078); + + // rY[15]: + this->mVariableNames.push_back("IKs__C14"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.62495047666861e-05); + + // rY[16]: + this->mVariableNames.push_back("IKs__C15"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.12344645485893e-05); + + // rY[17]: + this->mVariableNames.push_back("IKs__O1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.05292905767805e-05); + + // rY[18]: + this->mVariableNames.push_back("ICaL__C"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99996982093287); + + // rY[19]: + this->mVariableNames.push_back("ICaL__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.26882961412491e-05); + + // rY[20]: + this->mVariableNames.push_back("ICaL__C_star"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.49117189549873e-06); + + // rY[21]: + this->mVariableNames.push_back("ICaL__O_star"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.23556404128518e-10); + + // rY[22]: + this->mVariableNames.push_back("ICaL__CI"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(5.89853003114132e-11); + + // rY[23]: + this->mVariableNames.push_back("ICaL__OI"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.01952813127322e-17); + + // rY[24]: + this->mVariableNames.push_back("ICaL__CI_star"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.9237001017021e-09); + + // rY[25]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00101841101248412); + + // rY[26]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.991354143386887); + + // rY[27]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99709036251243); + + // rY[28]: + this->mVariableNames.push_back("INaL_mL_gate__mL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00101841101248412); + + // rY[29]: + this->mVariableNames.push_back("INaL_hL_gate__hL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.319611809402137); + + // rY[30]: + this->mVariableNames.push_back("IKr_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(4.06959064407486e-06); + + // rY[31]: + this->mVariableNames.push_back("Ito1_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.76776038804228e-05); + + // rY[32]: + this->mVariableNames.push_back("Ito1_i1f_gate__i1f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.997976503910799); + + // rY[33]: + this->mVariableNames.push_back("Ito1_i1s_gate__i1s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.947581184798815); + + // rY[34]: + this->mVariableNames.push_back("Ito2_i2f_gate__i2f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.996044894628276); + + // rY[35]: + this->mVariableNames.push_back("SR_release_current"); + this->mVariableUnits.push_back("mM_per_ms"); + this->mInitialConditions.push_back(0.000714227102027745); + + // rY[36]: + this->mVariableNames.push_back("Ca__Ca_JSR"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.993914988616979); + + // rY[37]: + this->mVariableNames.push_back("Ca__Ca_NSR"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(1.01475649943057); + + // rY[38]: + this->mVariableNames.push_back("Ca__Ca_ss_sr"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00011296707102434); + + // rY[39]: + this->mVariableNames.push_back("Ca__Ca_ss_CaL"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000119239795531548); + + // rY[40]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.01031392415197); + + // rY[41]: + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.01033434859049); + + // rY[42]: + this->mVariableNames.push_back("cytosolic_chloride_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(20.6683603724432); + + // rY[43]: + this->mVariableNames.push_back("dyadic_space_chloride_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(20.6683605553303); + + // rY[44]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(144.907134343314); + + // rY[45]: + this->mVariableNames.push_back("CaMK_active__CaMK_trap"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0114911034744777); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("mM_per_ms"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("mM_per_uA_per_uF_per_ms_per_ms"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("mM_per_ms"); + + // mParameters[3]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("L_per_F_ms"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_background_calcium_current_conductance"); + this->mParameterUnits.push_back("L_per_F_ms"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_background_chloride_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_background_sodium_current_conductance"); + this->mParameterUnits.push_back("L_per_F_ms"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_calcium_pump_current_conductance"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_persistent_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_potassium_pump_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_sodium_potassium_pump_current_permeability"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_transient_outward_chloride_current_conductance"); + this->mParameterUnits.push_back("L_per_F_ms"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_leak_current"); + this->mDerivedQuantityUnits.push_back("mM_per_ms"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("SR_uptake_current"); + this->mDerivedQuantityUnits.push_back("mM_per_ms"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_background_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_background_chloride_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_background_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_persistent_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_potassium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_dyadic_space_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_sodium_potassium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_chloride_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("ms"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Celldecker_2009FromCellMLBackwardEulerOpt) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998.cpp_python36 deleted file mode 100644 index 677aa3a8..00000000 --- a/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998.cpp_python36 +++ /dev/null @@ -1,1462 +0,0 @@ -//! @file -//! -//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) -//! -//! Model: courtemanche_1998 -//! -//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen -//! (translator: chaste_codegen, model type: BackwardEulerOpt) -//! on (date omitted as unimportant) -//! -//! - -#include "CardiacNewtonSolver.hpp" -#include "dynamic_courtemanche_ramirez_nattel_1998.hpp" -#include -#include -#include -#include -#include "Exception.hpp" -#include "OdeSystemInformation.hpp" -#include "RegularStimulus.hpp" -#include "HeartConfig.hpp" -#include "IsNan.hpp" -#include "MathsCustomFunctions.hpp" - -#include "ModelFactory.hpp" - -AbstractBackwardEulerCardiacCell<8>* Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { - return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(p_solver, p_stimulus); -} - -bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::registered = ModelFactory::Register("dynamic_courtemanche_ramirez_nattel_1998", "BackwardEulerOpt", (ModelFactory::TCreateMethod)Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::CreateMethod); - -class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables : public AbstractLookupTableCollection -{ -public: - static Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables* Instance() - { - if (mpInstance.get() == NULL) - { - mpInstance.reset(new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables); - } - return mpInstance.get(); - } - - void FreeMemory() - { - - if (_lookup_table_0) - { - delete[] _lookup_table_0; - _lookup_table_0 = NULL; - } - - mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); - } - - // Row lookup methods - // using linear-interpolation - - double* _lookup_0_row(unsigned i, double _factor_) - { - for (unsigned j=0; j<27; j++) - { - const double y1 = _lookup_table_0[i][j]; - const double y2 = _lookup_table_0[i+1][j]; - _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; - } - return _lookup_table_0_row; - } - - - const double * IndexTable0(double var_chaste_interface__membrane__V) - { - const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; - const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; - const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); - const double _factor_0 = _offset_0_over_table_step - _table_index_0; - const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); - return _lt_0_row; - } - - -// LCOV_EXCL_START - bool CheckIndex0(double& var_chaste_interface__membrane__V) - { - bool _oob_0 = false; - if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= 2){ - EXCEPTION("Lookup table 9 at ["<= 2){ - EXCEPTION("Lookup table 11 at ["<= 2){ - EXCEPTION("Lookup table 14 at ["< mpInstance; - - // Row lookup methods memory - double _lookup_table_0_row[27]; - - // Lookup tables - double (*_lookup_table_0)[27]; - int _lookup_table_0_num_misshit_piecewise[27] = {0}; - -}; - -std::shared_ptr Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::mpInstance; - - - boost::shared_ptr Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::UseCellMLDefaultStimulus() - { - // Use the default stimulus specified by CellML metadata - const double var_chaste_interface__membrane__stim_amplitude_converted = -2000 * HeartConfig::Instance()->GetCapacitance() / mParameters[9]; // uA_per_cm2 - const double var_chaste_interface__membrane__stim_duration = 2; // millisecond - const double var_chaste_interface__membrane__stim_period = 1000; // millisecond - const double var_chaste_interface__membrane__stim_start = 100; // millisecond - boost::shared_ptr p_cellml_stim(new RegularStimulus( - -fabs(var_chaste_interface__membrane__stim_amplitude_converted), - var_chaste_interface__membrane__stim_duration, - var_chaste_interface__membrane__stim_period, - var_chaste_interface__membrane__stim_start - )); - mpIntracellularStimulus = p_cellml_stim; - return p_cellml_stim; - } - double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::GetIntracellularCalciumConcentration() - { - return mStateVariables[1]; - } - Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) - : AbstractBackwardEulerCardiacCell<8>( - 21, - 0, - pIntracellularStimulus) - { - // Time units: millisecond - // - this->mpSystemInfo = OdeSystemInformation::Instance(); - Init(); - - // We have a default stimulus specified in the CellML file metadata - this->mHasDefaultStimulusFromCellML = true; - - this->mParameters[0] = 1; // (var_Ca_leak_current_by_the_NSR__leak_factor) [dimensionless] - this->mParameters[1] = 30; // (var_Ca_release_current_from_JSR__K_rel) [per_millisecond] - this->mParameters[2] = 0.0050000000000000001; // (var_Ca_uptake_current_by_the_NSR__I_up_max) [millimolar_per_millisecond] - this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] - this->mParameters[4] = 1.8; // (var_standard_ionic_concentrations__Ca_o) [millimolar] - this->mParameters[5] = 5.4000000000000004; // (var_standard_ionic_concentrations__K_o) [millimolar] - this->mParameters[6] = 140; // (var_standard_ionic_concentrations__Na_o) [millimolar] - this->mParameters[7] = 0.12375; // (var_L_type_Ca_channel__g_Ca_L) [nanoS_per_picoF] - this->mParameters[8] = 2; // (var_L_type_Ca_channel_f_Ca_gate__tau_f_Ca) [millisecond] - this->mParameters[9] = 100; // (var_membrane__Cm) [picoF] - this->mParameters[10] = 7.7999999999999998; // (var_fast_sodium_current__g_Na) [nanoS_per_picoF] - this->mParameters[11] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] - this->mParameters[12] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] - this->mParameters[13] = 0.089999999999999997; // (var_time_independent_potassium_current__g_K1) [nanoS_per_picoF] - this->mParameters[14] = 0.029411764999999999; // (var_rapid_delayed_rectifier_K_current__g_Kr) [nanoS_per_picoF] - this->mParameters[15] = 0.12941175999999999; // (var_slow_delayed_rectifier_K_current__g_Ks) [nanoS_per_picoF] - this->mParameters[16] = 1600; // (var_Na_Ca_exchanger_current__I_NaCa_max) [picoA_per_picoF] - this->mParameters[17] = 0.16520000000000001; // (var_transient_outward_K_current__g_to) [nanoS_per_picoF] - } - - Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::~Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt() - { - } - - AbstractLookupTableCollection* Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::GetLookupTableCollection() - { - return Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance(); - } - - void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::VerifyStateVariables() - { - std::vector& rY = rGetStateVariables(); - std::string error_message = ""; - - for (unsigned i=0; i < 21; i++) - { - if(std::isnan(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; - } - if(std::isinf(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; - } - if(this->is_concentration[i] && rY[i] < 0) - { - error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] < 0) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] > 1) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; - } - } - if (error_message != ""){ - EXCEPTION(DumpState(error_message)); - } - } - - double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::GetIIonic(const std::vector* pStateVariables) - { - // For state variable interpolation (SVI) we read in interpolated state variables, - // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). - if (!pStateVariables) pStateVariables = &rGetStateVariables(); - const std::vector& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -81.18 - double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0001013 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.002908 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9649 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.9775 - double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; - // Units: dimensionless; Initial value: 0.03043 - double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; - // Units: dimensionless; Initial value: 0.004966 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; - // Units: dimensionless; Initial value: 0.9986 - double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 3.296e-05 - double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; - // Units: dimensionless; Initial value: 0.01869 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; - // Units: dimensionless; Initial value: 0.0001367 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; - // Units: dimensionless; Initial value: 0.9996 - double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; - // Units: dimensionless; Initial value: 0.7755 - double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; - // Units: millimolar; Initial value: 11.17 - double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; - // Units: millimolar; Initial value: 139.0 - - // Lookup table indexing - const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF - const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * (-65 + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9] / var_membrane__Cm_converted; // uA_per_cm2 - const double var_sarcolemmal_calcium_pump_current__i_CaP = 0.27500000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA - const double var_background_currents__i_B_Ca = 0.0011310000000000001 * (-13.356415961992688 * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) + var_chaste_interface__membrane__V) * mParameters[9]; // picoA - const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * HeartConfig::Instance()->GetCapacitance() * mParameters[16] * mParameters[9] / ((_lt_0_row[2]) * (669921.875 + pow(mParameters[6], 3)) * (1.3799999999999999 + mParameters[4]) * var_membrane__Cm_converted); // uA_per_cm2 - const double var_fast_sodium_current__E_Na = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt - const double var_background_currents__i_B_Na = 0.00067443750000000002 * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA - const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9] / var_membrane__Cm_converted; // uA_per_cm2 - const double var_sodium_potassium_pump__i_NaK = 0.59933873999999998 * mParameters[9] * mParameters[5] / ((1 + 31.622776601683793 * pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); // picoA - const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt - const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / ((_lt_0_row[5]) * var_membrane__Cm_converted); // uA_per_cm2 - const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[15] / var_membrane__Cm_converted; // uA_per_cm2 - const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[13] / ((_lt_0_row[6]) * var_membrane__Cm_converted); // uA_per_cm2 - const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi / var_membrane__Cm_converted; // uA_per_cm2 - const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA - const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_exchanger_current__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_delayed_rectifier_K_current__i_Kr_converted + var_slow_delayed_rectifier_K_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_K_current__i_to_converted) * var_membrane__Cm_converted + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Ca + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Na + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump_current__i_CaP + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_ultrarapid_delayed_rectifier_K_current__i_Kur) / var_membrane__Cm_converted; // uA_per_cm2 - - const double i_ionic = var_chaste_interface__i_ionic; - EXCEPT_IF_NOT(!std::isnan(i_ionic)); - return i_ionic; - } - - void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rResidual[8]) - { - std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -81.18 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.002908 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9649 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.9775 - double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; - // Units: dimensionless; Initial value: 0.03043 - double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; - // Units: dimensionless; Initial value: 0.004966 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; - // Units: dimensionless; Initial value: 0.9986 - double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 3.296e-05 - double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; - // Units: dimensionless; Initial value: 0.01869 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; - // Units: dimensionless; Initial value: 0.0001367 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; - // Units: dimensionless; Initial value: 0.9996 - double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; - // Units: dimensionless; Initial value: 0.9992 - - //output_nonlinear_state_assignments - double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; - double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; - double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; - double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; - double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; - double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; - double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; - double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; - - // Lookup table indexing - const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - //output_equations - const double var_Ca_uptake_current_by_the_NSR__i_up = mParameters[2] / (1 + 0.00092000000000000003 / var_chaste_interface__intracellular_ion_concentrations__Ca_i); // millimolar_per_millisecond - const double d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca = (1 / (1 + 2857.1428571428573 * var_chaste_interface__intracellular_ion_concentrations__Ca_i) - var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca) / mParameters[8]; // 1 / millisecond - const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond - const double var_Ca_leak_current_by_the_NSR__i_up_leak = 0.066666666666666666 * mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up; // millimolar_per_millisecond - const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA - const double var_sarcolemmal_calcium_pump_current__i_CaP = 0.27500000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA - const double var_background_currents__i_B_Ca = 0.0011310000000000001 * (-13.356415961992688 * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) + var_chaste_interface__membrane__V) * mParameters[9]; // picoA - const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * mParameters[16] * mParameters[9] / ((_lt_0_row[2]) * (669921.875 + pow(mParameters[6], 3)) * (1.3799999999999999 + mParameters[4])); // picoA - const double var_Ca_release_current_from_JSR__Fn = 9.6479999999999999e-11 * var_Ca_release_current_from_JSR__i_rel + 1.0364122723649997e-15 * var_Na_Ca_exchanger_current__i_NaCa - 2.5910306809124992e-15 * var_L_type_Ca_channel__i_Ca_L; // dimensionless - const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u = 0.125 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)) - 0.125 * var_chaste_interface__Ca_release_current_from_JSR_u_gate__u; // 1 / millisecond - const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v = (1 - 1 / (1 + exp(50 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)) - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / (1.9099999999999999 + 2.0899999999999999 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn))); // 1 / millisecond - const double var_fast_sodium_current__E_Na = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt - const double var_background_currents__i_B_Na = 0.00067443750000000002 * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = (0.081176470588235281 * var_Ca_leak_current_by_the_NSR__i_up_leak + 0.0070588235294117632 * var_Ca_release_current_from_JSR__i_rel + 7.5827646500219453e-7 * var_Na_Ca_exchanger_current__i_NaCa - 0.081176470588235281 * var_Ca_uptake_current_by_the_NSR__i_up - 3.7913823250109726e-7 * var_L_type_Ca_channel__i_Ca_L - 3.7913823250109726e-7 * var_background_currents__i_B_Ca - 3.7913823250109726e-7 * var_sarcolemmal_calcium_pump_current__i_CaP) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2)); // millimolar / millisecond - const double var_sodium_potassium_pump__i_NaK = 0.59933873999999998 * mParameters[9] * mParameters[5] / ((1 + 31.622776601683793 * pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); // picoA - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = 7.5827646500219453e-7 * (-var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - 3 * var_Na_Ca_exchanger_current__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) * mParameters[3]; // millimolar / millisecond - const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt - const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (_lt_0_row[5]); // picoA - const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA - const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (_lt_0_row[6]); // picoA - const double var_transfer_current_from_NSR_to_JSR__i_tr = 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_rel; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel = (-var_Ca_release_current_from_JSR__i_rel + var_transfer_current_from_NSR_to_JSR__i_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_rel), 2)); // millimolar / millisecond - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up = -var_Ca_leak_current_by_the_NSR__i_up_leak - 0.086956521739130432 * var_transfer_current_from_NSR_to_JSR__i_tr + var_Ca_uptake_current_by_the_NSR__i_up; // millimolar / millisecond - const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA - const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = 7.5827646500219453e-7 * (-var_rapid_delayed_rectifier_K_current__i_Kr - var_slow_delayed_rectifier_K_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur + 2 * var_sodium_potassium_pump__i_NaK) * mParameters[3]; // millimolar / millisecond - - rResidual[3] = rCurrentGuess[3] - rY[1] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i; - rResidual[2] = rCurrentGuess[2] - rY[13] - mDt*d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca; - rResidual[0] = rCurrentGuess[0] - rY[14] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u; - rResidual[1] = rCurrentGuess[1] - rY[15] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v; - rResidual[7] = rCurrentGuess[7] - rY[17] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; - rResidual[6] = rCurrentGuess[6] - rY[18] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; - rResidual[4] = rCurrentGuess[4] - rY[19] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel; - rResidual[5] = rCurrentGuess[5] - rY[20] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up; - } - - void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rJacobian[8][8]) - { - std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -81.18 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.002908 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9649 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.9775 - double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; - // Units: dimensionless; Initial value: 0.03043 - double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; - // Units: dimensionless; Initial value: 0.004966 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; - // Units: dimensionless; Initial value: 0.9986 - double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 3.296e-05 - double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; - // Units: dimensionless; Initial value: 0.01869 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; - // Units: dimensionless; Initial value: 0.0001367 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; - // Units: dimensionless; Initial value: 0.9996 - double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; - // Units: dimensionless; Initial value: 0.9992 - - // Lookup table indexing - const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; - double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; - double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; - double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; - double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; - double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; - double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; - double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; - - const double var_x0 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; - const double var_x1 = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; - const double var_x2 = var_x1 * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v; - const double var_x3 = 70577.907827359188 * var_x2; - const double var_x4 = mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_gate__f; - const double var_x5 = var_x4 * mParameters[9]; - const double var_x6 = var_x5 * (-65 + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca; - const double var_x7 = mParameters[4] * _lt_0_row[0]; - const double var_x8 = _lt_0_row[1]; - const double var_x9 = pow(mParameters[6], 3); - const double var_x10 = var_x8 * var_x9; - const double var_x11 = mParameters[16] / ((1 + 0.10000000000000001 * var_x8) * (669921.875 + var_x9) * (1.3799999999999999 + mParameters[4])); - const double var_x12 = var_x11 * mParameters[9]; - const double var_x13 = var_x12 * (var_x7 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) - var_x10 * var_chaste_interface__intracellular_ion_concentrations__Ca_i); - const double var_x14 = 1.8954138119330646 * var_x6 - 0.75816552477322585 * var_x13 - var_x0 * var_x3; - const double var_x15 = exp(250 + var_x14); - const double var_x16 = 1 + var_x15; - const double var_x17 = var_x15 / pow(var_x16, 2); - const double var_x18 = var_x0 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_u_gate__u * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; - const double var_x19 = var_x17 * var_x18; - const double var_x20 = var_x0 * var_x1; - const double var_x21 = 8822.2384784198985 * var_x17; - const double var_x22 = var_x5 * (-123.20189777564919 + 1.8954138119330646 * var_chaste_interface__membrane__V); - const double var_x23 = var_x17 * var_x22; - const double var_x24 = var_x10 * var_x12; - const double var_x25 = var_x3 + 0.75816552477322585 * var_x24; - const double var_x26 = var_x17 * var_x25; - const double var_x27 = var_x7 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); - const double var_x28 = var_x12 * var_x27; - const double var_x29 = 1 / var_x16; - const double var_x30 = 1 / (1.9099999999999999 + 2.0899999999999999 * var_x29); - const double var_x31 = exp(50 + var_x14); - const double var_x32 = 1 + var_x31; - const double var_x33 = var_x31 / pow(var_x32, 2); - const double var_x34 = var_x30 * var_x33; - const double var_x35 = (1 - 1 / var_x32 - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / pow((0.9138755980861244 + var_x29), 2); - const double var_x36 = var_x17 * var_x35; - const double var_x37 = 33769.333888688605 * var_x36; - const double var_x38 = 0.47846889952153115 * var_x35; - const double var_x39 = 1 / mParameters[8]; - const double var_x40 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x41 = 0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x42 = pow(var_x41, (-2)); - const double var_x43 = 1 + 0.00011900000000000002 / pow(var_x40, 2) + 3.5000000000000004e-5 * var_x42; - const double var_x44 = 1 / var_x43; - const double var_x45 = var_x44 * mParameters[9]; - const double var_x46 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x47 = 1.0426301393780176e-7 * mParameters[9]; - const double var_x48 = var_x47 / var_x41; - const double var_x49 = 1 + 0.00092000000000000003 * var_x46; - const double var_x50 = mParameters[2] / (pow(var_x49, 2) * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 2)); - const double var_x51 = 0.0070588235294117632 * var_x2; - const double var_x52 = mParameters[0] * mParameters[2]; - const double var_x53 = 0.0054117647058823529 * var_x52; - const double var_x54 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; - const double var_x55 = pow(var_x54, (-2)); - const double var_x56 = 1 / (1 + 8 * var_x55); - const double var_x57 = 2.0255711761517402e-5 * mParameters[9] / var_chaste_interface__intracellular_ion_concentrations__K_i; - const double var_x58 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; - const double var_x59 = pow(var_x58, 1.5); - const double var_x60 = var_x58 * mParameters[9]; - const double var_x61 = var_x59 * var_x60 * mParameters[5] / ((1.5 + mParameters[5]) * pow((0.031622776601683791 + var_x59), 2) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); - - - rJacobian[0][0] = 1.0 - (mDt * (-0.125 + 17644.476956839797 * var_x19)); - rJacobian[0][1] = -(mDt * (var_x20 * var_x21)); - rJacobian[0][2] = -(mDt * (-0.125 * var_x23)); - rJacobian[0][3] = -(mDt * (-0.125 * var_x26)); - rJacobian[0][4] = -(mDt * (var_x2 * var_x21)); - rJacobian[0][5] = 0.0; - rJacobian[0][6] = 0.0; - rJacobian[0][7] = -(mDt * (0.28431207178995971 * var_x17 * var_x28)); - rJacobian[1][0] = -(mDt * (-141155.81565471838 * var_x18 * var_x34 - 67538.66777737721 * var_x19 * var_x35)); - rJacobian[1][1] = 1.0 - (mDt * (var_x30 * (-1 - 70577.907827359188 * var_x20 * var_x33) - var_x20 * var_x37)); - rJacobian[1][2] = -(mDt * (var_x22 * var_x34 + var_x23 * var_x38)); - rJacobian[1][3] = -(mDt * (var_x25 * var_x34 + var_x26 * var_x38)); - rJacobian[1][4] = -(mDt * (-var_x2 * var_x37 - var_x3 * var_x34)); - rJacobian[1][5] = 0.0; - rJacobian[1][6] = 0.0; - rJacobian[1][7] = -(mDt * (-1.0882758728802286 * var_x28 * var_x36 - 2.2744965743196777 * var_x28 * var_x34)); - rJacobian[2][0] = 0.0; - rJacobian[2][1] = 0.0; - rJacobian[2][2] = 1.0 - (mDt * (-var_x39)); - rJacobian[2][3] = -(mDt * (-0.00035 * var_x39 / pow((0.00035 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2))); - rJacobian[2][4] = 0.0; - rJacobian[2][5] = 0.0; - rJacobian[2][6] = 0.0; - rJacobian[2][7] = 0.0; - rJacobian[3][0] = -(mDt * (0.014117647058823526 * var_x18 * var_x44)); - rJacobian[3][1] = -(mDt * (0.0070588235294117632 * var_x20 * var_x44)); - rJacobian[3][2] = -(mDt * (var_x4 * var_x45 * (2.4643985112571321e-5 - 3.7913823250109726e-7 * var_chaste_interface__membrane__V))); - rJacobian[3][3] = 1.0 - (mDt * (var_x44 * (-var_x48 - var_x51 - 7.4682352941176462e-5 * var_x50 - 7.5827646500219453e-7 * var_x24 - 5.7273025005690459e-9 * var_x46 * mParameters[9] + var_x42 * var_x47 * var_chaste_interface__intracellular_ion_concentrations__Ca_i) + (0.00023800000000000004 / pow(var_x40, 3) + 7.0000000000000007e-5 / pow(var_x41, 3)) * (7.5827646500219453e-7 * var_x13 - 3.7913823250109726e-7 * var_x6 + var_x0 * var_x51 + var_x53 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - var_x48 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.081176470588235281 * mParameters[2] / var_x49 - 4.2880534095874102e-10 * (-13.356415961992688 * log(var_x46 * mParameters[4]) + var_chaste_interface__membrane__V) * mParameters[9]) / pow(var_x43, 2))); - rJacobian[3][4] = -(mDt * (var_x44 * var_x51)); - rJacobian[3][5] = -(mDt * (var_x44 * var_x53)); - rJacobian[3][6] = 0.0; - rJacobian[3][7] = -(mDt * (2.2748293950065834e-6 * var_x11 * var_x27 * var_x45)); - rJacobian[4][0] = -(mDt * (-2 * var_x18 * var_x56)); - rJacobian[4][1] = -(mDt * (-var_x20 * var_x56)); - rJacobian[4][2] = 0.0; - rJacobian[4][3] = -(mDt * (var_x2 * var_x56)); - rJacobian[4][4] = 1.0 - (mDt * (var_x56 * (-0.0055555555555555558 - var_x2) + 0.25 * (0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_rel - var_x0 * var_x2) / (pow(var_x54, 3) * pow((0.125 + var_x55), 2)))); - rJacobian[4][5] = -(mDt * (0.0055555555555555558 * var_x56)); - rJacobian[4][6] = 0.0; - rJacobian[4][7] = 0.0; - rJacobian[5][0] = 0.0; - rJacobian[5][1] = 0.0; - rJacobian[5][2] = 0.0; - rJacobian[5][3] = -(mDt * (0.00092000000000000003 * var_x50)); - rJacobian[5][4] = -(mDt * (0.00048309178743961351)); - rJacobian[5][5] = 1.0 - (mDt * (-0.00048309178743961351 - 0.066666666666666666 * var_x52)); - rJacobian[5][6] = 0.0; - rJacobian[5][7] = 0.0; - rJacobian[6][0] = 0.0; - rJacobian[6][1] = 0.0; - rJacobian[6][2] = 0.0; - rJacobian[6][3] = 0.0; - rJacobian[6][4] = 0.0; - rJacobian[6][5] = 0.0; - rJacobian[6][6] = 1.0 - (mDt * ((-var_x57 * mParameters[13] / (_lt_0_row[6]) - var_x57 * pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * mParameters[15] - var_x57 * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (_lt_0_row[5]) - var_x57 * pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi - var_x57 * pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui) * mParameters[3])); - rJacobian[6][7] = -(mDt * (4.3114284380885533e-8 * var_x61 * mParameters[3])); - rJacobian[7][0] = 0.0; - rJacobian[7][1] = 0.0; - rJacobian[7][2] = 0.0; - rJacobian[7][3] = -(mDt * (2.2748293950065834e-6 * var_x24 * mParameters[3])); - rJacobian[7][4] = 0.0; - rJacobian[7][5] = 0.0; - rJacobian[7][6] = 0.0; - rJacobian[7][7] = 1.0 - (mDt * ((-6.4671426571328296e-8 * var_x61 - 6.8244881850197506e-6 * var_x28 - 1.3661211601158392e-8 * var_x60 - 2.0255711761517402e-5 * var_x60 * pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j) * mParameters[3])); - } - - void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) - { - // Time units: millisecond - std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -81.18 - double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0001013 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.002908 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9649 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.9775 - double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; - // Units: dimensionless; Initial value: 0.03043 - double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; - // Units: dimensionless; Initial value: 0.004966 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; - // Units: dimensionless; Initial value: 0.9986 - double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 3.296e-05 - double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; - // Units: dimensionless; Initial value: 0.01869 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; - // Units: dimensionless; Initial value: 0.0001367 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; - // Units: dimensionless; Initial value: 0.9996 - double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; - // Units: dimensionless; Initial value: 0.7755 - double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; - // Units: millimolar; Initial value: 11.17 - double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; - // Units: millimolar; Initial value: 139.0 - - // Lookup table indexing - const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA - const double var_sarcolemmal_calcium_pump_current__i_CaP = 0.27500000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA - const double var_background_currents__i_B_Ca = 0.0011310000000000001 * (-13.356415961992688 * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) + var_chaste_interface__membrane__V) * mParameters[9]; // picoA - const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * mParameters[16] * mParameters[9] / ((_lt_0_row[2]) * (669921.875 + pow(mParameters[6], 3)) * (1.3799999999999999 + mParameters[4])); // picoA - const double var_fast_sodium_current__E_Na = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt - const double var_background_currents__i_B_Na = 0.00067443750000000002 * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA - const double var_sodium_potassium_pump__i_NaK = 0.59933873999999998 * mParameters[9] * mParameters[5] / ((1 + 31.622776601683793 * pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); // picoA - const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt - const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (_lt_0_row[5]); // picoA - const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA - const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (_lt_0_row[6]); // picoA - const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA - const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA - const double d_dt_chaste_interface_var_membrane__V = (-var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger_current__i_NaCa - var_background_currents__i_B_Ca - var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - var_rapid_delayed_rectifier_K_current__i_Kr - var_sarcolemmal_calcium_pump_current__i_CaP - var_slow_delayed_rectifier_K_current__i_Ks - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur - 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance()) / mParameters[9]; // millivolt / millisecond - - rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; - } - - void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) - { - // Time units: millisecond - std::vector& rY = rGetStateVariables(); - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -81.18 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.002908 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9649 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.9775 - double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; - // Units: dimensionless; Initial value: 0.03043 - double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; - // Units: dimensionless; Initial value: 0.004966 - double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; - // Units: dimensionless; Initial value: 0.9986 - double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 3.296e-05 - double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; - // Units: dimensionless; Initial value: 0.01869 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; - // Units: dimensionless; Initial value: 0.0001367 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; - // Units: dimensionless; Initial value: 0.9996 - double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; - // Units: dimensionless; Initial value: 0.9992 - - // Lookup table indexing - const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - const double var_Ca_release_current_from_JSR_w_gate__tau_w = ((fabs(-7.9000000000000004 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.92307692307692313) : (6 * (1 - exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) / ((1 + 0.29999999999999999 * exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) * (-7.9000000000000004 + var_chaste_interface__membrane__V)))); - const double var_Ca_release_current_from_JSR_w_gate__w_infinity = 1 + _lt_0_row[8]; - const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (_lt_0_row[10]); - const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(10 + var_chaste_interface__membrane__V) < 1.0e-10) ? (4.5789999999999997 / (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V))) : (28.571428571428569 * (1 - exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) / ((1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) * (10 + var_chaste_interface__membrane__V)))); - const double var_L_type_Ca_channel_f_gate__f_infinity = _lt_0_row[12]; - const double var_L_type_Ca_channel_f_gate__tau_f = 9 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); - const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); - const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); - const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); - const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); - const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); - const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); - const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); - const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); - const double var_fast_sodium_current_m_gate__alpha_m = _lt_0_row[14]; - const double var_fast_sodium_current_m_gate__beta_m = _lt_0_row[15]; - const double var_fast_sodium_current_m_gate__m_inf = var_fast_sodium_current_m_gate__alpha_m / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); - const double var_fast_sodium_current_m_gate__tau_m = 1 / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); - const double var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr = ((fabs(14.1 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.0015) : (0.00029999999999999997 * (14.1 + var_chaste_interface__membrane__V) / (1 - exp(-2.8199999999999998 - 0.20000000000000001 * var_chaste_interface__membrane__V)))); - const double var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr = ((fabs(-3.3328000000000002 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00037836118) : (7.3898000000000003e-5 * (-3.3328000000000002 + var_chaste_interface__membrane__V) / (-1 + exp(-0.65046743564221166 + 0.19517145812596365 * var_chaste_interface__membrane__V)))); - const double var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr = 1 / (var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr + var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr); - const double var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity = 1 / (_lt_0_row[16]); - const double var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00068000000000000005) : (4.0000000000000003e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (1 - exp(1.1705882352941175 - 0.058823529411764705 * var_chaste_interface__membrane__V)))); - const double var_slow_delayed_rectifier_K_current_xs_gate__beta_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00031500000000000001) : (3.4999999999999997e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-2.2111111111111108 + 0.1111111111111111 * var_chaste_interface__membrane__V)))); - const double var_slow_delayed_rectifier_K_current_xs_gate__tau_xs = 0.5 / (var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs + var_slow_delayed_rectifier_K_current_xs_gate__beta_xs); - const double var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity = _lt_0_row[18]; - const double var_transient_outward_K_current__K_Q10 = 3; - const double var_transient_outward_K_current_oa_gate__alpha_oa = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); - const double var_transient_outward_K_current_oa_gate__beta_oa = 0.65000000000000002 / (2.5 + exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); - const double var_transient_outward_K_current_oa_gate__oa_infinity = 1 / (_lt_0_row[20]); - const double var_transient_outward_K_current_oa_gate__tau_oa = 1 / ((var_transient_outward_K_current_oa_gate__alpha_oa + var_transient_outward_K_current_oa_gate__beta_oa) * var_transient_outward_K_current__K_Q10); - const double var_transient_outward_K_current_oi_gate__alpha_oi = 1 / (18.530000000000001 + exp(10.383561643835618 + 0.091324200913242018 * var_chaste_interface__membrane__V)); - const double var_transient_outward_K_current_oi_gate__beta_oi = 1 / (35.560000000000002 + exp(-0.16935483870967738 - 0.13440860215053763 * var_chaste_interface__membrane__V)); - const double var_transient_outward_K_current_oi_gate__oi_infinity = 1 / (_lt_0_row[22]); - const double var_transient_outward_K_current_oi_gate__tau_oi = 1 / ((var_transient_outward_K_current_oi_gate__alpha_oi + var_transient_outward_K_current_oi_gate__beta_oi) * var_transient_outward_K_current__K_Q10); - const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); - const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua = 0.65000000000000002 / (2.5 + exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); - const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua + var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua) * var_transient_outward_K_current__K_Q10); - const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity = 1 / (_lt_0_row[24]); - const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui = 1 / (21 + exp(6.6071428571428568 - 0.035714285714285712 * var_chaste_interface__membrane__V)); - const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui = 1 / exp(9.875 - 0.0625 * var_chaste_interface__membrane__V); - const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui + var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui) * var_transient_outward_K_current__K_Q10); - const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity = 1 / (_lt_0_row[25]); - - - rY[16] = (var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + ((var_Ca_release_current_from_JSR_w_gate__w_infinity / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)) / (1.0 - ((-1 / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)); - rY[11] = (var_chaste_interface__L_type_Ca_channel_d_gate__d + ((var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_d_gate__tau_d) * mDt)); - rY[12] = (var_chaste_interface__L_type_Ca_channel_f_gate__f + ((var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_f_gate__tau_f) * mDt)); - rY[3] = (var_chaste_interface__fast_sodium_current_h_gate__h + ((var_fast_sodium_current_h_gate__h_inf / var_fast_sodium_current_h_gate__tau_h) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_h_gate__tau_h) * mDt)); - rY[4] = (var_chaste_interface__fast_sodium_current_j_gate__j + ((var_fast_sodium_current_j_gate__j_inf / var_fast_sodium_current_j_gate__tau_j) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_j_gate__tau_j) * mDt)); - rY[2] = (var_chaste_interface__fast_sodium_current_m_gate__m + ((var_fast_sodium_current_m_gate__m_inf / var_fast_sodium_current_m_gate__tau_m) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_m_gate__tau_m) * mDt)); - rY[9] = (var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr + ((var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)) / (1.0 - ((-1 / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)); - rY[10] = (var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs + ((var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)) / (1.0 - ((-1 / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)); - rY[5] = (var_chaste_interface__transient_outward_K_current_oa_gate__oa + ((var_transient_outward_K_current_oa_gate__oa_infinity / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)); - rY[6] = (var_chaste_interface__transient_outward_K_current_oi_gate__oi + ((var_transient_outward_K_current_oi_gate__oi_infinity / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)); - rY[7] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua + ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)); - rY[8] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui + ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)); - - double _guess[8] = {rY[14],rY[15],rY[13],rY[1],rY[19],rY[20],rY[18],rY[17]}; - CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt>* _p_solver = CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt>::Instance(); - _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); - rY[14] = _guess[0]; - rY[15] = _guess[1]; - rY[13] = _guess[2]; - rY[1] = _guess[3]; - rY[19] = _guess[4]; - rY[20] = _guess[5]; - rY[18] = _guess[6]; - rY[17] = _guess[7]; - } - - std::vector Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) - { - // Inputs: - // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -81.18 - double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0001013 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.002908 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9649 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.9775 - double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; - // Units: dimensionless; Initial value: 0.03043 - double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 3.296e-05 - double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; - // Units: dimensionless; Initial value: 0.01869 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; - // Units: dimensionless; Initial value: 0.0001367 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; - // Units: dimensionless; Initial value: 0.9996 - double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; - // Units: dimensionless; Initial value: 0.7755 - double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rY[14]; - // Units: dimensionless; Initial value: 2.35e-112 - double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rY[15]; - // Units: dimensionless; Initial value: 1.0 - double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; - // Units: dimensionless; Initial value: 0.9992 - double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; - // Units: millimolar; Initial value: 11.17 - double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; - // Units: millimolar; Initial value: 139.0 - double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rY[19]; - // Units: millimolar; Initial value: 1.488 - - // Lookup table indexing - const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar - const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar - const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless - const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless - const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond - const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF - const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole - const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA - const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 - const double var_L_type_Ca_channel_f_gate__tau_f = 9 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); // millisecond - const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond - const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond - const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // millisecond - const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); // per_millisecond - const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond - const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // millisecond - const double var_membrane__i_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 - const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA - const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA - const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 - const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt - const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (_lt_0_row[5]); // picoA - const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 - const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA - const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 - const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (_lt_0_row[6]); // picoA - const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 - const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA - const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_K_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 - - std::vector dqs(14); - dqs[0] = var_Ca_release_current_from_JSR__i_rel; - dqs[1] = var_L_type_Ca_channel__i_Ca_L_converted; - dqs[2] = var_L_type_Ca_channel_f_gate__tau_f; - dqs[3] = var_membrane__Cm_converted; - dqs[4] = var_fast_sodium_current__i_Na_converted; - dqs[5] = var_fast_sodium_current_h_gate__tau_h; - dqs[6] = var_fast_sodium_current_j_gate__tau_j; - dqs[7] = var_time_independent_potassium_current__i_K1_converted; - dqs[8] = var_rapid_delayed_rectifier_K_current__i_Kr_converted; - dqs[9] = var_slow_delayed_rectifier_K_current__i_Ks_converted; - dqs[10] = var_Na_Ca_exchanger_current__i_NaCa_converted; - dqs[11] = var_membrane__i_st_converted; - dqs[12] = var_transient_outward_K_current__i_to_converted; - dqs[13] = var_chaste_interface__environment__time; - return dqs; - } - -template<> -void OdeSystemInformation::Initialise(void) -{ - this->mSystemName = "courtemanche_1998"; - this->mFreeVariableName = "time"; - this->mFreeVariableUnits = "millisecond"; - - // rY[0]: - this->mVariableNames.push_back("membrane_voltage"); - this->mVariableUnits.push_back("millivolt"); - this->mInitialConditions.push_back(-81.18); - - // rY[1]: - this->mVariableNames.push_back("cytosolic_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.0001013); - - // rY[2]: - this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.002908); - - // rY[3]: - this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9649); - - // rY[4]: - this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9775); - - // rY[5]: - this->mVariableNames.push_back("transient_outward_K_current_oa_gate__oa"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.03043); - - // rY[6]: - this->mVariableNames.push_back("transient_outward_K_current_oi_gate__oi"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9992); - - // rY[7]: - this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ua_gate__ua"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.004966); - - // rY[8]: - this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ui_gate__ui"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9986); - - // rY[9]: - this->mVariableNames.push_back("rapid_delayed_rectifier_K_current_xr_gate__xr"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(3.296e-05); - - // rY[10]: - this->mVariableNames.push_back("slow_delayed_rectifier_K_current_xs_gate__xs"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.01869); - - // rY[11]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0001367); - - // rY[12]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9996); - - // rY[13]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.7755); - - // rY[14]: - this->mVariableNames.push_back("Ca_release_current_from_JSR_u_gate__u"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(2.35e-112); - - // rY[15]: - this->mVariableNames.push_back("Ca_release_current_from_JSR_v_gate__v"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(1.0); - - // rY[16]: - this->mVariableNames.push_back("Ca_release_current_from_JSR_w_gate__w"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9992); - - // rY[17]: - this->mVariableNames.push_back("cytosolic_sodium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(11.17); - - // rY[18]: - this->mVariableNames.push_back("cytosolic_potassium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(139.0); - - // rY[19]: - this->mVariableNames.push_back("JSR_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(1.488); - - // rY[20]: - this->mVariableNames.push_back("intracellular_ion_concentrations__Ca_up"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(1.488); - - // mParameters[0]: - this->mParameterNames.push_back("SR_leak_current_max"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[1]: - this->mParameterNames.push_back("SR_release_current_max"); - this->mParameterUnits.push_back("per_millisecond"); - - // mParameters[2]: - this->mParameterNames.push_back("SR_uptake_current_max"); - this->mParameterUnits.push_back("millimolar_per_millisecond"); - - // mParameters[3]: - this->mParameterNames.push_back("concentration_clamp_onoff"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[4]: - this->mParameterNames.push_back("extracellular_calcium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[5]: - this->mParameterNames.push_back("extracellular_potassium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[6]: - this->mParameterNames.push_back("extracellular_sodium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[7]: - this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // mParameters[8]: - this->mParameterNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); - this->mParameterUnits.push_back("millisecond"); - - // mParameters[9]: - this->mParameterNames.push_back("membrane__Cm"); - this->mParameterUnits.push_back("picoF"); - - // mParameters[10]: - this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // mParameters[11]: - this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[12]: - this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); - this->mParameterUnits.push_back("millivolt"); - - // mParameters[13]: - this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // mParameters[14]: - this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // mParameters[15]: - this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // mParameters[16]: - this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); - this->mParameterUnits.push_back("picoA_per_picoF"); - - // mParameters[17]: - this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // Derived Quantity index [0]: - this->mDerivedQuantityNames.push_back("SR_release_current"); - this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); - - // Derived Quantity index [1]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [2]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - // Derived Quantity index [3]: - this->mDerivedQuantityNames.push_back("membrane_capacitance"); - this->mDerivedQuantityUnits.push_back("uF"); - - // Derived Quantity index [4]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [5]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - // Derived Quantity index [6]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - // Derived Quantity index [7]: - this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [8]: - this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [9]: - this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [10]: - this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [11]: - this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [12]: - this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [13]: - this->mDerivedQuantityNames.push_back("time"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - this->mInitialised = true; -} - -// Serialization for Boost >= 1.36 -#include "SerializationExportWrapperForCpp.hpp" -CHASTE_CLASS_EXPORT(Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt) -extern "C" -{ - AbstractCardiacCellInterface* MakeCardiacCell( - boost::shared_ptr pSolver, - boost::shared_ptr pStimulus) - { - return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(pSolver, pStimulus); - } - -} diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996--sympy_1_13.cpp new file mode 100644 index 00000000..d8e2b5d3 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996--sympy_1_13.cpp @@ -0,0 +1,666 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: dokos_model_1996 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: CvodeCellWithDataClamp) +//! on (date omitted as unimportant) +//! +//! + +#include "dokos_model_1996.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + + + + + double Celldokos_model_1996FromCellMLCvodeDataClamp::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Celldokos_model_1996FromCellMLCvodeDataClamp::Celldokos_model_1996FromCellMLCvodeDataClamp(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCellWithDataClamp( + pOdeSolver, + 18, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + NV_Ith_S(this->mParameters, 0) = 0.40000000000000002; // (var_L_type_calcium_current__g_CaL) [nanoS] + NV_Ith_S(this->mParameters, 1) = 3.1999999999999999e-5; // (var_membrane__C) [nanoF] + NV_Ith_S(this->mParameters, 2) = 0; // (var_membrane_data_clamp_current_conductance) [dimensionless] + NV_Ith_S(this->mParameters, 3) = 0.00025999999999999998; // (var_delayed_rectifying_potassium_current__Kk) [picoA_per_millimolar] + NV_Ith_S(this->mParameters, 4) = 0.25; // (var_fast_sodium_current__g_Na) [nanoS] + NV_Ith_S(this->mParameters, 5) = 0.0135; // (var_hyperpolarising_activated_current__g_fK) [nanoS] + NV_Ith_S(this->mParameters, 6) = 0.0080999999999999996; // (var_hyperpolarising_activated_current__g_fNa) [nanoS] + } + + Celldokos_model_1996FromCellMLCvodeDataClamp::~Celldokos_model_1996FromCellMLCvodeDataClamp() + { + } + + + void Celldokos_model_1996FromCellMLCvodeDataClamp::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 18; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Celldokos_model_1996FromCellMLCvodeDataClamp::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane__E = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -64.9 + double var_chaste_interface__ion_concentrations__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 3.4e-05 + double var_chaste_interface__L_type_calcium_current_d_gate__dL = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.0001 + double var_chaste_interface__L_type_calcium_current_f_gate__fL = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.1505 + double var_chaste_interface__L_type_calcium_current_f2_gate__fL2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.219 + double var_chaste_interface__T_type_calcium_current_d_gate__dT = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.001 + double var_chaste_interface__T_type_calcium_current_f_gate__fT = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.1328 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.0139 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.0087 + double var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.5682 + double var_chaste_interface__hyperpolarising_activated_current_y_gate__y = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.0287 + double var_chaste_interface__ion_concentrations__Cao = NV_Ith_S(rY, 11); + // Units: millimolar; Initial value: 2.0004 + double var_chaste_interface__ion_concentrations__Nai = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 7.4994 + double var_chaste_interface__ion_concentrations__Nao = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 139.9929 + double var_chaste_interface__ion_concentrations__Ki = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 140.0073 + double var_chaste_interface__ion_concentrations__Ko = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 5.4243 + + const double var_T_type_calcium_current__g_CaT = 0.085000000000000006; // nanoS + const double var_background_potassium_current__KbK = 6.9999999999999994e-5; // picoA_per_millimolar + const double var_background_sodium_current__g_Nab = 0.00024000000000000001; // nanoS + const double var_constants__F = 96485.341499999995; // coulomb_per_mole + const double var_constants__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_constants__T = 310; // kelvin + const double var_delayed_rectifying_potassium_current__P_KNa = 0.035000000000000003; // dimensionless + const double var_hyperpolarising_activated_current__Kmf = 10.300000000000001; // millimolar + const double var_membrane__C_converted = 0.001 * NV_Ith_S(mParameters, 1); // uF + const double var_background_potassium_current__i_bK = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.40999999999999998) * (-var_chaste_interface__ion_concentrations__Ko * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Ki) * var_background_potassium_current__KbK; // picoA + const double var_delayed_rectifying_potassium_current__i_KK = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.58999999999999997) * (-var_chaste_interface__ion_concentrations__Ko * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Ki) * NV_Ith_S(mParameters, 3) * var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x; // picoA + const double var_delayed_rectifying_potassium_current__i_KNa = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.58999999999999997) * (-var_chaste_interface__ion_concentrations__Nao * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Nai) * NV_Ith_S(mParameters, 3) * var_delayed_rectifying_potassium_current__P_KNa * var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x; // picoA + const double var_delayed_rectifying_potassium_current__i_K = var_delayed_rectifying_potassium_current__i_KK + var_delayed_rectifying_potassium_current__i_KNa; // picoA + const double var_reversal_potentials__E_Ca = 0.5 * var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Cao / var_chaste_interface__ion_concentrations__Cai) / var_constants__F; // millivolt + const double var_L_type_calcium_current__i_CaL = (75 - var_reversal_potentials__E_Ca + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 0) * var_chaste_interface__L_type_calcium_current_d_gate__dL * var_chaste_interface__L_type_calcium_current_f2_gate__fL2 * var_chaste_interface__L_type_calcium_current_f_gate__fL; // picoA + const double var_T_type_calcium_current__i_CaT = (75 - var_reversal_potentials__E_Ca + var_chaste_interface__membrane__E) * var_T_type_calcium_current__g_CaT * var_chaste_interface__T_type_calcium_current_d_gate__dT * var_chaste_interface__T_type_calcium_current_f_gate__fT; // picoA + const double var_reversal_potentials__E_K = var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Ko / var_chaste_interface__ion_concentrations__Ki) / var_constants__F; // millivolt + const double var_hyperpolarising_activated_current__i_fK = pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001) * (-var_reversal_potentials__E_K + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 5) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (pow(var_hyperpolarising_activated_current__Kmf, 1.8300000000000001) + pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001)); // picoA + const double var_reversal_potentials__E_Na = var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Nao / var_chaste_interface__ion_concentrations__Nai) / var_constants__F; // millivolt + const double var_background_sodium_current__i_bNa = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * var_background_sodium_current__g_Nab; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 4) * var_chaste_interface__fast_sodium_current_h_gate__h; // picoA + const double var_hyperpolarising_activated_current__i_fNa = pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001) * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 6) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (pow(var_hyperpolarising_activated_current__Kmf, 1.8300000000000001) + pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001)); // picoA + const double var_hyperpolarising_activated_current__i_f = var_hyperpolarising_activated_current__i_fK + var_hyperpolarising_activated_current__i_fNa; // picoA + const double var_sodium_calcium_exchange_current__K1ni = 395.30000000000001; // millimolar + const double var_sodium_calcium_exchange_current__K1no = 1628; // millimolar + const double var_sodium_calcium_exchange_current__K2ni = 2.2890000000000001; // millimolar + const double var_sodium_calcium_exchange_current__K2no = 561.39999999999998; // millimolar + const double var_sodium_calcium_exchange_current__K3ni = 26.440000000000001; // millimolar + const double var_sodium_calcium_exchange_current__K3no = 4.6630000000000003; // millimolar + const double var_sodium_calcium_exchange_current__Kci = 0.0207; // millimolar + const double var_sodium_calcium_exchange_current__Kcni = 26.440000000000001; // millimolar + const double var_sodium_calcium_exchange_current__Kco = 3.6629999999999998; // millimolar + const double var_sodium_calcium_exchange_current__Qci = 0.13689999999999999; // dimensionless + const double var_sodium_calcium_exchange_current__Qco = 0; // dimensionless + const double var_sodium_calcium_exchange_current__Qn = 0.43149999999999999; // dimensionless + const double var_sodium_calcium_exchange_current__di = 1 + var_chaste_interface__ion_concentrations__Nai / var_sodium_calcium_exchange_current__K1ni + var_chaste_interface__ion_concentrations__Cai / var_sodium_calcium_exchange_current__Kci + pow(var_chaste_interface__ion_concentrations__Nai, 2) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni) + var_chaste_interface__ion_concentrations__Cai * exp(-var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qci / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__Kci + pow(var_chaste_interface__ion_concentrations__Nai, 3) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni * var_sodium_calcium_exchange_current__K3ni) + var_chaste_interface__ion_concentrations__Cai * var_chaste_interface__ion_concentrations__Nai / (var_sodium_calcium_exchange_current__Kci * var_sodium_calcium_exchange_current__Kcni); // dimensionless + const double var_sodium_calcium_exchange_current__do = 1 + var_chaste_interface__ion_concentrations__Nao / var_sodium_calcium_exchange_current__K1no + var_chaste_interface__ion_concentrations__Cao / var_sodium_calcium_exchange_current__Kco + pow(var_chaste_interface__ion_concentrations__Nao, 2) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no) + var_chaste_interface__ion_concentrations__Cao * exp(var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qco / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__Kco + pow(var_chaste_interface__ion_concentrations__Nao, 3) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no * var_sodium_calcium_exchange_current__K3no); // dimensionless + const double var_sodium_calcium_exchange_current__k12 = var_chaste_interface__ion_concentrations__Cai * exp(-var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qci / (var_constants__R * var_constants__T)) / (var_sodium_calcium_exchange_current__Kci * var_sodium_calcium_exchange_current__di); // dimensionless + const double var_sodium_calcium_exchange_current__k14 = (pow(var_chaste_interface__ion_concentrations__Nai, 2) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni) + pow(var_chaste_interface__ion_concentrations__Nai, 3) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni * var_sodium_calcium_exchange_current__K3ni)) * exp(0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__di; // dimensionless + const double var_sodium_calcium_exchange_current__k21 = var_chaste_interface__ion_concentrations__Cao * exp(-var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qco / (var_constants__R * var_constants__T)) / (var_sodium_calcium_exchange_current__Kco * var_sodium_calcium_exchange_current__do); // dimensionless + const double var_sodium_calcium_exchange_current__k23 = (pow(var_chaste_interface__ion_concentrations__Nao, 2) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no) + pow(var_chaste_interface__ion_concentrations__Nao, 3) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no * var_sodium_calcium_exchange_current__K3no)) * exp(-0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__do; // dimensionless + const double var_sodium_calcium_exchange_current__k32 = exp(0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)); // dimensionless + const double var_sodium_calcium_exchange_current__k34 = var_chaste_interface__ion_concentrations__Nao / (var_chaste_interface__ion_concentrations__Nao + var_sodium_calcium_exchange_current__K3no); // dimensionless + const double var_sodium_calcium_exchange_current__k41 = exp(-0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)); // dimensionless + const double var_sodium_calcium_exchange_current__k43 = var_chaste_interface__ion_concentrations__Nai / (var_chaste_interface__ion_concentrations__Nai + var_sodium_calcium_exchange_current__K3ni); // dimensionless + const double var_sodium_calcium_exchange_current__kNaCa = 4; // picoA + const double var_sodium_calcium_exchange_current__x1 = (var_sodium_calcium_exchange_current__k21 + var_sodium_calcium_exchange_current__k23) * var_sodium_calcium_exchange_current__k34 * var_sodium_calcium_exchange_current__k41 + (var_sodium_calcium_exchange_current__k41 + var_sodium_calcium_exchange_current__k43) * var_sodium_calcium_exchange_current__k21 * var_sodium_calcium_exchange_current__k32; // dimensionless + const double var_sodium_calcium_exchange_current__x2 = (var_sodium_calcium_exchange_current__k12 + var_sodium_calcium_exchange_current__k14) * var_sodium_calcium_exchange_current__k32 * var_sodium_calcium_exchange_current__k43 + (var_sodium_calcium_exchange_current__k32 + var_sodium_calcium_exchange_current__k34) * var_sodium_calcium_exchange_current__k12 * var_sodium_calcium_exchange_current__k41; // dimensionless + const double var_sodium_calcium_exchange_current__x3 = (var_sodium_calcium_exchange_current__k21 + var_sodium_calcium_exchange_current__k23) * var_sodium_calcium_exchange_current__k14 * var_sodium_calcium_exchange_current__k43 + (var_sodium_calcium_exchange_current__k41 + var_sodium_calcium_exchange_current__k43) * var_sodium_calcium_exchange_current__k12 * var_sodium_calcium_exchange_current__k23; // dimensionless + const double var_sodium_calcium_exchange_current__x4 = (var_sodium_calcium_exchange_current__k12 + var_sodium_calcium_exchange_current__k14) * var_sodium_calcium_exchange_current__k23 * var_sodium_calcium_exchange_current__k34 + (var_sodium_calcium_exchange_current__k32 + var_sodium_calcium_exchange_current__k34) * var_sodium_calcium_exchange_current__k14 * var_sodium_calcium_exchange_current__k21; // dimensionless + const double var_sodium_calcium_exchange_current__i_NaCa = (var_sodium_calcium_exchange_current__k21 * var_sodium_calcium_exchange_current__x2 - var_sodium_calcium_exchange_current__k12 * var_sodium_calcium_exchange_current__x1) * var_sodium_calcium_exchange_current__kNaCa / (var_sodium_calcium_exchange_current__x1 + var_sodium_calcium_exchange_current__x2 + var_sodium_calcium_exchange_current__x3 + var_sodium_calcium_exchange_current__x4); // picoA + const double var_sodium_potassium_pump__KmK = 1; // millimolar + const double var_sodium_potassium_pump__KmNa = 40; // millimolar + const double var_sodium_potassium_pump__i_pmax = 0.22600000000000001; // picoA + const double var_sodium_potassium_pump__i_p = (1 - 0.035938096628557313 * pow((-1 + 0.025000000000000001 * var_chaste_interface__membrane__E), 2)) * var_chaste_interface__ion_concentrations__Ko * var_chaste_interface__ion_concentrations__Nai * var_sodium_potassium_pump__i_pmax / ((var_chaste_interface__ion_concentrations__Ko + var_sodium_potassium_pump__KmK) * (var_chaste_interface__ion_concentrations__Nai + var_sodium_potassium_pump__KmNa)); // picoA + const double var_membrane__i_tot = var_L_type_calcium_current__i_CaL + var_T_type_calcium_current__i_CaT + var_background_potassium_current__i_bK + var_background_sodium_current__i_bNa + var_delayed_rectifying_potassium_current__i_K + var_fast_sodium_current__i_Na + var_hyperpolarising_activated_current__i_f + var_sodium_calcium_exchange_current__i_NaCa + var_sodium_potassium_pump__i_p; // picoA + const double var_chaste_interface__i_ionic = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot / var_membrane__C_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Celldokos_model_1996FromCellMLCvodeDataClamp::EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__E = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -64.9 + double var_chaste_interface__ion_concentrations__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 3.4e-05 + double var_chaste_interface__L_type_calcium_current_d_gate__dL = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.0001 + double var_chaste_interface__L_type_calcium_current_f_gate__fL = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.1505 + double var_chaste_interface__L_type_calcium_current_f2_gate__fL2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.219 + double var_chaste_interface__T_type_calcium_current_d_gate__dT = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.001 + double var_chaste_interface__T_type_calcium_current_f_gate__fT = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.1328 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.0139 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.0087 + double var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.5682 + double var_chaste_interface__hyperpolarising_activated_current_y_gate__y = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.0287 + double var_chaste_interface__ion_concentrations__Cao = NV_Ith_S(rY, 11); + // Units: millimolar; Initial value: 2.0004 + double var_chaste_interface__ion_concentrations__Caup = NV_Ith_S(rY, 12); + // Units: millimolar; Initial value: 0.5832 + double var_chaste_interface__ion_concentrations__Carel = NV_Ith_S(rY, 13); + // Units: millimolar; Initial value: 0.1101 + double var_chaste_interface__ion_concentrations__Nai = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 7.4994 + double var_chaste_interface__ion_concentrations__Nao = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 139.9929 + double var_chaste_interface__ion_concentrations__Ki = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 140.0073 + double var_chaste_interface__ion_concentrations__Ko = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 5.4243 + + // Mathematics + double d_dt_chaste_interface_var_membrane__E; + const double var_L_type_calcium_current_d_gate__tau_dL = 0.002; // second + const double var_L_type_calcium_current_f2_gate__alpha_fL2 = 3; // per_second + const double var_L_type_calcium_current_f2_gate__beta_fL2 = 40000; // per_millimolar_second + const double var_T_type_calcium_current__g_CaT = 0.085000000000000006; // nanoS + const double var_background_potassium_current__KbK = 6.9999999999999994e-5; // picoA_per_millimolar + const double var_background_sodium_current__g_Nab = 0.00024000000000000001; // nanoS + const double var_constants__F = 96485.341499999995; // coulomb_per_mole + const double var_constants__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_constants__T = 310; // kelvin + const double var_delayed_rectifying_potassium_current__P_KNa = 0.035000000000000003; // dimensionless + const double var_hyperpolarising_activated_current__Kmf = 10.300000000000001; // millimolar + const double var_ion_concentrations__Cab = 2; // millimolar + const double var_L_type_calcium_current_f2_gate__fL2_orig_deriv = (1 - var_chaste_interface__L_type_calcium_current_f2_gate__fL2) * var_L_type_calcium_current_f2_gate__alpha_fL2 - var_L_type_calcium_current_f2_gate__beta_fL2 * var_chaste_interface__L_type_calcium_current_f2_gate__fL2 * var_chaste_interface__ion_concentrations__Cai; // 1 / second + const double d_dt_chaste_interface_var_L_type_calcium_current_f2_gate__fL2 = 0.001 * var_L_type_calcium_current_f2_gate__fL2_orig_deriv; // 1 / millisecond + const double var_ion_concentrations__Kb = 5.4000000000000004; // millimolar + const double var_ion_concentrations__Nab = 140; // millimolar + const double var_ion_concentrations__V_i = 2.5000000000000002e-6; // microlitre + const double var_ion_concentrations__V_e = 0.20000000000000001 * var_ion_concentrations__V_i; // microlitre + const double var_ion_concentrations__tau_b = 0.10000000000000001; // second + const double var_L_type_calcium_current_d_gate__dL_infinity = 1 / (1 + exp(-1 - 0.15151515151515152 * var_chaste_interface__membrane__E)); // dimensionless + const double var_L_type_calcium_current_d_gate__dL_orig_deriv = (-var_chaste_interface__L_type_calcium_current_d_gate__dL + var_L_type_calcium_current_d_gate__dL_infinity) / var_L_type_calcium_current_d_gate__tau_dL; // 1 / second + const double d_dt_chaste_interface_var_L_type_calcium_current_d_gate__dL = 0.001 * var_L_type_calcium_current_d_gate__dL_orig_deriv; // 1 / millisecond + const double var_L_type_calcium_current_f_gate__fL_infinity = 1 / (1 + exp(4.166666666666667 + 0.16666666666666666 * var_chaste_interface__membrane__E)); // dimensionless + const double var_L_type_calcium_current_f_gate__tau_fL = 0.031 + 1 / (1 + exp(4.6419753086419755 + 0.1234567901234568 * var_chaste_interface__membrane__E)); // second + const double var_L_type_calcium_current_f_gate__fL_orig_deriv = (-var_chaste_interface__L_type_calcium_current_f_gate__fL + var_L_type_calcium_current_f_gate__fL_infinity) / var_L_type_calcium_current_f_gate__tau_fL; // 1 / second + const double d_dt_chaste_interface_var_L_type_calcium_current_f_gate__fL = 0.001 * var_L_type_calcium_current_f_gate__fL_orig_deriv; // 1 / millisecond + const double var_T_type_calcium_current_d_gate__dT_infinity = 1 / (1 + exp(-3.7704918032786887 - 0.16393442622950821 * var_chaste_interface__membrane__E)); // dimensionless + const double var_T_type_calcium_current_d_gate__tau_dT = 0.00059999999999999995 + 0.0054000000000000003 / (1 + exp(3 + 0.029999999999999999 * var_chaste_interface__membrane__E)); // second + const double var_T_type_calcium_current_d_gate__dT_orig_deriv = (-var_chaste_interface__T_type_calcium_current_d_gate__dT + var_T_type_calcium_current_d_gate__dT_infinity) / var_T_type_calcium_current_d_gate__tau_dT; // 1 / second + const double d_dt_chaste_interface_var_T_type_calcium_current_d_gate__dT = 0.001 * var_T_type_calcium_current_d_gate__dT_orig_deriv; // 1 / millisecond + const double var_T_type_calcium_current_f_gate__fT_infinity = 1 / (1 + exp(11.363636363636365 + 0.15151515151515152 * var_chaste_interface__membrane__E)); // dimensionless + const double var_T_type_calcium_current_f_gate__tau_fT = 0.001 + 0.040000000000000001 / (1 + exp(5.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__E)); // second + const double var_T_type_calcium_current_f_gate__fT_orig_deriv = (-var_chaste_interface__T_type_calcium_current_f_gate__fT + var_T_type_calcium_current_f_gate__fT_infinity) / var_T_type_calcium_current_f_gate__tau_fT; // 1 / second + const double d_dt_chaste_interface_var_T_type_calcium_current_f_gate__fT = 0.001 * var_T_type_calcium_current_f_gate__fT_orig_deriv; // 1 / millisecond + const double var_background_potassium_current__i_bK = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.40999999999999998) * (-var_chaste_interface__ion_concentrations__Ko * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Ki) * var_background_potassium_current__KbK; // picoA + const double var_delayed_rectifying_potassium_current__i_KK = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.58999999999999997) * (-var_chaste_interface__ion_concentrations__Ko * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Ki) * NV_Ith_S(mParameters, 3) * var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x; // picoA + const double var_delayed_rectifying_potassium_current__i_KNa = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.58999999999999997) * (-var_chaste_interface__ion_concentrations__Nao * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Nai) * NV_Ith_S(mParameters, 3) * var_delayed_rectifying_potassium_current__P_KNa * var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x; // picoA + const double var_delayed_rectifying_potassium_current_x_gate__tau_x = 1 / (17 * exp(0.039800000000000002 * var_chaste_interface__membrane__E) + 0.21099999999999999 * exp(-0.050999999999999997 * var_chaste_interface__membrane__E)); // second + const double var_delayed_rectifying_potassium_current_x_gate__x_infinity = 1 / (1 + exp(-3.3918918918918921 - 0.13513513513513511 * var_chaste_interface__membrane__E)); // dimensionless + const double var_delayed_rectifying_potassium_current_x_gate__x_orig_deriv = (-var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x + var_delayed_rectifying_potassium_current_x_gate__x_infinity) / var_delayed_rectifying_potassium_current_x_gate__tau_x; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_x_gate__x = 0.001 * var_delayed_rectifying_potassium_current_x_gate__x_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_h_gate__alpha_h = 32.399999999999999 * exp(-13.076000000000002 - 0.14000000000000001 * var_chaste_interface__membrane__E); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 709 / (1 + 4.2000000000000002 * exp(-2.7239999999999998 - 0.059999999999999998 * var_chaste_interface__membrane__E)); // per_second + const double var_fast_sodium_current_h_gate__h_orig_deriv = (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * var_fast_sodium_current_h_gate__alpha_h - var_fast_sodium_current_h_gate__beta_h * var_chaste_interface__fast_sodium_current_h_gate__h; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * var_fast_sodium_current_h_gate__h_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_m_gate__alpha_m = (((var_chaste_interface__membrane__E >= -34.300001111111108) && (var_chaste_interface__membrane__E <= -34.299998888888886)) ? (-0.00022222222222367805 / (1 - exp(1.0000000000065512e-7)) + 449999.99999705196 * (34.300001111111108 + var_chaste_interface__membrane__E) * (0.00022222222222367805 / (1 - exp(1.0000000000065512e-7)) + 0.00022222222222367805 / (1 - exp(-1.0000000000065512e-7)))) : (200 * (34.299999999999997 + var_chaste_interface__membrane__E) / (1 - exp(-3.0869999999999997 - 0.089999999999999997 * var_chaste_interface__membrane__E)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 8000 * exp(-8.4299999999999997 - 0.14999999999999999 * var_chaste_interface__membrane__E); // per_second + const double var_fast_sodium_current_m_gate__m_orig_deriv = (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_hyperpolarising_activated_current_y_gate__alpha_y = (((var_chaste_interface__membrane__E >= -137.80000151515154) && (var_chaste_interface__membrane__E <= -137.79999848484849)) ? (-5.4545454545085189e-7 / (-1 + exp(-9.9999999999322859e-8)) + 330000.00000223459 * (137.80000151515154 + var_chaste_interface__membrane__E) * (5.4545454545085189e-7 / (-1 + exp(9.9999999999322859e-8)) + 5.4545454545085189e-7 / (-1 + exp(-9.9999999999322859e-8)))) : (0.35999999999999999 * (137.80000000000001 + var_chaste_interface__membrane__E) / (-1 + exp(9.0948000000000011 + 0.066000000000000003 * var_chaste_interface__membrane__E)))); // per_second + const double var_hyperpolarising_activated_current_y_gate__beta_y = (((var_chaste_interface__membrane__E >= -76.300000476190476) && (var_chaste_interface__membrane__E <= -76.299999523809518)) ? (-4.7619047616187521e-8 / (1 - exp(9.9999999993993777e-8)) + 1049999.9999406631 * (76.300000476190476 + var_chaste_interface__membrane__E) * (4.7619047627289747e-8 / (1 - exp(-1.0000000001730847e-7)) + 4.7619047616187521e-8 / (1 - exp(9.9999999993993777e-8)))) : (0.10000000000000001 * (76.299999999999997 + var_chaste_interface__membrane__E) / (1 - exp(-16.023 - 0.20999999999999999 * var_chaste_interface__membrane__E)))); // per_second + const double var_hyperpolarising_activated_current_y_gate__y_orig_deriv = (1 - var_chaste_interface__hyperpolarising_activated_current_y_gate__y) * var_hyperpolarising_activated_current_y_gate__alpha_y - var_hyperpolarising_activated_current_y_gate__beta_y * var_chaste_interface__hyperpolarising_activated_current_y_gate__y; // 1 / second + const double d_dt_chaste_interface_var_hyperpolarising_activated_current_y_gate__y = 0.001 * var_hyperpolarising_activated_current_y_gate__y_orig_deriv; // 1 / millisecond + const double var_reversal_potentials__E_Ca = 0.5 * var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Cao / var_chaste_interface__ion_concentrations__Cai) / var_constants__F; // millivolt + const double var_L_type_calcium_current__i_CaL = (75 - var_reversal_potentials__E_Ca + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 0) * var_chaste_interface__L_type_calcium_current_d_gate__dL * var_chaste_interface__L_type_calcium_current_f2_gate__fL2 * var_chaste_interface__L_type_calcium_current_f_gate__fL; // picoA + const double var_T_type_calcium_current__i_CaT = (75 - var_reversal_potentials__E_Ca + var_chaste_interface__membrane__E) * var_T_type_calcium_current__g_CaT * var_chaste_interface__T_type_calcium_current_d_gate__dT * var_chaste_interface__T_type_calcium_current_f_gate__fT; // picoA + const double var_reversal_potentials__E_K = var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Ko / var_chaste_interface__ion_concentrations__Ki) / var_constants__F; // millivolt + const double var_hyperpolarising_activated_current__i_fK = pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001) * (-var_reversal_potentials__E_K + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 5) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (pow(var_hyperpolarising_activated_current__Kmf, 1.8300000000000001) + pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001)); // picoA + const double var_reversal_potentials__E_Na = var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Nao / var_chaste_interface__ion_concentrations__Nai) / var_constants__F; // millivolt + const double var_background_sodium_current__i_bNa = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * var_background_sodium_current__g_Nab; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 4) * var_chaste_interface__fast_sodium_current_h_gate__h; // picoA + const double var_hyperpolarising_activated_current__i_fNa = pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001) * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 6) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (pow(var_hyperpolarising_activated_current__Kmf, 1.8300000000000001) + pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001)); // picoA + const double var_sarcoplasmic_reticulum_kinetics__KmCarel = 0.001; // millimolar + const double var_sarcoplasmic_reticulum_kinetics__KmCaup = 0.00050000000000000001; // millimolar + const double var_sarcoplasmic_reticulum_kinetics__V_rel = 0.0060000000000000001 * var_ion_concentrations__V_i; // microlitre + const double var_sarcoplasmic_reticulum_kinetics__V_up = 0.014 * var_ion_concentrations__V_i; // microlitre + const double var_sarcoplasmic_reticulum_kinetics__i_up_max = 0.0212; // picoA + const double var_sarcoplasmic_reticulum_kinetics__i_up = pow(var_chaste_interface__ion_concentrations__Cai, 2) * var_sarcoplasmic_reticulum_kinetics__i_up_max / (pow(var_chaste_interface__ion_concentrations__Cai, 2) + pow(var_sarcoplasmic_reticulum_kinetics__KmCaup, 2)); // picoA + const double var_sarcoplasmic_reticulum_kinetics__tau_rel = 0.0050000000000000001; // second + const double var_sarcoplasmic_reticulum_kinetics__i_rel = 2 * pow(var_chaste_interface__ion_concentrations__Cai, 2) * var_constants__F * var_chaste_interface__ion_concentrations__Carel * var_sarcoplasmic_reticulum_kinetics__V_rel / ((pow(var_chaste_interface__ion_concentrations__Cai, 2) + pow(var_sarcoplasmic_reticulum_kinetics__KmCarel, 2)) * var_sarcoplasmic_reticulum_kinetics__tau_rel); // picoA + const double var_sarcoplasmic_reticulum_kinetics__tau_tr = 0.40000000000000002; // second + const double var_sarcoplasmic_reticulum_kinetics__i_tr = 2 * var_constants__F * var_chaste_interface__ion_concentrations__Caup * var_sarcoplasmic_reticulum_kinetics__V_rel / var_sarcoplasmic_reticulum_kinetics__tau_tr; // picoA + const double var_ion_concentrations__Carel_orig_deriv = 0.5 * (-var_sarcoplasmic_reticulum_kinetics__i_rel + var_sarcoplasmic_reticulum_kinetics__i_tr) / (var_constants__F * var_sarcoplasmic_reticulum_kinetics__V_rel); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Carel = 0.001 * var_ion_concentrations__Carel_orig_deriv; // millimolar / millisecond + const double var_ion_concentrations__Caup_orig_deriv = 0.5 * (-var_sarcoplasmic_reticulum_kinetics__i_tr + var_sarcoplasmic_reticulum_kinetics__i_up) / (var_constants__F * var_sarcoplasmic_reticulum_kinetics__V_up); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Caup = 0.001 * var_ion_concentrations__Caup_orig_deriv; // millimolar / millisecond + const double var_sodium_calcium_exchange_current__K1ni = 395.30000000000001; // millimolar + const double var_sodium_calcium_exchange_current__K1no = 1628; // millimolar + const double var_sodium_calcium_exchange_current__K2ni = 2.2890000000000001; // millimolar + const double var_sodium_calcium_exchange_current__K2no = 561.39999999999998; // millimolar + const double var_sodium_calcium_exchange_current__K3ni = 26.440000000000001; // millimolar + const double var_sodium_calcium_exchange_current__K3no = 4.6630000000000003; // millimolar + const double var_sodium_calcium_exchange_current__Kci = 0.0207; // millimolar + const double var_sodium_calcium_exchange_current__Kcni = 26.440000000000001; // millimolar + const double var_sodium_calcium_exchange_current__Kco = 3.6629999999999998; // millimolar + const double var_sodium_calcium_exchange_current__Qci = 0.13689999999999999; // dimensionless + const double var_sodium_calcium_exchange_current__Qco = 0; // dimensionless + const double var_sodium_calcium_exchange_current__Qn = 0.43149999999999999; // dimensionless + const double var_sodium_calcium_exchange_current__di = 1 + var_chaste_interface__ion_concentrations__Nai / var_sodium_calcium_exchange_current__K1ni + var_chaste_interface__ion_concentrations__Cai / var_sodium_calcium_exchange_current__Kci + pow(var_chaste_interface__ion_concentrations__Nai, 2) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni) + var_chaste_interface__ion_concentrations__Cai * exp(-var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qci / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__Kci + pow(var_chaste_interface__ion_concentrations__Nai, 3) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni * var_sodium_calcium_exchange_current__K3ni) + var_chaste_interface__ion_concentrations__Cai * var_chaste_interface__ion_concentrations__Nai / (var_sodium_calcium_exchange_current__Kci * var_sodium_calcium_exchange_current__Kcni); // dimensionless + const double var_sodium_calcium_exchange_current__do = 1 + var_chaste_interface__ion_concentrations__Nao / var_sodium_calcium_exchange_current__K1no + var_chaste_interface__ion_concentrations__Cao / var_sodium_calcium_exchange_current__Kco + pow(var_chaste_interface__ion_concentrations__Nao, 2) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no) + var_chaste_interface__ion_concentrations__Cao * exp(var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qco / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__Kco + pow(var_chaste_interface__ion_concentrations__Nao, 3) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no * var_sodium_calcium_exchange_current__K3no); // dimensionless + const double var_sodium_calcium_exchange_current__k12 = var_chaste_interface__ion_concentrations__Cai * exp(-var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qci / (var_constants__R * var_constants__T)) / (var_sodium_calcium_exchange_current__Kci * var_sodium_calcium_exchange_current__di); // dimensionless + const double var_sodium_calcium_exchange_current__k14 = (pow(var_chaste_interface__ion_concentrations__Nai, 2) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni) + pow(var_chaste_interface__ion_concentrations__Nai, 3) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni * var_sodium_calcium_exchange_current__K3ni)) * exp(0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__di; // dimensionless + const double var_sodium_calcium_exchange_current__k21 = var_chaste_interface__ion_concentrations__Cao * exp(-var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qco / (var_constants__R * var_constants__T)) / (var_sodium_calcium_exchange_current__Kco * var_sodium_calcium_exchange_current__do); // dimensionless + const double var_sodium_calcium_exchange_current__k23 = (pow(var_chaste_interface__ion_concentrations__Nao, 2) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no) + pow(var_chaste_interface__ion_concentrations__Nao, 3) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no * var_sodium_calcium_exchange_current__K3no)) * exp(-0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__do; // dimensionless + const double var_sodium_calcium_exchange_current__k32 = exp(0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)); // dimensionless + const double var_sodium_calcium_exchange_current__k34 = var_chaste_interface__ion_concentrations__Nao / (var_chaste_interface__ion_concentrations__Nao + var_sodium_calcium_exchange_current__K3no); // dimensionless + const double var_sodium_calcium_exchange_current__k41 = exp(-0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)); // dimensionless + const double var_sodium_calcium_exchange_current__k43 = var_chaste_interface__ion_concentrations__Nai / (var_chaste_interface__ion_concentrations__Nai + var_sodium_calcium_exchange_current__K3ni); // dimensionless + const double var_sodium_calcium_exchange_current__kNaCa = 4; // picoA + const double var_sodium_calcium_exchange_current__x1 = (var_sodium_calcium_exchange_current__k21 + var_sodium_calcium_exchange_current__k23) * var_sodium_calcium_exchange_current__k34 * var_sodium_calcium_exchange_current__k41 + (var_sodium_calcium_exchange_current__k41 + var_sodium_calcium_exchange_current__k43) * var_sodium_calcium_exchange_current__k21 * var_sodium_calcium_exchange_current__k32; // dimensionless + const double var_sodium_calcium_exchange_current__x2 = (var_sodium_calcium_exchange_current__k12 + var_sodium_calcium_exchange_current__k14) * var_sodium_calcium_exchange_current__k32 * var_sodium_calcium_exchange_current__k43 + (var_sodium_calcium_exchange_current__k32 + var_sodium_calcium_exchange_current__k34) * var_sodium_calcium_exchange_current__k12 * var_sodium_calcium_exchange_current__k41; // dimensionless + const double var_sodium_calcium_exchange_current__x3 = (var_sodium_calcium_exchange_current__k21 + var_sodium_calcium_exchange_current__k23) * var_sodium_calcium_exchange_current__k14 * var_sodium_calcium_exchange_current__k43 + (var_sodium_calcium_exchange_current__k41 + var_sodium_calcium_exchange_current__k43) * var_sodium_calcium_exchange_current__k12 * var_sodium_calcium_exchange_current__k23; // dimensionless + const double var_sodium_calcium_exchange_current__x4 = (var_sodium_calcium_exchange_current__k12 + var_sodium_calcium_exchange_current__k14) * var_sodium_calcium_exchange_current__k23 * var_sodium_calcium_exchange_current__k34 + (var_sodium_calcium_exchange_current__k32 + var_sodium_calcium_exchange_current__k34) * var_sodium_calcium_exchange_current__k14 * var_sodium_calcium_exchange_current__k21; // dimensionless + const double var_sodium_calcium_exchange_current__i_NaCa = (var_sodium_calcium_exchange_current__k21 * var_sodium_calcium_exchange_current__x2 - var_sodium_calcium_exchange_current__k12 * var_sodium_calcium_exchange_current__x1) * var_sodium_calcium_exchange_current__kNaCa / (var_sodium_calcium_exchange_current__x1 + var_sodium_calcium_exchange_current__x2 + var_sodium_calcium_exchange_current__x3 + var_sodium_calcium_exchange_current__x4); // picoA + const double var_ion_concentrations__Cai_orig_deriv = -0.5 * (-var_sarcoplasmic_reticulum_kinetics__i_rel - 2 * var_sodium_calcium_exchange_current__i_NaCa + var_L_type_calcium_current__i_CaL + var_T_type_calcium_current__i_CaT + var_sarcoplasmic_reticulum_kinetics__i_up) / (var_constants__F * var_ion_concentrations__V_i); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Cai = 0.001 * var_ion_concentrations__Cai_orig_deriv; // millimolar / millisecond + const double var_ion_concentrations__Cao_orig_deriv = (-var_chaste_interface__ion_concentrations__Cao + var_ion_concentrations__Cab) / var_ion_concentrations__tau_b + 0.5 * (-2 * var_sodium_calcium_exchange_current__i_NaCa + var_L_type_calcium_current__i_CaL + var_T_type_calcium_current__i_CaT) / (var_constants__F * var_ion_concentrations__V_e); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Cao = 0.001 * var_ion_concentrations__Cao_orig_deriv; // millimolar / millisecond + const double var_sodium_potassium_pump__KmK = 1; // millimolar + const double var_sodium_potassium_pump__KmNa = 40; // millimolar + const double var_sodium_potassium_pump__i_pmax = 0.22600000000000001; // picoA + const double var_sodium_potassium_pump__i_p = (1 - 0.035938096628557313 * pow((-1 + 0.025000000000000001 * var_chaste_interface__membrane__E), 2)) * var_chaste_interface__ion_concentrations__Ko * var_chaste_interface__ion_concentrations__Nai * var_sodium_potassium_pump__i_pmax / ((var_chaste_interface__ion_concentrations__Ko + var_sodium_potassium_pump__KmK) * (var_chaste_interface__ion_concentrations__Nai + var_sodium_potassium_pump__KmNa)); // picoA + const double var_ion_concentrations__Ki_orig_deriv = -1 * (-2 * var_sodium_potassium_pump__i_p + var_background_potassium_current__i_bK + var_delayed_rectifying_potassium_current__i_KK + var_hyperpolarising_activated_current__i_fK) / (var_constants__F * var_ion_concentrations__V_i); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Ki = 0.001 * var_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond + const double var_ion_concentrations__Ko_orig_deriv = (-var_chaste_interface__ion_concentrations__Ko + var_ion_concentrations__Kb) / var_ion_concentrations__tau_b + 1 * (-2 * var_sodium_potassium_pump__i_p + var_background_potassium_current__i_bK + var_delayed_rectifying_potassium_current__i_KK + var_hyperpolarising_activated_current__i_fK) / (var_constants__F * var_ion_concentrations__V_e); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Ko = 0.001 * var_ion_concentrations__Ko_orig_deriv; // millimolar / millisecond + const double var_ion_concentrations__Nai_orig_deriv = -1 * (3 * var_sodium_calcium_exchange_current__i_NaCa + 3 * var_sodium_potassium_pump__i_p + var_background_sodium_current__i_bNa + var_delayed_rectifying_potassium_current__i_KNa + var_fast_sodium_current__i_Na + var_hyperpolarising_activated_current__i_fNa) / (var_constants__F * var_ion_concentrations__V_i); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Nai = 0.001 * var_ion_concentrations__Nai_orig_deriv; // millimolar / millisecond + const double var_ion_concentrations__Nao_orig_deriv = (-var_chaste_interface__ion_concentrations__Nao + var_ion_concentrations__Nab) / var_ion_concentrations__tau_b + 1 * (3 * var_sodium_calcium_exchange_current__i_NaCa + 3 * var_sodium_potassium_pump__i_p + var_background_sodium_current__i_bNa + var_delayed_rectifying_potassium_current__i_KNa + var_fast_sodium_current__i_Na + var_hyperpolarising_activated_current__i_fNa) / (var_constants__F * var_ion_concentrations__V_e); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Nao = 0.001 * var_ion_concentrations__Nao_orig_deriv; // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__E = 0.0; + } + else + { + const double var_delayed_rectifying_potassium_current__i_K = var_delayed_rectifying_potassium_current__i_KK + var_delayed_rectifying_potassium_current__i_KNa; // picoA + const double var_hyperpolarising_activated_current__i_f = var_hyperpolarising_activated_current__i_fK + var_hyperpolarising_activated_current__i_fNa; // picoA + const double var_membrane__i_tot = var_L_type_calcium_current__i_CaL + var_T_type_calcium_current__i_CaT + var_background_potassium_current__i_bK + var_background_sodium_current__i_bNa + var_delayed_rectifying_potassium_current__i_K + var_fast_sodium_current__i_Na + var_hyperpolarising_activated_current__i_f + var_sodium_calcium_exchange_current__i_NaCa + var_sodium_potassium_pump__i_p; // picoA + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time_converted) + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 2); // uA_per_cm2 + } + const double var_membrane__E_orig_deriv = -(var_membrane__i_tot + var_chaste_interface__membrane_data_clamp_current) / NV_Ith_S(mParameters, 1); // millivolt / second + d_dt_chaste_interface_var_membrane__E = 0.001 * var_membrane__E_orig_deriv; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__E; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_ion_concentrations__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_L_type_calcium_current_d_gate__dL; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_L_type_calcium_current_f_gate__fL; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_L_type_calcium_current_f2_gate__fL2; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_T_type_calcium_current_d_gate__dT; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_T_type_calcium_current_f_gate__fT; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_delayed_rectifying_potassium_current_x_gate__x; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_hyperpolarising_activated_current_y_gate__y; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_ion_concentrations__Cao; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_ion_concentrations__Caup; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_ion_concentrations__Carel; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_ion_concentrations__Nai; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_ion_concentrations__Nao; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_ion_concentrations__Ki; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_ion_concentrations__Ko; + } + + N_Vector Celldokos_model_1996FromCellMLCvodeDataClamp::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__E = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -64.9 + double var_chaste_interface__ion_concentrations__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 3.4e-05 + double var_chaste_interface__L_type_calcium_current_d_gate__dL = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.0001 + double var_chaste_interface__L_type_calcium_current_f_gate__fL = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.1505 + double var_chaste_interface__L_type_calcium_current_f2_gate__fL2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.219 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.0139 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.0087 + double var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.5682 + double var_chaste_interface__hyperpolarising_activated_current_y_gate__y = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.0287 + double var_chaste_interface__ion_concentrations__Cao = NV_Ith_S(rY, 11); + // Units: millimolar; Initial value: 2.0004 + double var_chaste_interface__ion_concentrations__Nai = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 7.4994 + double var_chaste_interface__ion_concentrations__Nao = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 139.9929 + double var_chaste_interface__ion_concentrations__Ki = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 140.0073 + double var_chaste_interface__ion_concentrations__Ko = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 5.4243 + + // Mathematics + const double var_constants__F = 96485.341499999995; // coulomb_per_mole + const double var_constants__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_constants__T = 310; // kelvin + const double var_delayed_rectifying_potassium_current__P_KNa = 0.035000000000000003; // dimensionless + const double var_hyperpolarising_activated_current__Kmf = 10.300000000000001; // millimolar + const double var_membrane__C_converted = 0.001 * NV_Ith_S(mParameters, 1); // uF + const double var_delayed_rectifying_potassium_current__i_KK = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.58999999999999997) * (-var_chaste_interface__ion_concentrations__Ko * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Ki) * NV_Ith_S(mParameters, 3) * var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x; // picoA + const double var_delayed_rectifying_potassium_current__i_KNa = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.58999999999999997) * (-var_chaste_interface__ion_concentrations__Nao * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Nai) * NV_Ith_S(mParameters, 3) * var_delayed_rectifying_potassium_current__P_KNa * var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x; // picoA + const double var_delayed_rectifying_potassium_current__i_K = var_delayed_rectifying_potassium_current__i_KK + var_delayed_rectifying_potassium_current__i_KNa; // picoA + const double var_delayed_rectifying_potassium_current__i_K_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifying_potassium_current__i_K / var_membrane__C_converted; // uA_per_cm2 + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time_converted) + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 2); // uA_per_cm2 + } + const double var_reversal_potentials__E_Ca = 0.5 * var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Cao / var_chaste_interface__ion_concentrations__Cai) / var_constants__F; // millivolt + const double var_L_type_calcium_current__i_CaL = (75 - var_reversal_potentials__E_Ca + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 0) * var_chaste_interface__L_type_calcium_current_d_gate__dL * var_chaste_interface__L_type_calcium_current_f2_gate__fL2 * var_chaste_interface__L_type_calcium_current_f_gate__fL; // picoA + const double var_L_type_calcium_current__i_CaL_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL / var_membrane__C_converted; // uA_per_cm2 + const double var_reversal_potentials__E_K = var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Ko / var_chaste_interface__ion_concentrations__Ki) / var_constants__F; // millivolt + const double var_hyperpolarising_activated_current__i_fK = pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001) * (-var_reversal_potentials__E_K + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 5) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (pow(var_hyperpolarising_activated_current__Kmf, 1.8300000000000001) + pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001)); // picoA + const double var_reversal_potentials__E_Na = var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Nao / var_chaste_interface__ion_concentrations__Nai) / var_constants__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 4) * var_chaste_interface__fast_sodium_current_h_gate__h; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__C_converted; // uA_per_cm2 + const double var_hyperpolarising_activated_current__i_fNa = pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001) * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 6) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (pow(var_hyperpolarising_activated_current__Kmf, 1.8300000000000001) + pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001)); // picoA + const double var_hyperpolarising_activated_current__i_f = var_hyperpolarising_activated_current__i_fK + var_hyperpolarising_activated_current__i_fNa; // picoA + const double var_hyperpolarising_activated_current__i_f_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_hyperpolarising_activated_current__i_f / var_membrane__C_converted; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(9, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(9); +#endif + NV_Ith_S(dqs, 0) = var_L_type_calcium_current__i_CaL_converted; + NV_Ith_S(dqs, 1) = var_membrane__C_converted; + NV_Ith_S(dqs, 2) = var_chaste_interface__membrane_data_clamp_current; + NV_Ith_S(dqs, 3) = var_delayed_rectifying_potassium_current__i_K_converted; + NV_Ith_S(dqs, 4) = var_fast_sodium_current__i_Na_converted; + NV_Ith_S(dqs, 5) = var_hyperpolarising_activated_current__i_f_converted; + NV_Ith_S(dqs, 6) = var_hyperpolarising_activated_current__i_fK; + NV_Ith_S(dqs, 7) = var_hyperpolarising_activated_current__i_fNa; + NV_Ith_S(dqs, 8) = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "dokos_model_1996"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-64.9); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(3.4e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("L_type_calcium_current_d_gate__dL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0001); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("L_type_calcium_current_f_gate__fL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.1505); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("L_type_calcium_current_f2_gate__fL2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.219); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("T_type_calcium_current_d_gate__dT"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("T_type_calcium_current_f_gate__fT"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.1328); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("fast_sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0139); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("fast_sodium_current_h_gate__h"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0087); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("delayed_rectifying_potassium_current_x_gate__x"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.5682); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("hyperpolarising_activated_current_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0287); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("extracellular_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.0004); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("ion_concentrations__Caup"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.5832); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("ion_concentrations__Carel"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.1101); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(7.4994); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("extracellular_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(139.9929); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(140.0073); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("extracellular_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(5.4243); + + // mParameters[0]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[1]: + this->mParameterNames.push_back("membrane__C"); + this->mParameterUnits.push_back("nanoF"); + + // mParameters[2]: + this->mParameterNames.push_back("membrane_data_clamp_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_data_clamp_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component"); + this->mDerivedQuantityUnits.push_back("picoA"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component"); + this->mDerivedQuantityUnits.push_back("picoA"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Celldokos_model_1996FromCellMLCvodeDataClamp) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996--sympy_1_14.cpp new file mode 100644 index 00000000..a664213c --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dokos_model_1996--sympy_1_14.cpp @@ -0,0 +1,666 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: dokos_model_1996 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: CvodeCellWithDataClamp) +//! on (date omitted as unimportant) +//! +//! + +#include "dokos_model_1996.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + + + + + double Celldokos_model_1996FromCellMLCvodeDataClamp::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Celldokos_model_1996FromCellMLCvodeDataClamp::Celldokos_model_1996FromCellMLCvodeDataClamp(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCellWithDataClamp( + pOdeSolver, + 18, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + NV_Ith_S(this->mParameters, 0) = 0.40000000000000002; // (var_L_type_calcium_current__g_CaL) [nanoS] + NV_Ith_S(this->mParameters, 1) = 3.1999999999999999e-5; // (var_membrane__C) [nanoF] + NV_Ith_S(this->mParameters, 2) = 0; // (var_membrane_data_clamp_current_conductance) [dimensionless] + NV_Ith_S(this->mParameters, 3) = 0.00025999999999999998; // (var_delayed_rectifying_potassium_current__Kk) [picoA_per_millimolar] + NV_Ith_S(this->mParameters, 4) = 0.25; // (var_fast_sodium_current__g_Na) [nanoS] + NV_Ith_S(this->mParameters, 5) = 0.0135; // (var_hyperpolarising_activated_current__g_fK) [nanoS] + NV_Ith_S(this->mParameters, 6) = 0.0080999999999999996; // (var_hyperpolarising_activated_current__g_fNa) [nanoS] + } + + Celldokos_model_1996FromCellMLCvodeDataClamp::~Celldokos_model_1996FromCellMLCvodeDataClamp() + { + } + + + void Celldokos_model_1996FromCellMLCvodeDataClamp::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 18; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Celldokos_model_1996FromCellMLCvodeDataClamp::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane__E = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -64.9 + double var_chaste_interface__ion_concentrations__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 3.4e-05 + double var_chaste_interface__L_type_calcium_current_d_gate__dL = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.0001 + double var_chaste_interface__L_type_calcium_current_f_gate__fL = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.1505 + double var_chaste_interface__L_type_calcium_current_f2_gate__fL2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.219 + double var_chaste_interface__T_type_calcium_current_d_gate__dT = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.001 + double var_chaste_interface__T_type_calcium_current_f_gate__fT = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.1328 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.0139 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.0087 + double var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.5682 + double var_chaste_interface__hyperpolarising_activated_current_y_gate__y = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.0287 + double var_chaste_interface__ion_concentrations__Cao = NV_Ith_S(rY, 11); + // Units: millimolar; Initial value: 2.0004 + double var_chaste_interface__ion_concentrations__Nai = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 7.4994 + double var_chaste_interface__ion_concentrations__Nao = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 139.9929 + double var_chaste_interface__ion_concentrations__Ki = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 140.0073 + double var_chaste_interface__ion_concentrations__Ko = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 5.4243 + + const double var_T_type_calcium_current__g_CaT = 0.085000000000000006; // nanoS + const double var_background_potassium_current__KbK = 6.9999999999999994e-5; // picoA_per_millimolar + const double var_background_sodium_current__g_Nab = 0.00024000000000000001; // nanoS + const double var_constants__F = 96485.341499999995; // coulomb_per_mole + const double var_constants__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_constants__T = 310; // kelvin + const double var_delayed_rectifying_potassium_current__P_KNa = 0.035000000000000003; // dimensionless + const double var_hyperpolarising_activated_current__Kmf = 10.300000000000001; // millimolar + const double var_membrane__C_converted = 0.001 * NV_Ith_S(mParameters, 1); // uF + const double var_background_potassium_current__i_bK = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.40999999999999998) * (-var_chaste_interface__ion_concentrations__Ko * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Ki) * var_background_potassium_current__KbK; // picoA + const double var_delayed_rectifying_potassium_current__i_KK = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.58999999999999997) * (-var_chaste_interface__ion_concentrations__Ko * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Ki) * NV_Ith_S(mParameters, 3) * var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x; // picoA + const double var_delayed_rectifying_potassium_current__i_KNa = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.58999999999999997) * (-var_chaste_interface__ion_concentrations__Nao * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Nai) * NV_Ith_S(mParameters, 3) * var_delayed_rectifying_potassium_current__P_KNa * var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x; // picoA + const double var_delayed_rectifying_potassium_current__i_K = var_delayed_rectifying_potassium_current__i_KK + var_delayed_rectifying_potassium_current__i_KNa; // picoA + const double var_reversal_potentials__E_Ca = 0.5 * var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Cao / var_chaste_interface__ion_concentrations__Cai) / var_constants__F; // millivolt + const double var_L_type_calcium_current__i_CaL = (75 - var_reversal_potentials__E_Ca + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 0) * var_chaste_interface__L_type_calcium_current_d_gate__dL * var_chaste_interface__L_type_calcium_current_f2_gate__fL2 * var_chaste_interface__L_type_calcium_current_f_gate__fL; // picoA + const double var_T_type_calcium_current__i_CaT = (75 - var_reversal_potentials__E_Ca + var_chaste_interface__membrane__E) * var_T_type_calcium_current__g_CaT * var_chaste_interface__T_type_calcium_current_d_gate__dT * var_chaste_interface__T_type_calcium_current_f_gate__fT; // picoA + const double var_reversal_potentials__E_K = var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Ko / var_chaste_interface__ion_concentrations__Ki) / var_constants__F; // millivolt + const double var_hyperpolarising_activated_current__i_fK = pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001) * (-var_reversal_potentials__E_K + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 5) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (pow(var_hyperpolarising_activated_current__Kmf, 1.8300000000000001) + pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001)); // picoA + const double var_reversal_potentials__E_Na = var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Nao / var_chaste_interface__ion_concentrations__Nai) / var_constants__F; // millivolt + const double var_background_sodium_current__i_bNa = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * var_background_sodium_current__g_Nab; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 4) * var_chaste_interface__fast_sodium_current_h_gate__h; // picoA + const double var_hyperpolarising_activated_current__i_fNa = pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001) * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 6) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (pow(var_hyperpolarising_activated_current__Kmf, 1.8300000000000001) + pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001)); // picoA + const double var_hyperpolarising_activated_current__i_f = var_hyperpolarising_activated_current__i_fK + var_hyperpolarising_activated_current__i_fNa; // picoA + const double var_sodium_calcium_exchange_current__K1ni = 395.30000000000001; // millimolar + const double var_sodium_calcium_exchange_current__K1no = 1628; // millimolar + const double var_sodium_calcium_exchange_current__K2ni = 2.2890000000000001; // millimolar + const double var_sodium_calcium_exchange_current__K2no = 561.39999999999998; // millimolar + const double var_sodium_calcium_exchange_current__K3ni = 26.440000000000001; // millimolar + const double var_sodium_calcium_exchange_current__K3no = 4.6630000000000003; // millimolar + const double var_sodium_calcium_exchange_current__Kci = 0.0207; // millimolar + const double var_sodium_calcium_exchange_current__Kcni = 26.440000000000001; // millimolar + const double var_sodium_calcium_exchange_current__Kco = 3.6629999999999998; // millimolar + const double var_sodium_calcium_exchange_current__Qci = 0.13689999999999999; // dimensionless + const double var_sodium_calcium_exchange_current__Qco = 0; // dimensionless + const double var_sodium_calcium_exchange_current__Qn = 0.43149999999999999; // dimensionless + const double var_sodium_calcium_exchange_current__di = 1 + var_chaste_interface__ion_concentrations__Nai / var_sodium_calcium_exchange_current__K1ni + var_chaste_interface__ion_concentrations__Cai / var_sodium_calcium_exchange_current__Kci + pow(var_chaste_interface__ion_concentrations__Nai, 2) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni) + var_chaste_interface__ion_concentrations__Cai * exp(-var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qci / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__Kci + pow(var_chaste_interface__ion_concentrations__Nai, 3) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni * var_sodium_calcium_exchange_current__K3ni) + var_chaste_interface__ion_concentrations__Cai * var_chaste_interface__ion_concentrations__Nai / (var_sodium_calcium_exchange_current__Kci * var_sodium_calcium_exchange_current__Kcni); // dimensionless + const double var_sodium_calcium_exchange_current__do = 1 + var_chaste_interface__ion_concentrations__Nao / var_sodium_calcium_exchange_current__K1no + var_chaste_interface__ion_concentrations__Cao / var_sodium_calcium_exchange_current__Kco + pow(var_chaste_interface__ion_concentrations__Nao, 2) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no) + var_chaste_interface__ion_concentrations__Cao * exp(var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qco / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__Kco + pow(var_chaste_interface__ion_concentrations__Nao, 3) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no * var_sodium_calcium_exchange_current__K3no); // dimensionless + const double var_sodium_calcium_exchange_current__k12 = var_chaste_interface__ion_concentrations__Cai * exp(-var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qci / (var_constants__R * var_constants__T)) / (var_sodium_calcium_exchange_current__Kci * var_sodium_calcium_exchange_current__di); // dimensionless + const double var_sodium_calcium_exchange_current__k14 = (pow(var_chaste_interface__ion_concentrations__Nai, 2) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni) + pow(var_chaste_interface__ion_concentrations__Nai, 3) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni * var_sodium_calcium_exchange_current__K3ni)) * exp(0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__di; // dimensionless + const double var_sodium_calcium_exchange_current__k21 = var_chaste_interface__ion_concentrations__Cao * exp(-var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qco / (var_constants__R * var_constants__T)) / (var_sodium_calcium_exchange_current__Kco * var_sodium_calcium_exchange_current__do); // dimensionless + const double var_sodium_calcium_exchange_current__k23 = (pow(var_chaste_interface__ion_concentrations__Nao, 2) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no) + pow(var_chaste_interface__ion_concentrations__Nao, 3) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no * var_sodium_calcium_exchange_current__K3no)) * exp(-0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__do; // dimensionless + const double var_sodium_calcium_exchange_current__k32 = exp(0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)); // dimensionless + const double var_sodium_calcium_exchange_current__k34 = var_chaste_interface__ion_concentrations__Nao / (var_chaste_interface__ion_concentrations__Nao + var_sodium_calcium_exchange_current__K3no); // dimensionless + const double var_sodium_calcium_exchange_current__k41 = exp(-0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)); // dimensionless + const double var_sodium_calcium_exchange_current__k43 = var_chaste_interface__ion_concentrations__Nai / (var_chaste_interface__ion_concentrations__Nai + var_sodium_calcium_exchange_current__K3ni); // dimensionless + const double var_sodium_calcium_exchange_current__kNaCa = 4; // picoA + const double var_sodium_calcium_exchange_current__x1 = (var_sodium_calcium_exchange_current__k21 + var_sodium_calcium_exchange_current__k23) * var_sodium_calcium_exchange_current__k34 * var_sodium_calcium_exchange_current__k41 + (var_sodium_calcium_exchange_current__k41 + var_sodium_calcium_exchange_current__k43) * var_sodium_calcium_exchange_current__k21 * var_sodium_calcium_exchange_current__k32; // dimensionless + const double var_sodium_calcium_exchange_current__x2 = (var_sodium_calcium_exchange_current__k12 + var_sodium_calcium_exchange_current__k14) * var_sodium_calcium_exchange_current__k32 * var_sodium_calcium_exchange_current__k43 + (var_sodium_calcium_exchange_current__k32 + var_sodium_calcium_exchange_current__k34) * var_sodium_calcium_exchange_current__k12 * var_sodium_calcium_exchange_current__k41; // dimensionless + const double var_sodium_calcium_exchange_current__x3 = (var_sodium_calcium_exchange_current__k21 + var_sodium_calcium_exchange_current__k23) * var_sodium_calcium_exchange_current__k14 * var_sodium_calcium_exchange_current__k43 + (var_sodium_calcium_exchange_current__k41 + var_sodium_calcium_exchange_current__k43) * var_sodium_calcium_exchange_current__k12 * var_sodium_calcium_exchange_current__k23; // dimensionless + const double var_sodium_calcium_exchange_current__x4 = (var_sodium_calcium_exchange_current__k12 + var_sodium_calcium_exchange_current__k14) * var_sodium_calcium_exchange_current__k23 * var_sodium_calcium_exchange_current__k34 + (var_sodium_calcium_exchange_current__k32 + var_sodium_calcium_exchange_current__k34) * var_sodium_calcium_exchange_current__k14 * var_sodium_calcium_exchange_current__k21; // dimensionless + const double var_sodium_calcium_exchange_current__i_NaCa = (var_sodium_calcium_exchange_current__k21 * var_sodium_calcium_exchange_current__x2 - var_sodium_calcium_exchange_current__k12 * var_sodium_calcium_exchange_current__x1) * var_sodium_calcium_exchange_current__kNaCa / (var_sodium_calcium_exchange_current__x1 + var_sodium_calcium_exchange_current__x2 + var_sodium_calcium_exchange_current__x3 + var_sodium_calcium_exchange_current__x4); // picoA + const double var_sodium_potassium_pump__KmK = 1; // millimolar + const double var_sodium_potassium_pump__KmNa = 40; // millimolar + const double var_sodium_potassium_pump__i_pmax = 0.22600000000000001; // picoA + const double var_sodium_potassium_pump__i_p = (1 - pow((-0.1895734597156398 + 0.0047393364928909956 * var_chaste_interface__membrane__E), 2)) * var_chaste_interface__ion_concentrations__Ko * var_chaste_interface__ion_concentrations__Nai * var_sodium_potassium_pump__i_pmax / ((var_chaste_interface__ion_concentrations__Ko + var_sodium_potassium_pump__KmK) * (var_chaste_interface__ion_concentrations__Nai + var_sodium_potassium_pump__KmNa)); // picoA + const double var_membrane__i_tot = var_L_type_calcium_current__i_CaL + var_T_type_calcium_current__i_CaT + var_background_potassium_current__i_bK + var_background_sodium_current__i_bNa + var_delayed_rectifying_potassium_current__i_K + var_fast_sodium_current__i_Na + var_hyperpolarising_activated_current__i_f + var_sodium_calcium_exchange_current__i_NaCa + var_sodium_potassium_pump__i_p; // picoA + const double var_chaste_interface__i_ionic = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot / var_membrane__C_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Celldokos_model_1996FromCellMLCvodeDataClamp::EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__E = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -64.9 + double var_chaste_interface__ion_concentrations__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 3.4e-05 + double var_chaste_interface__L_type_calcium_current_d_gate__dL = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.0001 + double var_chaste_interface__L_type_calcium_current_f_gate__fL = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.1505 + double var_chaste_interface__L_type_calcium_current_f2_gate__fL2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.219 + double var_chaste_interface__T_type_calcium_current_d_gate__dT = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.001 + double var_chaste_interface__T_type_calcium_current_f_gate__fT = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.1328 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.0139 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.0087 + double var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.5682 + double var_chaste_interface__hyperpolarising_activated_current_y_gate__y = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.0287 + double var_chaste_interface__ion_concentrations__Cao = NV_Ith_S(rY, 11); + // Units: millimolar; Initial value: 2.0004 + double var_chaste_interface__ion_concentrations__Caup = NV_Ith_S(rY, 12); + // Units: millimolar; Initial value: 0.5832 + double var_chaste_interface__ion_concentrations__Carel = NV_Ith_S(rY, 13); + // Units: millimolar; Initial value: 0.1101 + double var_chaste_interface__ion_concentrations__Nai = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 7.4994 + double var_chaste_interface__ion_concentrations__Nao = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 139.9929 + double var_chaste_interface__ion_concentrations__Ki = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 140.0073 + double var_chaste_interface__ion_concentrations__Ko = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 5.4243 + + // Mathematics + double d_dt_chaste_interface_var_membrane__E; + const double var_L_type_calcium_current_d_gate__tau_dL = 0.002; // second + const double var_L_type_calcium_current_f2_gate__alpha_fL2 = 3; // per_second + const double var_L_type_calcium_current_f2_gate__beta_fL2 = 40000; // per_millimolar_second + const double var_T_type_calcium_current__g_CaT = 0.085000000000000006; // nanoS + const double var_background_potassium_current__KbK = 6.9999999999999994e-5; // picoA_per_millimolar + const double var_background_sodium_current__g_Nab = 0.00024000000000000001; // nanoS + const double var_constants__F = 96485.341499999995; // coulomb_per_mole + const double var_constants__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_constants__T = 310; // kelvin + const double var_delayed_rectifying_potassium_current__P_KNa = 0.035000000000000003; // dimensionless + const double var_hyperpolarising_activated_current__Kmf = 10.300000000000001; // millimolar + const double var_ion_concentrations__Cab = 2; // millimolar + const double var_L_type_calcium_current_f2_gate__fL2_orig_deriv = (1 - var_chaste_interface__L_type_calcium_current_f2_gate__fL2) * var_L_type_calcium_current_f2_gate__alpha_fL2 - var_L_type_calcium_current_f2_gate__beta_fL2 * var_chaste_interface__L_type_calcium_current_f2_gate__fL2 * var_chaste_interface__ion_concentrations__Cai; // 1 / second + const double d_dt_chaste_interface_var_L_type_calcium_current_f2_gate__fL2 = 0.001 * var_L_type_calcium_current_f2_gate__fL2_orig_deriv; // 1 / millisecond + const double var_ion_concentrations__Kb = 5.4000000000000004; // millimolar + const double var_ion_concentrations__Nab = 140; // millimolar + const double var_ion_concentrations__V_i = 2.5000000000000002e-6; // microlitre + const double var_ion_concentrations__V_e = 0.20000000000000001 * var_ion_concentrations__V_i; // microlitre + const double var_ion_concentrations__tau_b = 0.10000000000000001; // second + const double var_L_type_calcium_current_d_gate__dL_infinity = 1 / (1 + exp(-1 - 0.15151515151515152 * var_chaste_interface__membrane__E)); // dimensionless + const double var_L_type_calcium_current_d_gate__dL_orig_deriv = (-var_chaste_interface__L_type_calcium_current_d_gate__dL + var_L_type_calcium_current_d_gate__dL_infinity) / var_L_type_calcium_current_d_gate__tau_dL; // 1 / second + const double d_dt_chaste_interface_var_L_type_calcium_current_d_gate__dL = 0.001 * var_L_type_calcium_current_d_gate__dL_orig_deriv; // 1 / millisecond + const double var_L_type_calcium_current_f_gate__fL_infinity = 1 / (1 + exp(4.166666666666667 + 0.16666666666666666 * var_chaste_interface__membrane__E)); // dimensionless + const double var_L_type_calcium_current_f_gate__tau_fL = 0.031 + 1 / (1 + exp(4.6419753086419755 + 0.1234567901234568 * var_chaste_interface__membrane__E)); // second + const double var_L_type_calcium_current_f_gate__fL_orig_deriv = (-var_chaste_interface__L_type_calcium_current_f_gate__fL + var_L_type_calcium_current_f_gate__fL_infinity) / var_L_type_calcium_current_f_gate__tau_fL; // 1 / second + const double d_dt_chaste_interface_var_L_type_calcium_current_f_gate__fL = 0.001 * var_L_type_calcium_current_f_gate__fL_orig_deriv; // 1 / millisecond + const double var_T_type_calcium_current_d_gate__dT_infinity = 1 / (1 + exp(-3.7704918032786887 - 0.16393442622950821 * var_chaste_interface__membrane__E)); // dimensionless + const double var_T_type_calcium_current_d_gate__tau_dT = 0.00059999999999999995 + 0.0054000000000000003 / (1 + exp(3 + 0.029999999999999999 * var_chaste_interface__membrane__E)); // second + const double var_T_type_calcium_current_d_gate__dT_orig_deriv = (-var_chaste_interface__T_type_calcium_current_d_gate__dT + var_T_type_calcium_current_d_gate__dT_infinity) / var_T_type_calcium_current_d_gate__tau_dT; // 1 / second + const double d_dt_chaste_interface_var_T_type_calcium_current_d_gate__dT = 0.001 * var_T_type_calcium_current_d_gate__dT_orig_deriv; // 1 / millisecond + const double var_T_type_calcium_current_f_gate__fT_infinity = 1 / (1 + exp(11.363636363636365 + 0.15151515151515152 * var_chaste_interface__membrane__E)); // dimensionless + const double var_T_type_calcium_current_f_gate__tau_fT = 0.001 + 0.040000000000000001 / (1 + exp(5.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__E)); // second + const double var_T_type_calcium_current_f_gate__fT_orig_deriv = (-var_chaste_interface__T_type_calcium_current_f_gate__fT + var_T_type_calcium_current_f_gate__fT_infinity) / var_T_type_calcium_current_f_gate__tau_fT; // 1 / second + const double d_dt_chaste_interface_var_T_type_calcium_current_f_gate__fT = 0.001 * var_T_type_calcium_current_f_gate__fT_orig_deriv; // 1 / millisecond + const double var_background_potassium_current__i_bK = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.40999999999999998) * (-var_chaste_interface__ion_concentrations__Ko * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Ki) * var_background_potassium_current__KbK; // picoA + const double var_delayed_rectifying_potassium_current__i_KK = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.58999999999999997) * (-var_chaste_interface__ion_concentrations__Ko * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Ki) * NV_Ith_S(mParameters, 3) * var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x; // picoA + const double var_delayed_rectifying_potassium_current__i_KNa = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.58999999999999997) * (-var_chaste_interface__ion_concentrations__Nao * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Nai) * NV_Ith_S(mParameters, 3) * var_delayed_rectifying_potassium_current__P_KNa * var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x; // picoA + const double var_delayed_rectifying_potassium_current_x_gate__tau_x = 1 / (17 * exp(0.039800000000000002 * var_chaste_interface__membrane__E) + 0.21099999999999999 * exp(-0.050999999999999997 * var_chaste_interface__membrane__E)); // second + const double var_delayed_rectifying_potassium_current_x_gate__x_infinity = 1 / (1 + exp(-3.3918918918918921 - 0.13513513513513511 * var_chaste_interface__membrane__E)); // dimensionless + const double var_delayed_rectifying_potassium_current_x_gate__x_orig_deriv = (-var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x + var_delayed_rectifying_potassium_current_x_gate__x_infinity) / var_delayed_rectifying_potassium_current_x_gate__tau_x; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_x_gate__x = 0.001 * var_delayed_rectifying_potassium_current_x_gate__x_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_h_gate__alpha_h = 32.399999999999999 * exp(-13.076000000000002 - 0.14000000000000001 * var_chaste_interface__membrane__E); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 709 / (1 + 4.2000000000000002 * exp(-2.7239999999999998 - 0.059999999999999998 * var_chaste_interface__membrane__E)); // per_second + const double var_fast_sodium_current_h_gate__h_orig_deriv = (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * var_fast_sodium_current_h_gate__alpha_h - var_fast_sodium_current_h_gate__beta_h * var_chaste_interface__fast_sodium_current_h_gate__h; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * var_fast_sodium_current_h_gate__h_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_m_gate__alpha_m = (((var_chaste_interface__membrane__E >= -34.300001111111108) && (var_chaste_interface__membrane__E <= -34.299998888888886)) ? (-0.00022222222222367805 / (1 - exp(1.0000000000065512e-7)) + 449999.99999705196 * (34.300001111111108 + var_chaste_interface__membrane__E) * (0.00022222222222367805 / (1 - exp(1.0000000000065512e-7)) + 0.00022222222222367805 / (1 - exp(-1.0000000000065512e-7)))) : (200 * (34.299999999999997 + var_chaste_interface__membrane__E) / (1 - exp(-3.0869999999999997 - 0.089999999999999997 * var_chaste_interface__membrane__E)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 8000 * exp(-8.4299999999999997 - 0.14999999999999999 * var_chaste_interface__membrane__E); // per_second + const double var_fast_sodium_current_m_gate__m_orig_deriv = (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_hyperpolarising_activated_current_y_gate__alpha_y = (((var_chaste_interface__membrane__E >= -137.80000151515154) && (var_chaste_interface__membrane__E <= -137.79999848484849)) ? (-5.4545454545085189e-7 / (-1 + exp(-9.9999999999322859e-8)) + 330000.00000223459 * (137.80000151515154 + var_chaste_interface__membrane__E) * (5.4545454545085189e-7 / (-1 + exp(9.9999999999322859e-8)) + 5.4545454545085189e-7 / (-1 + exp(-9.9999999999322859e-8)))) : (0.35999999999999999 * (137.80000000000001 + var_chaste_interface__membrane__E) / (-1 + exp(9.0948000000000011 + 0.066000000000000003 * var_chaste_interface__membrane__E)))); // per_second + const double var_hyperpolarising_activated_current_y_gate__beta_y = (((var_chaste_interface__membrane__E >= -76.300000476190476) && (var_chaste_interface__membrane__E <= -76.299999523809518)) ? (-4.7619047616187521e-8 / (1 - exp(9.9999999993993777e-8)) + 1049999.9999406631 * (76.300000476190476 + var_chaste_interface__membrane__E) * (4.7619047627289747e-8 / (1 - exp(-1.0000000001730847e-7)) + 4.7619047616187521e-8 / (1 - exp(9.9999999993993777e-8)))) : (0.10000000000000001 * (76.299999999999997 + var_chaste_interface__membrane__E) / (1 - exp(-16.023 - 0.20999999999999999 * var_chaste_interface__membrane__E)))); // per_second + const double var_hyperpolarising_activated_current_y_gate__y_orig_deriv = (1 - var_chaste_interface__hyperpolarising_activated_current_y_gate__y) * var_hyperpolarising_activated_current_y_gate__alpha_y - var_hyperpolarising_activated_current_y_gate__beta_y * var_chaste_interface__hyperpolarising_activated_current_y_gate__y; // 1 / second + const double d_dt_chaste_interface_var_hyperpolarising_activated_current_y_gate__y = 0.001 * var_hyperpolarising_activated_current_y_gate__y_orig_deriv; // 1 / millisecond + const double var_reversal_potentials__E_Ca = 0.5 * var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Cao / var_chaste_interface__ion_concentrations__Cai) / var_constants__F; // millivolt + const double var_L_type_calcium_current__i_CaL = (75 - var_reversal_potentials__E_Ca + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 0) * var_chaste_interface__L_type_calcium_current_d_gate__dL * var_chaste_interface__L_type_calcium_current_f2_gate__fL2 * var_chaste_interface__L_type_calcium_current_f_gate__fL; // picoA + const double var_T_type_calcium_current__i_CaT = (75 - var_reversal_potentials__E_Ca + var_chaste_interface__membrane__E) * var_T_type_calcium_current__g_CaT * var_chaste_interface__T_type_calcium_current_d_gate__dT * var_chaste_interface__T_type_calcium_current_f_gate__fT; // picoA + const double var_reversal_potentials__E_K = var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Ko / var_chaste_interface__ion_concentrations__Ki) / var_constants__F; // millivolt + const double var_hyperpolarising_activated_current__i_fK = pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001) * (-var_reversal_potentials__E_K + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 5) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (pow(var_hyperpolarising_activated_current__Kmf, 1.8300000000000001) + pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001)); // picoA + const double var_reversal_potentials__E_Na = var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Nao / var_chaste_interface__ion_concentrations__Nai) / var_constants__F; // millivolt + const double var_background_sodium_current__i_bNa = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * var_background_sodium_current__g_Nab; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 4) * var_chaste_interface__fast_sodium_current_h_gate__h; // picoA + const double var_hyperpolarising_activated_current__i_fNa = pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001) * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 6) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (pow(var_hyperpolarising_activated_current__Kmf, 1.8300000000000001) + pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001)); // picoA + const double var_sarcoplasmic_reticulum_kinetics__KmCarel = 0.001; // millimolar + const double var_sarcoplasmic_reticulum_kinetics__KmCaup = 0.00050000000000000001; // millimolar + const double var_sarcoplasmic_reticulum_kinetics__V_rel = 0.0060000000000000001 * var_ion_concentrations__V_i; // microlitre + const double var_sarcoplasmic_reticulum_kinetics__V_up = 0.014 * var_ion_concentrations__V_i; // microlitre + const double var_sarcoplasmic_reticulum_kinetics__i_up_max = 0.0212; // picoA + const double var_sarcoplasmic_reticulum_kinetics__i_up = pow(var_chaste_interface__ion_concentrations__Cai, 2) * var_sarcoplasmic_reticulum_kinetics__i_up_max / (pow(var_chaste_interface__ion_concentrations__Cai, 2) + pow(var_sarcoplasmic_reticulum_kinetics__KmCaup, 2)); // picoA + const double var_sarcoplasmic_reticulum_kinetics__tau_rel = 0.0050000000000000001; // second + const double var_sarcoplasmic_reticulum_kinetics__i_rel = 2 * pow(var_chaste_interface__ion_concentrations__Cai, 2) * var_constants__F * var_chaste_interface__ion_concentrations__Carel * var_sarcoplasmic_reticulum_kinetics__V_rel / ((pow(var_chaste_interface__ion_concentrations__Cai, 2) + pow(var_sarcoplasmic_reticulum_kinetics__KmCarel, 2)) * var_sarcoplasmic_reticulum_kinetics__tau_rel); // picoA + const double var_sarcoplasmic_reticulum_kinetics__tau_tr = 0.40000000000000002; // second + const double var_sarcoplasmic_reticulum_kinetics__i_tr = 2 * var_constants__F * var_chaste_interface__ion_concentrations__Caup * var_sarcoplasmic_reticulum_kinetics__V_rel / var_sarcoplasmic_reticulum_kinetics__tau_tr; // picoA + const double var_ion_concentrations__Carel_orig_deriv = 0.5 * (-var_sarcoplasmic_reticulum_kinetics__i_rel + var_sarcoplasmic_reticulum_kinetics__i_tr) / (var_constants__F * var_sarcoplasmic_reticulum_kinetics__V_rel); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Carel = 0.001 * var_ion_concentrations__Carel_orig_deriv; // millimolar / millisecond + const double var_ion_concentrations__Caup_orig_deriv = 0.5 * (-var_sarcoplasmic_reticulum_kinetics__i_tr + var_sarcoplasmic_reticulum_kinetics__i_up) / (var_constants__F * var_sarcoplasmic_reticulum_kinetics__V_up); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Caup = 0.001 * var_ion_concentrations__Caup_orig_deriv; // millimolar / millisecond + const double var_sodium_calcium_exchange_current__K1ni = 395.30000000000001; // millimolar + const double var_sodium_calcium_exchange_current__K1no = 1628; // millimolar + const double var_sodium_calcium_exchange_current__K2ni = 2.2890000000000001; // millimolar + const double var_sodium_calcium_exchange_current__K2no = 561.39999999999998; // millimolar + const double var_sodium_calcium_exchange_current__K3ni = 26.440000000000001; // millimolar + const double var_sodium_calcium_exchange_current__K3no = 4.6630000000000003; // millimolar + const double var_sodium_calcium_exchange_current__Kci = 0.0207; // millimolar + const double var_sodium_calcium_exchange_current__Kcni = 26.440000000000001; // millimolar + const double var_sodium_calcium_exchange_current__Kco = 3.6629999999999998; // millimolar + const double var_sodium_calcium_exchange_current__Qci = 0.13689999999999999; // dimensionless + const double var_sodium_calcium_exchange_current__Qco = 0; // dimensionless + const double var_sodium_calcium_exchange_current__Qn = 0.43149999999999999; // dimensionless + const double var_sodium_calcium_exchange_current__di = 1 + var_chaste_interface__ion_concentrations__Nai / var_sodium_calcium_exchange_current__K1ni + var_chaste_interface__ion_concentrations__Cai / var_sodium_calcium_exchange_current__Kci + pow(var_chaste_interface__ion_concentrations__Nai, 2) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni) + var_chaste_interface__ion_concentrations__Cai * exp(-var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qci / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__Kci + pow(var_chaste_interface__ion_concentrations__Nai, 3) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni * var_sodium_calcium_exchange_current__K3ni) + var_chaste_interface__ion_concentrations__Cai * var_chaste_interface__ion_concentrations__Nai / (var_sodium_calcium_exchange_current__Kci * var_sodium_calcium_exchange_current__Kcni); // dimensionless + const double var_sodium_calcium_exchange_current__do = 1 + var_chaste_interface__ion_concentrations__Nao / var_sodium_calcium_exchange_current__K1no + var_chaste_interface__ion_concentrations__Cao / var_sodium_calcium_exchange_current__Kco + pow(var_chaste_interface__ion_concentrations__Nao, 2) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no) + var_chaste_interface__ion_concentrations__Cao * exp(var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qco / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__Kco + pow(var_chaste_interface__ion_concentrations__Nao, 3) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no * var_sodium_calcium_exchange_current__K3no); // dimensionless + const double var_sodium_calcium_exchange_current__k12 = var_chaste_interface__ion_concentrations__Cai * exp(-var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qci / (var_constants__R * var_constants__T)) / (var_sodium_calcium_exchange_current__Kci * var_sodium_calcium_exchange_current__di); // dimensionless + const double var_sodium_calcium_exchange_current__k14 = (pow(var_chaste_interface__ion_concentrations__Nai, 2) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni) + pow(var_chaste_interface__ion_concentrations__Nai, 3) / (var_sodium_calcium_exchange_current__K1ni * var_sodium_calcium_exchange_current__K2ni * var_sodium_calcium_exchange_current__K3ni)) * exp(0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__di; // dimensionless + const double var_sodium_calcium_exchange_current__k21 = var_chaste_interface__ion_concentrations__Cao * exp(-var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qco / (var_constants__R * var_constants__T)) / (var_sodium_calcium_exchange_current__Kco * var_sodium_calcium_exchange_current__do); // dimensionless + const double var_sodium_calcium_exchange_current__k23 = (pow(var_chaste_interface__ion_concentrations__Nao, 2) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no) + pow(var_chaste_interface__ion_concentrations__Nao, 3) / (var_sodium_calcium_exchange_current__K1no * var_sodium_calcium_exchange_current__K2no * var_sodium_calcium_exchange_current__K3no)) * exp(-0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)) / var_sodium_calcium_exchange_current__do; // dimensionless + const double var_sodium_calcium_exchange_current__k32 = exp(0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)); // dimensionless + const double var_sodium_calcium_exchange_current__k34 = var_chaste_interface__ion_concentrations__Nao / (var_chaste_interface__ion_concentrations__Nao + var_sodium_calcium_exchange_current__K3no); // dimensionless + const double var_sodium_calcium_exchange_current__k41 = exp(-0.5 * var_constants__F * var_chaste_interface__membrane__E * var_sodium_calcium_exchange_current__Qn / (var_constants__R * var_constants__T)); // dimensionless + const double var_sodium_calcium_exchange_current__k43 = var_chaste_interface__ion_concentrations__Nai / (var_chaste_interface__ion_concentrations__Nai + var_sodium_calcium_exchange_current__K3ni); // dimensionless + const double var_sodium_calcium_exchange_current__kNaCa = 4; // picoA + const double var_sodium_calcium_exchange_current__x1 = (var_sodium_calcium_exchange_current__k21 + var_sodium_calcium_exchange_current__k23) * var_sodium_calcium_exchange_current__k34 * var_sodium_calcium_exchange_current__k41 + (var_sodium_calcium_exchange_current__k41 + var_sodium_calcium_exchange_current__k43) * var_sodium_calcium_exchange_current__k21 * var_sodium_calcium_exchange_current__k32; // dimensionless + const double var_sodium_calcium_exchange_current__x2 = (var_sodium_calcium_exchange_current__k12 + var_sodium_calcium_exchange_current__k14) * var_sodium_calcium_exchange_current__k32 * var_sodium_calcium_exchange_current__k43 + (var_sodium_calcium_exchange_current__k32 + var_sodium_calcium_exchange_current__k34) * var_sodium_calcium_exchange_current__k12 * var_sodium_calcium_exchange_current__k41; // dimensionless + const double var_sodium_calcium_exchange_current__x3 = (var_sodium_calcium_exchange_current__k21 + var_sodium_calcium_exchange_current__k23) * var_sodium_calcium_exchange_current__k14 * var_sodium_calcium_exchange_current__k43 + (var_sodium_calcium_exchange_current__k41 + var_sodium_calcium_exchange_current__k43) * var_sodium_calcium_exchange_current__k12 * var_sodium_calcium_exchange_current__k23; // dimensionless + const double var_sodium_calcium_exchange_current__x4 = (var_sodium_calcium_exchange_current__k12 + var_sodium_calcium_exchange_current__k14) * var_sodium_calcium_exchange_current__k23 * var_sodium_calcium_exchange_current__k34 + (var_sodium_calcium_exchange_current__k32 + var_sodium_calcium_exchange_current__k34) * var_sodium_calcium_exchange_current__k14 * var_sodium_calcium_exchange_current__k21; // dimensionless + const double var_sodium_calcium_exchange_current__i_NaCa = (var_sodium_calcium_exchange_current__k21 * var_sodium_calcium_exchange_current__x2 - var_sodium_calcium_exchange_current__k12 * var_sodium_calcium_exchange_current__x1) * var_sodium_calcium_exchange_current__kNaCa / (var_sodium_calcium_exchange_current__x1 + var_sodium_calcium_exchange_current__x2 + var_sodium_calcium_exchange_current__x3 + var_sodium_calcium_exchange_current__x4); // picoA + const double var_ion_concentrations__Cai_orig_deriv = -0.5 * (-var_sarcoplasmic_reticulum_kinetics__i_rel - 2 * var_sodium_calcium_exchange_current__i_NaCa + var_L_type_calcium_current__i_CaL + var_T_type_calcium_current__i_CaT + var_sarcoplasmic_reticulum_kinetics__i_up) / (var_constants__F * var_ion_concentrations__V_i); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Cai = 0.001 * var_ion_concentrations__Cai_orig_deriv; // millimolar / millisecond + const double var_ion_concentrations__Cao_orig_deriv = (-var_chaste_interface__ion_concentrations__Cao + var_ion_concentrations__Cab) / var_ion_concentrations__tau_b + 0.5 * (-2 * var_sodium_calcium_exchange_current__i_NaCa + var_L_type_calcium_current__i_CaL + var_T_type_calcium_current__i_CaT) / (var_constants__F * var_ion_concentrations__V_e); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Cao = 0.001 * var_ion_concentrations__Cao_orig_deriv; // millimolar / millisecond + const double var_sodium_potassium_pump__KmK = 1; // millimolar + const double var_sodium_potassium_pump__KmNa = 40; // millimolar + const double var_sodium_potassium_pump__i_pmax = 0.22600000000000001; // picoA + const double var_sodium_potassium_pump__i_p = (1 - pow((-0.1895734597156398 + 0.0047393364928909956 * var_chaste_interface__membrane__E), 2)) * var_chaste_interface__ion_concentrations__Ko * var_chaste_interface__ion_concentrations__Nai * var_sodium_potassium_pump__i_pmax / ((var_chaste_interface__ion_concentrations__Ko + var_sodium_potassium_pump__KmK) * (var_chaste_interface__ion_concentrations__Nai + var_sodium_potassium_pump__KmNa)); // picoA + const double var_ion_concentrations__Ki_orig_deriv = -1 * (-2 * var_sodium_potassium_pump__i_p + var_background_potassium_current__i_bK + var_delayed_rectifying_potassium_current__i_KK + var_hyperpolarising_activated_current__i_fK) / (var_constants__F * var_ion_concentrations__V_i); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Ki = 0.001 * var_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond + const double var_ion_concentrations__Ko_orig_deriv = (-var_chaste_interface__ion_concentrations__Ko + var_ion_concentrations__Kb) / var_ion_concentrations__tau_b + 1 * (-2 * var_sodium_potassium_pump__i_p + var_background_potassium_current__i_bK + var_delayed_rectifying_potassium_current__i_KK + var_hyperpolarising_activated_current__i_fK) / (var_constants__F * var_ion_concentrations__V_e); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Ko = 0.001 * var_ion_concentrations__Ko_orig_deriv; // millimolar / millisecond + const double var_ion_concentrations__Nai_orig_deriv = -1 * (3 * var_sodium_calcium_exchange_current__i_NaCa + 3 * var_sodium_potassium_pump__i_p + var_background_sodium_current__i_bNa + var_delayed_rectifying_potassium_current__i_KNa + var_fast_sodium_current__i_Na + var_hyperpolarising_activated_current__i_fNa) / (var_constants__F * var_ion_concentrations__V_i); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Nai = 0.001 * var_ion_concentrations__Nai_orig_deriv; // millimolar / millisecond + const double var_ion_concentrations__Nao_orig_deriv = (-var_chaste_interface__ion_concentrations__Nao + var_ion_concentrations__Nab) / var_ion_concentrations__tau_b + 1 * (3 * var_sodium_calcium_exchange_current__i_NaCa + 3 * var_sodium_potassium_pump__i_p + var_background_sodium_current__i_bNa + var_delayed_rectifying_potassium_current__i_KNa + var_fast_sodium_current__i_Na + var_hyperpolarising_activated_current__i_fNa) / (var_constants__F * var_ion_concentrations__V_e); // millimolar / second + const double d_dt_chaste_interface_var_ion_concentrations__Nao = 0.001 * var_ion_concentrations__Nao_orig_deriv; // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__E = 0.0; + } + else + { + const double var_delayed_rectifying_potassium_current__i_K = var_delayed_rectifying_potassium_current__i_KK + var_delayed_rectifying_potassium_current__i_KNa; // picoA + const double var_hyperpolarising_activated_current__i_f = var_hyperpolarising_activated_current__i_fK + var_hyperpolarising_activated_current__i_fNa; // picoA + const double var_membrane__i_tot = var_L_type_calcium_current__i_CaL + var_T_type_calcium_current__i_CaT + var_background_potassium_current__i_bK + var_background_sodium_current__i_bNa + var_delayed_rectifying_potassium_current__i_K + var_fast_sodium_current__i_Na + var_hyperpolarising_activated_current__i_f + var_sodium_calcium_exchange_current__i_NaCa + var_sodium_potassium_pump__i_p; // picoA + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time_converted) + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 2); // uA_per_cm2 + } + const double var_membrane__E_orig_deriv = -(var_membrane__i_tot + var_chaste_interface__membrane_data_clamp_current) / NV_Ith_S(mParameters, 1); // millivolt / second + d_dt_chaste_interface_var_membrane__E = 0.001 * var_membrane__E_orig_deriv; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__E; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_ion_concentrations__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_L_type_calcium_current_d_gate__dL; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_L_type_calcium_current_f_gate__fL; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_L_type_calcium_current_f2_gate__fL2; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_T_type_calcium_current_d_gate__dT; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_T_type_calcium_current_f_gate__fT; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_delayed_rectifying_potassium_current_x_gate__x; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_hyperpolarising_activated_current_y_gate__y; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_ion_concentrations__Cao; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_ion_concentrations__Caup; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_ion_concentrations__Carel; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_ion_concentrations__Nai; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_ion_concentrations__Nao; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_ion_concentrations__Ki; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_ion_concentrations__Ko; + } + + N_Vector Celldokos_model_1996FromCellMLCvodeDataClamp::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__E = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -64.9 + double var_chaste_interface__ion_concentrations__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 3.4e-05 + double var_chaste_interface__L_type_calcium_current_d_gate__dL = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.0001 + double var_chaste_interface__L_type_calcium_current_f_gate__fL = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.1505 + double var_chaste_interface__L_type_calcium_current_f2_gate__fL2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.219 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.0139 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.0087 + double var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.5682 + double var_chaste_interface__hyperpolarising_activated_current_y_gate__y = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.0287 + double var_chaste_interface__ion_concentrations__Cao = NV_Ith_S(rY, 11); + // Units: millimolar; Initial value: 2.0004 + double var_chaste_interface__ion_concentrations__Nai = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 7.4994 + double var_chaste_interface__ion_concentrations__Nao = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 139.9929 + double var_chaste_interface__ion_concentrations__Ki = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 140.0073 + double var_chaste_interface__ion_concentrations__Ko = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 5.4243 + + // Mathematics + const double var_constants__F = 96485.341499999995; // coulomb_per_mole + const double var_constants__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_constants__T = 310; // kelvin + const double var_delayed_rectifying_potassium_current__P_KNa = 0.035000000000000003; // dimensionless + const double var_hyperpolarising_activated_current__Kmf = 10.300000000000001; // millimolar + const double var_membrane__C_converted = 0.001 * NV_Ith_S(mParameters, 1); // uF + const double var_delayed_rectifying_potassium_current__i_KK = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.58999999999999997) * (-var_chaste_interface__ion_concentrations__Ko * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Ki) * NV_Ith_S(mParameters, 3) * var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x; // picoA + const double var_delayed_rectifying_potassium_current__i_KNa = 1 * pow(var_chaste_interface__ion_concentrations__Ko, 0.58999999999999997) * (-var_chaste_interface__ion_concentrations__Nao * exp(-var_constants__F * var_chaste_interface__membrane__E / (var_constants__R * var_constants__T)) + var_chaste_interface__ion_concentrations__Nai) * NV_Ith_S(mParameters, 3) * var_delayed_rectifying_potassium_current__P_KNa * var_chaste_interface__delayed_rectifying_potassium_current_x_gate__x; // picoA + const double var_delayed_rectifying_potassium_current__i_K = var_delayed_rectifying_potassium_current__i_KK + var_delayed_rectifying_potassium_current__i_KNa; // picoA + const double var_delayed_rectifying_potassium_current__i_K_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifying_potassium_current__i_K / var_membrane__C_converted; // uA_per_cm2 + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time_converted) + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 2); // uA_per_cm2 + } + const double var_reversal_potentials__E_Ca = 0.5 * var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Cao / var_chaste_interface__ion_concentrations__Cai) / var_constants__F; // millivolt + const double var_L_type_calcium_current__i_CaL = (75 - var_reversal_potentials__E_Ca + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 0) * var_chaste_interface__L_type_calcium_current_d_gate__dL * var_chaste_interface__L_type_calcium_current_f2_gate__fL2 * var_chaste_interface__L_type_calcium_current_f_gate__fL; // picoA + const double var_L_type_calcium_current__i_CaL_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL / var_membrane__C_converted; // uA_per_cm2 + const double var_reversal_potentials__E_K = var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Ko / var_chaste_interface__ion_concentrations__Ki) / var_constants__F; // millivolt + const double var_hyperpolarising_activated_current__i_fK = pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001) * (-var_reversal_potentials__E_K + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 5) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (pow(var_hyperpolarising_activated_current__Kmf, 1.8300000000000001) + pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001)); // picoA + const double var_reversal_potentials__E_Na = var_constants__R * var_constants__T * log(var_chaste_interface__ion_concentrations__Nao / var_chaste_interface__ion_concentrations__Nai) / var_constants__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 4) * var_chaste_interface__fast_sodium_current_h_gate__h; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__C_converted; // uA_per_cm2 + const double var_hyperpolarising_activated_current__i_fNa = pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001) * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__E) * NV_Ith_S(mParameters, 6) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (pow(var_hyperpolarising_activated_current__Kmf, 1.8300000000000001) + pow(var_chaste_interface__ion_concentrations__Ko, 1.8300000000000001)); // picoA + const double var_hyperpolarising_activated_current__i_f = var_hyperpolarising_activated_current__i_fK + var_hyperpolarising_activated_current__i_fNa; // picoA + const double var_hyperpolarising_activated_current__i_f_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_hyperpolarising_activated_current__i_f / var_membrane__C_converted; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(9, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(9); +#endif + NV_Ith_S(dqs, 0) = var_L_type_calcium_current__i_CaL_converted; + NV_Ith_S(dqs, 1) = var_membrane__C_converted; + NV_Ith_S(dqs, 2) = var_chaste_interface__membrane_data_clamp_current; + NV_Ith_S(dqs, 3) = var_delayed_rectifying_potassium_current__i_K_converted; + NV_Ith_S(dqs, 4) = var_fast_sodium_current__i_Na_converted; + NV_Ith_S(dqs, 5) = var_hyperpolarising_activated_current__i_f_converted; + NV_Ith_S(dqs, 6) = var_hyperpolarising_activated_current__i_fK; + NV_Ith_S(dqs, 7) = var_hyperpolarising_activated_current__i_fNa; + NV_Ith_S(dqs, 8) = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "dokos_model_1996"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-64.9); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(3.4e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("L_type_calcium_current_d_gate__dL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0001); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("L_type_calcium_current_f_gate__fL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.1505); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("L_type_calcium_current_f2_gate__fL2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.219); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("T_type_calcium_current_d_gate__dT"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("T_type_calcium_current_f_gate__fT"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.1328); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("fast_sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0139); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("fast_sodium_current_h_gate__h"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0087); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("delayed_rectifying_potassium_current_x_gate__x"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.5682); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("hyperpolarising_activated_current_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0287); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("extracellular_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.0004); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("ion_concentrations__Caup"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.5832); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("ion_concentrations__Carel"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.1101); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(7.4994); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("extracellular_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(139.9929); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(140.0073); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("extracellular_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(5.4243); + + // mParameters[0]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[1]: + this->mParameterNames.push_back("membrane__C"); + this->mParameterUnits.push_back("nanoF"); + + // mParameters[2]: + this->mParameterNames.push_back("membrane_data_clamp_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_data_clamp_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component"); + this->mDerivedQuantityUnits.push_back("picoA"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component"); + this->mDerivedQuantityUnits.push_back("picoA"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Celldokos_model_1996FromCellMLCvodeDataClamp) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp similarity index 95% rename from chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp index 12aed2bd..2721189f 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp @@ -148,7 +148,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeDataClampO for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return (((var_chaste_interface__membrane__V >= -65.000000999999997) && (var_chaste_interface__membrane__V <= -64.999999000000003)) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (0.099999999999999992 * (-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + return (((6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-0.099999999999999992 * (6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -192,7 +192,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeDataClampO for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V); + return 1 / (1 + exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -203,7 +203,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeDataClampO for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return (((var_chaste_interface__membrane__V >= -50.000000999999997) && (var_chaste_interface__membrane__V <= -49.999999000000003)) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : ((-5 - 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + return (((5 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (5 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (-1 * (5 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -399,7 +399,7 @@ std::shared_ptr + +#include "difrancesco_noble_model_1985.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + + + + boost::shared_ptr Celldifrancesco_noble_model_1985FromCellMLCvode::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__stimulus__stim_amplitude_converted = -0.5 * HeartConfig::Instance()->GetCapacitance() / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_chaste_interface__stimulus__stim_duration_converted = 5; // millisecond + const double var_chaste_interface__stimulus__stim_period_converted = 1000; // millisecond + const double var_chaste_interface__stimulus__stim_start_converted = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__stimulus__stim_amplitude_converted), + var_chaste_interface__stimulus__stim_duration_converted, + var_chaste_interface__stimulus__stim_period_converted, + var_chaste_interface__stimulus__stim_start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Celldifrancesco_noble_model_1985FromCellMLCvode::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Celldifrancesco_noble_model_1985FromCellMLCvode::Celldifrancesco_noble_model_1985FromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 16, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + NV_Ith_S(this->mParameters, 0) = 1; // (var_intracellular_calcium_concentration__release_factor) [dimensionless] + NV_Ith_S(this->mParameters, 1) = 0.001; // (var_intracellular_calcium_concentration__K_mCa) [millimolar] + NV_Ith_S(this->mParameters, 2) = 1; // (var_intracellular_calcium_concentration__uptake_factor) [dimensionless] + NV_Ith_S(this->mParameters, 3) = 4; // (var_extracellular_potassium_concentration__Kb) [millimolar] + NV_Ith_S(this->mParameters, 4) = 1; // (var_intracellular_sodium_concentration__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 5) = 2; // (var_extracellular_calcium_concentration__Cao) [millimolar] + NV_Ith_S(this->mParameters, 6) = 140; // (var_extracellular_sodium_concentration__Nao) [millimolar] + NV_Ith_S(this->mParameters, 7) = 15; // (var_second_inward_current__P_si) [nanoA_per_millimolar] + NV_Ith_S(this->mParameters, 8) = 0.074999999999999997; // (var_membrane__C) [microF] + NV_Ith_S(this->mParameters, 9) = 180; // (var_time_dependent_potassium_current__i_K_max) [nanoA] + NV_Ith_S(this->mParameters, 10) = 750; // (var_fast_sodium_current__g_Na) [microS] + NV_Ith_S(this->mParameters, 11) = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 12) = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + NV_Ith_S(this->mParameters, 13) = 3; // (var_hyperpolarising_activated_current__g_f_K) [microS] + NV_Ith_S(this->mParameters, 14) = 3; // (var_hyperpolarising_activated_current__g_f_Na) [microS] + NV_Ith_S(this->mParameters, 15) = 920; // (var_time_independent_potassium_current__g_K1) [microS] + NV_Ith_S(this->mParameters, 16) = 0.02; // (var_Na_Ca_exchanger__K_NaCa) [nanoA] + NV_Ith_S(this->mParameters, 17) = 0.28000000000000003; // (var_transient_outward_current__g_to) [microS_per_millimolar] + } + + Celldifrancesco_noble_model_1985FromCellMLCvode::~Celldifrancesco_noble_model_1985FromCellMLCvode() + { + } + + + void Celldifrancesco_noble_model_1985FromCellMLCvode::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 16; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Celldifrancesco_noble_model_1985FromCellMLCvode::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -87.0 + double var_chaste_interface__intracellular_calcium_concentration__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 5e-05 + double var_chaste_interface__hyperpolarising_activated_current_y_gate__y = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.2 + double var_chaste_interface__time_dependent_potassium_current_x_gate__x = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.01 + double var_chaste_interface__transient_outward_current_s_gate__s = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.01 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.8 + double var_chaste_interface__second_inward_current_d_gate__d = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.005 + double var_chaste_interface__second_inward_current_f_gate__f = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__second_inward_current_f2_gate__f2 = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__intracellular_sodium_concentration__Nai = NV_Ith_S(rY, 10); + // Units: millimolar; Initial value: 8.0 + double var_chaste_interface__extracellular_potassium_concentration__Kc = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 4.0 + double var_chaste_interface__intracellular_potassium_concentration__Ki = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 140.0 + + const double var_Na_Ca_exchanger__d_NaCa = 0.001; // dimensionless + const double var_Na_Ca_exchanger__gamma = 0.5; // dimensionless + const double var_Na_Ca_exchanger__n_NaCa = 3; // dimensionless + const double var_calcium_background_current__g_Cab = 0.02; // microS + const double var_hyperpolarising_activated_current__Km_f = 45; // millimolar + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_membrane__RTONF = var_membrane__R * var_membrane__T / var_membrane__F; // millivolt + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__RTONF * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__intracellular_calcium_concentration__Cai); // millivolt + const double var_fast_sodium_current__E_mh = var_membrane__RTONF * log((1 * NV_Ith_S(mParameters, 6) + 0.12 * var_chaste_interface__extracellular_potassium_concentration__Kc) / (1 * var_chaste_interface__intracellular_sodium_concentration__Nai + 0.12 * var_chaste_interface__intracellular_potassium_concentration__Ki)); // millivolt + const double var_hyperpolarising_activated_current__E_K = var_membrane__RTONF * log(var_chaste_interface__extracellular_potassium_concentration__Kc / var_chaste_interface__intracellular_potassium_concentration__Ki); // millivolt + const double var_hyperpolarising_activated_current__E_Na = var_membrane__RTONF * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__intracellular_sodium_concentration__Nai); // millivolt + const double var_Na_Ca_exchanger__i_NaCa = (pow(var_chaste_interface__intracellular_sodium_concentration__Nai, var_Na_Ca_exchanger__n_NaCa) * NV_Ith_S(mParameters, 5) * exp((-2 + var_Na_Ca_exchanger__n_NaCa) * var_Na_Ca_exchanger__gamma * var_chaste_interface__membrane__V / var_membrane__RTONF) - pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai * exp((-1 + var_Na_Ca_exchanger__gamma) * (-2 + var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__membrane__V / var_membrane__RTONF)) * NV_Ith_S(mParameters, 16) / ((1 + 144.92753623188406 * var_chaste_interface__intracellular_calcium_concentration__Cai) * (1 + (pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai + pow(var_chaste_interface__intracellular_sodium_concentration__Nai, var_Na_Ca_exchanger__n_NaCa) * NV_Ith_S(mParameters, 5)) * var_Na_Ca_exchanger__d_NaCa)); // nanoA + const double var_Na_Ca_exchanger__i_NaCa_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // nanoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_mh + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 10) * var_chaste_interface__fast_sodium_current_h_gate__h; // nanoA + const double var_fast_sodium_current__i_Na_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_hyperpolarising_activated_current__i_fK = (-var_hyperpolarising_activated_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__extracellular_potassium_concentration__Kc * NV_Ith_S(mParameters, 13) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (var_chaste_interface__extracellular_potassium_concentration__Kc + var_hyperpolarising_activated_current__Km_f); // nanoA + const double var_hyperpolarising_activated_current__i_fNa = (-var_hyperpolarising_activated_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__extracellular_potassium_concentration__Kc * NV_Ith_S(mParameters, 14) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (var_chaste_interface__extracellular_potassium_concentration__Kc + var_hyperpolarising_activated_current__Km_f); // nanoA + const double var_hyperpolarising_activated_current__i_f = var_hyperpolarising_activated_current__i_fK + var_hyperpolarising_activated_current__i_fNa; // nanoA + const double var_hyperpolarising_activated_current__i_f_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_hyperpolarising_activated_current__i_f / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_second_inward_current__i_siCa = (((var_chaste_interface__membrane__V >= 49.999998664311967) && (var_chaste_interface__membrane__V <= 50.000001335688033)) ? (374338.90823576227 * (-49.999998664311967 + var_chaste_interface__membrane__V) * (1.9999999999556149e-7 * (var_chaste_interface__intracellular_calcium_concentration__Cai * exp(3.7433890822745473) - NV_Ith_S(mParameters, 5) * exp(9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999997780743e-8)) + 1.9999999999556149e-7 * (var_chaste_interface__intracellular_calcium_concentration__Cai * exp(3.7433890822745473) - NV_Ith_S(mParameters, 5) * exp(-9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(-9.9999999997780743e-8))) - 1.9999999999556149e-7 * (var_chaste_interface__intracellular_calcium_concentration__Cai * exp(3.7433890822745473) - NV_Ith_S(mParameters, 5) * exp(9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999997780743e-8))) : (0.14973556329098189 * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Cai * exp(3.7433890822745473) - NV_Ith_S(mParameters, 5) * exp(3.7433890822745473 - 0.074867781645490947 * var_chaste_interface__membrane__V)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(3.7433890822745473 - 0.074867781645490947 * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current__i_siK = (((var_chaste_interface__membrane__V >= 49.999997328623934) && (var_chaste_interface__membrane__V <= 50.000002671376066)) ? (187169.45411399176 * (-49.999997328623934 + var_chaste_interface__membrane__V) * (9.9999999999858744e-10 * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(1.8716945411372736) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999999858739e-8)) + 9.9999999999858744e-10 * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(1.8716945411372736) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(-9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(-9.9999999999858739e-8))) - 9.9999999999858744e-10 * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(1.8716945411372736) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999999858739e-8))) : (0.00037433890822745472 * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(1.8716945411372736) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current__i_siNa = (((var_chaste_interface__membrane__V >= 49.999997328623934) && (var_chaste_interface__membrane__V <= 50.000002671376066)) ? (187169.45411399176 * (-49.999997328623934 + var_chaste_interface__membrane__V) * (9.9999999999858744e-10 * (var_chaste_interface__intracellular_sodium_concentration__Nai * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999999858739e-8)) + 9.9999999999858744e-10 * (var_chaste_interface__intracellular_sodium_concentration__Nai * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(-9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(-9.9999999999858739e-8))) - 9.9999999999858744e-10 * (var_chaste_interface__intracellular_sodium_concentration__Nai * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999999858739e-8))) : (0.00037433890822745472 * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Nai * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current__i_si = var_second_inward_current__i_siCa + var_second_inward_current__i_siK + var_second_inward_current__i_siNa; // nanoA + const double var_second_inward_current__i_si_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_second_inward_current__i_si / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_sodium_background_current__g_Nab = 0.17999999999999999; // microS + const double var_sodium_background_current__i_Na_b = (-var_hyperpolarising_activated_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // nanoA + const double var_sodium_potassium_pump__I_p = 125; // nanoA + const double var_sodium_potassium_pump__K_mK = 1; // millimolar + const double var_sodium_potassium_pump__K_mNa = 40; // millimolar + const double var_sodium_potassium_pump__i_p = var_chaste_interface__extracellular_potassium_concentration__Kc * var_chaste_interface__intracellular_sodium_concentration__Nai * var_sodium_potassium_pump__I_p / ((var_chaste_interface__extracellular_potassium_concentration__Kc + var_sodium_potassium_pump__K_mK) * (var_chaste_interface__intracellular_sodium_concentration__Nai + var_sodium_potassium_pump__K_mNa)); // nanoA + const double var_time_dependent_potassium_current__I_K = 0.0071428571428571426 * (-var_chaste_interface__extracellular_potassium_concentration__Kc * exp(-var_chaste_interface__membrane__V / var_membrane__RTONF) + var_chaste_interface__intracellular_potassium_concentration__Ki) * NV_Ith_S(mParameters, 9); // nanoA + const double var_time_dependent_potassium_current__i_K = var_time_dependent_potassium_current__I_K * var_chaste_interface__time_dependent_potassium_current_x_gate__x; // nanoA + const double var_time_dependent_potassium_current__i_K_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_time_dependent_potassium_current__i_K / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_time_independent_potassium_current__Km_K1 = 210; // millimolar + const double var_time_independent_potassium_current__i_K1 = (-var_hyperpolarising_activated_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__extracellular_potassium_concentration__Kc * NV_Ith_S(mParameters, 15) / ((1 + exp(2 * (10 - var_hyperpolarising_activated_current__E_K + var_chaste_interface__membrane__V) / var_membrane__RTONF)) * (var_chaste_interface__extracellular_potassium_concentration__Kc + var_time_independent_potassium_current__Km_K1)); // nanoA + const double var_time_independent_potassium_current__i_K1_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_transient_outward_current__i_to = (((var_chaste_interface__membrane__V >= -10.000000500000001) && (var_chaste_interface__membrane__V <= -9.9999994999999995)) ? (999999.99999899988 * (10.000000500000001 + var_chaste_interface__membrane__V) * (5.0000000000050004e-7 * (0.20000000000000001 + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(-0.18716946347220006) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(0.18716946347220006)) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - exp(1.0000000000010001e-7)) * (0.00050000000000000001 + var_chaste_interface__intracellular_calcium_concentration__Cai)) + 5.0000000000050004e-7 * (0.20000000000000001 + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(-0.18716944475525465) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(0.18716944475525465)) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - exp(-1.0000000000010001e-7)) * (0.00050000000000000001 + var_chaste_interface__intracellular_calcium_concentration__Cai))) - 5.0000000000050004e-7 * (0.20000000000000001 + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(-0.18716946347220006) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(0.18716946347220006)) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - exp(1.0000000000010001e-7)) * (0.00050000000000000001 + var_chaste_interface__intracellular_calcium_concentration__Cai))) : ((10 + var_chaste_interface__membrane__V) * (0.20000000000000001 + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(0.018716945411372737 * var_chaste_interface__membrane__V) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(-0.018716945411372737 * var_chaste_interface__membrane__V)) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - exp(-2 - 0.20000000000000001 * var_chaste_interface__membrane__V)) * (0.00050000000000000001 + var_chaste_interface__intracellular_calcium_concentration__Cai)))); // nanoA + const double var_transient_outward_current__i_to_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_chaste_interface__i_ionic = ((var_Na_Ca_exchanger__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_hyperpolarising_activated_current__i_f_converted + var_second_inward_current__i_si_converted + var_time_dependent_potassium_current__i_K_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_current__i_to_converted) * NV_Ith_S(mParameters, 8) + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Ca_b + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Na_b + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_p) / NV_Ith_S(mParameters, 8); // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Celldifrancesco_noble_model_1985FromCellMLCvode::EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -87.0 + double var_chaste_interface__intracellular_calcium_concentration__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 5e-05 + double var_chaste_interface__hyperpolarising_activated_current_y_gate__y = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.2 + double var_chaste_interface__time_dependent_potassium_current_x_gate__x = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.01 + double var_chaste_interface__transient_outward_current_s_gate__s = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.01 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.8 + double var_chaste_interface__second_inward_current_d_gate__d = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.005 + double var_chaste_interface__second_inward_current_f_gate__f = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__second_inward_current_f2_gate__f2 = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__intracellular_sodium_concentration__Nai = NV_Ith_S(rY, 10); + // Units: millimolar; Initial value: 8.0 + double var_chaste_interface__intracellular_calcium_concentration__Ca_up = NV_Ith_S(rY, 11); + // Units: millimolar; Initial value: 2.0 + double var_chaste_interface__intracellular_calcium_concentration__Ca_rel = NV_Ith_S(rY, 12); + // Units: millimolar; Initial value: 1.0 + double var_chaste_interface__intracellular_calcium_concentration__p = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__extracellular_potassium_concentration__Kc = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 4.0 + double var_chaste_interface__intracellular_potassium_concentration__Ki = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 140.0 + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_Na_Ca_exchanger__d_NaCa = 0.001; // dimensionless + const double var_Na_Ca_exchanger__gamma = 0.5; // dimensionless + const double var_Na_Ca_exchanger__n_NaCa = 3; // dimensionless + const double var_calcium_background_current__g_Cab = 0.02; // microS + const double var_extracellular_potassium_concentration__Ve = 0.00157; // micrometre3 + const double var_extracellular_potassium_concentration__pf = 0.69999999999999996; // per_second + const double var_fast_sodium_current_m_gate__delta_m = 1.0000000000000001e-5; // millivolt + const double var_hyperpolarising_activated_current__Km_f = 45; // millimolar + const double var_hyperpolarising_activated_current_y_gate__delta_y = 1.0000000000000001e-5; // millivolt + const double var_intracellular_calcium_concentration__Ca_up_max = 5; // millimolar + const double var_intracellular_calcium_concentration__rCa = 2; // dimensionless + const double var_intracellular_calcium_concentration__tau_rel = 0.050000000000000003; // second + const double var_intracellular_calcium_concentration__tau_rep = 2; // second + const double var_intracellular_calcium_concentration__tau_up = 0.025000000000000001; // second + const double var_intracellular_sodium_concentration__V_e_ratio = 0.10000000000000001; // dimensionless + const double var_intracellular_sodium_concentration__length = 2; // micrometre + const double var_intracellular_sodium_concentration__radius = 0.050000000000000003; // micrometre + const double var_intracellular_sodium_concentration__V_Cell = 3.1415926540000001 * pow(var_intracellular_sodium_concentration__radius, 2) * var_intracellular_sodium_concentration__length; // micrometre3 + const double var_intracellular_sodium_concentration__Vi = (1 - var_intracellular_sodium_concentration__V_e_ratio) * var_intracellular_sodium_concentration__V_Cell; // micrometre3 + const double var_intracellular_calcium_concentration__V_rel = 0.02 * var_intracellular_sodium_concentration__Vi; // micrometre3 + const double var_intracellular_calcium_concentration__V_up = 0.050000000000000003 * var_intracellular_sodium_concentration__Vi; // micrometre3 + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_intracellular_calcium_concentration__i_rel = 2 * pow(var_chaste_interface__intracellular_calcium_concentration__Cai, var_intracellular_calcium_concentration__rCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_rel * var_intracellular_calcium_concentration__V_rel * NV_Ith_S(mParameters, 0) * var_membrane__F / ((pow(var_chaste_interface__intracellular_calcium_concentration__Cai, var_intracellular_calcium_concentration__rCa) + pow(NV_Ith_S(mParameters, 1), var_intracellular_calcium_concentration__rCa)) * var_intracellular_calcium_concentration__tau_rel); // nanoA + const double var_intracellular_calcium_concentration__i_tr = 2 * (-var_chaste_interface__intracellular_calcium_concentration__Ca_rel + var_chaste_interface__intracellular_calcium_concentration__Ca_up) * var_intracellular_calcium_concentration__V_rel * var_chaste_interface__intracellular_calcium_concentration__p * var_membrane__F / var_intracellular_calcium_concentration__tau_rep; // nanoA + const double var_intracellular_calcium_concentration__Ca_rel_orig_deriv = 0.5 * (-var_intracellular_calcium_concentration__i_rel + var_intracellular_calcium_concentration__i_tr) / (var_intracellular_calcium_concentration__V_rel * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_rel = 0.001 * var_intracellular_calcium_concentration__Ca_rel_orig_deriv; // millimolar / millisecond + const double var_intracellular_calcium_concentration__i_up = 2 * (-var_chaste_interface__intracellular_calcium_concentration__Ca_up + var_intracellular_calcium_concentration__Ca_up_max) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 2) * var_intracellular_sodium_concentration__Vi * var_membrane__F / (var_intracellular_calcium_concentration__Ca_up_max * var_intracellular_calcium_concentration__tau_up); // nanoA + const double var_intracellular_calcium_concentration__Ca_up_orig_deriv = 0.5 * (-var_intracellular_calcium_concentration__i_tr + var_intracellular_calcium_concentration__i_up) / (var_intracellular_calcium_concentration__V_up * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_up = 0.001 * var_intracellular_calcium_concentration__Ca_up_orig_deriv; // millimolar / millisecond + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_membrane__RTONF = var_membrane__R * var_membrane__T / var_membrane__F; // millivolt + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__RTONF * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__intracellular_calcium_concentration__Cai); // millivolt + const double var_fast_sodium_current__E_mh = var_membrane__RTONF * log((1 * NV_Ith_S(mParameters, 6) + 0.12 * var_chaste_interface__extracellular_potassium_concentration__Kc) / (1 * var_chaste_interface__intracellular_sodium_concentration__Nai + 0.12 * var_chaste_interface__intracellular_potassium_concentration__Ki)); // millivolt + const double var_hyperpolarising_activated_current__E_K = var_membrane__RTONF * log(var_chaste_interface__extracellular_potassium_concentration__Kc / var_chaste_interface__intracellular_potassium_concentration__Ki); // millivolt + const double var_hyperpolarising_activated_current__E_Na = var_membrane__RTONF * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__intracellular_sodium_concentration__Nai); // millivolt + const double var_Na_Ca_exchanger__i_NaCa = (pow(var_chaste_interface__intracellular_sodium_concentration__Nai, var_Na_Ca_exchanger__n_NaCa) * NV_Ith_S(mParameters, 5) * exp((-2 + var_Na_Ca_exchanger__n_NaCa) * var_Na_Ca_exchanger__gamma * var_chaste_interface__membrane__V / var_membrane__RTONF) - pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai * exp((-1 + var_Na_Ca_exchanger__gamma) * (-2 + var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__membrane__V / var_membrane__RTONF)) * NV_Ith_S(mParameters, 16) / ((1 + 144.92753623188406 * var_chaste_interface__intracellular_calcium_concentration__Cai) * (1 + (pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai + pow(var_chaste_interface__intracellular_sodium_concentration__Nai, var_Na_Ca_exchanger__n_NaCa) * NV_Ith_S(mParameters, 5)) * var_Na_Ca_exchanger__d_NaCa)); // nanoA + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // nanoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_mh + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 10) * var_chaste_interface__fast_sodium_current_h_gate__h; // nanoA + const double var_fast_sodium_current_h_gate__alpha_h = 20 * exp(-9.375 + 0.125 * NV_Ith_S(mParameters, 12) - 0.125 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 2000 / (1 + 320 * exp(-7.5 + 0.10000000000000001 * NV_Ith_S(mParameters, 12) - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * NV_Ith_S(mParameters, 11) + (1 - 0.01 * NV_Ith_S(mParameters, 11)) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // dimensionless + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_fast_sodium_current_h_gate__h_orig_deriv = (-var_chaste_interface__fast_sodium_current_h_gate__h + var_fast_sodium_current_h_gate__h_inf) / var_fast_sodium_current_h_gate__tau_h; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * var_fast_sodium_current_h_gate__h_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_m_gate__E0_m = 41 + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((var_fast_sodium_current_m_gate__delta_m > fabs(var_fast_sodium_current_m_gate__E0_m)) ? (2000) : (200 * var_fast_sodium_current_m_gate__E0_m / (1 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 8000 * exp(-3.6960000000000002 - 0.056000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_m_gate__m_orig_deriv = (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_hyperpolarising_activated_current__i_fK = (-var_hyperpolarising_activated_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__extracellular_potassium_concentration__Kc * NV_Ith_S(mParameters, 13) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (var_chaste_interface__extracellular_potassium_concentration__Kc + var_hyperpolarising_activated_current__Km_f); // nanoA + const double var_hyperpolarising_activated_current__i_fNa = (-var_hyperpolarising_activated_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__extracellular_potassium_concentration__Kc * NV_Ith_S(mParameters, 14) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (var_chaste_interface__extracellular_potassium_concentration__Kc + var_hyperpolarising_activated_current__Km_f); // nanoA + const double var_hyperpolarising_activated_current_y_gate__E0_y = 42 + var_chaste_interface__membrane__V; // millivolt + const double var_hyperpolarising_activated_current_y_gate__alpha_y = 0.050000000000000003 * exp(-2.8140000000000001 - 0.067000000000000004 * var_chaste_interface__membrane__V); // per_second + const double var_hyperpolarising_activated_current_y_gate__beta_y = ((var_hyperpolarising_activated_current_y_gate__delta_y > fabs(var_hyperpolarising_activated_current_y_gate__E0_y)) ? (2.5) : (1 * var_hyperpolarising_activated_current_y_gate__E0_y / (1 - exp(-0.20000000000000001 * var_hyperpolarising_activated_current_y_gate__E0_y)))); // per_second + const double var_hyperpolarising_activated_current_y_gate__y_orig_deriv = (1 - var_chaste_interface__hyperpolarising_activated_current_y_gate__y) * var_hyperpolarising_activated_current_y_gate__alpha_y - var_hyperpolarising_activated_current_y_gate__beta_y * var_chaste_interface__hyperpolarising_activated_current_y_gate__y; // 1 / second + const double d_dt_chaste_interface_var_hyperpolarising_activated_current_y_gate__y = 0.001 * var_hyperpolarising_activated_current_y_gate__y_orig_deriv; // 1 / millisecond + const double var_intracellular_calcium_concentration__alpha_p = (((var_chaste_interface__membrane__V >= -34.000000399999998) && (var_chaste_interface__membrane__V <= -33.999999600000002)) ? (-2.5000000000718892e-7 / (-1 + exp(-1.0000000000287557e-7)) + 1249999.9999640554 * (34.000000399999998 + var_chaste_interface__membrane__V) * (2.5000000000718892e-7 / (-1 + exp(1.0000000000287557e-7)) + 2.5000000000718892e-7 / (-1 + exp(-1.0000000000287557e-7)))) : (0.625 * (34 + var_chaste_interface__membrane__V) / (-1 + exp(8.5 + 0.25 * var_chaste_interface__membrane__V)))); // per_second + const double var_intracellular_calcium_concentration__beta_p = 5 / (1 + exp(-8.5 - 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_intracellular_calcium_concentration__p_orig_deriv = (1 - var_chaste_interface__intracellular_calcium_concentration__p) * var_intracellular_calcium_concentration__alpha_p - var_intracellular_calcium_concentration__beta_p * var_chaste_interface__intracellular_calcium_concentration__p; // 1 / second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__p = 0.001 * var_intracellular_calcium_concentration__p_orig_deriv; // 1 / millisecond + const double var_second_inward_current_d_gate__E0_d = 19 + var_chaste_interface__membrane__V; // millivolt + const double var_second_inward_current_d_gate__delta_d = 0.0001; // millivolt + const double var_second_inward_current_d_gate__alpha_d = ((var_second_inward_current_d_gate__delta_d > fabs(var_second_inward_current_d_gate__E0_d)) ? (120) : (30 * var_second_inward_current_d_gate__E0_d / (1 - exp(-0.25 * var_second_inward_current_d_gate__E0_d)))); // per_second + const double var_second_inward_current_d_gate__beta_d = ((var_second_inward_current_d_gate__delta_d > fabs(var_second_inward_current_d_gate__E0_d)) ? (120) : (12 * var_second_inward_current_d_gate__E0_d / (-1 + exp(0.10000000000000001 * var_second_inward_current_d_gate__E0_d)))); // per_second + const double var_second_inward_current_d_gate__d_orig_deriv = (1 - var_chaste_interface__second_inward_current_d_gate__d) * var_second_inward_current_d_gate__alpha_d - var_second_inward_current_d_gate__beta_d * var_chaste_interface__second_inward_current_d_gate__d; // 1 / second + const double d_dt_chaste_interface_var_second_inward_current_d_gate__d = 0.001 * var_second_inward_current_d_gate__d_orig_deriv; // 1 / millisecond + const double var_second_inward_current_f2_gate__K_mf2 = 0.001; // millimolar + const double var_second_inward_current_f2_gate__alpha_f2 = 5; // per_second + const double var_second_inward_current_f2_gate__beta_f2 = var_chaste_interface__intracellular_calcium_concentration__Cai * var_second_inward_current_f2_gate__alpha_f2 / var_second_inward_current_f2_gate__K_mf2; // per_second + const double var_second_inward_current_f2_gate__f2_orig_deriv = -(var_second_inward_current_f2_gate__alpha_f2 + var_second_inward_current_f2_gate__beta_f2) * var_chaste_interface__second_inward_current_f2_gate__f2 + var_second_inward_current_f2_gate__alpha_f2; // 1 / second + const double d_dt_chaste_interface_var_second_inward_current_f2_gate__f2 = 0.001 * var_second_inward_current_f2_gate__f2_orig_deriv; // 1 / millisecond + const double var_second_inward_current_f_gate__E0_f = 34 + var_chaste_interface__membrane__V; // millivolt + const double var_second_inward_current_f_gate__beta_f = 50 / (1 + exp(-8.5 - 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_second_inward_current_f_gate__delta_f = 0.0001; // millivolt + const double var_second_inward_current_f_gate__alpha_f = ((var_second_inward_current_f_gate__delta_f > fabs(var_second_inward_current_f_gate__E0_f)) ? (25) : (6.25 * var_second_inward_current_f_gate__E0_f / (-1 + exp(0.25 * var_second_inward_current_f_gate__E0_f)))); // per_second + const double var_second_inward_current__i_siCa = (((var_chaste_interface__membrane__V >= 49.999998664311967) && (var_chaste_interface__membrane__V <= 50.000001335688033)) ? (374338.90823576227 * (-49.999998664311967 + var_chaste_interface__membrane__V) * (1.9999999999556149e-7 * (var_chaste_interface__intracellular_calcium_concentration__Cai * exp(3.7433890822745473) - NV_Ith_S(mParameters, 5) * exp(9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999997780743e-8)) + 1.9999999999556149e-7 * (var_chaste_interface__intracellular_calcium_concentration__Cai * exp(3.7433890822745473) - NV_Ith_S(mParameters, 5) * exp(-9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(-9.9999999997780743e-8))) - 1.9999999999556149e-7 * (var_chaste_interface__intracellular_calcium_concentration__Cai * exp(3.7433890822745473) - NV_Ith_S(mParameters, 5) * exp(9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999997780743e-8))) : (0.14973556329098189 * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Cai * exp(3.7433890822745473) - NV_Ith_S(mParameters, 5) * exp(3.7433890822745473 - 0.074867781645490947 * var_chaste_interface__membrane__V)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(3.7433890822745473 - 0.074867781645490947 * var_chaste_interface__membrane__V)))); // nanoA + const double var_intracellular_calcium_concentration__Cai_orig_deriv = -0.5 * (-var_intracellular_calcium_concentration__i_rel - 2 * var_Na_Ca_exchanger__i_NaCa / (-2 + var_Na_Ca_exchanger__n_NaCa) + var_calcium_background_current__i_Ca_b + var_intracellular_calcium_concentration__i_up + var_second_inward_current__i_siCa) / (var_intracellular_sodium_concentration__Vi * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Cai = 0.001 * var_intracellular_calcium_concentration__Cai_orig_deriv; // millimolar / millisecond + const double var_second_inward_current__i_siK = (((var_chaste_interface__membrane__V >= 49.999997328623934) && (var_chaste_interface__membrane__V <= 50.000002671376066)) ? (187169.45411399176 * (-49.999997328623934 + var_chaste_interface__membrane__V) * (9.9999999999858744e-10 * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(1.8716945411372736) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999999858739e-8)) + 9.9999999999858744e-10 * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(1.8716945411372736) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(-9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(-9.9999999999858739e-8))) - 9.9999999999858744e-10 * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(1.8716945411372736) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999999858739e-8))) : (0.00037433890822745472 * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(1.8716945411372736) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current__i_siNa = (((var_chaste_interface__membrane__V >= 49.999997328623934) && (var_chaste_interface__membrane__V <= 50.000002671376066)) ? (187169.45411399176 * (-49.999997328623934 + var_chaste_interface__membrane__V) * (9.9999999999858744e-10 * (var_chaste_interface__intracellular_sodium_concentration__Nai * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999999858739e-8)) + 9.9999999999858744e-10 * (var_chaste_interface__intracellular_sodium_concentration__Nai * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(-9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(-9.9999999999858739e-8))) - 9.9999999999858744e-10 * (var_chaste_interface__intracellular_sodium_concentration__Nai * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999999858739e-8))) : (0.00037433890822745472 * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Nai * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current_f_gate__f_orig_deriv = (1 - var_chaste_interface__second_inward_current_f_gate__f) * var_second_inward_current_f_gate__alpha_f - var_second_inward_current_f_gate__beta_f * var_chaste_interface__second_inward_current_f_gate__f; // 1 / second + const double d_dt_chaste_interface_var_second_inward_current_f_gate__f = 0.001 * var_second_inward_current_f_gate__f_orig_deriv; // 1 / millisecond + const double var_sodium_background_current__g_Nab = 0.17999999999999999; // microS + const double var_sodium_background_current__i_Na_b = (-var_hyperpolarising_activated_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // nanoA + const double var_sodium_potassium_pump__I_p = 125; // nanoA + const double var_sodium_potassium_pump__K_mK = 1; // millimolar + const double var_sodium_potassium_pump__K_mNa = 40; // millimolar + const double var_sodium_potassium_pump__i_p = var_chaste_interface__extracellular_potassium_concentration__Kc * var_chaste_interface__intracellular_sodium_concentration__Nai * var_sodium_potassium_pump__I_p / ((var_chaste_interface__extracellular_potassium_concentration__Kc + var_sodium_potassium_pump__K_mK) * (var_chaste_interface__intracellular_sodium_concentration__Nai + var_sodium_potassium_pump__K_mNa)); // nanoA + const double var_intracellular_sodium_concentration__Nai_orig_deriv = -1 * (3 * var_sodium_potassium_pump__i_p + var_Na_Ca_exchanger__i_NaCa * var_Na_Ca_exchanger__n_NaCa / (-2 + var_Na_Ca_exchanger__n_NaCa) + var_fast_sodium_current__i_Na + var_hyperpolarising_activated_current__i_fNa + var_second_inward_current__i_siNa + var_sodium_background_current__i_Na_b) * NV_Ith_S(mParameters, 4) / (var_intracellular_sodium_concentration__Vi * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_sodium_concentration__Nai = 0.001 * var_intracellular_sodium_concentration__Nai_orig_deriv; // millimolar / millisecond + const double var_time_dependent_potassium_current__I_K = 0.0071428571428571426 * (-var_chaste_interface__extracellular_potassium_concentration__Kc * exp(-var_chaste_interface__membrane__V / var_membrane__RTONF) + var_chaste_interface__intracellular_potassium_concentration__Ki) * NV_Ith_S(mParameters, 9); // nanoA + const double var_time_dependent_potassium_current_x_gate__alpha_x = 0.5 * exp(4.1300000000000008 + 0.082600000000000007 * var_chaste_interface__membrane__V) / (1 + exp(2.8500000000000001 + 0.057000000000000002 * var_chaste_interface__membrane__V)); // per_second + const double var_time_dependent_potassium_current_x_gate__beta_x = 1.3 * exp(-1.2 - 0.059999999999999998 * var_chaste_interface__membrane__V) / (1 + exp(-0.80000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_time_dependent_potassium_current__i_K = var_time_dependent_potassium_current__I_K * var_chaste_interface__time_dependent_potassium_current_x_gate__x; // nanoA + const double var_time_dependent_potassium_current_x_gate__x_orig_deriv = (1 - var_chaste_interface__time_dependent_potassium_current_x_gate__x) * var_time_dependent_potassium_current_x_gate__alpha_x - var_time_dependent_potassium_current_x_gate__beta_x * var_chaste_interface__time_dependent_potassium_current_x_gate__x; // 1 / second + const double d_dt_chaste_interface_var_time_dependent_potassium_current_x_gate__x = 0.001 * var_time_dependent_potassium_current_x_gate__x_orig_deriv; // 1 / millisecond + const double var_time_independent_potassium_current__Km_K1 = 210; // millimolar + const double var_time_independent_potassium_current__i_K1 = (-var_hyperpolarising_activated_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__extracellular_potassium_concentration__Kc * NV_Ith_S(mParameters, 15) / ((1 + exp(2 * (10 - var_hyperpolarising_activated_current__E_K + var_chaste_interface__membrane__V) / var_membrane__RTONF)) * (var_chaste_interface__extracellular_potassium_concentration__Kc + var_time_independent_potassium_current__Km_K1)); // nanoA + const double var_transient_outward_current_s_gate__alpha_s = 0.033000000000000002 * exp(-0.058823529411764705 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_current_s_gate__beta_s = 33 / (1 + exp(-1.25 - 0.125 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_current__i_to = (((var_chaste_interface__membrane__V >= -10.000000500000001) && (var_chaste_interface__membrane__V <= -9.9999994999999995)) ? (999999.99999899988 * (10.000000500000001 + var_chaste_interface__membrane__V) * (5.0000000000050004e-7 * (0.20000000000000001 + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(-0.18716946347220006) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(0.18716946347220006)) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - exp(1.0000000000010001e-7)) * (0.00050000000000000001 + var_chaste_interface__intracellular_calcium_concentration__Cai)) + 5.0000000000050004e-7 * (0.20000000000000001 + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(-0.18716944475525465) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(0.18716944475525465)) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - exp(-1.0000000000010001e-7)) * (0.00050000000000000001 + var_chaste_interface__intracellular_calcium_concentration__Cai))) - 5.0000000000050004e-7 * (0.20000000000000001 + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(-0.18716946347220006) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(0.18716946347220006)) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - exp(1.0000000000010001e-7)) * (0.00050000000000000001 + var_chaste_interface__intracellular_calcium_concentration__Cai))) : ((10 + var_chaste_interface__membrane__V) * (0.20000000000000001 + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(0.018716945411372737 * var_chaste_interface__membrane__V) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(-0.018716945411372737 * var_chaste_interface__membrane__V)) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - exp(-2 - 0.20000000000000001 * var_chaste_interface__membrane__V)) * (0.00050000000000000001 + var_chaste_interface__intracellular_calcium_concentration__Cai)))); // nanoA + const double var_extracellular_potassium_concentration__i_mK = -2 * var_sodium_potassium_pump__i_p + var_hyperpolarising_activated_current__i_fK + var_second_inward_current__i_siK + var_time_dependent_potassium_current__i_K + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to; // nanoA + const double var_extracellular_potassium_concentration__Kc_orig_deriv = (-(-NV_Ith_S(mParameters, 3) + var_chaste_interface__extracellular_potassium_concentration__Kc) * var_extracellular_potassium_concentration__pf + 1 * var_extracellular_potassium_concentration__i_mK / (var_extracellular_potassium_concentration__Ve * var_membrane__F)) * NV_Ith_S(mParameters, 4); // millimolar / second + const double d_dt_chaste_interface_var_extracellular_potassium_concentration__Kc = 0.001 * var_extracellular_potassium_concentration__Kc_orig_deriv; // millimolar / millisecond + const double var_intracellular_potassium_concentration__Ki_orig_deriv = -1 * var_extracellular_potassium_concentration__i_mK * NV_Ith_S(mParameters, 4) / (var_intracellular_sodium_concentration__Vi * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_potassium_concentration__Ki = 0.001 * var_intracellular_potassium_concentration__Ki_orig_deriv; // millimolar / millisecond + const double var_transient_outward_current_s_gate__s_orig_deriv = (1 - var_chaste_interface__transient_outward_current_s_gate__s) * var_transient_outward_current_s_gate__alpha_s - var_transient_outward_current_s_gate__beta_s * var_chaste_interface__transient_outward_current_s_gate__s; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_current_s_gate__s = 0.001 * var_transient_outward_current_s_gate__s_orig_deriv; // 1 / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_hyperpolarising_activated_current__i_f = var_hyperpolarising_activated_current__i_fK + var_hyperpolarising_activated_current__i_fNa; // nanoA + const double var_second_inward_current__i_si = var_second_inward_current__i_siCa + var_second_inward_current__i_siK + var_second_inward_current__i_siNa; // nanoA + const double var_stimulus__i_pulse_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_stimulus__i_pulse = 1000 * NV_Ith_S(mParameters, 8) * var_stimulus__i_pulse_converted / HeartConfig::Instance()->GetCapacitance(); // nanoA + const double var_membrane__V_orig_deriv = (-var_Na_Ca_exchanger__i_NaCa - var_calcium_background_current__i_Ca_b - var_fast_sodium_current__i_Na - var_hyperpolarising_activated_current__i_f - var_second_inward_current__i_si - var_sodium_background_current__i_Na_b - var_sodium_potassium_pump__i_p - var_stimulus__i_pulse - var_time_dependent_potassium_current__i_K - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to) / NV_Ith_S(mParameters, 8); // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_intracellular_calcium_concentration__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_hyperpolarising_activated_current_y_gate__y; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_time_dependent_potassium_current_x_gate__x; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_transient_outward_current_s_gate__s; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_second_inward_current_d_gate__d; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_second_inward_current_f_gate__f; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_second_inward_current_f2_gate__f2; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_intracellular_sodium_concentration__Nai; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_up; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_rel; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_intracellular_calcium_concentration__p; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_extracellular_potassium_concentration__Kc; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_intracellular_potassium_concentration__Ki; + } + + N_Vector Celldifrancesco_noble_model_1985FromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -87.0 + double var_chaste_interface__intracellular_calcium_concentration__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 5e-05 + double var_chaste_interface__hyperpolarising_activated_current_y_gate__y = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.2 + double var_chaste_interface__time_dependent_potassium_current_x_gate__x = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.01 + double var_chaste_interface__transient_outward_current_s_gate__s = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.01 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.8 + double var_chaste_interface__second_inward_current_d_gate__d = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.005 + double var_chaste_interface__second_inward_current_f_gate__f = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__second_inward_current_f2_gate__f2 = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__intracellular_sodium_concentration__Nai = NV_Ith_S(rY, 10); + // Units: millimolar; Initial value: 8.0 + double var_chaste_interface__intracellular_calcium_concentration__Ca_rel = NV_Ith_S(rY, 12); + // Units: millimolar; Initial value: 1.0 + double var_chaste_interface__extracellular_potassium_concentration__Kc = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 4.0 + double var_chaste_interface__intracellular_potassium_concentration__Ki = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 140.0 + + // Mathematics + const double var_Na_Ca_exchanger__d_NaCa = 0.001; // dimensionless + const double var_Na_Ca_exchanger__gamma = 0.5; // dimensionless + const double var_Na_Ca_exchanger__n_NaCa = 3; // dimensionless + const double var_hyperpolarising_activated_current__Km_f = 45; // millimolar + const double var_intracellular_calcium_concentration__rCa = 2; // dimensionless + const double var_intracellular_calcium_concentration__tau_rel = 0.050000000000000003; // second + const double var_intracellular_sodium_concentration__V_e_ratio = 0.10000000000000001; // dimensionless + const double var_intracellular_sodium_concentration__length = 2; // micrometre + const double var_intracellular_sodium_concentration__radius = 0.050000000000000003; // micrometre + const double var_intracellular_sodium_concentration__V_Cell = 3.1415926540000001 * pow(var_intracellular_sodium_concentration__radius, 2) * var_intracellular_sodium_concentration__length; // micrometre3 + const double var_intracellular_sodium_concentration__Vi = (1 - var_intracellular_sodium_concentration__V_e_ratio) * var_intracellular_sodium_concentration__V_Cell; // micrometre3 + const double var_intracellular_calcium_concentration__V_rel = 0.02 * var_intracellular_sodium_concentration__Vi; // micrometre3 + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_intracellular_calcium_concentration__i_rel = 2 * pow(var_chaste_interface__intracellular_calcium_concentration__Cai, var_intracellular_calcium_concentration__rCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_rel * var_intracellular_calcium_concentration__V_rel * NV_Ith_S(mParameters, 0) * var_membrane__F / ((pow(var_chaste_interface__intracellular_calcium_concentration__Cai, var_intracellular_calcium_concentration__rCa) + pow(NV_Ith_S(mParameters, 1), var_intracellular_calcium_concentration__rCa)) * var_intracellular_calcium_concentration__tau_rel); // nanoA + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_membrane__RTONF = var_membrane__R * var_membrane__T / var_membrane__F; // millivolt + const double var_fast_sodium_current__E_mh = var_membrane__RTONF * log((1 * NV_Ith_S(mParameters, 6) + 0.12 * var_chaste_interface__extracellular_potassium_concentration__Kc) / (1 * var_chaste_interface__intracellular_sodium_concentration__Nai + 0.12 * var_chaste_interface__intracellular_potassium_concentration__Ki)); // millivolt + const double var_hyperpolarising_activated_current__E_K = var_membrane__RTONF * log(var_chaste_interface__extracellular_potassium_concentration__Kc / var_chaste_interface__intracellular_potassium_concentration__Ki); // millivolt + const double var_hyperpolarising_activated_current__E_Na = var_membrane__RTONF * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__intracellular_sodium_concentration__Nai); // millivolt + const double var_Na_Ca_exchanger__i_NaCa = (pow(var_chaste_interface__intracellular_sodium_concentration__Nai, var_Na_Ca_exchanger__n_NaCa) * NV_Ith_S(mParameters, 5) * exp((-2 + var_Na_Ca_exchanger__n_NaCa) * var_Na_Ca_exchanger__gamma * var_chaste_interface__membrane__V / var_membrane__RTONF) - pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai * exp((-1 + var_Na_Ca_exchanger__gamma) * (-2 + var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__membrane__V / var_membrane__RTONF)) * NV_Ith_S(mParameters, 16) / ((1 + 144.92753623188406 * var_chaste_interface__intracellular_calcium_concentration__Cai) * (1 + (pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Cai + pow(var_chaste_interface__intracellular_sodium_concentration__Nai, var_Na_Ca_exchanger__n_NaCa) * NV_Ith_S(mParameters, 5)) * var_Na_Ca_exchanger__d_NaCa)); // nanoA + const double var_Na_Ca_exchanger__i_NaCa_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_mh + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 10) * var_chaste_interface__fast_sodium_current_h_gate__h; // nanoA + const double var_fast_sodium_current__i_Na_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_fast_sodium_current_h_gate__alpha_h = 20 * exp(-9.375 + 0.125 * NV_Ith_S(mParameters, 12) - 0.125 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 2000 / (1 + 320 * exp(-7.5 + 0.10000000000000001 * NV_Ith_S(mParameters, 12) - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_hyperpolarising_activated_current__i_fK = (-var_hyperpolarising_activated_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__extracellular_potassium_concentration__Kc * NV_Ith_S(mParameters, 13) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (var_chaste_interface__extracellular_potassium_concentration__Kc + var_hyperpolarising_activated_current__Km_f); // nanoA + const double var_hyperpolarising_activated_current__i_fNa = (-var_hyperpolarising_activated_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__extracellular_potassium_concentration__Kc * NV_Ith_S(mParameters, 14) * var_chaste_interface__hyperpolarising_activated_current_y_gate__y / (var_chaste_interface__extracellular_potassium_concentration__Kc + var_hyperpolarising_activated_current__Km_f); // nanoA + const double var_hyperpolarising_activated_current__i_f = var_hyperpolarising_activated_current__i_fK + var_hyperpolarising_activated_current__i_fNa; // nanoA + const double var_hyperpolarising_activated_current__i_f_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_hyperpolarising_activated_current__i_f / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_second_inward_current_f2_gate__K_mf2 = 0.001; // millimolar + const double var_second_inward_current_f2_gate__alpha_f2 = 5; // per_second + const double var_second_inward_current_f2_gate__beta_f2 = var_chaste_interface__intracellular_calcium_concentration__Cai * var_second_inward_current_f2_gate__alpha_f2 / var_second_inward_current_f2_gate__K_mf2; // per_second + const double var_second_inward_current_f2_gate__tau_f2 = 1 / (var_second_inward_current_f2_gate__alpha_f2 + var_second_inward_current_f2_gate__beta_f2); // second + const double var_second_inward_current_f_gate__E0_f = 34 + var_chaste_interface__membrane__V; // millivolt + const double var_second_inward_current_f_gate__beta_f = 50 / (1 + exp(-8.5 - 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_second_inward_current_f_gate__delta_f = 0.0001; // millivolt + const double var_second_inward_current_f_gate__alpha_f = ((var_second_inward_current_f_gate__delta_f > fabs(var_second_inward_current_f_gate__E0_f)) ? (25) : (6.25 * var_second_inward_current_f_gate__E0_f / (-1 + exp(0.25 * var_second_inward_current_f_gate__E0_f)))); // per_second + const double var_second_inward_current__i_siCa = (((var_chaste_interface__membrane__V >= 49.999998664311967) && (var_chaste_interface__membrane__V <= 50.000001335688033)) ? (374338.90823576227 * (-49.999998664311967 + var_chaste_interface__membrane__V) * (1.9999999999556149e-7 * (var_chaste_interface__intracellular_calcium_concentration__Cai * exp(3.7433890822745473) - NV_Ith_S(mParameters, 5) * exp(9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999997780743e-8)) + 1.9999999999556149e-7 * (var_chaste_interface__intracellular_calcium_concentration__Cai * exp(3.7433890822745473) - NV_Ith_S(mParameters, 5) * exp(-9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(-9.9999999997780743e-8))) - 1.9999999999556149e-7 * (var_chaste_interface__intracellular_calcium_concentration__Cai * exp(3.7433890822745473) - NV_Ith_S(mParameters, 5) * exp(9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999997780743e-8))) : (0.14973556329098189 * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Cai * exp(3.7433890822745473) - NV_Ith_S(mParameters, 5) * exp(3.7433890822745473 - 0.074867781645490947 * var_chaste_interface__membrane__V)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(3.7433890822745473 - 0.074867781645490947 * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current__i_siK = (((var_chaste_interface__membrane__V >= 49.999997328623934) && (var_chaste_interface__membrane__V <= 50.000002671376066)) ? (187169.45411399176 * (-49.999997328623934 + var_chaste_interface__membrane__V) * (9.9999999999858744e-10 * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(1.8716945411372736) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999999858739e-8)) + 9.9999999999858744e-10 * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(1.8716945411372736) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(-9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(-9.9999999999858739e-8))) - 9.9999999999858744e-10 * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(1.8716945411372736) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999999858739e-8))) : (0.00037433890822745472 * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(1.8716945411372736) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current__i_siNa = (((var_chaste_interface__membrane__V >= 49.999997328623934) && (var_chaste_interface__membrane__V <= 50.000002671376066)) ? (187169.45411399176 * (-49.999997328623934 + var_chaste_interface__membrane__V) * (9.9999999999858744e-10 * (var_chaste_interface__intracellular_sodium_concentration__Nai * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999999858739e-8)) + 9.9999999999858744e-10 * (var_chaste_interface__intracellular_sodium_concentration__Nai * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(-9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(-9.9999999999858739e-8))) - 9.9999999999858744e-10 * (var_chaste_interface__intracellular_sodium_concentration__Nai * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(9.9999999999858739e-8))) : (0.00037433890822745472 * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Nai * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_current_d_gate__d * var_chaste_interface__second_inward_current_f2_gate__f2 * var_chaste_interface__second_inward_current_f_gate__f / (1 - exp(1.8716945411372736 - 0.037433890822745473 * var_chaste_interface__membrane__V)))); // nanoA + const double var_second_inward_current__i_si = var_second_inward_current__i_siCa + var_second_inward_current__i_siK + var_second_inward_current__i_siNa; // nanoA + const double var_second_inward_current__i_si_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_second_inward_current__i_si / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_second_inward_current_f_gate__tau_f = 1 / (var_second_inward_current_f_gate__alpha_f + var_second_inward_current_f_gate__beta_f); // second + const double var_stimulus__i_pulse_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_time_dependent_potassium_current__I_K = 0.0071428571428571426 * (-var_chaste_interface__extracellular_potassium_concentration__Kc * exp(-var_chaste_interface__membrane__V / var_membrane__RTONF) + var_chaste_interface__intracellular_potassium_concentration__Ki) * NV_Ith_S(mParameters, 9); // nanoA + const double var_time_dependent_potassium_current__i_K = var_time_dependent_potassium_current__I_K * var_chaste_interface__time_dependent_potassium_current_x_gate__x; // nanoA + const double var_time_dependent_potassium_current__i_K_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_time_dependent_potassium_current__i_K / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_time_independent_potassium_current__Km_K1 = 210; // millimolar + const double var_time_independent_potassium_current__i_K1 = (-var_hyperpolarising_activated_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__extracellular_potassium_concentration__Kc * NV_Ith_S(mParameters, 15) / ((1 + exp(2 * (10 - var_hyperpolarising_activated_current__E_K + var_chaste_interface__membrane__V) / var_membrane__RTONF)) * (var_chaste_interface__extracellular_potassium_concentration__Kc + var_time_independent_potassium_current__Km_K1)); // nanoA + const double var_time_independent_potassium_current__i_K1_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_transient_outward_current__i_to = (((var_chaste_interface__membrane__V >= -10.000000500000001) && (var_chaste_interface__membrane__V <= -9.9999994999999995)) ? (999999.99999899988 * (10.000000500000001 + var_chaste_interface__membrane__V) * (5.0000000000050004e-7 * (0.20000000000000001 + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(-0.18716946347220006) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(0.18716946347220006)) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - exp(1.0000000000010001e-7)) * (0.00050000000000000001 + var_chaste_interface__intracellular_calcium_concentration__Cai)) + 5.0000000000050004e-7 * (0.20000000000000001 + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(-0.18716944475525465) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(0.18716944475525465)) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - exp(-1.0000000000010001e-7)) * (0.00050000000000000001 + var_chaste_interface__intracellular_calcium_concentration__Cai))) - 5.0000000000050004e-7 * (0.20000000000000001 + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(-0.18716946347220006) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(0.18716946347220006)) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - exp(1.0000000000010001e-7)) * (0.00050000000000000001 + var_chaste_interface__intracellular_calcium_concentration__Cai))) : ((10 + var_chaste_interface__membrane__V) * (0.20000000000000001 + var_chaste_interface__extracellular_potassium_concentration__Kc / (10 + var_chaste_interface__extracellular_potassium_concentration__Kc)) * (var_chaste_interface__intracellular_potassium_concentration__Ki * exp(0.018716945411372737 * var_chaste_interface__membrane__V) - var_chaste_interface__extracellular_potassium_concentration__Kc * exp(-0.018716945411372737 * var_chaste_interface__membrane__V)) * var_chaste_interface__intracellular_calcium_concentration__Cai * NV_Ith_S(mParameters, 17) * var_chaste_interface__transient_outward_current_s_gate__s / ((1 - exp(-2 - 0.20000000000000001 * var_chaste_interface__membrane__V)) * (0.00050000000000000001 + var_chaste_interface__intracellular_calcium_concentration__Cai)))); // nanoA + const double var_transient_outward_current__i_to_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to / NV_Ith_S(mParameters, 8); // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(15, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(15); +#endif + NV_Ith_S(dqs, 0) = var_intracellular_calcium_concentration__i_rel; + NV_Ith_S(dqs, 1) = var_second_inward_current__i_si_converted; + NV_Ith_S(dqs, 2) = var_second_inward_current_f2_gate__tau_f2; + NV_Ith_S(dqs, 3) = var_second_inward_current_f_gate__tau_f; + NV_Ith_S(dqs, 4) = var_time_dependent_potassium_current__i_K_converted; + NV_Ith_S(dqs, 5) = var_fast_sodium_current__i_Na_converted; + NV_Ith_S(dqs, 6) = var_fast_sodium_current_h_gate__tau_h; + NV_Ith_S(dqs, 7) = var_hyperpolarising_activated_current__i_f_converted; + NV_Ith_S(dqs, 8) = var_hyperpolarising_activated_current__i_fK; + NV_Ith_S(dqs, 9) = var_hyperpolarising_activated_current__i_fNa; + NV_Ith_S(dqs, 10) = var_time_independent_potassium_current__i_K1_converted; + NV_Ith_S(dqs, 11) = var_Na_Ca_exchanger__i_NaCa_converted; + NV_Ith_S(dqs, 12) = var_stimulus__i_pulse_converted; + NV_Ith_S(dqs, 13) = var_transient_outward_current__i_to_converted; + NV_Ith_S(dqs, 14) = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "difrancesco_noble_model_1985"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-87.0); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(5e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("hyperpolarising_activated_current_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.2); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("time_dependent_potassium_current_x_gate__x"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("transient_outward_current_s_gate__s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.005); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.0); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("intracellular_calcium_concentration__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.0); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.0); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("intracellular_calcium_concentration__p"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("extracellular_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(4.0); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(140.0); + + // mParameters[0]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_kmcacyt"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[3]: + this->mParameterNames.push_back("bath_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[4]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoA_per_millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoA"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("nanoA"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("microS_per_millimolar"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("nanoA"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component"); + this->mDerivedQuantityUnits.push_back("nanoA"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component"); + this->mDerivedQuantityUnits.push_back("nanoA"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + + this->mAttributes["SuggestedCycleLength"] = 2000; + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Celldifrancesco_noble_model_1985FromCellMLCvode) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000--sympy_1_13.cpp new file mode 100644 index 00000000..f0886c64 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000--sympy_1_13.cpp @@ -0,0 +1,928 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: faber_rudy_2000 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NumericCvode) +//! on (date omitted as unimportant) +//! +//! + +#include "faber_rudy_2000.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + + + + boost::shared_ptr Cellfaber_rudy_2000FromCellMLCvode::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -25.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 2; // ms + const double var_chaste_interface__cell__stim_period = 1000; // ms + const double var_chaste_interface__cell__stim_start = 100; // ms + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Cellfaber_rudy_2000FromCellMLCvode::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Cellfaber_rudy_2000FromCellMLCvode::Cellfaber_rudy_2000FromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 25, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + NV_Ith_S(this->mParameters, 0) = 1; // (var_calcium_dynamics__leak_factor) [dimensionless] + NV_Ith_S(this->mParameters, 1) = 60; // (var_calcium_dynamics__G_rel_max) [per_ms] + NV_Ith_S(this->mParameters, 2) = 0.00080000000000000004; // (var_calcium_dynamics__K_mrel) [millimolar] + NV_Ith_S(this->mParameters, 3) = 0.0087500000000000008; // (var_calcium_dynamics__I_up) [millimolar_per_ms] + NV_Ith_S(this->mParameters, 4) = 1; // (var_ionic_concentrations__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 5) = 1.8; // (var_calcium_dynamics__Cao) [millimolar] + NV_Ith_S(this->mParameters, 6) = 5.4000000000000004; // (var_ionic_concentrations__Ko) [millimolar] + NV_Ith_S(this->mParameters, 7) = 140; // (var_ionic_concentrations__Nao) [millimolar] + NV_Ith_S(this->mParameters, 8) = 0.00054000000000000001; // (var_L_type_Ca_channel__P_Ca) [litre_per_farad_ms] + NV_Ith_S(this->mParameters, 9) = 16; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + NV_Ith_S(this->mParameters, 10) = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 11) = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + NV_Ith_S(this->mParameters, 12) = 0.75; // (var_time_independent_potassium_current__G_K1) [milliS_per_microF] + NV_Ith_S(this->mParameters, 13) = 0.02614; // (var_rapid_delayed_rectifier_potassium_current__G_Kr) [milliS_per_microF] + NV_Ith_S(this->mParameters, 14) = 0.433; // (var_slow_delayed_rectifier_potassium_current__G_Ks) [milliS_per_microF] + NV_Ith_S(this->mParameters, 15) = 0.00025000000000000001; // (var_Na_Ca_exchanger__c1) [microA_per_microF] + NV_Ith_S(this->mParameters, 16) = 0.5; // (var_transient_outward_current__g_to) [milliS_per_microF] + } + + Cellfaber_rudy_2000FromCellMLCvode::~Cellfaber_rudy_2000FromCellMLCvode() + { + } + + + void Cellfaber_rudy_2000FromCellMLCvode::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 25; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellfaber_rudy_2000FromCellMLCvode::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.2119207874627 + double var_chaste_interface__calcium_dynamics__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 0.000117482029668194 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00149183115674257 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.985596581239651 + double var_chaste_interface__fast_sodium_current_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.990898461370389 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 5.82597094505446e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.997765362821995 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00136737866785149 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.98881442877378 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000204700363126417 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00660746743356887 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.0303768241233812 + double var_chaste_interface__transient_outward_current_zdv_gate__zdv = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.0144622472219576 + double var_chaste_interface__transient_outward_current_ydv_gate__ydv = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.999945568566232 + double var_chaste_interface__ionic_concentrations__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 13.3649235394859 + double var_chaste_interface__ionic_concentrations__Ki = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 141.056872392446 + + const double var_ATP_sensitive_potassium_current__ATPi = 3; // millimolar + const double var_ATP_sensitive_potassium_current__hATP = 2; // dimensionless + const double var_ATP_sensitive_potassium_current__i_K_ATP_on = 1; // dimensionless + const double var_ATP_sensitive_potassium_current__kATP = 0.00025000000000000001; // millimolar + const double var_ATP_sensitive_potassium_current__nATP = 0.23999999999999999; // dimensionless + const double var_ATP_sensitive_potassium_current__nicholsarea = 5.0000000000000002e-5; // dimensionless + const double var_ATP_sensitive_potassium_current__g_K_ATP = 0.000193 * var_ATP_sensitive_potassium_current__i_K_ATP_on / var_ATP_sensitive_potassium_current__nicholsarea; // milliS_per_microF + const double var_ATP_sensitive_potassium_current__pATP = 1 / (1 + pow((var_ATP_sensitive_potassium_current__ATPi / var_ATP_sensitive_potassium_current__kATP), var_ATP_sensitive_potassium_current__hATP)); // dimensionless + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // millimolar + const double var_Na_Ca_exchanger__c2 = 0.0001; // dimensionless + const double var_Na_Ca_exchanger__gamma = 0.14999999999999999; // dimensionless + const double var_T_type_Ca_channel__g_CaT = 0.050000000000000003; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.003016; // milliS_per_microF + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + var_chaste_interface__calcium_dynamics__Cai / var_L_type_Ca_channel_f_Ca_gate__Km_Ca); // dimensionless + const double var_cell__F = 96485; // coulomb_per_mole + const double var_cell__R = 8314; // joule_per_kilomole_kelvin + const double var_cell__T = 310; // kelvin + const double var_calcium_background_current__E_Ca = 0.5 * var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__calcium_dynamics__Cai) / var_cell__F; // millivolt + const double var_L_type_Ca_channel__I_CaCa = (((var_chaste_interface__cell__V >= -1.3356169352749131e-6) && (var_chaste_interface__cell__V <= 1.3356169352749131e-6)) ? (374358.83507802623 * (1.3356169352749131e-6 + var_chaste_interface__cell__V) * (0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(9.9999999999999995e-8)) + 0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(-9.9999999999999995e-8))) - 0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(-9.9999999999999995e-8))) : (14448.004881001343 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(0.074871767015605231 * var_chaste_interface__cell__V)) * NV_Ith_S(mParameters, 8) * var_chaste_interface__cell__V / (-1 + exp(0.074871767015605231 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__cell__V) * var_T_type_Ca_channel__g_CaT * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__cell__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_ATP_sensitive_potassium_current__GKbaraATP = pow((0.25 * NV_Ith_S(mParameters, 6)), var_ATP_sensitive_potassium_current__nATP) * var_ATP_sensitive_potassium_current__g_K_ATP * var_ATP_sensitive_potassium_current__pATP; // milliS_per_microF + const double var_L_type_Ca_channel__I_CaK = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00069711623550831479 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__I_CaNa = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.0024381008236689767 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = (-pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * NV_Ith_S(mParameters, 15) * exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) / (1 + (pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * var_Na_Ca_exchanger__c2 * exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__ionic_concentrations__Nai) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 9) * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_non_specific_calcium_activated_current__I_ns_K = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00063210021354380874 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_non_specific_calcium_activated_current__I_ns_Na = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00063210021354380874 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_non_specific_calcium_activated_current__K_m_ns_Ca = 0.0011999999999999999; // millimolar + const double var_non_specific_calcium_activated_current__i_ns_K = 1 * var_non_specific_calcium_activated_current__I_ns_K / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 1 * var_non_specific_calcium_activated_current__I_ns_Na / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Ca = var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na; // microA_per_microF + const double var_plateau_potassium_current__Kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__cell__V)); // dimensionless + const double var_plateau_potassium_current__g_Kp = 0.0055199999999999997; // milliS_per_microF + const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__g_Kr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 13); // milliS_per_microF + const double var_sarcolemmal_calcium_pump__I_pCa = 1.1499999999999999; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 0.00050000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__calcium_dynamics__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__calcium_dynamics__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__PNaK = 0.018329999999999999; // dimensionless + const double var_slow_delayed_rectifier_potassium_current__E_Ks = var_cell__R * var_cell__T * log((NV_Ith_S(mParameters, 7) * var_slow_delayed_rectifier_potassium_current__PNaK + NV_Ith_S(mParameters, 6)) / (var_chaste_interface__ionic_concentrations__Nai * var_slow_delayed_rectifier_potassium_current__PNaK + var_chaste_interface__ionic_concentrations__Ki)) / var_cell__F; // millivolt + const double var_slow_delayed_rectifier_potassium_current__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * NV_Ith_S(mParameters, 14); // milliS_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (-var_slow_delayed_rectifier_potassium_current__E_Ks + var_chaste_interface__cell__V) * var_slow_delayed_rectifier_potassium_current__g_Ks * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks; // uA_per_cm2 + const double var_sodium_activated_potassium_current__g_K_Na = 0.12848000000000001; // milliS_per_microF + const double var_sodium_activated_potassium_current__kdKNa = 66; // millimolar + const double var_sodium_activated_potassium_current__nKNa = 2.7999999999999998; // dimensionless + const double var_sodium_activated_potassium_current__pona = 0.84999999999999998 / (1 + pow((var_sodium_activated_potassium_current__kdKNa / var_chaste_interface__ionic_concentrations__Nai), var_sodium_activated_potassium_current__nKNa)); // dimensionless + const double var_sodium_activated_potassium_current__pov = 0.80000000000000004 - 0.65000000000000002 / (1 + exp(8.3333333333333339 + 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_sodium_background_current__g_Nab = 0.0040000000000000001; // milliS_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__I_NaK = 2.25; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 7)); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * NV_Ith_S(mParameters, 6) * var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK / ((1 + pow(var_sodium_potassium_pump__K_mNai, 2) / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (NV_Ith_S(mParameters, 6) + var_sodium_potassium_pump__K_mKo)); // microA_per_microF + const double var_time_independent_potassium_current__E_K = var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__ionic_concentrations__Ki) / var_cell__F; // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_ATP_sensitive_potassium_current__GKbaraATP; // microA_per_microF + const double var_plateau_potassium_current__i_Kp = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_plateau_potassium_current__Kp * var_plateau_potassium_current__g_Kp; // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_rapid_delayed_rectifier_potassium_current__Rect * var_rapid_delayed_rectifier_potassium_current__g_Kr * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_sodium_activated_potassium_current__i_K_Na = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_sodium_activated_potassium_current__g_K_Na * var_sodium_activated_potassium_current__pona * var_sodium_activated_potassium_current__pov; // microA_per_microF + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 12); // milliS_per_microF + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = 1 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_current__rvdv = exp(0.01 * var_chaste_interface__cell__V); // dimensionless + const double var_transient_outward_current__i_to = pow(var_chaste_interface__transient_outward_current_zdv_gate__zdv, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 16) * var_transient_outward_current__rvdv * var_chaste_interface__transient_outward_current_ydv_gate__ydv; // microA_per_microF + const double var_transient_outward_current__i_to_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to; // uA_per_cm2 + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_ATP_sensitive_potassium_current__i_K_ATP + HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Ca_b + HeartConfig::Instance()->GetCapacitance() * var_non_specific_calcium_activated_current__i_ns_Ca + HeartConfig::Instance()->GetCapacitance() * var_plateau_potassium_current__i_Kp + HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump__i_p_Ca + HeartConfig::Instance()->GetCapacitance() * var_sodium_activated_potassium_current__i_K_Na + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Na_b + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_exchanger__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_delayed_rectifier_potassium_current__i_Kr_converted + var_slow_delayed_rectifier_potassium_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_current__i_to_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellfaber_rudy_2000FromCellMLCvode::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.2119207874627 + double var_chaste_interface__calcium_dynamics__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 0.000117482029668194 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00149183115674257 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.985596581239651 + double var_chaste_interface__fast_sodium_current_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.990898461370389 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 5.82597094505446e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.997765362821995 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00136737866785149 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.98881442877378 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000204700363126417 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00660746743356887 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.0303768241233812 + double var_chaste_interface__transient_outward_current_zdv_gate__zdv = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.0144622472219576 + double var_chaste_interface__transient_outward_current_ydv_gate__ydv = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.999945568566232 + double var_chaste_interface__calcium_dynamics__Ca_JSR = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 1.12791401197882 + double var_chaste_interface__calcium_dynamics__Ca_NSR = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 1.76731003671612 + double var_chaste_interface__calcium_dynamics__APtrack = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 9.65910542308504e-196 + double var_chaste_interface__calcium_dynamics__APtrack2 = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 5.33944967562997e-195 + double var_chaste_interface__calcium_dynamics__APtrack3 = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 0.000129515197402902 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 2.69380318286645e-196 + double var_chaste_interface__calcium_dynamics__OVRLDtrack = NV_Ith_S(rY, 20); + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = NV_Ith_S(rY, 21); + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = NV_Ith_S(rY, 22); + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 13.3649235394859 + double var_chaste_interface__ionic_concentrations__Ki = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 141.056872392446 + + // Mathematics + double d_dt_chaste_interface_var_cell__V; + const double var_ATP_sensitive_potassium_current__ATPi = 3; // millimolar + const double var_ATP_sensitive_potassium_current__hATP = 2; // dimensionless + const double var_ATP_sensitive_potassium_current__i_K_ATP_on = 1; // dimensionless + const double var_ATP_sensitive_potassium_current__kATP = 0.00025000000000000001; // millimolar + const double var_ATP_sensitive_potassium_current__nATP = 0.23999999999999999; // dimensionless + const double var_ATP_sensitive_potassium_current__nicholsarea = 5.0000000000000002e-5; // dimensionless + const double var_ATP_sensitive_potassium_current__g_K_ATP = 0.000193 * var_ATP_sensitive_potassium_current__i_K_ATP_on / var_ATP_sensitive_potassium_current__nicholsarea; // milliS_per_microF + const double var_ATP_sensitive_potassium_current__pATP = 1 / (1 + pow((var_ATP_sensitive_potassium_current__ATPi / var_ATP_sensitive_potassium_current__kATP), var_ATP_sensitive_potassium_current__hATP)); // dimensionless + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // millimolar + const double var_Na_Ca_exchanger__c2 = 0.0001; // dimensionless + const double var_Na_Ca_exchanger__gamma = 0.14999999999999999; // dimensionless + const double var_T_type_Ca_channel__g_CaT = 0.050000000000000003; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.003016; // milliS_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100 - 100.5 * var_chaste_interface__calcium_dynamics__APtrack2) : (-0.5 * var_chaste_interface__calcium_dynamics__APtrack2)); // 1 / ms + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack3 = (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100 - 100.5 * var_chaste_interface__calcium_dynamics__APtrack3) : (-0.01 * var_chaste_interface__calcium_dynamics__APtrack3)); // 1 / ms + const double var_calcium_dynamics__CMDN_max = 0.050000000000000003; // millimolar + const double var_calcium_dynamics__CSQN_max = 10; // millimolar + const double var_calcium_dynamics__CSQNthresh = 0.69999999999999996; // dimensionless + const double var_calcium_dynamics__Ca_NSR_max = 15; // millimolar + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + var_chaste_interface__calcium_dynamics__Cai / var_L_type_Ca_channel_f_Ca_gate__Km_Ca); // dimensionless + const double var_calcium_dynamics__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_calcium_dynamics__K_mCSQN = 0.80000000000000004; // millimolar + const double var_calcium_dynamics__K_mTn = 0.00050000000000000001; // millimolar + const double var_calcium_dynamics__K_mup = 0.00092000000000000003; // millimolar + const double var_calcium_dynamics__Logicthresh = 0.97999999999999998; // dimensionless + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2 = (((var_calcium_dynamics__Logicthresh > var_chaste_interface__calcium_dynamics__OVRLDtrack2) && (var_calcium_dynamics__Logicthresh < var_chaste_interface__calcium_dynamics__OVRLDtrack)) ? (50 - 50 * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (-0.5 * var_chaste_interface__calcium_dynamics__OVRLDtrack2)); // 1 / ms + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack = (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (var_calcium_dynamics__CSQNthresh < 1 / (1 + var_calcium_dynamics__K_mCSQN / var_chaste_interface__calcium_dynamics__Ca_JSR))) ? (50 - 50 * var_chaste_interface__calcium_dynamics__OVRLDtrack) : (-0.5 * var_chaste_interface__calcium_dynamics__OVRLDtrack)); // 1 / ms + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3 = (((var_calcium_dynamics__Logicthresh > var_chaste_interface__calcium_dynamics__OVRLDtrack3) && (var_calcium_dynamics__Logicthresh < var_chaste_interface__calcium_dynamics__OVRLDtrack)) ? (50 - 50 * var_chaste_interface__calcium_dynamics__OVRLDtrack3) : (-0.01 * var_chaste_interface__calcium_dynamics__OVRLDtrack3)); // 1 / ms + const double var_calcium_dynamics__RyRopen = 1 / (1 + var_chaste_interface__calcium_dynamics__APtrack2 * exp(2)); // dimensionless + const double var_calcium_dynamics__RyRclose = 1 - var_calcium_dynamics__RyRopen; // dimensionless + const double var_calcium_dynamics__Tn_max = 0.070000000000000007; // millimolar + const double var_calcium_dynamics__i_up = var_chaste_interface__calcium_dynamics__Cai * NV_Ith_S(mParameters, 3) / (var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__K_mup); // millimolar_per_ms + const double var_calcium_dynamics__K_leak = NV_Ith_S(mParameters, 3) * NV_Ith_S(mParameters, 0) / var_calcium_dynamics__Ca_NSR_max; // per_ms + const double var_calcium_dynamics__i_leak = var_chaste_interface__calcium_dynamics__Ca_NSR * var_calcium_dynamics__K_leak; // millimolar_per_ms + const double var_calcium_dynamics__tau_tr = 180; // ms + const double var_calcium_dynamics__i_tr = (-var_chaste_interface__calcium_dynamics__Ca_JSR + var_chaste_interface__calcium_dynamics__Ca_NSR) / var_calcium_dynamics__tau_tr; // millimolar_per_ms + const double var_cell__F = 96485; // coulomb_per_mole + const double var_cell__R = 8314; // joule_per_kilomole_kelvin + const double var_cell__T = 310; // kelvin + const double var_calcium_background_current__E_Ca = 0.5 * var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__calcium_dynamics__Cai) / var_cell__F; // millivolt + const double var_L_type_Ca_channel__I_CaCa = (((var_chaste_interface__cell__V >= -1.3356169352749131e-6) && (var_chaste_interface__cell__V <= 1.3356169352749131e-6)) ? (374358.83507802623 * (1.3356169352749131e-6 + var_chaste_interface__cell__V) * (0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(9.9999999999999995e-8)) + 0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(-9.9999999999999995e-8))) - 0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(-9.9999999999999995e-8))) : (14448.004881001343 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(0.074871767015605231 * var_chaste_interface__cell__V)) * NV_Ith_S(mParameters, 8) * var_chaste_interface__cell__V / (-1 + exp(0.074871767015605231 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel_d_gate__E0_d = 10 + var_chaste_interface__cell__V; // millivolt + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(var_L_type_Ca_channel_d_gate__E0_d) < 1.0000000000000001e-5) ? (2.2893772893772892) : (28.571428571428569 * (1 - exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__E0_d)); // ms + const double var_L_type_Ca_channel_d_gate__alpha_d = var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d; // per_ms + const double var_L_type_Ca_channel_d_gate__beta_d = (1 - var_L_type_Ca_channel_d_gate__d_infinity) / var_L_type_Ca_channel_d_gate__tau_d; // per_ms + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = (1 - var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__alpha_d - var_L_type_Ca_channel_d_gate__beta_d * var_chaste_interface__L_type_Ca_channel_d_gate__d; // 1 / ms + const double var_L_type_Ca_channel_f_gate__f_infinity = 1 / (1 + exp(4.0767441860465121 + 0.11627906976744186 * var_chaste_interface__cell__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V)); // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__cell__V), 2))); // ms + const double var_L_type_Ca_channel_f_gate__alpha_f = var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f; // per_ms + const double var_L_type_Ca_channel_f_gate__beta_f = (1 - var_L_type_Ca_channel_f_gate__f_infinity) / var_L_type_Ca_channel_f_gate__tau_f; // per_ms + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = (1 - var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__alpha_f - var_L_type_Ca_channel_f_gate__beta_f * var_chaste_interface__L_type_Ca_channel_f_gate__f; // 1 / ms + const double var_T_type_Ca_channel__i_Ca_T = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__cell__V) * var_T_type_Ca_channel__g_CaT * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_T_type_Ca_channel_b_gate__b_inf = 1 / (1 + exp(-1.2962962962962963 - 0.092592592592592587 * var_chaste_interface__cell__V)); // dimensionless + const double var_T_type_Ca_channel_b_gate__tau_b = 3.7000000000000002 + 6.0999999999999996 / (1 + exp(5.5555555555555554 + 0.22222222222222221 * var_chaste_interface__cell__V)); // ms + const double d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b = (-var_chaste_interface__T_type_Ca_channel_b_gate__b + var_T_type_Ca_channel_b_gate__b_inf) / var_T_type_Ca_channel_b_gate__tau_b; // 1 / ms + const double var_T_type_Ca_channel_g_gate__g_inf = 1 / (1 + exp(10.714285714285715 + 0.17857142857142858 * var_chaste_interface__cell__V)); // dimensionless + const double var_T_type_Ca_channel_g_gate__tau_g = ((var_chaste_interface__cell__V <= 0) ? (12 - 0.875 * var_chaste_interface__cell__V) : (12)); // ms + const double d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g = (-var_chaste_interface__T_type_Ca_channel_g_gate__g + var_T_type_Ca_channel_g_gate__g_inf) / var_T_type_Ca_channel_g_gate__tau_g; // 1 / ms + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__cell__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_cell__I_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__I_st = var_cell__I_st_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 11) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_ms + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 11)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 11))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 11) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_ms + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * NV_Ith_S(mParameters, 10) + (1 - 0.01 * NV_Ith_S(mParameters, 10)) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // dimensionless + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // ms + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = (-var_chaste_interface__fast_sodium_current_h_gate__h + var_fast_sodium_current_h_gate__h_inf) / var_fast_sodium_current_h_gate__tau_h; // 1 / ms + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 11)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 11) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 11)))) : (0)); // per_ms + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 11) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 11) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 11) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 11) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_ms + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * NV_Ith_S(mParameters, 10) + (1 - 0.01 * NV_Ith_S(mParameters, 10)) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // dimensionless + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // ms + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = (-var_chaste_interface__fast_sodium_current_j_gate__j + var_fast_sodium_current_j_gate__j_inf) / var_fast_sodium_current_j_gate__tau_j; // 1 / ms + const double var_fast_sodium_current_m_gate__E0_m = 47.130000000000003 + var_chaste_interface__cell__V; // millivolt + const double var_fast_sodium_current_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__cell__V); // per_ms + const double var_fast_sodium_current_m_gate__delta_m = 1.0000000000000001e-5; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((var_fast_sodium_current_m_gate__delta_m <= fabs(var_fast_sodium_current_m_gate__E0_m)) ? (0.32000000000000001 * var_fast_sodium_current_m_gate__E0_m / (1 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m))) : (3.2000000000000002)); // per_ms + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m; // 1 / ms + const double var_geometry__A_cap = 0.00015339999999999999; // cm2 + const double var_geometry__preplength = 0.10000000000000001; // mm + const double var_geometry__radius = 0.010999999999999999; // mm + const double var_geometry__volume = M_PI * pow(var_geometry__radius, 2) * var_geometry__preplength; // micro_litre + const double var_geometry__V_JSR = 0.0047999999999999996 * var_geometry__volume; // micro_litre + const double var_geometry__V_NSR = 0.055199999999999999 * var_geometry__volume; // micro_litre + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR = -var_calcium_dynamics__i_leak - var_calcium_dynamics__i_tr * var_geometry__V_JSR / var_geometry__V_NSR + var_calcium_dynamics__i_up; // millimolar / ms + const double var_geometry__V_myo = 0.68000000000000005 * var_geometry__volume; // micro_litre + const double var_ATP_sensitive_potassium_current__GKbaraATP = pow((0.25 * NV_Ith_S(mParameters, 6)), var_ATP_sensitive_potassium_current__nATP) * var_ATP_sensitive_potassium_current__g_K_ATP * var_ATP_sensitive_potassium_current__pATP; // milliS_per_microF + const double var_L_type_Ca_channel__I_CaK = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00069711623550831479 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__I_CaNa = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.0024381008236689767 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = (-pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * NV_Ith_S(mParameters, 15) * exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) / (1 + (pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * var_Na_Ca_exchanger__c2 * exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__ionic_concentrations__Nai) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 9) * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__I_ns_K = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00063210021354380874 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_non_specific_calcium_activated_current__I_ns_Na = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00063210021354380874 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_non_specific_calcium_activated_current__K_m_ns_Ca = 0.0011999999999999999; // millimolar + const double var_non_specific_calcium_activated_current__i_ns_K = 1 * var_non_specific_calcium_activated_current__I_ns_K / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 1 * var_non_specific_calcium_activated_current__I_ns_Na / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Ca = var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na; // microA_per_microF + const double var_plateau_potassium_current__Kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__cell__V)); // dimensionless + const double var_plateau_potassium_current__g_Kp = 0.0055199999999999997; // milliS_per_microF + const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__g_Kr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 13); // milliS_per_microF + const double var_rapid_delayed_rectifier_potassium_current_xr_gate__tau_xr = 1 / ((((var_chaste_interface__cell__V >= -14.200000813008129) && (var_chaste_interface__cell__V <= -14.199999186991869)) ? (-1.1219512194943214e-9 / (1 - exp(9.9999999998406912e-8)) + 615000.00000454858 * (14.200000813008129 + var_chaste_interface__cell__V) * (1.1219512194943214e-9 / (1 - exp(9.9999999998406912e-8)) + 1.1219512195134727e-9 / (1 - exp(-1.0000000000011388e-7)))) : (0.0013799999999999999 * (14.199999999999999 + var_chaste_interface__cell__V) / (1 - exp(-1.7465999999999999 - 0.123 * var_chaste_interface__cell__V)))) + (((var_chaste_interface__cell__V >= -38.900000689655172) && (var_chaste_interface__cell__V <= -38.899999310344825)) ? (-4.2068965517283451e-10 / (-1 + exp(-1.000000000001e-7)) + 724999.99997009686 * (38.900000689655172 + var_chaste_interface__cell__V) * (4.2068965517283451e-10 / (-1 + exp(-1.000000000001e-7)) + 4.2068965520669629e-10 / (-1 + exp(1.0000000000814911e-7)))) : (0.00060999999999999997 * (38.899999999999999 + var_chaste_interface__cell__V) / (-1 + exp(5.6404999999999994 + 0.14499999999999999 * var_chaste_interface__cell__V))))); // ms + const double var_rapid_delayed_rectifier_potassium_current_xr_gate__xr_infinity = 1 / (1 + exp(-2.8666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V)); // dimensionless + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr = (-var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr + var_rapid_delayed_rectifier_potassium_current_xr_gate__xr_infinity) / var_rapid_delayed_rectifier_potassium_current_xr_gate__tau_xr; // 1 / ms + const double var_sarcolemmal_calcium_pump__I_pCa = 1.1499999999999999; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 0.00050000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__calcium_dynamics__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__calcium_dynamics__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack = ((var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001) ? (-0.5 * (-2 * var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) * var_geometry__A_cap / (var_cell__F * var_geometry__V_myo)) : ((var_chaste_interface__calcium_dynamics__APtrack2 > 0.01) ? (0) : (-0.5 * var_chaste_interface__calcium_dynamics__Cainfluxtrack))); // millimolar / ms + const double var_calcium_dynamics__G_rel = 150 * var_calcium_dynamics__RyRclose * var_calcium_dynamics__RyRopen / (1 + exp(5.5555555555555554 + 1.1111111111111112 * var_L_type_Ca_channel__i_CaCa + 1.1111111111111112 * var_T_type_Ca_channel__i_Ca_T + 1.1111111111111112 * var_calcium_background_current__i_Ca_b + 1.1111111111111112 * var_sarcolemmal_calcium_pump__i_p_Ca - 2.2222222222222223 * var_Na_Ca_exchanger__i_NaCa)); // per_ms + const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * var_calcium_dynamics__G_rel; // millimolar_per_ms + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR = 1 * (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + var_calcium_dynamics__CSQN_max * var_calcium_dynamics__K_mCSQN / pow((var_chaste_interface__calcium_dynamics__Ca_JSR + var_calcium_dynamics__K_mCSQN), 2)); // millimolar / ms + const double d_dt_chaste_interface_var_calcium_dynamics__Cai = 1 * ((-var_calcium_dynamics__i_up + var_calcium_dynamics__i_leak) * var_geometry__V_NSR / var_geometry__V_myo + var_calcium_dynamics__i_rel * var_geometry__V_JSR / var_geometry__V_myo - 0.5 * (-2 * var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) * var_geometry__A_cap / (var_cell__F * var_geometry__V_myo)) / (1 + var_calcium_dynamics__CMDN_max * var_calcium_dynamics__K_mCMDN / pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__K_mCMDN), 2) + var_calcium_dynamics__K_mTn * var_calcium_dynamics__Tn_max / pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__K_mTn), 2)); // millimolar / ms + const double var_slow_delayed_rectifier_potassium_current__PNaK = 0.018329999999999999; // dimensionless + const double var_slow_delayed_rectifier_potassium_current__E_Ks = var_cell__R * var_cell__T * log((NV_Ith_S(mParameters, 7) * var_slow_delayed_rectifier_potassium_current__PNaK + NV_Ith_S(mParameters, 6)) / (var_chaste_interface__ionic_concentrations__Nai * var_slow_delayed_rectifier_potassium_current__PNaK + var_chaste_interface__ionic_concentrations__Ki)) / var_cell__F; // millivolt + const double var_slow_delayed_rectifier_potassium_current__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * NV_Ith_S(mParameters, 14); // milliS_per_microF + const double var_slow_delayed_rectifier_potassium_current_xs1_gate__tau_xs1 = 1 * (((var_chaste_interface__cell__V >= -30.000001455604075) && (var_chaste_interface__cell__V <= -29.999998544395925)) ? (1 / (-1.0465793304208771e-10 / (1 - exp(2.1542940320207204e-7)) - 1.9068413391534758e-10 / (-1 + exp(-9.9999999999880736e-8)) + 343500.00000040967 * (30.000001455604075 + var_chaste_interface__cell__V) * (1.0465793304208771e-10 / (1 - exp(2.1542940320207204e-7)) + 1.0465793304208771e-10 / (1 - exp(-2.1542940320207204e-7)) + 1.9068413391534758e-10 / (-1 + exp(9.9999999999880736e-8)) + 1.9068413391534758e-10 / (-1 + exp(-9.9999999999880736e-8))))) : (1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))))); // ms + const double var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1_infinity = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 + var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1_infinity) / var_slow_delayed_rectifier_potassium_current_xs1_gate__tau_xs1; // 1 / ms + const double var_slow_delayed_rectifier_potassium_current_xs2_gate__tau_xs2 = 4 * (((var_chaste_interface__cell__V >= -30.000001455604075) && (var_chaste_interface__cell__V <= -29.999998544395925)) ? (1 / (-1.0465793304208771e-10 / (1 - exp(2.1542940320207204e-7)) - 1.9068413391534758e-10 / (-1 + exp(-9.9999999999880736e-8)) + 343500.00000040967 * (30.000001455604075 + var_chaste_interface__cell__V) * (1.0465793304208771e-10 / (1 - exp(2.1542940320207204e-7)) + 1.0465793304208771e-10 / (1 - exp(-2.1542940320207204e-7)) + 1.9068413391534758e-10 / (-1 + exp(9.9999999999880736e-8)) + 1.9068413391534758e-10 / (-1 + exp(-9.9999999999880736e-8))))) : (1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))))); // ms + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (-var_slow_delayed_rectifier_potassium_current__E_Ks + var_chaste_interface__cell__V) * var_slow_delayed_rectifier_potassium_current__g_Ks * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2_infinity = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 + var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2_infinity) / var_slow_delayed_rectifier_potassium_current_xs2_gate__tau_xs2; // 1 / ms + const double var_sodium_activated_potassium_current__g_K_Na = 0.12848000000000001; // milliS_per_microF + const double var_sodium_activated_potassium_current__kdKNa = 66; // millimolar + const double var_sodium_activated_potassium_current__nKNa = 2.7999999999999998; // dimensionless + const double var_sodium_activated_potassium_current__pona = 0.84999999999999998 / (1 + pow((var_sodium_activated_potassium_current__kdKNa / var_chaste_interface__ionic_concentrations__Nai), var_sodium_activated_potassium_current__nKNa)); // dimensionless + const double var_sodium_activated_potassium_current__pov = 0.80000000000000004 - 0.65000000000000002 / (1 + exp(8.3333333333333339 + 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_sodium_background_current__g_Nab = 0.0040000000000000001; // milliS_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__I_NaK = 2.25; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 7)); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * NV_Ith_S(mParameters, 6) * var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK / ((1 + pow(var_sodium_potassium_pump__K_mNai, 2) / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (NV_Ith_S(mParameters, 6) + var_sodium_potassium_pump__K_mKo)); // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Nai = -1 * (3 * var_Na_Ca_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaNa + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_Na + var_sodium_background_current__i_Na_b) * var_geometry__A_cap * NV_Ith_S(mParameters, 4) / (var_cell__F * var_geometry__V_myo); // millimolar / ms + const double var_time_independent_potassium_current__E_K = var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__ionic_concentrations__Ki) / var_cell__F; // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_ATP_sensitive_potassium_current__GKbaraATP; // microA_per_microF + const double var_plateau_potassium_current__i_Kp = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_plateau_potassium_current__Kp * var_plateau_potassium_current__g_Kp; // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_rapid_delayed_rectifier_potassium_current__Rect * var_rapid_delayed_rectifier_potassium_current__g_Kr * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_sodium_activated_potassium_current__i_K_Na = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_sodium_activated_potassium_current__g_K_Na * var_sodium_activated_potassium_current__pona * var_sodium_activated_potassium_current__pov; // microA_per_microF + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 12); // milliS_per_microF + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = 1 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // microA_per_microF + const double var_transient_outward_current__rvdv = exp(0.01 * var_chaste_interface__cell__V); // dimensionless + const double var_transient_outward_current_ydv_gate__alpha_ydv = 0.014999999999999999 / (1 + exp(12 + 0.20000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_transient_outward_current_ydv_gate__beta_ydv = 0.10000000000000001 * exp(5 + 0.20000000000000001 * var_chaste_interface__cell__V) / (1 + exp(5 + 0.20000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_transient_outward_current_ydv_gate__tau_ydv = 1 / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv); // ms + const double var_transient_outward_current_ydv_gate__ydv_ss = var_transient_outward_current_ydv_gate__alpha_ydv / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv); // dimensionless + const double d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv = (-var_chaste_interface__transient_outward_current_ydv_gate__ydv + var_transient_outward_current_ydv_gate__ydv_ss) / var_transient_outward_current_ydv_gate__tau_ydv; // 1 / ms + const double var_transient_outward_current_zdv_gate__alpha_zdv = 10 * exp(-1.6000000000000001 + 0.040000000000000001 * var_chaste_interface__cell__V) / (1 + exp(-1.6000000000000001 + 0.040000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_transient_outward_current_zdv_gate__beta_zdv = 10 * exp(-3.6000000000000001 - 0.040000000000000001 * var_chaste_interface__cell__V) / (1 + exp(-3.6000000000000001 - 0.040000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_transient_outward_current_zdv_gate__tau_zdv = 1 / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv); // ms + const double var_transient_outward_current__i_to = pow(var_chaste_interface__transient_outward_current_zdv_gate__zdv, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 16) * var_transient_outward_current__rvdv * var_chaste_interface__transient_outward_current_ydv_gate__ydv; // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Ki = -1 * (-2 * var_sodium_potassium_pump__i_NaK + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaK + var_cell__I_st + var_non_specific_calcium_activated_current__i_ns_K + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_activated_potassium_current__i_K_Na + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) * var_geometry__A_cap * NV_Ith_S(mParameters, 4) / (var_cell__F * var_geometry__V_myo); // millimolar / ms + const double var_cell__dVdt = -var_ATP_sensitive_potassium_current__i_K_ATP - var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger__i_NaCa - var_T_type_Ca_channel__i_Ca_T - var_calcium_background_current__i_Ca_b - var_cell__I_st - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Ca - var_plateau_potassium_current__i_Kp - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_sarcolemmal_calcium_pump__i_p_Ca - var_slow_delayed_rectifier_potassium_current__i_Ks - var_sodium_activated_potassium_current__i_K_Na - var_sodium_background_current__i_Na_b - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to; // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack = ((var_cell__dVdt > 150) ? (100 - 100.5 * var_chaste_interface__calcium_dynamics__APtrack) : (-0.5 * var_chaste_interface__calcium_dynamics__APtrack)); // 1 / ms + const double var_transient_outward_current_zdv_gate__zdv_ss = var_transient_outward_current_zdv_gate__alpha_zdv / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv); // dimensionless + const double d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv = (-var_chaste_interface__transient_outward_current_zdv_gate__zdv + var_transient_outward_current_zdv_gate__zdv_ss) / var_transient_outward_current_zdv_gate__tau_zdv; // 1 / ms + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_cell__V = 0.0; + } + else + { + d_dt_chaste_interface_var_cell__V = -var_ATP_sensitive_potassium_current__i_K_ATP - var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger__i_NaCa - var_T_type_Ca_channel__i_Ca_T - var_calcium_background_current__i_Ca_b - var_cell__I_st - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Ca - var_plateau_potassium_current__i_Kp - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_sarcolemmal_calcium_pump__i_p_Ca - var_slow_delayed_rectifier_potassium_current__i_Ks - var_sodium_activated_potassium_current__i_K_Na - var_sodium_background_current__i_Na_b - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to; // millivolt / ms + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_cell__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_calcium_dynamics__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_calcium_dynamics__APtrack; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_calcium_dynamics__APtrack2; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_calcium_dynamics__APtrack3; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_ionic_concentrations__Nai; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_ionic_concentrations__Ki; + } + + N_Vector Cellfaber_rudy_2000FromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.2119207874627 + double var_chaste_interface__calcium_dynamics__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 0.000117482029668194 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00149183115674257 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.985596581239651 + double var_chaste_interface__fast_sodium_current_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.990898461370389 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 5.82597094505446e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.997765362821995 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00136737866785149 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.98881442877378 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000204700363126417 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00660746743356887 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.0303768241233812 + double var_chaste_interface__transient_outward_current_zdv_gate__zdv = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.0144622472219576 + double var_chaste_interface__transient_outward_current_ydv_gate__ydv = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.999945568566232 + double var_chaste_interface__calcium_dynamics__Ca_JSR = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 1.12791401197882 + double var_chaste_interface__calcium_dynamics__APtrack2 = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 5.33944967562997e-195 + double var_chaste_interface__ionic_concentrations__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 13.3649235394859 + double var_chaste_interface__ionic_concentrations__Ki = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 141.056872392446 + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // millimolar + const double var_Na_Ca_exchanger__c2 = 0.0001; // dimensionless + const double var_Na_Ca_exchanger__gamma = 0.14999999999999999; // dimensionless + const double var_T_type_Ca_channel__g_CaT = 0.050000000000000003; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.003016; // milliS_per_microF + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + var_chaste_interface__calcium_dynamics__Cai / var_L_type_Ca_channel_f_Ca_gate__Km_Ca); // dimensionless + const double var_calcium_dynamics__RyRopen = 1 / (1 + var_chaste_interface__calcium_dynamics__APtrack2 * exp(2)); // dimensionless + const double var_calcium_dynamics__RyRclose = 1 - var_calcium_dynamics__RyRopen; // dimensionless + const double var_cell__F = 96485; // coulomb_per_mole + const double var_cell__R = 8314; // joule_per_kilomole_kelvin + const double var_cell__T = 310; // kelvin + const double var_calcium_background_current__E_Ca = 0.5 * var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__calcium_dynamics__Cai) / var_cell__F; // millivolt + const double var_L_type_Ca_channel__I_CaCa = (((var_chaste_interface__cell__V >= -1.3356169352749131e-6) && (var_chaste_interface__cell__V <= 1.3356169352749131e-6)) ? (374358.83507802623 * (1.3356169352749131e-6 + var_chaste_interface__cell__V) * (0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(9.9999999999999995e-8)) + 0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(-9.9999999999999995e-8))) - 0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(-9.9999999999999995e-8))) : (14448.004881001343 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(0.074871767015605231 * var_chaste_interface__cell__V)) * NV_Ith_S(mParameters, 8) * var_chaste_interface__cell__V / (-1 + exp(0.074871767015605231 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__cell__V), 2))); // ms + const double var_T_type_Ca_channel__i_Ca_T = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__cell__V) * var_T_type_Ca_channel__g_CaT * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__cell__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_cell__I_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 11) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_ms + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 11)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 11))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 11) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_ms + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // ms + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 11)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 11) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 11)))) : (0)); // per_ms + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 11) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 11) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 11) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 11) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_ms + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // ms + const double var_L_type_Ca_channel__I_CaK = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00069711623550831479 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__I_CaNa = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.0024381008236689767 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = (-pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * NV_Ith_S(mParameters, 15) * exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) / (1 + (pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * var_Na_Ca_exchanger__c2 * exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__ionic_concentrations__Nai) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 9) * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__g_Kr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 13); // milliS_per_microF + const double var_sarcolemmal_calcium_pump__I_pCa = 1.1499999999999999; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 0.00050000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__calcium_dynamics__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__calcium_dynamics__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_calcium_dynamics__G_rel = 150 * var_calcium_dynamics__RyRclose * var_calcium_dynamics__RyRopen / (1 + exp(5.5555555555555554 + 1.1111111111111112 * var_L_type_Ca_channel__i_CaCa + 1.1111111111111112 * var_T_type_Ca_channel__i_Ca_T + 1.1111111111111112 * var_calcium_background_current__i_Ca_b + 1.1111111111111112 * var_sarcolemmal_calcium_pump__i_p_Ca - 2.2222222222222223 * var_Na_Ca_exchanger__i_NaCa)); // per_ms + const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * var_calcium_dynamics__G_rel; // millimolar_per_ms + const double var_slow_delayed_rectifier_potassium_current__PNaK = 0.018329999999999999; // dimensionless + const double var_slow_delayed_rectifier_potassium_current__E_Ks = var_cell__R * var_cell__T * log((NV_Ith_S(mParameters, 7) * var_slow_delayed_rectifier_potassium_current__PNaK + NV_Ith_S(mParameters, 6)) / (var_chaste_interface__ionic_concentrations__Nai * var_slow_delayed_rectifier_potassium_current__PNaK + var_chaste_interface__ionic_concentrations__Ki)) / var_cell__F; // millivolt + const double var_slow_delayed_rectifier_potassium_current__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * NV_Ith_S(mParameters, 14); // milliS_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (-var_slow_delayed_rectifier_potassium_current__E_Ks + var_chaste_interface__cell__V) * var_slow_delayed_rectifier_potassium_current__g_Ks * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks; // uA_per_cm2 + const double var_time_independent_potassium_current__E_K = var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__ionic_concentrations__Ki) / var_cell__F; // millivolt + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_rapid_delayed_rectifier_potassium_current__Rect * var_rapid_delayed_rectifier_potassium_current__g_Kr * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 12); // milliS_per_microF + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = 1 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_current__rvdv = exp(0.01 * var_chaste_interface__cell__V); // dimensionless + const double var_transient_outward_current__i_to = pow(var_chaste_interface__transient_outward_current_zdv_gate__zdv, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 16) * var_transient_outward_current__rvdv * var_chaste_interface__transient_outward_current_ydv_gate__ydv; // microA_per_microF + const double var_transient_outward_current__i_to_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(17, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(17); +#endif + NV_Ith_S(dqs, 0) = var_calcium_dynamics__i_rel; + NV_Ith_S(dqs, 1) = var_L_type_Ca_channel__i_Ca_L_converted; + NV_Ith_S(dqs, 2) = var_L_type_Ca_channel_f_Ca_gate__f_Ca; + NV_Ith_S(dqs, 3) = var_L_type_Ca_channel_f_gate__tau_f; + NV_Ith_S(dqs, 4) = var_fast_sodium_current__i_Na_converted; + NV_Ith_S(dqs, 5) = var_fast_sodium_current_h_gate__tau_h; + NV_Ith_S(dqs, 6) = var_fast_sodium_current_j_gate__tau_j; + NV_Ith_S(dqs, 7) = var_time_independent_potassium_current__i_K1_converted; + NV_Ith_S(dqs, 8) = var_time_independent_potassium_current__g_K1; + NV_Ith_S(dqs, 9) = var_rapid_delayed_rectifier_potassium_current__i_Kr_converted; + NV_Ith_S(dqs, 10) = var_rapid_delayed_rectifier_potassium_current__g_Kr; + NV_Ith_S(dqs, 11) = var_slow_delayed_rectifier_potassium_current__i_Ks_converted; + NV_Ith_S(dqs, 12) = var_slow_delayed_rectifier_potassium_current__g_Ks; + NV_Ith_S(dqs, 13) = var_Na_Ca_exchanger__i_NaCa_converted; + NV_Ith_S(dqs, 14) = var_cell__I_st_converted; + NV_Ith_S(dqs, 15) = var_transient_outward_current__i_to_converted; + NV_Ith_S(dqs, 16) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "faber_rudy_2000"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "ms"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-85.2119207874627); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000117482029668194); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00149183115674257); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.985596581239651); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.990898461370389); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(5.82597094505446e-06); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.997765362821995); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("T_type_Ca_channel_b_gate__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00136737866785149); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("T_type_Ca_channel_g_gate__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.98881442877378); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000204700363126417); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current_xs1_gate__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00660746743356887); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current_xs2_gate__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0303768241233812); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("transient_outward_current_zdv_gate__zdv"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0144622472219576); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("transient_outward_current_ydv_gate__ydv"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999945568566232); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.12791401197882); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("calcium_dynamics__Ca_NSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.76731003671612); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("calcium_dynamics__APtrack"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.65910542308504e-196); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("calcium_dynamics__APtrack2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(5.33944967562997e-195); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("calcium_dynamics__APtrack3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000129515197402902); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("calcium_dynamics__Cainfluxtrack"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.69380318286645e-196); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(13.3649235394859); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(141.056872392446); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_ms"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_release_kmcacyt"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_ms"); + + // mParameters[4]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("litre_per_farad_ms"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_ms"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mDerivedQuantityUnits.push_back("dimensionless"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("ms"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellfaber_rudy_2000FromCellMLCvode) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000--sympy_1_14.cpp new file mode 100644 index 00000000..104fce70 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/faber_rudy_2000--sympy_1_14.cpp @@ -0,0 +1,928 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: faber_rudy_2000 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NumericCvode) +//! on (date omitted as unimportant) +//! +//! + +#include "faber_rudy_2000.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + + + + boost::shared_ptr Cellfaber_rudy_2000FromCellMLCvode::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -25.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 2; // ms + const double var_chaste_interface__cell__stim_period = 1000; // ms + const double var_chaste_interface__cell__stim_start = 100; // ms + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Cellfaber_rudy_2000FromCellMLCvode::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Cellfaber_rudy_2000FromCellMLCvode::Cellfaber_rudy_2000FromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 25, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + NV_Ith_S(this->mParameters, 0) = 1; // (var_calcium_dynamics__leak_factor) [dimensionless] + NV_Ith_S(this->mParameters, 1) = 60; // (var_calcium_dynamics__G_rel_max) [per_ms] + NV_Ith_S(this->mParameters, 2) = 0.00080000000000000004; // (var_calcium_dynamics__K_mrel) [millimolar] + NV_Ith_S(this->mParameters, 3) = 0.0087500000000000008; // (var_calcium_dynamics__I_up) [millimolar_per_ms] + NV_Ith_S(this->mParameters, 4) = 1; // (var_ionic_concentrations__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 5) = 1.8; // (var_calcium_dynamics__Cao) [millimolar] + NV_Ith_S(this->mParameters, 6) = 5.4000000000000004; // (var_ionic_concentrations__Ko) [millimolar] + NV_Ith_S(this->mParameters, 7) = 140; // (var_ionic_concentrations__Nao) [millimolar] + NV_Ith_S(this->mParameters, 8) = 0.00054000000000000001; // (var_L_type_Ca_channel__P_Ca) [litre_per_farad_ms] + NV_Ith_S(this->mParameters, 9) = 16; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + NV_Ith_S(this->mParameters, 10) = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 11) = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + NV_Ith_S(this->mParameters, 12) = 0.75; // (var_time_independent_potassium_current__G_K1) [milliS_per_microF] + NV_Ith_S(this->mParameters, 13) = 0.02614; // (var_rapid_delayed_rectifier_potassium_current__G_Kr) [milliS_per_microF] + NV_Ith_S(this->mParameters, 14) = 0.433; // (var_slow_delayed_rectifier_potassium_current__G_Ks) [milliS_per_microF] + NV_Ith_S(this->mParameters, 15) = 0.00025000000000000001; // (var_Na_Ca_exchanger__c1) [microA_per_microF] + NV_Ith_S(this->mParameters, 16) = 0.5; // (var_transient_outward_current__g_to) [milliS_per_microF] + } + + Cellfaber_rudy_2000FromCellMLCvode::~Cellfaber_rudy_2000FromCellMLCvode() + { + } + + + void Cellfaber_rudy_2000FromCellMLCvode::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 25; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellfaber_rudy_2000FromCellMLCvode::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.2119207874627 + double var_chaste_interface__calcium_dynamics__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 0.000117482029668194 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00149183115674257 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.985596581239651 + double var_chaste_interface__fast_sodium_current_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.990898461370389 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 5.82597094505446e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.997765362821995 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00136737866785149 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.98881442877378 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000204700363126417 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00660746743356887 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.0303768241233812 + double var_chaste_interface__transient_outward_current_zdv_gate__zdv = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.0144622472219576 + double var_chaste_interface__transient_outward_current_ydv_gate__ydv = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.999945568566232 + double var_chaste_interface__ionic_concentrations__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 13.3649235394859 + double var_chaste_interface__ionic_concentrations__Ki = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 141.056872392446 + + const double var_ATP_sensitive_potassium_current__ATPi = 3; // millimolar + const double var_ATP_sensitive_potassium_current__hATP = 2; // dimensionless + const double var_ATP_sensitive_potassium_current__i_K_ATP_on = 1; // dimensionless + const double var_ATP_sensitive_potassium_current__kATP = 0.00025000000000000001; // millimolar + const double var_ATP_sensitive_potassium_current__nATP = 0.23999999999999999; // dimensionless + const double var_ATP_sensitive_potassium_current__nicholsarea = 5.0000000000000002e-5; // dimensionless + const double var_ATP_sensitive_potassium_current__g_K_ATP = 0.000193 * var_ATP_sensitive_potassium_current__i_K_ATP_on / var_ATP_sensitive_potassium_current__nicholsarea; // milliS_per_microF + const double var_ATP_sensitive_potassium_current__pATP = 1 / (1 + pow((var_ATP_sensitive_potassium_current__ATPi / var_ATP_sensitive_potassium_current__kATP), var_ATP_sensitive_potassium_current__hATP)); // dimensionless + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // millimolar + const double var_Na_Ca_exchanger__c2 = 0.0001; // dimensionless + const double var_Na_Ca_exchanger__gamma = 0.14999999999999999; // dimensionless + const double var_T_type_Ca_channel__g_CaT = 0.050000000000000003; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.003016; // milliS_per_microF + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + var_chaste_interface__calcium_dynamics__Cai / var_L_type_Ca_channel_f_Ca_gate__Km_Ca); // dimensionless + const double var_cell__F = 96485; // coulomb_per_mole + const double var_cell__R = 8314; // joule_per_kilomole_kelvin + const double var_cell__T = 310; // kelvin + const double var_calcium_background_current__E_Ca = 0.5 * var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__calcium_dynamics__Cai) / var_cell__F; // millivolt + const double var_L_type_Ca_channel__I_CaCa = (((var_chaste_interface__cell__V >= -1.3356169352749131e-6) && (var_chaste_interface__cell__V <= 1.3356169352749131e-6)) ? (374358.83507802623 * (1.3356169352749131e-6 + var_chaste_interface__cell__V) * (0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(9.9999999999999995e-8)) + 0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(-9.9999999999999995e-8))) - 0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(-9.9999999999999995e-8))) : (14448.004881001343 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(0.074871767015605231 * var_chaste_interface__cell__V)) * NV_Ith_S(mParameters, 8) * var_chaste_interface__cell__V / (-1 + exp(0.074871767015605231 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__cell__V) * var_T_type_Ca_channel__g_CaT * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__cell__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_ATP_sensitive_potassium_current__GKbaraATP = pow((0.25 * NV_Ith_S(mParameters, 6)), var_ATP_sensitive_potassium_current__nATP) * var_ATP_sensitive_potassium_current__g_K_ATP * var_ATP_sensitive_potassium_current__pATP; // milliS_per_microF + const double var_L_type_Ca_channel__I_CaK = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00069711623550831479 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__I_CaNa = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.0024381008236689767 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = (-pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * NV_Ith_S(mParameters, 15) * exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) / (1 + (pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * var_Na_Ca_exchanger__c2 * exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__ionic_concentrations__Nai) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 9) * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_non_specific_calcium_activated_current__I_ns_K = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00063210021354380874 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_non_specific_calcium_activated_current__I_ns_Na = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00063210021354380874 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_non_specific_calcium_activated_current__K_m_ns_Ca = 0.0011999999999999999; // millimolar + const double var_non_specific_calcium_activated_current__i_ns_K = 1 * var_non_specific_calcium_activated_current__I_ns_K / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 1 * var_non_specific_calcium_activated_current__I_ns_Na / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Ca = var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na; // microA_per_microF + const double var_plateau_potassium_current__Kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__cell__V)); // dimensionless + const double var_plateau_potassium_current__g_Kp = 0.0055199999999999997; // milliS_per_microF + const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__g_Kr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 13); // milliS_per_microF + const double var_sarcolemmal_calcium_pump__I_pCa = 1.1499999999999999; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 0.00050000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__calcium_dynamics__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__calcium_dynamics__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__PNaK = 0.018329999999999999; // dimensionless + const double var_slow_delayed_rectifier_potassium_current__E_Ks = var_cell__R * var_cell__T * log((NV_Ith_S(mParameters, 7) * var_slow_delayed_rectifier_potassium_current__PNaK + NV_Ith_S(mParameters, 6)) / (var_chaste_interface__ionic_concentrations__Nai * var_slow_delayed_rectifier_potassium_current__PNaK + var_chaste_interface__ionic_concentrations__Ki)) / var_cell__F; // millivolt + const double var_slow_delayed_rectifier_potassium_current__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * NV_Ith_S(mParameters, 14); // milliS_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (-var_slow_delayed_rectifier_potassium_current__E_Ks + var_chaste_interface__cell__V) * var_slow_delayed_rectifier_potassium_current__g_Ks * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks; // uA_per_cm2 + const double var_sodium_activated_potassium_current__g_K_Na = 0.12848000000000001; // milliS_per_microF + const double var_sodium_activated_potassium_current__kdKNa = 66; // millimolar + const double var_sodium_activated_potassium_current__nKNa = 2.7999999999999998; // dimensionless + const double var_sodium_activated_potassium_current__pona = 0.84999999999999998 / (1 + pow((var_sodium_activated_potassium_current__kdKNa / var_chaste_interface__ionic_concentrations__Nai), var_sodium_activated_potassium_current__nKNa)); // dimensionless + const double var_sodium_activated_potassium_current__pov = 0.80000000000000004 - 0.65000000000000002 / (1 + exp(8.3333333333333339 + 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_sodium_background_current__g_Nab = 0.0040000000000000001; // milliS_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__I_NaK = 2.25; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 7)); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * NV_Ith_S(mParameters, 6) * var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK / ((1 + pow(var_sodium_potassium_pump__K_mNai, 2) / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (NV_Ith_S(mParameters, 6) + var_sodium_potassium_pump__K_mKo)); // microA_per_microF + const double var_time_independent_potassium_current__E_K = var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__ionic_concentrations__Ki) / var_cell__F; // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_ATP_sensitive_potassium_current__GKbaraATP; // microA_per_microF + const double var_plateau_potassium_current__i_Kp = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_plateau_potassium_current__Kp * var_plateau_potassium_current__g_Kp; // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_rapid_delayed_rectifier_potassium_current__Rect * var_rapid_delayed_rectifier_potassium_current__g_Kr * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_sodium_activated_potassium_current__i_K_Na = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_sodium_activated_potassium_current__g_K_Na * var_sodium_activated_potassium_current__pona * var_sodium_activated_potassium_current__pov; // microA_per_microF + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 12); // milliS_per_microF + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = 1 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_current__rvdv = exp(0.01 * var_chaste_interface__cell__V); // dimensionless + const double var_transient_outward_current__i_to = pow(var_chaste_interface__transient_outward_current_zdv_gate__zdv, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 16) * var_transient_outward_current__rvdv * var_chaste_interface__transient_outward_current_ydv_gate__ydv; // microA_per_microF + const double var_transient_outward_current__i_to_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to; // uA_per_cm2 + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_ATP_sensitive_potassium_current__i_K_ATP + HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Ca_b + HeartConfig::Instance()->GetCapacitance() * var_non_specific_calcium_activated_current__i_ns_Ca + HeartConfig::Instance()->GetCapacitance() * var_plateau_potassium_current__i_Kp + HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump__i_p_Ca + HeartConfig::Instance()->GetCapacitance() * var_sodium_activated_potassium_current__i_K_Na + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Na_b + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_exchanger__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_delayed_rectifier_potassium_current__i_Kr_converted + var_slow_delayed_rectifier_potassium_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_current__i_to_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellfaber_rudy_2000FromCellMLCvode::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.2119207874627 + double var_chaste_interface__calcium_dynamics__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 0.000117482029668194 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00149183115674257 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.985596581239651 + double var_chaste_interface__fast_sodium_current_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.990898461370389 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 5.82597094505446e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.997765362821995 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00136737866785149 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.98881442877378 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000204700363126417 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00660746743356887 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.0303768241233812 + double var_chaste_interface__transient_outward_current_zdv_gate__zdv = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.0144622472219576 + double var_chaste_interface__transient_outward_current_ydv_gate__ydv = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.999945568566232 + double var_chaste_interface__calcium_dynamics__Ca_JSR = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 1.12791401197882 + double var_chaste_interface__calcium_dynamics__Ca_NSR = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 1.76731003671612 + double var_chaste_interface__calcium_dynamics__APtrack = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 9.65910542308504e-196 + double var_chaste_interface__calcium_dynamics__APtrack2 = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 5.33944967562997e-195 + double var_chaste_interface__calcium_dynamics__APtrack3 = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 0.000129515197402902 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 2.69380318286645e-196 + double var_chaste_interface__calcium_dynamics__OVRLDtrack = NV_Ith_S(rY, 20); + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = NV_Ith_S(rY, 21); + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = NV_Ith_S(rY, 22); + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 13.3649235394859 + double var_chaste_interface__ionic_concentrations__Ki = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 141.056872392446 + + // Mathematics + double d_dt_chaste_interface_var_cell__V; + const double var_ATP_sensitive_potassium_current__ATPi = 3; // millimolar + const double var_ATP_sensitive_potassium_current__hATP = 2; // dimensionless + const double var_ATP_sensitive_potassium_current__i_K_ATP_on = 1; // dimensionless + const double var_ATP_sensitive_potassium_current__kATP = 0.00025000000000000001; // millimolar + const double var_ATP_sensitive_potassium_current__nATP = 0.23999999999999999; // dimensionless + const double var_ATP_sensitive_potassium_current__nicholsarea = 5.0000000000000002e-5; // dimensionless + const double var_ATP_sensitive_potassium_current__g_K_ATP = 0.000193 * var_ATP_sensitive_potassium_current__i_K_ATP_on / var_ATP_sensitive_potassium_current__nicholsarea; // milliS_per_microF + const double var_ATP_sensitive_potassium_current__pATP = 1 / (1 + pow((var_ATP_sensitive_potassium_current__ATPi / var_ATP_sensitive_potassium_current__kATP), var_ATP_sensitive_potassium_current__hATP)); // dimensionless + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // millimolar + const double var_Na_Ca_exchanger__c2 = 0.0001; // dimensionless + const double var_Na_Ca_exchanger__gamma = 0.14999999999999999; // dimensionless + const double var_T_type_Ca_channel__g_CaT = 0.050000000000000003; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.003016; // milliS_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100 - 100.5 * var_chaste_interface__calcium_dynamics__APtrack2) : (-0.5 * var_chaste_interface__calcium_dynamics__APtrack2)); // 1 / ms + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack3 = (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100 - 100.5 * var_chaste_interface__calcium_dynamics__APtrack3) : (-0.01 * var_chaste_interface__calcium_dynamics__APtrack3)); // 1 / ms + const double var_calcium_dynamics__CMDN_max = 0.050000000000000003; // millimolar + const double var_calcium_dynamics__CSQN_max = 10; // millimolar + const double var_calcium_dynamics__CSQNthresh = 0.69999999999999996; // dimensionless + const double var_calcium_dynamics__Ca_NSR_max = 15; // millimolar + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + var_chaste_interface__calcium_dynamics__Cai / var_L_type_Ca_channel_f_Ca_gate__Km_Ca); // dimensionless + const double var_calcium_dynamics__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_calcium_dynamics__K_mCSQN = 0.80000000000000004; // millimolar + const double var_calcium_dynamics__K_mTn = 0.00050000000000000001; // millimolar + const double var_calcium_dynamics__K_mup = 0.00092000000000000003; // millimolar + const double var_calcium_dynamics__Logicthresh = 0.97999999999999998; // dimensionless + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2 = (((var_calcium_dynamics__Logicthresh > var_chaste_interface__calcium_dynamics__OVRLDtrack2) && (var_calcium_dynamics__Logicthresh < var_chaste_interface__calcium_dynamics__OVRLDtrack)) ? (50 - 50 * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (-0.5 * var_chaste_interface__calcium_dynamics__OVRLDtrack2)); // 1 / ms + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack = (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (var_calcium_dynamics__CSQNthresh < 1 / (1 + var_calcium_dynamics__K_mCSQN / var_chaste_interface__calcium_dynamics__Ca_JSR))) ? (50 - 50 * var_chaste_interface__calcium_dynamics__OVRLDtrack) : (-0.5 * var_chaste_interface__calcium_dynamics__OVRLDtrack)); // 1 / ms + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3 = (((var_calcium_dynamics__Logicthresh > var_chaste_interface__calcium_dynamics__OVRLDtrack3) && (var_calcium_dynamics__Logicthresh < var_chaste_interface__calcium_dynamics__OVRLDtrack)) ? (50 - 50 * var_chaste_interface__calcium_dynamics__OVRLDtrack3) : (-0.01 * var_chaste_interface__calcium_dynamics__OVRLDtrack3)); // 1 / ms + const double var_calcium_dynamics__RyRopen = 1 / (1 + var_chaste_interface__calcium_dynamics__APtrack2 * exp(2)); // dimensionless + const double var_calcium_dynamics__RyRclose = 1 - var_calcium_dynamics__RyRopen; // dimensionless + const double var_calcium_dynamics__Tn_max = 0.070000000000000007; // millimolar + const double var_calcium_dynamics__i_up = var_chaste_interface__calcium_dynamics__Cai * NV_Ith_S(mParameters, 3) / (var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__K_mup); // millimolar_per_ms + const double var_calcium_dynamics__K_leak = NV_Ith_S(mParameters, 3) * NV_Ith_S(mParameters, 0) / var_calcium_dynamics__Ca_NSR_max; // per_ms + const double var_calcium_dynamics__i_leak = var_chaste_interface__calcium_dynamics__Ca_NSR * var_calcium_dynamics__K_leak; // millimolar_per_ms + const double var_calcium_dynamics__tau_tr = 180; // ms + const double var_calcium_dynamics__i_tr = (-var_chaste_interface__calcium_dynamics__Ca_JSR + var_chaste_interface__calcium_dynamics__Ca_NSR) / var_calcium_dynamics__tau_tr; // millimolar_per_ms + const double var_cell__F = 96485; // coulomb_per_mole + const double var_cell__R = 8314; // joule_per_kilomole_kelvin + const double var_cell__T = 310; // kelvin + const double var_calcium_background_current__E_Ca = 0.5 * var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__calcium_dynamics__Cai) / var_cell__F; // millivolt + const double var_L_type_Ca_channel__I_CaCa = (((var_chaste_interface__cell__V >= -1.3356169352749131e-6) && (var_chaste_interface__cell__V <= 1.3356169352749131e-6)) ? (374358.83507802623 * (1.3356169352749131e-6 + var_chaste_interface__cell__V) * (0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(9.9999999999999995e-8)) + 0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(-9.9999999999999995e-8))) - 0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(-9.9999999999999995e-8))) : (14448.004881001343 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(0.074871767015605231 * var_chaste_interface__cell__V)) * NV_Ith_S(mParameters, 8) * var_chaste_interface__cell__V / (-1 + exp(0.074871767015605231 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel_d_gate__E0_d = 10 + var_chaste_interface__cell__V; // millivolt + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(var_L_type_Ca_channel_d_gate__E0_d) < 1.0000000000000001e-5) ? (2.2893772893772892) : (28.571428571428569 * (1 - exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__E0_d)); // ms + const double var_L_type_Ca_channel_d_gate__alpha_d = var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d; // per_ms + const double var_L_type_Ca_channel_d_gate__beta_d = (1 - var_L_type_Ca_channel_d_gate__d_infinity) / var_L_type_Ca_channel_d_gate__tau_d; // per_ms + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = (1 - var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__alpha_d - var_L_type_Ca_channel_d_gate__beta_d * var_chaste_interface__L_type_Ca_channel_d_gate__d; // 1 / ms + const double var_L_type_Ca_channel_f_gate__f_infinity = 1 / (1 + exp(4.0767441860465121 + 0.11627906976744186 * var_chaste_interface__cell__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V)); // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-pow((0.33700000000000002 + 0.033700000000000001 * var_chaste_interface__cell__V), 2))); // ms + const double var_L_type_Ca_channel_f_gate__alpha_f = var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f; // per_ms + const double var_L_type_Ca_channel_f_gate__beta_f = (1 - var_L_type_Ca_channel_f_gate__f_infinity) / var_L_type_Ca_channel_f_gate__tau_f; // per_ms + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = (1 - var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__alpha_f - var_L_type_Ca_channel_f_gate__beta_f * var_chaste_interface__L_type_Ca_channel_f_gate__f; // 1 / ms + const double var_T_type_Ca_channel__i_Ca_T = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__cell__V) * var_T_type_Ca_channel__g_CaT * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_T_type_Ca_channel_b_gate__b_inf = 1 / (1 + exp(-1.2962962962962963 - 0.092592592592592587 * var_chaste_interface__cell__V)); // dimensionless + const double var_T_type_Ca_channel_b_gate__tau_b = 3.7000000000000002 + 6.0999999999999996 / (1 + exp(5.5555555555555554 + 0.22222222222222221 * var_chaste_interface__cell__V)); // ms + const double d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b = (-var_chaste_interface__T_type_Ca_channel_b_gate__b + var_T_type_Ca_channel_b_gate__b_inf) / var_T_type_Ca_channel_b_gate__tau_b; // 1 / ms + const double var_T_type_Ca_channel_g_gate__g_inf = 1 / (1 + exp(10.714285714285715 + 0.17857142857142858 * var_chaste_interface__cell__V)); // dimensionless + const double var_T_type_Ca_channel_g_gate__tau_g = ((var_chaste_interface__cell__V <= 0) ? (12 - 0.875 * var_chaste_interface__cell__V) : (12)); // ms + const double d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g = (-var_chaste_interface__T_type_Ca_channel_g_gate__g + var_T_type_Ca_channel_g_gate__g_inf) / var_T_type_Ca_channel_g_gate__tau_g; // 1 / ms + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__cell__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_cell__I_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__I_st = var_cell__I_st_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 11) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_ms + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 11)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 11))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 11) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_ms + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * NV_Ith_S(mParameters, 10) + (1 - 0.01 * NV_Ith_S(mParameters, 10)) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // dimensionless + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // ms + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = (-var_chaste_interface__fast_sodium_current_h_gate__h + var_fast_sodium_current_h_gate__h_inf) / var_fast_sodium_current_h_gate__tau_h; // 1 / ms + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 11)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 11) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 11)))) : (0)); // per_ms + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 11) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 11) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 11) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 11) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_ms + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * NV_Ith_S(mParameters, 10) + (1 - 0.01 * NV_Ith_S(mParameters, 10)) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // dimensionless + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // ms + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = (-var_chaste_interface__fast_sodium_current_j_gate__j + var_fast_sodium_current_j_gate__j_inf) / var_fast_sodium_current_j_gate__tau_j; // 1 / ms + const double var_fast_sodium_current_m_gate__E0_m = 47.130000000000003 + var_chaste_interface__cell__V; // millivolt + const double var_fast_sodium_current_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__cell__V); // per_ms + const double var_fast_sodium_current_m_gate__delta_m = 1.0000000000000001e-5; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((var_fast_sodium_current_m_gate__delta_m <= fabs(var_fast_sodium_current_m_gate__E0_m)) ? (0.32000000000000001 * var_fast_sodium_current_m_gate__E0_m / (1 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m))) : (3.2000000000000002)); // per_ms + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m; // 1 / ms + const double var_geometry__A_cap = 0.00015339999999999999; // cm2 + const double var_geometry__preplength = 0.10000000000000001; // mm + const double var_geometry__radius = 0.010999999999999999; // mm + const double var_geometry__volume = M_PI * pow(var_geometry__radius, 2) * var_geometry__preplength; // micro_litre + const double var_geometry__V_JSR = 0.0047999999999999996 * var_geometry__volume; // micro_litre + const double var_geometry__V_NSR = 0.055199999999999999 * var_geometry__volume; // micro_litre + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR = -var_calcium_dynamics__i_leak - var_calcium_dynamics__i_tr * var_geometry__V_JSR / var_geometry__V_NSR + var_calcium_dynamics__i_up; // millimolar / ms + const double var_geometry__V_myo = 0.68000000000000005 * var_geometry__volume; // micro_litre + const double var_ATP_sensitive_potassium_current__GKbaraATP = pow((0.25 * NV_Ith_S(mParameters, 6)), var_ATP_sensitive_potassium_current__nATP) * var_ATP_sensitive_potassium_current__g_K_ATP * var_ATP_sensitive_potassium_current__pATP; // milliS_per_microF + const double var_L_type_Ca_channel__I_CaK = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00069711623550831479 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__I_CaNa = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.0024381008236689767 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = (-pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * NV_Ith_S(mParameters, 15) * exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) / (1 + (pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * var_Na_Ca_exchanger__c2 * exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__ionic_concentrations__Nai) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 9) * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__I_ns_K = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00063210021354380874 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_non_specific_calcium_activated_current__I_ns_Na = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.6884874999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00063210021354380874 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_non_specific_calcium_activated_current__K_m_ns_Ca = 0.0011999999999999999; // millimolar + const double var_non_specific_calcium_activated_current__i_ns_K = 1 * var_non_specific_calcium_activated_current__I_ns_K / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 1 * var_non_specific_calcium_activated_current__I_ns_Na / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Ca = var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na; // microA_per_microF + const double var_plateau_potassium_current__Kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__cell__V)); // dimensionless + const double var_plateau_potassium_current__g_Kp = 0.0055199999999999997; // milliS_per_microF + const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__g_Kr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 13); // milliS_per_microF + const double var_rapid_delayed_rectifier_potassium_current_xr_gate__tau_xr = 1 / ((((var_chaste_interface__cell__V >= -14.200000813008129) && (var_chaste_interface__cell__V <= -14.199999186991869)) ? (-1.1219512194943214e-9 / (1 - exp(9.9999999998406912e-8)) + 615000.00000454858 * (14.200000813008129 + var_chaste_interface__cell__V) * (1.1219512194943214e-9 / (1 - exp(9.9999999998406912e-8)) + 1.1219512195134727e-9 / (1 - exp(-1.0000000000011388e-7)))) : (0.0013799999999999999 * (14.199999999999999 + var_chaste_interface__cell__V) / (1 - exp(-1.7465999999999999 - 0.123 * var_chaste_interface__cell__V)))) + (((var_chaste_interface__cell__V >= -38.900000689655172) && (var_chaste_interface__cell__V <= -38.899999310344825)) ? (-4.2068965517283451e-10 / (-1 + exp(-1.000000000001e-7)) + 724999.99997009686 * (38.900000689655172 + var_chaste_interface__cell__V) * (4.2068965517283451e-10 / (-1 + exp(-1.000000000001e-7)) + 4.2068965520669629e-10 / (-1 + exp(1.0000000000814911e-7)))) : (0.00060999999999999997 * (38.899999999999999 + var_chaste_interface__cell__V) / (-1 + exp(5.6404999999999994 + 0.14499999999999999 * var_chaste_interface__cell__V))))); // ms + const double var_rapid_delayed_rectifier_potassium_current_xr_gate__xr_infinity = 1 / (1 + exp(-2.8666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V)); // dimensionless + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr = (-var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr + var_rapid_delayed_rectifier_potassium_current_xr_gate__xr_infinity) / var_rapid_delayed_rectifier_potassium_current_xr_gate__tau_xr; // 1 / ms + const double var_sarcolemmal_calcium_pump__I_pCa = 1.1499999999999999; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 0.00050000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__calcium_dynamics__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__calcium_dynamics__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack = ((var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001) ? (-0.5 * (-2 * var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) * var_geometry__A_cap / (var_cell__F * var_geometry__V_myo)) : ((var_chaste_interface__calcium_dynamics__APtrack2 > 0.01) ? (0) : (-0.5 * var_chaste_interface__calcium_dynamics__Cainfluxtrack))); // millimolar / ms + const double var_calcium_dynamics__G_rel = 150 * var_calcium_dynamics__RyRclose * var_calcium_dynamics__RyRopen / (1 + exp(5.5555555555555554 + 1.1111111111111112 * var_L_type_Ca_channel__i_CaCa + 1.1111111111111112 * var_T_type_Ca_channel__i_Ca_T + 1.1111111111111112 * var_calcium_background_current__i_Ca_b + 1.1111111111111112 * var_sarcolemmal_calcium_pump__i_p_Ca - 2.2222222222222223 * var_Na_Ca_exchanger__i_NaCa)); // per_ms + const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * var_calcium_dynamics__G_rel; // millimolar_per_ms + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR = 1 * (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + var_calcium_dynamics__CSQN_max * var_calcium_dynamics__K_mCSQN / pow((var_chaste_interface__calcium_dynamics__Ca_JSR + var_calcium_dynamics__K_mCSQN), 2)); // millimolar / ms + const double d_dt_chaste_interface_var_calcium_dynamics__Cai = 1 * ((-var_calcium_dynamics__i_up + var_calcium_dynamics__i_leak) * var_geometry__V_NSR / var_geometry__V_myo + var_calcium_dynamics__i_rel * var_geometry__V_JSR / var_geometry__V_myo - 0.5 * (-2 * var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) * var_geometry__A_cap / (var_cell__F * var_geometry__V_myo)) / (1 + var_calcium_dynamics__CMDN_max * var_calcium_dynamics__K_mCMDN / pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__K_mCMDN), 2) + var_calcium_dynamics__K_mTn * var_calcium_dynamics__Tn_max / pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__K_mTn), 2)); // millimolar / ms + const double var_slow_delayed_rectifier_potassium_current__PNaK = 0.018329999999999999; // dimensionless + const double var_slow_delayed_rectifier_potassium_current__E_Ks = var_cell__R * var_cell__T * log((NV_Ith_S(mParameters, 7) * var_slow_delayed_rectifier_potassium_current__PNaK + NV_Ith_S(mParameters, 6)) / (var_chaste_interface__ionic_concentrations__Nai * var_slow_delayed_rectifier_potassium_current__PNaK + var_chaste_interface__ionic_concentrations__Ki)) / var_cell__F; // millivolt + const double var_slow_delayed_rectifier_potassium_current__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * NV_Ith_S(mParameters, 14); // milliS_per_microF + const double var_slow_delayed_rectifier_potassium_current_xs1_gate__tau_xs1 = 1 * (((var_chaste_interface__cell__V >= -30.000001455604075) && (var_chaste_interface__cell__V <= -29.999998544395925)) ? (1 / (-1.0465793304208771e-10 / (1 - exp(2.1542940320207204e-7)) - 1.9068413391534758e-10 / (-1 + exp(-9.9999999999880736e-8)) + 343500.00000040967 * (30.000001455604075 + var_chaste_interface__cell__V) * (1.0465793304208771e-10 / (1 - exp(2.1542940320207204e-7)) + 1.0465793304208771e-10 / (1 - exp(-2.1542940320207204e-7)) + 1.9068413391534758e-10 / (-1 + exp(9.9999999999880736e-8)) + 1.9068413391534758e-10 / (-1 + exp(-9.9999999999880736e-8))))) : (1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))))); // ms + const double var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1_infinity = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 + var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1_infinity) / var_slow_delayed_rectifier_potassium_current_xs1_gate__tau_xs1; // 1 / ms + const double var_slow_delayed_rectifier_potassium_current_xs2_gate__tau_xs2 = 4 * (((var_chaste_interface__cell__V >= -30.000001455604075) && (var_chaste_interface__cell__V <= -29.999998544395925)) ? (1 / (-1.0465793304208771e-10 / (1 - exp(2.1542940320207204e-7)) - 1.9068413391534758e-10 / (-1 + exp(-9.9999999999880736e-8)) + 343500.00000040967 * (30.000001455604075 + var_chaste_interface__cell__V) * (1.0465793304208771e-10 / (1 - exp(2.1542940320207204e-7)) + 1.0465793304208771e-10 / (1 - exp(-2.1542940320207204e-7)) + 1.9068413391534758e-10 / (-1 + exp(9.9999999999880736e-8)) + 1.9068413391534758e-10 / (-1 + exp(-9.9999999999880736e-8))))) : (1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))))); // ms + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (-var_slow_delayed_rectifier_potassium_current__E_Ks + var_chaste_interface__cell__V) * var_slow_delayed_rectifier_potassium_current__g_Ks * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2_infinity = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 + var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2_infinity) / var_slow_delayed_rectifier_potassium_current_xs2_gate__tau_xs2; // 1 / ms + const double var_sodium_activated_potassium_current__g_K_Na = 0.12848000000000001; // milliS_per_microF + const double var_sodium_activated_potassium_current__kdKNa = 66; // millimolar + const double var_sodium_activated_potassium_current__nKNa = 2.7999999999999998; // dimensionless + const double var_sodium_activated_potassium_current__pona = 0.84999999999999998 / (1 + pow((var_sodium_activated_potassium_current__kdKNa / var_chaste_interface__ionic_concentrations__Nai), var_sodium_activated_potassium_current__nKNa)); // dimensionless + const double var_sodium_activated_potassium_current__pov = 0.80000000000000004 - 0.65000000000000002 / (1 + exp(8.3333333333333339 + 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_sodium_background_current__g_Nab = 0.0040000000000000001; // milliS_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__I_NaK = 2.25; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 7)); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * NV_Ith_S(mParameters, 6) * var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK / ((1 + pow(var_sodium_potassium_pump__K_mNai, 2) / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (NV_Ith_S(mParameters, 6) + var_sodium_potassium_pump__K_mKo)); // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Nai = -1 * (3 * var_Na_Ca_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaNa + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_Na + var_sodium_background_current__i_Na_b) * var_geometry__A_cap * NV_Ith_S(mParameters, 4) / (var_cell__F * var_geometry__V_myo); // millimolar / ms + const double var_time_independent_potassium_current__E_K = var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__ionic_concentrations__Ki) / var_cell__F; // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_ATP_sensitive_potassium_current__GKbaraATP; // microA_per_microF + const double var_plateau_potassium_current__i_Kp = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_plateau_potassium_current__Kp * var_plateau_potassium_current__g_Kp; // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_rapid_delayed_rectifier_potassium_current__Rect * var_rapid_delayed_rectifier_potassium_current__g_Kr * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_sodium_activated_potassium_current__i_K_Na = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_sodium_activated_potassium_current__g_K_Na * var_sodium_activated_potassium_current__pona * var_sodium_activated_potassium_current__pov; // microA_per_microF + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 12); // milliS_per_microF + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = 1 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // microA_per_microF + const double var_transient_outward_current__rvdv = exp(0.01 * var_chaste_interface__cell__V); // dimensionless + const double var_transient_outward_current_ydv_gate__alpha_ydv = 0.014999999999999999 / (1 + exp(12 + 0.20000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_transient_outward_current_ydv_gate__beta_ydv = 0.10000000000000001 * exp(5 + 0.20000000000000001 * var_chaste_interface__cell__V) / (1 + exp(5 + 0.20000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_transient_outward_current_ydv_gate__tau_ydv = 1 / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv); // ms + const double var_transient_outward_current_ydv_gate__ydv_ss = var_transient_outward_current_ydv_gate__alpha_ydv / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv); // dimensionless + const double d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv = (-var_chaste_interface__transient_outward_current_ydv_gate__ydv + var_transient_outward_current_ydv_gate__ydv_ss) / var_transient_outward_current_ydv_gate__tau_ydv; // 1 / ms + const double var_transient_outward_current_zdv_gate__alpha_zdv = 10 * exp(-1.6000000000000001 + 0.040000000000000001 * var_chaste_interface__cell__V) / (1 + exp(-1.6000000000000001 + 0.040000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_transient_outward_current_zdv_gate__beta_zdv = 10 * exp(-3.6000000000000001 - 0.040000000000000001 * var_chaste_interface__cell__V) / (1 + exp(-3.6000000000000001 - 0.040000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_transient_outward_current_zdv_gate__tau_zdv = 1 / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv); // ms + const double var_transient_outward_current__i_to = pow(var_chaste_interface__transient_outward_current_zdv_gate__zdv, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 16) * var_transient_outward_current__rvdv * var_chaste_interface__transient_outward_current_ydv_gate__ydv; // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Ki = -1 * (-2 * var_sodium_potassium_pump__i_NaK + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaK + var_cell__I_st + var_non_specific_calcium_activated_current__i_ns_K + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_activated_potassium_current__i_K_Na + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) * var_geometry__A_cap * NV_Ith_S(mParameters, 4) / (var_cell__F * var_geometry__V_myo); // millimolar / ms + const double var_cell__dVdt = -var_ATP_sensitive_potassium_current__i_K_ATP - var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger__i_NaCa - var_T_type_Ca_channel__i_Ca_T - var_calcium_background_current__i_Ca_b - var_cell__I_st - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Ca - var_plateau_potassium_current__i_Kp - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_sarcolemmal_calcium_pump__i_p_Ca - var_slow_delayed_rectifier_potassium_current__i_Ks - var_sodium_activated_potassium_current__i_K_Na - var_sodium_background_current__i_Na_b - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to; // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack = ((var_cell__dVdt > 150) ? (100 - 100.5 * var_chaste_interface__calcium_dynamics__APtrack) : (-0.5 * var_chaste_interface__calcium_dynamics__APtrack)); // 1 / ms + const double var_transient_outward_current_zdv_gate__zdv_ss = var_transient_outward_current_zdv_gate__alpha_zdv / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv); // dimensionless + const double d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv = (-var_chaste_interface__transient_outward_current_zdv_gate__zdv + var_transient_outward_current_zdv_gate__zdv_ss) / var_transient_outward_current_zdv_gate__tau_zdv; // 1 / ms + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_cell__V = 0.0; + } + else + { + d_dt_chaste_interface_var_cell__V = -var_ATP_sensitive_potassium_current__i_K_ATP - var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger__i_NaCa - var_T_type_Ca_channel__i_Ca_T - var_calcium_background_current__i_Ca_b - var_cell__I_st - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Ca - var_plateau_potassium_current__i_Kp - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_sarcolemmal_calcium_pump__i_p_Ca - var_slow_delayed_rectifier_potassium_current__i_Ks - var_sodium_activated_potassium_current__i_K_Na - var_sodium_background_current__i_Na_b - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to; // millivolt / ms + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_cell__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_calcium_dynamics__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_calcium_dynamics__APtrack; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_calcium_dynamics__APtrack2; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_calcium_dynamics__APtrack3; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_ionic_concentrations__Nai; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_ionic_concentrations__Ki; + } + + N_Vector Cellfaber_rudy_2000FromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.2119207874627 + double var_chaste_interface__calcium_dynamics__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 0.000117482029668194 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00149183115674257 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.985596581239651 + double var_chaste_interface__fast_sodium_current_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.990898461370389 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 5.82597094505446e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.997765362821995 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00136737866785149 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.98881442877378 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000204700363126417 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00660746743356887 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.0303768241233812 + double var_chaste_interface__transient_outward_current_zdv_gate__zdv = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.0144622472219576 + double var_chaste_interface__transient_outward_current_ydv_gate__ydv = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.999945568566232 + double var_chaste_interface__calcium_dynamics__Ca_JSR = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 1.12791401197882 + double var_chaste_interface__calcium_dynamics__APtrack2 = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 5.33944967562997e-195 + double var_chaste_interface__ionic_concentrations__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 13.3649235394859 + double var_chaste_interface__ionic_concentrations__Ki = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 141.056872392446 + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // millimolar + const double var_Na_Ca_exchanger__c2 = 0.0001; // dimensionless + const double var_Na_Ca_exchanger__gamma = 0.14999999999999999; // dimensionless + const double var_T_type_Ca_channel__g_CaT = 0.050000000000000003; // milliS_per_microF + const double var_calcium_background_current__g_Cab = 0.003016; // milliS_per_microF + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + var_chaste_interface__calcium_dynamics__Cai / var_L_type_Ca_channel_f_Ca_gate__Km_Ca); // dimensionless + const double var_calcium_dynamics__RyRopen = 1 / (1 + var_chaste_interface__calcium_dynamics__APtrack2 * exp(2)); // dimensionless + const double var_calcium_dynamics__RyRclose = 1 - var_calcium_dynamics__RyRopen; // dimensionless + const double var_cell__F = 96485; // coulomb_per_mole + const double var_cell__R = 8314; // joule_per_kilomole_kelvin + const double var_cell__T = 310; // kelvin + const double var_calcium_background_current__E_Ca = 0.5 * var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__calcium_dynamics__Cai) / var_cell__F; // millivolt + const double var_L_type_Ca_channel__I_CaCa = (((var_chaste_interface__cell__V >= -1.3356169352749131e-6) && (var_chaste_interface__cell__V <= 1.3356169352749131e-6)) ? (374358.83507802623 * (1.3356169352749131e-6 + var_chaste_interface__cell__V) * (0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(9.9999999999999995e-8)) + 0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(-9.9999999999999995e-8))) - 0.019296999999999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 8) / (-1 + exp(-9.9999999999999995e-8))) : (14448.004881001343 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 1 * var_chaste_interface__calcium_dynamics__Cai * exp(0.074871767015605231 * var_chaste_interface__cell__V)) * NV_Ith_S(mParameters, 8) * var_chaste_interface__cell__V / (-1 + exp(0.074871767015605231 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-pow((0.33700000000000002 + 0.033700000000000001 * var_chaste_interface__cell__V), 2))); // ms + const double var_T_type_Ca_channel__i_Ca_T = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__cell__V) * var_T_type_Ca_channel__g_CaT * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__cell__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_cell__I_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 11) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_ms + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 11)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 11))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 11) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_ms + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // ms + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 11)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 11) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 11)))) : (0)); // per_ms + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 11) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 11) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 11) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 11) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_ms + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // ms + const double var_L_type_Ca_channel__I_CaK = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.8621604999999999e-9 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.00069711623550831479 * (-0.75 * NV_Ith_S(mParameters, 6) + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__I_CaNa = (((var_chaste_interface__cell__V >= -2.6712338705498262e-6) && (var_chaste_interface__cell__V <= 2.6712338705498262e-6)) ? (187179.41753901311 * (2.6712338705498262e-6 + var_chaste_interface__cell__V) * (6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 6.5127375e-9 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.0024381008236689767 * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037435883507802616 * var_chaste_interface__cell__V)) * var_chaste_interface__cell__V / (-1 + exp(0.037435883507802616 * var_chaste_interface__cell__V)))); // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = (-pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * NV_Ith_S(mParameters, 15) * exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T)) / (1 + (pow(NV_Ith_S(mParameters, 7), 3) * var_chaste_interface__calcium_dynamics__Cai + pow(var_chaste_interface__ionic_concentrations__Nai, 3) * NV_Ith_S(mParameters, 5) * exp(var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))) * var_Na_Ca_exchanger__c2 * exp((-1 + var_Na_Ca_exchanger__gamma) * var_cell__F * var_chaste_interface__cell__V / (var_cell__R * var_cell__T))); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__ionic_concentrations__Nai) / var_cell__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 9) * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__g_Kr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 13); // milliS_per_microF + const double var_sarcolemmal_calcium_pump__I_pCa = 1.1499999999999999; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 0.00050000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__calcium_dynamics__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__calcium_dynamics__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_calcium_dynamics__G_rel = 150 * var_calcium_dynamics__RyRclose * var_calcium_dynamics__RyRopen / (1 + exp(5.5555555555555554 + 1.1111111111111112 * var_L_type_Ca_channel__i_CaCa + 1.1111111111111112 * var_T_type_Ca_channel__i_Ca_T + 1.1111111111111112 * var_calcium_background_current__i_Ca_b + 1.1111111111111112 * var_sarcolemmal_calcium_pump__i_p_Ca - 2.2222222222222223 * var_Na_Ca_exchanger__i_NaCa)); // per_ms + const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * var_calcium_dynamics__G_rel; // millimolar_per_ms + const double var_slow_delayed_rectifier_potassium_current__PNaK = 0.018329999999999999; // dimensionless + const double var_slow_delayed_rectifier_potassium_current__E_Ks = var_cell__R * var_cell__T * log((NV_Ith_S(mParameters, 7) * var_slow_delayed_rectifier_potassium_current__PNaK + NV_Ith_S(mParameters, 6)) / (var_chaste_interface__ionic_concentrations__Nai * var_slow_delayed_rectifier_potassium_current__PNaK + var_chaste_interface__ionic_concentrations__Ki)) / var_cell__F; // millivolt + const double var_slow_delayed_rectifier_potassium_current__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * NV_Ith_S(mParameters, 14); // milliS_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (-var_slow_delayed_rectifier_potassium_current__E_Ks + var_chaste_interface__cell__V) * var_slow_delayed_rectifier_potassium_current__g_Ks * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks; // uA_per_cm2 + const double var_time_independent_potassium_current__E_K = var_cell__R * var_cell__T * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__ionic_concentrations__Ki) / var_cell__F; // millivolt + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_rapid_delayed_rectifier_potassium_current__Rect * var_rapid_delayed_rectifier_potassium_current__g_Kr * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 12); // milliS_per_microF + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = 1 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_current__rvdv = exp(0.01 * var_chaste_interface__cell__V); // dimensionless + const double var_transient_outward_current__i_to = pow(var_chaste_interface__transient_outward_current_zdv_gate__zdv, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 16) * var_transient_outward_current__rvdv * var_chaste_interface__transient_outward_current_ydv_gate__ydv; // microA_per_microF + const double var_transient_outward_current__i_to_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(17, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(17); +#endif + NV_Ith_S(dqs, 0) = var_calcium_dynamics__i_rel; + NV_Ith_S(dqs, 1) = var_L_type_Ca_channel__i_Ca_L_converted; + NV_Ith_S(dqs, 2) = var_L_type_Ca_channel_f_Ca_gate__f_Ca; + NV_Ith_S(dqs, 3) = var_L_type_Ca_channel_f_gate__tau_f; + NV_Ith_S(dqs, 4) = var_fast_sodium_current__i_Na_converted; + NV_Ith_S(dqs, 5) = var_fast_sodium_current_h_gate__tau_h; + NV_Ith_S(dqs, 6) = var_fast_sodium_current_j_gate__tau_j; + NV_Ith_S(dqs, 7) = var_time_independent_potassium_current__i_K1_converted; + NV_Ith_S(dqs, 8) = var_time_independent_potassium_current__g_K1; + NV_Ith_S(dqs, 9) = var_rapid_delayed_rectifier_potassium_current__i_Kr_converted; + NV_Ith_S(dqs, 10) = var_rapid_delayed_rectifier_potassium_current__g_Kr; + NV_Ith_S(dqs, 11) = var_slow_delayed_rectifier_potassium_current__i_Ks_converted; + NV_Ith_S(dqs, 12) = var_slow_delayed_rectifier_potassium_current__g_Ks; + NV_Ith_S(dqs, 13) = var_Na_Ca_exchanger__i_NaCa_converted; + NV_Ith_S(dqs, 14) = var_cell__I_st_converted; + NV_Ith_S(dqs, 15) = var_transient_outward_current__i_to_converted; + NV_Ith_S(dqs, 16) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "faber_rudy_2000"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "ms"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-85.2119207874627); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000117482029668194); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00149183115674257); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.985596581239651); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.990898461370389); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(5.82597094505446e-06); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.997765362821995); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("T_type_Ca_channel_b_gate__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00136737866785149); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("T_type_Ca_channel_g_gate__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.98881442877378); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000204700363126417); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current_xs1_gate__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00660746743356887); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current_xs2_gate__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0303768241233812); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("transient_outward_current_zdv_gate__zdv"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0144622472219576); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("transient_outward_current_ydv_gate__ydv"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999945568566232); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.12791401197882); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("calcium_dynamics__Ca_NSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.76731003671612); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("calcium_dynamics__APtrack"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.65910542308504e-196); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("calcium_dynamics__APtrack2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(5.33944967562997e-195); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("calcium_dynamics__APtrack3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000129515197402902); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("calcium_dynamics__Cainfluxtrack"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.69380318286645e-196); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(13.3649235394859); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(141.056872392446); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_ms"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_release_kmcacyt"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_ms"); + + // mParameters[4]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("litre_per_farad_ms"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_ms"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mDerivedQuantityUnits.push_back("dimensionless"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("ms"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellfaber_rudy_2000FromCellMLCvode) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersion--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersion--sympy_1_13.cpp new file mode 100644 index 00000000..4e59c376 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersion--sympy_1_13.cpp @@ -0,0 +1,833 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: paci_hyttinen_aaltosetala_severi_ventricularVersion +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NumericCvode) +//! on (date omitted as unimportant) +//! +//! + +#include "paci_hyttinen_aaltosetala_severi_ventricularVersion.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + + + + boost::shared_ptr Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__stim_mode__i_stim_Amplitude_converted = 5.5718264182641404 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__stim_mode__i_stim_Period_converted = 1000; // millisecond + const double var_chaste_interface__stim_mode__i_stim_PulseDuration_converted = 5; // millisecond + const double var_chaste_interface__stim_mode__i_stim_Start_converted = 0; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__stim_mode__i_stim_Amplitude_converted), + var_chaste_interface__stim_mode__i_stim_PulseDuration_converted, + var_chaste_interface__stim_mode__i_stim_Period_converted, + var_chaste_interface__stim_mode__i_stim_Start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 18, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + NV_Ith_S(this->mParameters, 0) = 150; // (var_model_parameters__Ki) [millimolar] + NV_Ith_S(this->mParameters, 1) = 1.8; // (var_model_parameters__Cao) [millimolar] + NV_Ith_S(this->mParameters, 2) = 5.4000000000000004; // (var_model_parameters__Ko) [millimolar] + NV_Ith_S(this->mParameters, 3) = 151; // (var_model_parameters__Nao) [millimolar] + NV_Ith_S(this->mParameters, 4) = 8.6357020000000001e-5; // (var_i_CaL__g_CaL) [metre_cube_per_F_per_s] + NV_Ith_S(this->mParameters, 5) = 3671.2302; // (var_i_Na__g_Na) [S_per_F] + NV_Ith_S(this->mParameters, 6) = 30.103120000000001; // (var_i_f__g_f) [S_per_F] + NV_Ith_S(this->mParameters, 7) = 28.1492; // (var_i_K1__g_K1) [S_per_F] + NV_Ith_S(this->mParameters, 8) = 29.866700000000002; // (var_i_Kr__g_Kr) [S_per_F] + NV_Ith_S(this->mParameters, 9) = 2.0409999999999999; // (var_i_Ks__g_Ks) [S_per_F] + NV_Ith_S(this->mParameters, 10) = 29.9038; // (var_i_to__g_to) [S_per_F] + NV_Ith_S(this->mParameters, 11) = 9.8710900000000003e-11; // (var_model_parameters__Cm) [farad] + NV_Ith_S(this->mParameters, 12) = 310; // (var_model_parameters__T) [kelvin] + } + + Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::~Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode() + { + } + + + void Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 18; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__Membrane__Vm_converted = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -74.3340057623841 + double var_chaste_interface__calcium_dynamics__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 1.80773974140477e-05 + double var_chaste_interface__i_Na_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.102953468725004 + double var_chaste_interface__i_Na_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.786926637881461 + double var_chaste_interface__i_Na_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.253943221774722 + double var_chaste_interface__i_CaL_d_gate__d = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 8.96088425225182e-05 + double var_chaste_interface__i_CaL_f1_gate__f1 = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.970411811263976 + double var_chaste_interface__i_CaL_f2_gate__f2 = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.999965815466749 + double var_chaste_interface__i_CaL_fCa_gate__fCa = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.998925296531804 + double var_chaste_interface__i_Kr_Xr1_gate__Xr1 = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.00778547011240132 + double var_chaste_interface__i_Kr_Xr2_gate__Xr2 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.432162576531617 + double var_chaste_interface__i_Ks_Xs_gate__Xs = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.0322944866983666 + double var_chaste_interface__i_f_Xf_gate__Xf = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.100615100568753 + double var_chaste_interface__i_to_q_gate__q = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.839295925773219 + double var_chaste_interface__i_to_r_gate__r = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00573289893326379 + double var_chaste_interface__sodium_dynamics__Nai = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 10.9248496211574 + + const double var_Membrane__Vm = 0.001 * var_chaste_interface__Membrane__Vm_converted; // volt + const double var_current_blockers__Chromanol_iKs30 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs50 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs70 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs90 = 0; // dimensionless + const double var_current_blockers__E4031_100nM = 0; // dimensionless + const double var_current_blockers__E4031_30nM = 0; // dimensionless + const double var_current_blockers__TTX_10uM = 0; // dimensionless + const double var_current_blockers__TTX_30uM = 0; // dimensionless + const double var_current_blockers__TTX_3uM = 0; // dimensionless + const double var_electric_potentials__PkNa = 0.029999999999999999; // dimensionless + const double var_i_Kr__E4031_coeff = ((var_current_blockers__E4031_30nM == 1) ? (0.77000000000000002) : ((var_current_blockers__E4031_100nM == 1) ? (0.5) : (1))); // dimensionless + const double var_i_Ks__Chromanol_coeff = ((var_current_blockers__Chromanol_iKs30 == 1) ? (0.69999999999999996) : ((var_current_blockers__Chromanol_iKs50 == 1) ? (0.5) : ((var_current_blockers__Chromanol_iKs70 == 1) ? (0.29999999999999999) : ((var_current_blockers__Chromanol_iKs90 == 1) ? (0.10000000000000001) : (1))))); // dimensionless + const double var_i_Ks__g_Ks_total = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * NV_Ith_S(mParameters, 9); // S_per_F + const double var_i_Na__TTX_coeff = ((var_current_blockers__TTX_3uM == 1) ? (0.17999999999999999) : ((var_current_blockers__TTX_10uM == 1) ? (0.059999999999999998) : ((var_current_blockers__TTX_30uM == 1) ? (0.02) : (1)))); // dimensionless + const double var_i_NaCa__KmCa = 1.3799999999999999; // millimolar + const double var_i_NaCa__KmNai = 87.5; // millimolar + const double var_i_NaCa__Ksat = 0.10000000000000001; // dimensionless + const double var_i_NaCa__alpha = 2.8571431999999999; // dimensionless + const double var_i_NaCa__gamma = 0.34999999999999998; // dimensionless + const double var_i_NaCa__kNaCa = 4900; // A_per_F + const double var_i_NaK__Km_K = 1; // millimolar + const double var_i_NaK__Km_Na = 40; // millimolar + const double var_i_NaK__PNaK = 1.8414239999999999; // A_per_F + const double var_i_PCa__KPCa = 0.00050000000000000001; // millimolar + const double var_i_PCa__g_PCa = 0.41249999999999998; // A_per_F + const double var_i_PCa__i_PCa = var_chaste_interface__calcium_dynamics__Cai * var_i_PCa__g_PCa / (var_chaste_interface__calcium_dynamics__Cai + var_i_PCa__KPCa); // A_per_F + const double var_i_PCa__i_PCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_PCa__i_PCa; // uA_per_cm2 + const double var_i_b_Ca__g_b_Ca = 0.69264000000000003; // S_per_F + const double var_i_b_Na__g_b_Na = 0.90000000000000002; // S_per_F + const double var_i_f__E_f = -0.017000000000000001; // volt + const double var_i_f__i_f = (-var_i_f__E_f + var_Membrane__Vm) * NV_Ith_S(mParameters, 6) * var_chaste_interface__i_f_Xf_gate__Xf; // A_per_F + const double var_i_f__i_f_converted = HeartConfig::Instance()->GetCapacitance() * var_i_f__i_f; // uA_per_cm2 + const double var_model_parameters__F = 96485.341499999995; // coulomb_per_mole + const double var_i_K1__g_K1_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 7); // S_per_F + const double var_i_Kr__g_Kr_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 8); // S_per_F + const double var_model_parameters__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_electric_potentials__E_Ca = 0.5 * var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 1) / var_chaste_interface__calcium_dynamics__Cai) / var_model_parameters__F; // volt + const double var_electric_potentials__E_K = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 2) / NV_Ith_S(mParameters, 0)) / var_model_parameters__F; // volt + const double var_i_CaL__i_CaL = ((((var_Membrane__Vm >= -4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= 4.3086710741444596e-12 * NV_Ith_S(mParameters, 12))) || ((var_Membrane__Vm >= 4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= -4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)))) ? (-116045061550.51096 * (-4.3086710741444596e-12 * NV_Ith_S(mParameters, 12) + var_Membrane__Vm) * (-0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(9.9999999999999995e-8)) - 0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(-9.9999999999999995e-8))) / NV_Ith_S(mParameters, 12) + 0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(9.9999999999999995e-8))) : (4478658957.2358274 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(23209.012310102189 * var_Membrane__Vm / NV_Ith_S(mParameters, 12))) * var_Membrane__Vm * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / ((-1 + exp(23209.012310102189 * var_Membrane__Vm / NV_Ith_S(mParameters, 12))) * NV_Ith_S(mParameters, 12)))); // A_per_F + const double var_i_CaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_i_CaL__i_CaL; // uA_per_cm2 + const double var_i_K1__alpha_K1 = 3.9100000000000001 / (1 + exp(-118.83999999999999 + 594.19999999999993 * var_Membrane__Vm - 594.19999999999993 * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__beta_K1 = (-1.5089999999999999 * exp(0.02 + 0.20000000000000001 * var_Membrane__Vm - 0.20000000000000001 * var_electric_potentials__E_K) + exp(-5.8860000000000001 + 588.60000000000002 * var_Membrane__Vm - 588.60000000000002 * var_electric_potentials__E_K)) / (1 + exp(454.69999999999999 * var_Membrane__Vm - 454.69999999999999 * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__XK1_inf = var_i_K1__alpha_K1 / (var_i_K1__alpha_K1 + var_i_K1__beta_K1); // dimensionless + const double var_i_K1__i_K1 = (-var_electric_potentials__E_K + var_Membrane__Vm) * var_i_K1__XK1_inf * var_i_K1__g_K1_total; // A_per_F + const double var_i_K1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_K1__i_K1; // uA_per_cm2 + const double var_i_Kr__i_Kr = (-var_electric_potentials__E_K + var_Membrane__Vm) * var_i_Kr__E4031_coeff * var_i_Kr__g_Kr_total * var_chaste_interface__i_Kr_Xr1_gate__Xr1 * var_chaste_interface__i_Kr_Xr2_gate__Xr2; // A_per_F + const double var_i_Kr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Kr__i_Kr; // uA_per_cm2 + const double var_i_b_Ca__i_b_Ca = (-var_electric_potentials__E_Ca + var_Membrane__Vm) * var_i_b_Ca__g_b_Ca; // A_per_F + const double var_i_to__i_to = (-var_electric_potentials__E_K + var_Membrane__Vm) * NV_Ith_S(mParameters, 10) * var_chaste_interface__i_to_q_gate__q * var_chaste_interface__i_to_r_gate__r; // A_per_F + const double var_i_to__i_to_converted = HeartConfig::Instance()->GetCapacitance() * var_i_to__i_to; // uA_per_cm2 + const double var_electric_potentials__E_Ks = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log((var_electric_potentials__PkNa * NV_Ith_S(mParameters, 3) + NV_Ith_S(mParameters, 2)) / (var_electric_potentials__PkNa * var_chaste_interface__sodium_dynamics__Nai + NV_Ith_S(mParameters, 0))) / var_model_parameters__F; // volt + const double var_electric_potentials__E_Na = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 3) / var_chaste_interface__sodium_dynamics__Nai) / var_model_parameters__F; // volt + const double var_i_Ks__i_Ks = pow(var_chaste_interface__i_Ks_Xs_gate__Xs, 2) * (-var_electric_potentials__E_Ks + var_Membrane__Vm) * var_i_Ks__Chromanol_coeff * var_i_Ks__g_Ks_total; // A_per_F + const double var_i_Ks__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_electric_potentials__E_Na + var_Membrane__Vm) * var_i_Na__TTX_coeff * NV_Ith_S(mParameters, 5) * var_chaste_interface__i_Na_h_gate__h * var_chaste_interface__i_Na_j_gate__j; // A_per_F + const double var_i_Na__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = (pow(var_chaste_interface__sodium_dynamics__Nai, 3) * NV_Ith_S(mParameters, 1) * exp(var_Membrane__Vm * var_i_NaCa__gamma * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) - pow(NV_Ith_S(mParameters, 3), 3) * var_chaste_interface__calcium_dynamics__Cai * var_i_NaCa__alpha * exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * var_i_NaCa__kNaCa / ((1 + var_i_NaCa__Ksat * exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * (pow(var_i_NaCa__KmNai, 3) + pow(NV_Ith_S(mParameters, 3), 3)) * (var_i_NaCa__KmCa + NV_Ith_S(mParameters, 1))); // A_per_F + const double var_i_NaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaCa__i_NaCa; // uA_per_cm2 + const double var_i_NaK__i_NaK = var_i_NaK__PNaK * NV_Ith_S(mParameters, 2) * var_chaste_interface__sodium_dynamics__Nai / ((var_i_NaK__Km_K + NV_Ith_S(mParameters, 2)) * (var_i_NaK__Km_Na + var_chaste_interface__sodium_dynamics__Nai) * (1 + 0.035299999999999998 * exp(-var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) + 0.1245 * exp(-0.10000000000000001 * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))))); // A_per_F + const double var_i_NaK__i_NaK_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaK__i_NaK; // uA_per_cm2 + const double var_i_b_Na__i_b_Na = (-var_electric_potentials__E_Na + var_Membrane__Vm) * var_i_b_Na__g_b_Na; // A_per_F + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_i_b_Ca__i_b_Ca + HeartConfig::Instance()->GetCapacitance() * var_i_b_Na__i_b_Na + var_i_CaL__i_CaL_converted + var_i_K1__i_K1_converted + var_i_Kr__i_Kr_converted + var_i_Ks__i_Ks_converted + var_i_Na__i_Na_converted + var_i_NaCa__i_NaCa_converted + var_i_NaK__i_NaK_converted + var_i_PCa__i_PCa_converted + var_i_f__i_f_converted + var_i_to__i_to_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__Membrane__Vm_converted = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -74.3340057623841 + double var_chaste_interface__calcium_dynamics__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 1.80773974140477e-05 + double var_chaste_interface__i_Na_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.102953468725004 + double var_chaste_interface__i_Na_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.786926637881461 + double var_chaste_interface__i_Na_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.253943221774722 + double var_chaste_interface__i_CaL_d_gate__d = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 8.96088425225182e-05 + double var_chaste_interface__i_CaL_f1_gate__f1 = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.970411811263976 + double var_chaste_interface__i_CaL_f2_gate__f2 = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.999965815466749 + double var_chaste_interface__i_CaL_fCa_gate__fCa = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.998925296531804 + double var_chaste_interface__i_Kr_Xr1_gate__Xr1 = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.00778547011240132 + double var_chaste_interface__i_Kr_Xr2_gate__Xr2 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.432162576531617 + double var_chaste_interface__i_Ks_Xs_gate__Xs = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.0322944866983666 + double var_chaste_interface__i_f_Xf_gate__Xf = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.100615100568753 + double var_chaste_interface__i_to_q_gate__q = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.839295925773219 + double var_chaste_interface__i_to_r_gate__r = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00573289893326379 + double var_chaste_interface__sodium_dynamics__Nai = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 10.9248496211574 + double var_chaste_interface__calcium_dynamics__Ca_SR = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 0.2734234751931 + double var_chaste_interface__calcium_dynamics__g = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 0.999999981028517 + + // Mathematics + double d_dt_chaste_interface_var_Membrane__Vm_converted; + const double var_Membrane__Vm = 0.001 * var_chaste_interface__Membrane__Vm_converted; // volt + const double var_calcium_dynamics__Buf_C = 0.25; // millimolar + const double var_calcium_dynamics__Buf_SR = 10; // millimolar + const double var_calcium_dynamics__Kbuf_C = 0.001; // millimolar + const double var_calcium_dynamics__Cai_bufc = 1 / (1 + var_calcium_dynamics__Buf_C * var_calcium_dynamics__Kbuf_C / pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__Kbuf_C), 2)); // dimensionless + const double var_calcium_dynamics__Kbuf_SR = 0.29999999999999999; // millimolar + const double var_calcium_dynamics__Ca_SR_bufSR = 1 / (1 + var_calcium_dynamics__Buf_SR * var_calcium_dynamics__Kbuf_SR / pow((var_chaste_interface__calcium_dynamics__Ca_SR + var_calcium_dynamics__Kbuf_SR), 2)); // dimensionless + const double var_calcium_dynamics__Kup = 0.00025000000000000001; // millimolar + const double var_calcium_dynamics__V_leak = 0.00044443999999999999; // per_second + const double var_calcium_dynamics__VmaxUp = 0.56064000000000003; // millimolar_per_second + const double var_calcium_dynamics__a_rel = 16.463999999999999; // millimolar_per_second + const double var_calcium_dynamics__b_rel = 0.25; // millimolar + const double var_calcium_dynamics__c_rel = 8.2319999999999993; // millimolar_per_second + const double var_calcium_dynamics__g_inf = ((var_chaste_interface__calcium_dynamics__Cai <= 0.00035) ? (1 / (1 + 5.439910241481016e+20 * pow(var_chaste_interface__calcium_dynamics__Cai, 6))) : (1 / (1 + 1.9720198874049176e+55 * pow(var_chaste_interface__calcium_dynamics__Cai, 16)))); // dimensionless + const double var_calcium_dynamics__const2 = (((var_Membrane__Vm > -0.059999999999999998) && (var_chaste_interface__calcium_dynamics__g < var_calcium_dynamics__g_inf)) ? (0) : (1)); // dimensionless + const double var_calcium_dynamics__i_leak = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_SR) * var_calcium_dynamics__V_leak; // millimolar_per_second + const double var_calcium_dynamics__i_up = var_calcium_dynamics__VmaxUp / (1 + pow(var_calcium_dynamics__Kup, 2) / pow(var_chaste_interface__calcium_dynamics__Cai, 2)); // millimolar_per_second + const double var_calcium_dynamics__tau_g = 0.002; // second + const double var_calcium_dynamics__g_orig_deriv = (-var_chaste_interface__calcium_dynamics__g + var_calcium_dynamics__g_inf) * var_calcium_dynamics__const2 / var_calcium_dynamics__tau_g; // 1 / second + const double d_dt_chaste_interface_var_calcium_dynamics__g = 0.001 * var_calcium_dynamics__g_orig_deriv; // 1 / millisecond + const double var_current_blockers__TTX_10uM = 0; // dimensionless + const double var_current_blockers__TTX_30uM = 0; // dimensionless + const double var_current_blockers__TTX_3uM = 0; // dimensionless + const double var_i_CaL_d_gate__alpha_d = 0.25 + 1.3999999999999999 / (1 + exp(-2.6923076923076925 - 76.92307692307692 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_d_gate__beta_d = 1.3999999999999999 / (1 + exp(1 + 200 * var_Membrane__Vm)); // dimensionless + const double var_calcium_dynamics__i_rel = 0.041099999999999998 * (pow(var_chaste_interface__calcium_dynamics__Ca_SR, 2) * var_calcium_dynamics__a_rel / (pow(var_chaste_interface__calcium_dynamics__Ca_SR, 2) + pow(var_calcium_dynamics__b_rel, 2)) + var_calcium_dynamics__c_rel) * var_chaste_interface__calcium_dynamics__g * var_chaste_interface__i_CaL_d_gate__d; // millimolar_per_second + const double var_i_CaL_d_gate__d_infinity = 1 / (1 + exp(-1.3 - 142.85714285714286 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_d_gate__gamma_d = 1 / (1 + exp(2.5 - 50 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_d_gate__tau_d = 0.001 * var_i_CaL_d_gate__gamma_d + 0.001 * var_i_CaL_d_gate__alpha_d * var_i_CaL_d_gate__beta_d; // second + const double var_i_CaL_d_gate__d_orig_deriv = (-var_chaste_interface__i_CaL_d_gate__d + var_i_CaL_d_gate__d_infinity) / var_i_CaL_d_gate__tau_d; // 1 / second + const double d_dt_chaste_interface_var_i_CaL_d_gate__d = 0.001 * var_i_CaL_d_gate__d_orig_deriv; // 1 / millisecond + const double var_i_CaL_f1_gate__f1_inf = 1 / (1 + exp(8.6666666666666661 + 333.33333333333331 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_f1_gate__constf1 = ((-var_i_CaL_f1_gate__f1_inf + var_chaste_interface__i_CaL_f1_gate__f1 < 0) ? (0.92835000000000001 + 1433 * var_chaste_interface__calcium_dynamics__Cai) : (1)); // dimensionless + const double var_i_CaL_f1_gate__tau_f1 = 0.001 * (20 + 200 / (1 + exp(1.3 - 100 * var_Membrane__Vm)) + 180 / (1 + exp(3 + 100 * var_Membrane__Vm)) + 1102.5 * exp(-4444444444.4444447 * pow((0.027 + var_Membrane__Vm), 4))) * var_i_CaL_f1_gate__constf1; // second + const double var_i_CaL_f1_gate__f1_orig_deriv = (-var_chaste_interface__i_CaL_f1_gate__f1 + var_i_CaL_f1_gate__f1_inf) / var_i_CaL_f1_gate__tau_f1; // 1 / second + const double d_dt_chaste_interface_var_i_CaL_f1_gate__f1 = 0.001 * var_i_CaL_f1_gate__f1_orig_deriv; // 1 / millisecond + const double var_i_CaL_f2_gate__constf2 = 1; // dimensionless + const double var_i_CaL_f2_gate__f2_inf = 0.33000000000000002 + 0.67000000000000004 / (1 + exp(8.75 + 250 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_f2_gate__tau_f2 = 0.001 * (16 / (1 + exp(3 + 100 * var_Membrane__Vm)) + 31 / (1 + exp(2.5 - 100 * var_Membrane__Vm)) + 600 * exp(-5882.3529411764703 * pow((0.025000000000000001 + var_Membrane__Vm), 2))) * var_i_CaL_f2_gate__constf2; // second + const double var_i_CaL_f2_gate__f2_orig_deriv = (-var_chaste_interface__i_CaL_f2_gate__f2 + var_i_CaL_f2_gate__f2_inf) / var_i_CaL_f2_gate__tau_f2; // 1 / second + const double d_dt_chaste_interface_var_i_CaL_f2_gate__f2 = 0.001 * var_i_CaL_f2_gate__f2_orig_deriv; // 1 / millisecond + const double var_i_CaL_fCa_gate__alpha_fCa = 1 / (1 + 5.9537418076512766e+25 * pow(var_chaste_interface__calcium_dynamics__Cai, 8)); // dimensionless + const double var_i_CaL_fCa_gate__beta_fCa = 0.10000000000000001 / (1 + exp(-9 + 10000 * var_chaste_interface__calcium_dynamics__Cai)); // dimensionless + const double var_i_CaL_fCa_gate__gamma_fCa = 0.29999999999999999 / (1 + exp(-0.9375 + 1250 * var_chaste_interface__calcium_dynamics__Cai)); // dimensionless + const double var_i_CaL_fCa_gate__fCa_inf = 0.76010945576162958 * var_i_CaL_fCa_gate__alpha_fCa + 0.76010945576162958 * var_i_CaL_fCa_gate__beta_fCa + 0.76010945576162958 * var_i_CaL_fCa_gate__gamma_fCa; // dimensionless + const double var_i_CaL_fCa_gate__constfCa = (((var_Membrane__Vm > -0.059999999999999998) && (var_chaste_interface__i_CaL_fCa_gate__fCa < var_i_CaL_fCa_gate__fCa_inf)) ? (0) : (1)); // dimensionless + const double var_i_CaL_fCa_gate__tau_fCa = 0.002; // second + const double var_i_CaL_fCa_gate__fCa_orig_deriv = (-var_chaste_interface__i_CaL_fCa_gate__fCa + var_i_CaL_fCa_gate__fCa_inf) * var_i_CaL_fCa_gate__constfCa / var_i_CaL_fCa_gate__tau_fCa; // 1 / second + const double d_dt_chaste_interface_var_i_CaL_fCa_gate__fCa = 0.001 * var_i_CaL_fCa_gate__fCa_orig_deriv; // 1 / millisecond + const double var_i_Kr_Xr1_gate__L0 = 0.025000000000000001; // dimensionless + const double var_i_Kr_Xr1_gate__Q = 2.2999999999999998; // dimensionless + const double var_i_Kr_Xr1_gate__alpha_Xr1 = 450 / (1 + exp(-4.5 - 100 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr1_gate__beta_Xr1 = 6 / (1 + exp(2.6086956521739131 + 86.956521739130437 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr1_gate__tau_Xr1 = 0.001 * var_i_Kr_Xr1_gate__alpha_Xr1 * var_i_Kr_Xr1_gate__beta_Xr1; // second + const double var_i_Kr_Xr2_gate__Xr2_infinity = 1 / (1 + exp(1.76 + 20 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr2_gate__alpha_Xr2 = 3 / (1 + exp(-3 - 50 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr2_gate__beta_Xr2 = 1.1200000000000001 / (1 + exp(-3 + 50 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr2_gate__tau_Xr2 = 0.001 * var_i_Kr_Xr2_gate__alpha_Xr2 * var_i_Kr_Xr2_gate__beta_Xr2; // second + const double var_i_Kr_Xr2_gate__Xr2_orig_deriv = (-var_chaste_interface__i_Kr_Xr2_gate__Xr2 + var_i_Kr_Xr2_gate__Xr2_infinity) / var_i_Kr_Xr2_gate__tau_Xr2; // 1 / second + const double d_dt_chaste_interface_var_i_Kr_Xr2_gate__Xr2 = 0.001 * var_i_Kr_Xr2_gate__Xr2_orig_deriv; // 1 / millisecond + const double var_i_Ks_Xs_gate__Xs_infinity = 1 / (1 + exp(-1.25 - 62.5 * var_Membrane__Vm)); // dimensionless + const double var_i_Ks_Xs_gate__alpha_Xs = 1100 / sqrt(1 + exp(-1.6666666666666667 - 166.66666666666666 * var_Membrane__Vm)); // dimensionless + const double var_i_Ks_Xs_gate__beta_Xs = 1 / (1 + exp(-3 + 50 * var_Membrane__Vm)); // dimensionless + const double var_i_Ks_Xs_gate__tau_Xs = 0.001 * var_i_Ks_Xs_gate__alpha_Xs * var_i_Ks_Xs_gate__beta_Xs; // second + const double var_i_Ks_Xs_gate__Xs_orig_deriv = (-var_chaste_interface__i_Ks_Xs_gate__Xs + var_i_Ks_Xs_gate__Xs_infinity) / var_i_Ks_Xs_gate__tau_Xs; // 1 / second + const double d_dt_chaste_interface_var_i_Ks_Xs_gate__Xs = 0.001 * var_i_Ks_Xs_gate__Xs_orig_deriv; // 1 / millisecond + const double var_i_Na__TTX_coeff = ((var_current_blockers__TTX_3uM == 1) ? (0.17999999999999999) : ((var_current_blockers__TTX_10uM == 1) ? (0.059999999999999998) : ((var_current_blockers__TTX_30uM == 1) ? (0.02) : (1)))); // dimensionless + const double var_i_NaCa__KmCa = 1.3799999999999999; // millimolar + const double var_i_NaCa__KmNai = 87.5; // millimolar + const double var_i_NaCa__Ksat = 0.10000000000000001; // dimensionless + const double var_i_NaCa__alpha = 2.8571431999999999; // dimensionless + const double var_i_NaCa__gamma = 0.34999999999999998; // dimensionless + const double var_i_NaCa__kNaCa = 4900; // A_per_F + const double var_i_NaK__Km_K = 1; // millimolar + const double var_i_NaK__Km_Na = 40; // millimolar + const double var_i_NaK__PNaK = 1.8414239999999999; // A_per_F + const double var_i_Na_h_gate__alpha_h = ((var_Membrane__Vm < -0.040000000000000001) ? (0.057000000000000002 * exp(-11.764705882352942 - 147.05882352941177 * var_Membrane__Vm)) : (0)); // dimensionless + const double var_i_Na_h_gate__beta_h = ((var_Membrane__Vm < -0.040000000000000001) ? (2.7000000000000002 * exp(79 * var_Membrane__Vm) + 310000 * exp(348.5 * var_Membrane__Vm)) : (5.9230769230769234 / (1 + exp(-0.96036036036036043 - 90.090090090090087 * var_Membrane__Vm)))); // dimensionless + const double var_i_Na_h_gate__h_inf = 1 / sqrt(1 + exp(12.649122807017543 + 175.43859649122805 * var_Membrane__Vm)); // dimensionless + const double var_i_Na_h_gate__tau_h = ((var_Membrane__Vm < -0.040000000000000001) ? (0.0015 / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h)) : (0.002542)); // second + const double var_i_Na_h_gate__h_orig_deriv = (-var_chaste_interface__i_Na_h_gate__h + var_i_Na_h_gate__h_inf) / var_i_Na_h_gate__tau_h; // 1 / second + const double d_dt_chaste_interface_var_i_Na_h_gate__h = 0.001 * var_i_Na_h_gate__h_orig_deriv; // 1 / millisecond + const double var_i_Na_j_gate__alpha_j = ((var_Membrane__Vm < -0.040000000000000001) ? ((37.780000000000001 + 1000 * var_Membrane__Vm) * (-25428 * exp(244.40000000000001 * var_Membrane__Vm) - 6.9480000000000002e-6 * exp(-43.909999999999997 * var_Membrane__Vm)) / (1 + exp(24.640530000000002 + 311 * var_Membrane__Vm))) : (0)); // dimensionless + const double var_i_Na_j_gate__beta_j = ((var_Membrane__Vm < -0.040000000000000001) ? (0.024240000000000001 * exp(-10.52 * var_Membrane__Vm) / (1 + exp(-5.5312920000000005 - 137.80000000000001 * var_Membrane__Vm))) : (0.59999999999999998 * exp(57 * var_Membrane__Vm) / (1 + exp(-3.2000000000000002 - 100 * var_Membrane__Vm)))); // dimensionless + const double var_i_Na_j_gate__j_inf = 1 / sqrt(1 + exp(12.649122807017543 + 175.43859649122805 * var_Membrane__Vm)); // dimensionless + const double var_i_Na_j_gate__tau_j = 0.0070000000000000001 / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j); // second + const double var_i_Na_j_gate__j_orig_deriv = (-var_chaste_interface__i_Na_j_gate__j + var_i_Na_j_gate__j_inf) / var_i_Na_j_gate__tau_j; // 1 / second + const double d_dt_chaste_interface_var_i_Na_j_gate__j = 0.001 * var_i_Na_j_gate__j_orig_deriv; // 1 / millisecond + const double var_i_Na_m_gate__alpha_m = 1 / (1 + exp(-12 - 200 * var_Membrane__Vm)); // dimensionless + const double var_i_Na_m_gate__beta_m = 0.10000000000000001 / (1 + exp(7 + 200 * var_Membrane__Vm)) + 0.10000000000000001 / (1 + exp(-0.25 + 5 * var_Membrane__Vm)); // dimensionless + const double var_i_Na_m_gate__m_inf = 1 * pow((1 + exp(-5.7796610169491522 - 169.4915254237288 * var_Membrane__Vm)), (-0.33333333333333331)); // dimensionless + const double var_i_Na_m_gate__tau_m = 0.001 * var_i_Na_m_gate__alpha_m * var_i_Na_m_gate__beta_m; // second + const double var_i_Na_m_gate__m_orig_deriv = (-var_chaste_interface__i_Na_m_gate__m + var_i_Na_m_gate__m_inf) / var_i_Na_m_gate__tau_m; // 1 / second + const double d_dt_chaste_interface_var_i_Na_m_gate__m = 0.001 * var_i_Na_m_gate__m_orig_deriv; // 1 / millisecond + const double var_i_PCa__KPCa = 0.00050000000000000001; // millimolar + const double var_i_PCa__g_PCa = 0.41249999999999998; // A_per_F + const double var_i_PCa__i_PCa = var_chaste_interface__calcium_dynamics__Cai * var_i_PCa__g_PCa / (var_chaste_interface__calcium_dynamics__Cai + var_i_PCa__KPCa); // A_per_F + const double var_i_b_Ca__g_b_Ca = 0.69264000000000003; // S_per_F + const double var_i_b_Na__g_b_Na = 0.90000000000000002; // S_per_F + const double var_i_f_Xf_gate__Xf_infinity = 1 / (1 + exp(15.569999999999999 + 200 * var_Membrane__Vm)); // dimensionless + const double var_i_f_Xf_gate__tau_Xf = 1.8999999999999999 / (1 + exp(1.5 + 100 * var_Membrane__Vm)); // second + const double var_i_f_Xf_gate__Xf_orig_deriv = (-var_chaste_interface__i_f_Xf_gate__Xf + var_i_f_Xf_gate__Xf_infinity) / var_i_f_Xf_gate__tau_Xf; // 1 / second + const double d_dt_chaste_interface_var_i_f_Xf_gate__Xf = 0.001 * var_i_f_Xf_gate__Xf_orig_deriv; // 1 / millisecond + const double var_i_to_q_gate__q_inf = 1 / (1 + exp(4.0769230769230766 + 76.92307692307692 * var_Membrane__Vm)); // dimensionless + const double var_i_to_q_gate__tau_q = 0.0060599999999999994 + 0.039101999999999998 / (0.065000000000000002 * exp(4.593 + 100 * var_Membrane__Vm) + 0.56999999999999995 * exp(-3.52 - 80 * var_Membrane__Vm)); // second + const double var_i_to_q_gate__q_orig_deriv = (-var_chaste_interface__i_to_q_gate__q + var_i_to_q_gate__q_inf) / var_i_to_q_gate__tau_q; // 1 / second + const double d_dt_chaste_interface_var_i_to_q_gate__q = 0.001 * var_i_to_q_gate__q_orig_deriv; // 1 / millisecond + const double var_i_to_r_gate__r_inf = 1 / (1 + exp(1.1893333333333334 - 53.333333333333336 * var_Membrane__Vm)); // dimensionless + const double var_i_to_r_gate__tau_r = 0.0027535199999999998 + 0.01440516 / (1.0369999999999999 * exp(2.7548999999999997 + 90 * var_Membrane__Vm) + 0.36899999999999999 * exp(-2.8607999999999998 - 120 * var_Membrane__Vm)); // second + const double var_i_to_r_gate__r_orig_deriv = (-var_chaste_interface__i_to_r_gate__r + var_i_to_r_gate__r_inf) / var_i_to_r_gate__tau_r; // 1 / second + const double d_dt_chaste_interface_var_i_to_r_gate__r = 0.001 * var_i_to_r_gate__r_orig_deriv; // 1 / millisecond + const double var_model_parameters__F = 96485.341499999995; // coulomb_per_mole + const double var_model_parameters__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_electric_potentials__E_Ca = 0.5 * var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 1) / var_chaste_interface__calcium_dynamics__Cai) / var_model_parameters__F; // volt + const double var_i_CaL__i_CaL = ((((var_Membrane__Vm >= -4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= 4.3086710741444596e-12 * NV_Ith_S(mParameters, 12))) || ((var_Membrane__Vm >= 4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= -4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)))) ? (-116045061550.51096 * (-4.3086710741444596e-12 * NV_Ith_S(mParameters, 12) + var_Membrane__Vm) * (-0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(9.9999999999999995e-8)) - 0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(-9.9999999999999995e-8))) / NV_Ith_S(mParameters, 12) + 0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(9.9999999999999995e-8))) : (4478658957.2358274 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(23209.012310102189 * var_Membrane__Vm / NV_Ith_S(mParameters, 12))) * var_Membrane__Vm * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / ((-1 + exp(23209.012310102189 * var_Membrane__Vm / NV_Ith_S(mParameters, 12))) * NV_Ith_S(mParameters, 12)))); // A_per_F + const double var_i_Kr_Xr1_gate__V_half = -19 - 1000 * (-2.1789087017666886 + log(pow((1 + 0.38461538461538458 * NV_Ith_S(mParameters, 1)), 4) / (pow((0.57999999999999996 + 1 * NV_Ith_S(mParameters, 1)), 4) * var_i_Kr_Xr1_gate__L0))) * var_model_parameters__R * NV_Ith_S(mParameters, 12) / (var_i_Kr_Xr1_gate__Q * var_model_parameters__F); // millivolt + const double var_i_Kr_Xr1_gate__Xr1_inf = 1 / (1 + exp(0.2040816326530612 * var_i_Kr_Xr1_gate__V_half - 204.08163265306121 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr1_gate__Xr1_orig_deriv = (-var_chaste_interface__i_Kr_Xr1_gate__Xr1 + var_i_Kr_Xr1_gate__Xr1_inf) / var_i_Kr_Xr1_gate__tau_Xr1; // 1 / second + const double d_dt_chaste_interface_var_i_Kr_Xr1_gate__Xr1 = 0.001 * var_i_Kr_Xr1_gate__Xr1_orig_deriv; // 1 / millisecond + const double var_i_b_Ca__i_b_Ca = (-var_electric_potentials__E_Ca + var_Membrane__Vm) * var_i_b_Ca__g_b_Ca; // A_per_F + const double var_model_parameters__V_SR = 583.73000000000002; // micrometre_cube + const double var_model_parameters__Vc = 8800; // micrometre_cube + const double var_calcium_dynamics__Ca_SR_orig_deriv = (-var_calcium_dynamics__i_leak - var_calcium_dynamics__i_rel + var_calcium_dynamics__i_up) * var_calcium_dynamics__Ca_SR_bufSR * var_model_parameters__Vc / var_model_parameters__V_SR; // millimolar / second + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_SR = 0.001 * var_calcium_dynamics__Ca_SR_orig_deriv; // millimolar / millisecond + const double var_electric_potentials__E_Na = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 3) / var_chaste_interface__sodium_dynamics__Nai) / var_model_parameters__F; // volt + const double var_i_Na__i_Na = pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_electric_potentials__E_Na + var_Membrane__Vm) * var_i_Na__TTX_coeff * NV_Ith_S(mParameters, 5) * var_chaste_interface__i_Na_h_gate__h * var_chaste_interface__i_Na_j_gate__j; // A_per_F + const double var_i_NaCa__i_NaCa = (pow(var_chaste_interface__sodium_dynamics__Nai, 3) * NV_Ith_S(mParameters, 1) * exp(var_Membrane__Vm * var_i_NaCa__gamma * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) - pow(NV_Ith_S(mParameters, 3), 3) * var_chaste_interface__calcium_dynamics__Cai * var_i_NaCa__alpha * exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * var_i_NaCa__kNaCa / ((1 + var_i_NaCa__Ksat * exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * (pow(var_i_NaCa__KmNai, 3) + pow(NV_Ith_S(mParameters, 3), 3)) * (var_i_NaCa__KmCa + NV_Ith_S(mParameters, 1))); // A_per_F + const double var_calcium_dynamics__Cai_orig_deriv = (-var_calcium_dynamics__i_up - 4.9999999999999994e+17 * (-2 * var_i_NaCa__i_NaCa + var_i_CaL__i_CaL + var_i_PCa__i_PCa + var_i_b_Ca__i_b_Ca) * NV_Ith_S(mParameters, 11) / (var_model_parameters__F * var_model_parameters__Vc) + var_calcium_dynamics__i_leak + var_calcium_dynamics__i_rel) * var_calcium_dynamics__Cai_bufc; // millimolar / second + const double d_dt_chaste_interface_var_calcium_dynamics__Cai = 0.001 * var_calcium_dynamics__Cai_orig_deriv; // millimolar / millisecond + const double var_i_NaK__i_NaK = var_i_NaK__PNaK * NV_Ith_S(mParameters, 2) * var_chaste_interface__sodium_dynamics__Nai / ((var_i_NaK__Km_K + NV_Ith_S(mParameters, 2)) * (var_i_NaK__Km_Na + var_chaste_interface__sodium_dynamics__Nai) * (1 + 0.035299999999999998 * exp(-var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) + 0.1245 * exp(-0.10000000000000001 * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))))); // A_per_F + const double var_i_b_Na__i_b_Na = (-var_electric_potentials__E_Na + var_Membrane__Vm) * var_i_b_Na__g_b_Na; // A_per_F + const double var_sodium_dynamics__Nai_orig_deriv = -9.9999999999999987e+17 * (3 * var_i_NaCa__i_NaCa + 3 * var_i_NaK__i_NaK + var_i_Na__i_Na + var_i_b_Na__i_b_Na) * NV_Ith_S(mParameters, 11) / (var_model_parameters__F * var_model_parameters__Vc); // millimolar / second + const double d_dt_chaste_interface_var_sodium_dynamics__Nai = 0.001 * var_sodium_dynamics__Nai_orig_deriv; // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_Membrane__Vm_converted = 0.0; + } + else + { + const double var_current_blockers__Chromanol_iKs30 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs50 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs70 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs90 = 0; // dimensionless + const double var_current_blockers__E4031_100nM = 0; // dimensionless + const double var_current_blockers__E4031_30nM = 0; // dimensionless + const double var_electric_potentials__PkNa = 0.029999999999999999; // dimensionless + const double var_i_Kr__E4031_coeff = ((var_current_blockers__E4031_30nM == 1) ? (0.77000000000000002) : ((var_current_blockers__E4031_100nM == 1) ? (0.5) : (1))); // dimensionless + const double var_i_Ks__Chromanol_coeff = ((var_current_blockers__Chromanol_iKs30 == 1) ? (0.69999999999999996) : ((var_current_blockers__Chromanol_iKs50 == 1) ? (0.5) : ((var_current_blockers__Chromanol_iKs70 == 1) ? (0.29999999999999999) : ((var_current_blockers__Chromanol_iKs90 == 1) ? (0.10000000000000001) : (1))))); // dimensionless + const double var_i_Ks__g_Ks_total = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * NV_Ith_S(mParameters, 9); // S_per_F + const double var_i_f__E_f = -0.017000000000000001; // volt + const double var_i_f__i_f = (-var_i_f__E_f + var_Membrane__Vm) * NV_Ith_S(mParameters, 6) * var_chaste_interface__i_f_Xf_gate__Xf; // A_per_F + const double var_i_K1__g_K1_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 7); // S_per_F + const double var_i_Kr__g_Kr_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 8); // S_per_F + const double var_electric_potentials__E_K = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 2) / NV_Ith_S(mParameters, 0)) / var_model_parameters__F; // volt + const double var_i_K1__alpha_K1 = 3.9100000000000001 / (1 + exp(-118.83999999999999 + 594.19999999999993 * var_Membrane__Vm - 594.19999999999993 * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__beta_K1 = (-1.5089999999999999 * exp(0.02 + 0.20000000000000001 * var_Membrane__Vm - 0.20000000000000001 * var_electric_potentials__E_K) + exp(-5.8860000000000001 + 588.60000000000002 * var_Membrane__Vm - 588.60000000000002 * var_electric_potentials__E_K)) / (1 + exp(454.69999999999999 * var_Membrane__Vm - 454.69999999999999 * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__XK1_inf = var_i_K1__alpha_K1 / (var_i_K1__alpha_K1 + var_i_K1__beta_K1); // dimensionless + const double var_i_K1__i_K1 = (-var_electric_potentials__E_K + var_Membrane__Vm) * var_i_K1__XK1_inf * var_i_K1__g_K1_total; // A_per_F + const double var_i_Kr__i_Kr = (-var_electric_potentials__E_K + var_Membrane__Vm) * var_i_Kr__E4031_coeff * var_i_Kr__g_Kr_total * var_chaste_interface__i_Kr_Xr1_gate__Xr1 * var_chaste_interface__i_Kr_Xr2_gate__Xr2; // A_per_F + const double var_i_to__i_to = (-var_electric_potentials__E_K + var_Membrane__Vm) * NV_Ith_S(mParameters, 10) * var_chaste_interface__i_to_q_gate__q * var_chaste_interface__i_to_r_gate__r; // A_per_F + const double var_electric_potentials__E_Ks = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log((var_electric_potentials__PkNa * NV_Ith_S(mParameters, 3) + NV_Ith_S(mParameters, 2)) / (var_electric_potentials__PkNa * var_chaste_interface__sodium_dynamics__Nai + NV_Ith_S(mParameters, 0))) / var_model_parameters__F; // volt + const double var_i_Ks__i_Ks = pow(var_chaste_interface__i_Ks_Xs_gate__Xs, 2) * (-var_electric_potentials__E_Ks + var_Membrane__Vm) * var_i_Ks__Chromanol_coeff * var_i_Ks__g_Ks_total; // A_per_F + const double var_stim_mode__i_stim_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_stim_mode__i_stim = var_stim_mode__i_stim_converted / HeartConfig::Instance()->GetCapacitance(); // A_per_F + const double var_Membrane__Vm_orig_deriv = -var_i_CaL__i_CaL - var_i_K1__i_K1 - var_i_Kr__i_Kr - var_i_Ks__i_Ks - var_i_Na__i_Na - var_i_NaCa__i_NaCa - var_i_NaK__i_NaK - var_i_PCa__i_PCa - var_i_b_Ca__i_b_Ca - var_i_b_Na__i_b_Na - var_i_f__i_f - var_i_to__i_to + var_stim_mode__i_stim; // volt / second + const double var_Membrane__Vm_orig_deriv_a = 0.001 * var_Membrane__Vm_orig_deriv; // volt / millisecond + d_dt_chaste_interface_var_Membrane__Vm_converted = 1000 * var_Membrane__Vm_orig_deriv_a; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_Membrane__Vm_converted; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_calcium_dynamics__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_i_Na_m_gate__m; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_i_Na_h_gate__h; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_i_Na_j_gate__j; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_i_CaL_d_gate__d; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_i_CaL_f1_gate__f1; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_i_CaL_f2_gate__f2; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_i_CaL_fCa_gate__fCa; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_i_Kr_Xr1_gate__Xr1; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_i_Kr_Xr2_gate__Xr2; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_i_Ks_Xs_gate__Xs; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_i_f_Xf_gate__Xf; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_i_to_q_gate__q; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_i_to_r_gate__r; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_sodium_dynamics__Nai; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_calcium_dynamics__Ca_SR; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_calcium_dynamics__g; + } + + N_Vector Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__Membrane__Vm_converted = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -74.3340057623841 + double var_chaste_interface__calcium_dynamics__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 1.80773974140477e-05 + double var_chaste_interface__i_Na_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.102953468725004 + double var_chaste_interface__i_Na_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.786926637881461 + double var_chaste_interface__i_Na_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.253943221774722 + double var_chaste_interface__i_CaL_d_gate__d = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 8.96088425225182e-05 + double var_chaste_interface__i_CaL_f1_gate__f1 = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.970411811263976 + double var_chaste_interface__i_CaL_f2_gate__f2 = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.999965815466749 + double var_chaste_interface__i_CaL_fCa_gate__fCa = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.998925296531804 + double var_chaste_interface__i_Kr_Xr1_gate__Xr1 = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.00778547011240132 + double var_chaste_interface__i_Kr_Xr2_gate__Xr2 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.432162576531617 + double var_chaste_interface__i_Ks_Xs_gate__Xs = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.0322944866983666 + double var_chaste_interface__i_f_Xf_gate__Xf = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.100615100568753 + double var_chaste_interface__i_to_q_gate__q = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.839295925773219 + double var_chaste_interface__i_to_r_gate__r = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00573289893326379 + double var_chaste_interface__sodium_dynamics__Nai = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 10.9248496211574 + + // Mathematics + const double var_Membrane__Vm = 0.001 * var_chaste_interface__Membrane__Vm_converted; // volt + const double var_calcium_dynamics__Buf_C = 0.25; // millimolar + const double var_calcium_dynamics__Kbuf_C = 0.001; // millimolar + const double var_calcium_dynamics__Cai_bufc = 1 / (1 + var_calcium_dynamics__Buf_C * var_calcium_dynamics__Kbuf_C / pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__Kbuf_C), 2)); // dimensionless + const double var_current_blockers__Chromanol_iKs30 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs50 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs70 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs90 = 0; // dimensionless + const double var_current_blockers__E4031_100nM = 0; // dimensionless + const double var_current_blockers__E4031_30nM = 0; // dimensionless + const double var_current_blockers__TTX_10uM = 0; // dimensionless + const double var_current_blockers__TTX_30uM = 0; // dimensionless + const double var_current_blockers__TTX_3uM = 0; // dimensionless + const double var_electric_potentials__PkNa = 0.029999999999999999; // dimensionless + const double var_i_Kr__E4031_coeff = ((var_current_blockers__E4031_30nM == 1) ? (0.77000000000000002) : ((var_current_blockers__E4031_100nM == 1) ? (0.5) : (1))); // dimensionless + const double var_i_Ks__Chromanol_coeff = ((var_current_blockers__Chromanol_iKs30 == 1) ? (0.69999999999999996) : ((var_current_blockers__Chromanol_iKs50 == 1) ? (0.5) : ((var_current_blockers__Chromanol_iKs70 == 1) ? (0.29999999999999999) : ((var_current_blockers__Chromanol_iKs90 == 1) ? (0.10000000000000001) : (1))))); // dimensionless + const double var_i_Ks__g_Ks_total = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * NV_Ith_S(mParameters, 9); // S_per_F + const double var_i_Na__TTX_coeff = ((var_current_blockers__TTX_3uM == 1) ? (0.17999999999999999) : ((var_current_blockers__TTX_10uM == 1) ? (0.059999999999999998) : ((var_current_blockers__TTX_30uM == 1) ? (0.02) : (1)))); // dimensionless + const double var_i_NaCa__KmCa = 1.3799999999999999; // millimolar + const double var_i_NaCa__KmNai = 87.5; // millimolar + const double var_i_NaCa__Ksat = 0.10000000000000001; // dimensionless + const double var_i_NaCa__alpha = 2.8571431999999999; // dimensionless + const double var_i_NaCa__gamma = 0.34999999999999998; // dimensionless + const double var_i_NaCa__kNaCa = 4900; // A_per_F + const double var_i_NaK__Km_K = 1; // millimolar + const double var_i_NaK__Km_Na = 40; // millimolar + const double var_i_NaK__PNaK = 1.8414239999999999; // A_per_F + const double var_i_PCa__KPCa = 0.00050000000000000001; // millimolar + const double var_i_PCa__g_PCa = 0.41249999999999998; // A_per_F + const double var_i_PCa__i_PCa = var_chaste_interface__calcium_dynamics__Cai * var_i_PCa__g_PCa / (var_chaste_interface__calcium_dynamics__Cai + var_i_PCa__KPCa); // A_per_F + const double var_i_PCa__i_PCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_PCa__i_PCa; // uA_per_cm2 + const double var_i_f__E_f = -0.017000000000000001; // volt + const double var_i_f__i_f = (-var_i_f__E_f + var_Membrane__Vm) * NV_Ith_S(mParameters, 6) * var_chaste_interface__i_f_Xf_gate__Xf; // A_per_F + const double var_i_f__i_f_converted = HeartConfig::Instance()->GetCapacitance() * var_i_f__i_f; // uA_per_cm2 + const double var_model_parameters__Cm_converted = 1000000 * NV_Ith_S(mParameters, 11); // uF + const double var_model_parameters__F = 96485.341499999995; // coulomb_per_mole + const double var_i_K1__g_K1_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 7); // S_per_F + const double var_i_Kr__g_Kr_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 8); // S_per_F + const double var_model_parameters__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_electric_potentials__E_K = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 2) / NV_Ith_S(mParameters, 0)) / var_model_parameters__F; // volt + const double var_i_CaL__i_CaL = ((((var_Membrane__Vm >= -4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= 4.3086710741444596e-12 * NV_Ith_S(mParameters, 12))) || ((var_Membrane__Vm >= 4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= -4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)))) ? (-116045061550.51096 * (-4.3086710741444596e-12 * NV_Ith_S(mParameters, 12) + var_Membrane__Vm) * (-0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(9.9999999999999995e-8)) - 0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(-9.9999999999999995e-8))) / NV_Ith_S(mParameters, 12) + 0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(9.9999999999999995e-8))) : (4478658957.2358274 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(23209.012310102189 * var_Membrane__Vm / NV_Ith_S(mParameters, 12))) * var_Membrane__Vm * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / ((-1 + exp(23209.012310102189 * var_Membrane__Vm / NV_Ith_S(mParameters, 12))) * NV_Ith_S(mParameters, 12)))); // A_per_F + const double var_i_CaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_i_CaL__i_CaL; // uA_per_cm2 + const double var_i_K1__alpha_K1 = 3.9100000000000001 / (1 + exp(-118.83999999999999 + 594.19999999999993 * var_Membrane__Vm - 594.19999999999993 * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__beta_K1 = (-1.5089999999999999 * exp(0.02 + 0.20000000000000001 * var_Membrane__Vm - 0.20000000000000001 * var_electric_potentials__E_K) + exp(-5.8860000000000001 + 588.60000000000002 * var_Membrane__Vm - 588.60000000000002 * var_electric_potentials__E_K)) / (1 + exp(454.69999999999999 * var_Membrane__Vm - 454.69999999999999 * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__XK1_inf = var_i_K1__alpha_K1 / (var_i_K1__alpha_K1 + var_i_K1__beta_K1); // dimensionless + const double var_i_K1__i_K1 = (-var_electric_potentials__E_K + var_Membrane__Vm) * var_i_K1__XK1_inf * var_i_K1__g_K1_total; // A_per_F + const double var_i_K1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_K1__i_K1; // uA_per_cm2 + const double var_i_Kr__i_Kr = (-var_electric_potentials__E_K + var_Membrane__Vm) * var_i_Kr__E4031_coeff * var_i_Kr__g_Kr_total * var_chaste_interface__i_Kr_Xr1_gate__Xr1 * var_chaste_interface__i_Kr_Xr2_gate__Xr2; // A_per_F + const double var_i_Kr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Kr__i_Kr; // uA_per_cm2 + const double var_i_to__i_to = (-var_electric_potentials__E_K + var_Membrane__Vm) * NV_Ith_S(mParameters, 10) * var_chaste_interface__i_to_q_gate__q * var_chaste_interface__i_to_r_gate__r; // A_per_F + const double var_i_to__i_to_converted = HeartConfig::Instance()->GetCapacitance() * var_i_to__i_to; // uA_per_cm2 + const double var_electric_potentials__E_Ks = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log((var_electric_potentials__PkNa * NV_Ith_S(mParameters, 3) + NV_Ith_S(mParameters, 2)) / (var_electric_potentials__PkNa * var_chaste_interface__sodium_dynamics__Nai + NV_Ith_S(mParameters, 0))) / var_model_parameters__F; // volt + const double var_electric_potentials__E_Na = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 3) / var_chaste_interface__sodium_dynamics__Nai) / var_model_parameters__F; // volt + const double var_i_Ks__i_Ks = pow(var_chaste_interface__i_Ks_Xs_gate__Xs, 2) * (-var_electric_potentials__E_Ks + var_Membrane__Vm) * var_i_Ks__Chromanol_coeff * var_i_Ks__g_Ks_total; // A_per_F + const double var_i_Ks__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_electric_potentials__E_Na + var_Membrane__Vm) * var_i_Na__TTX_coeff * NV_Ith_S(mParameters, 5) * var_chaste_interface__i_Na_h_gate__h * var_chaste_interface__i_Na_j_gate__j; // A_per_F + const double var_i_Na__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = (pow(var_chaste_interface__sodium_dynamics__Nai, 3) * NV_Ith_S(mParameters, 1) * exp(var_Membrane__Vm * var_i_NaCa__gamma * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) - pow(NV_Ith_S(mParameters, 3), 3) * var_chaste_interface__calcium_dynamics__Cai * var_i_NaCa__alpha * exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * var_i_NaCa__kNaCa / ((1 + var_i_NaCa__Ksat * exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * (pow(var_i_NaCa__KmNai, 3) + pow(NV_Ith_S(mParameters, 3), 3)) * (var_i_NaCa__KmCa + NV_Ith_S(mParameters, 1))); // A_per_F + const double var_i_NaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaCa__i_NaCa; // uA_per_cm2 + const double var_i_NaK__i_NaK = var_i_NaK__PNaK * NV_Ith_S(mParameters, 2) * var_chaste_interface__sodium_dynamics__Nai / ((var_i_NaK__Km_K + NV_Ith_S(mParameters, 2)) * (var_i_NaK__Km_Na + var_chaste_interface__sodium_dynamics__Nai) * (1 + 0.035299999999999998 * exp(-var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) + 0.1245 * exp(-0.10000000000000001 * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))))); // A_per_F + const double var_i_NaK__i_NaK_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaK__i_NaK; // uA_per_cm2 + const double var_stim_mode__i_stim_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(18, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(18); +#endif + NV_Ith_S(dqs, 0) = var_calcium_dynamics__Cai_bufc; + NV_Ith_S(dqs, 1) = var_i_CaL__i_CaL_converted; + NV_Ith_S(dqs, 2) = var_i_PCa__i_PCa_converted; + NV_Ith_S(dqs, 3) = var_model_parameters__Cm_converted; + NV_Ith_S(dqs, 4) = var_i_Na__i_Na_converted; + NV_Ith_S(dqs, 5) = var_i_f__i_f_converted; + NV_Ith_S(dqs, 6) = var_i_K1__i_K1_converted; + NV_Ith_S(dqs, 7) = var_i_K1__g_K1_total; + NV_Ith_S(dqs, 8) = var_i_Kr__i_Kr_converted; + NV_Ith_S(dqs, 9) = var_i_Kr__g_Kr_total; + NV_Ith_S(dqs, 10) = var_i_Ks__i_Ks_converted; + NV_Ith_S(dqs, 11) = var_i_Ks__g_Ks_total; + NV_Ith_S(dqs, 12) = var_i_NaCa__i_NaCa_converted; + NV_Ith_S(dqs, 13) = var_i_NaK__i_NaK_converted; + NV_Ith_S(dqs, 14) = var_stim_mode__i_stim_converted; + NV_Ith_S(dqs, 15) = var_i_to__i_to_converted; + NV_Ith_S(dqs, 16) = var_chaste_interface__Membrane__Vm_converted; + NV_Ith_S(dqs, 17) = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "paci_hyttinen_aaltosetala_severi_ventricularVersion"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-74.3340057623841); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.80773974140477e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.102953468725004); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.786926637881461); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.253943221774722); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.96088425225182e-05); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.970411811263976); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999965815466749); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998925296531804); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("i_Kr_Xr1_gate__Xr1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00778547011240132); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("i_Kr_Xr2_gate__Xr2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.432162576531617); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("i_Ks_Xs_gate__Xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0322944866983666); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("membrane_hyperpolarisation_activated_funny_current_single_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.100615100568753); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("i_to_q_gate__q"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.839295925773219); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("i_to_r_gate__r"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00573289893326379); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(10.9248496211574); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.2734234751931); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("calcium_dynamics__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999999981028517); + + // mParameters[0]: + this->mParameterNames.push_back("cytosolic_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[1]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("metre_cube_per_F_per_s"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("S_per_F"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component_conductance"); + this->mParameterUnits.push_back("S_per_F"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("S_per_F"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("S_per_F"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("S_per_F"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("S_per_F"); + + // mParameters[11]: + this->mParameterNames.push_back("model_parameters__Cm"); + this->mParameterUnits.push_back("farad"); + + // mParameters[12]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_flux_scaling_from_intrinsic_buffers"); + this->mDerivedQuantityUnits.push_back("dimensionless"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("S_per_F"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("S_per_F"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("S_per_F"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_sodium_potassium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_voltage"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersion--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersion--sympy_1_14.cpp new file mode 100644 index 00000000..287cc865 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/paci_hyttinen_aaltosetala_severi_ventricularVersion--sympy_1_14.cpp @@ -0,0 +1,833 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: paci_hyttinen_aaltosetala_severi_ventricularVersion +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NumericCvode) +//! on (date omitted as unimportant) +//! +//! + +#include "paci_hyttinen_aaltosetala_severi_ventricularVersion.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + + + + boost::shared_ptr Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__stim_mode__i_stim_Amplitude_converted = 5.5718264182641404 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__stim_mode__i_stim_Period_converted = 1000; // millisecond + const double var_chaste_interface__stim_mode__i_stim_PulseDuration_converted = 5; // millisecond + const double var_chaste_interface__stim_mode__i_stim_Start_converted = 0; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__stim_mode__i_stim_Amplitude_converted), + var_chaste_interface__stim_mode__i_stim_PulseDuration_converted, + var_chaste_interface__stim_mode__i_stim_Period_converted, + var_chaste_interface__stim_mode__i_stim_Start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 18, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + NV_Ith_S(this->mParameters, 0) = 150; // (var_model_parameters__Ki) [millimolar] + NV_Ith_S(this->mParameters, 1) = 1.8; // (var_model_parameters__Cao) [millimolar] + NV_Ith_S(this->mParameters, 2) = 5.4000000000000004; // (var_model_parameters__Ko) [millimolar] + NV_Ith_S(this->mParameters, 3) = 151; // (var_model_parameters__Nao) [millimolar] + NV_Ith_S(this->mParameters, 4) = 8.6357020000000001e-5; // (var_i_CaL__g_CaL) [metre_cube_per_F_per_s] + NV_Ith_S(this->mParameters, 5) = 3671.2302; // (var_i_Na__g_Na) [S_per_F] + NV_Ith_S(this->mParameters, 6) = 30.103120000000001; // (var_i_f__g_f) [S_per_F] + NV_Ith_S(this->mParameters, 7) = 28.1492; // (var_i_K1__g_K1) [S_per_F] + NV_Ith_S(this->mParameters, 8) = 29.866700000000002; // (var_i_Kr__g_Kr) [S_per_F] + NV_Ith_S(this->mParameters, 9) = 2.0409999999999999; // (var_i_Ks__g_Ks) [S_per_F] + NV_Ith_S(this->mParameters, 10) = 29.9038; // (var_i_to__g_to) [S_per_F] + NV_Ith_S(this->mParameters, 11) = 9.8710900000000003e-11; // (var_model_parameters__Cm) [farad] + NV_Ith_S(this->mParameters, 12) = 310; // (var_model_parameters__T) [kelvin] + } + + Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::~Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode() + { + } + + + void Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 18; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__Membrane__Vm_converted = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -74.3340057623841 + double var_chaste_interface__calcium_dynamics__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 1.80773974140477e-05 + double var_chaste_interface__i_Na_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.102953468725004 + double var_chaste_interface__i_Na_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.786926637881461 + double var_chaste_interface__i_Na_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.253943221774722 + double var_chaste_interface__i_CaL_d_gate__d = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 8.96088425225182e-05 + double var_chaste_interface__i_CaL_f1_gate__f1 = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.970411811263976 + double var_chaste_interface__i_CaL_f2_gate__f2 = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.999965815466749 + double var_chaste_interface__i_CaL_fCa_gate__fCa = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.998925296531804 + double var_chaste_interface__i_Kr_Xr1_gate__Xr1 = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.00778547011240132 + double var_chaste_interface__i_Kr_Xr2_gate__Xr2 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.432162576531617 + double var_chaste_interface__i_Ks_Xs_gate__Xs = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.0322944866983666 + double var_chaste_interface__i_f_Xf_gate__Xf = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.100615100568753 + double var_chaste_interface__i_to_q_gate__q = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.839295925773219 + double var_chaste_interface__i_to_r_gate__r = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00573289893326379 + double var_chaste_interface__sodium_dynamics__Nai = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 10.9248496211574 + + const double var_Membrane__Vm = 0.001 * var_chaste_interface__Membrane__Vm_converted; // volt + const double var_current_blockers__Chromanol_iKs30 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs50 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs70 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs90 = 0; // dimensionless + const double var_current_blockers__E4031_100nM = 0; // dimensionless + const double var_current_blockers__E4031_30nM = 0; // dimensionless + const double var_current_blockers__TTX_10uM = 0; // dimensionless + const double var_current_blockers__TTX_30uM = 0; // dimensionless + const double var_current_blockers__TTX_3uM = 0; // dimensionless + const double var_electric_potentials__PkNa = 0.029999999999999999; // dimensionless + const double var_i_Kr__E4031_coeff = ((var_current_blockers__E4031_30nM == 1) ? (0.77000000000000002) : ((var_current_blockers__E4031_100nM == 1) ? (0.5) : (1))); // dimensionless + const double var_i_Ks__Chromanol_coeff = ((var_current_blockers__Chromanol_iKs30 == 1) ? (0.69999999999999996) : ((var_current_blockers__Chromanol_iKs50 == 1) ? (0.5) : ((var_current_blockers__Chromanol_iKs70 == 1) ? (0.29999999999999999) : ((var_current_blockers__Chromanol_iKs90 == 1) ? (0.10000000000000001) : (1))))); // dimensionless + const double var_i_Ks__g_Ks_total = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * NV_Ith_S(mParameters, 9); // S_per_F + const double var_i_Na__TTX_coeff = ((var_current_blockers__TTX_3uM == 1) ? (0.17999999999999999) : ((var_current_blockers__TTX_10uM == 1) ? (0.059999999999999998) : ((var_current_blockers__TTX_30uM == 1) ? (0.02) : (1)))); // dimensionless + const double var_i_NaCa__KmCa = 1.3799999999999999; // millimolar + const double var_i_NaCa__KmNai = 87.5; // millimolar + const double var_i_NaCa__Ksat = 0.10000000000000001; // dimensionless + const double var_i_NaCa__alpha = 2.8571431999999999; // dimensionless + const double var_i_NaCa__gamma = 0.34999999999999998; // dimensionless + const double var_i_NaCa__kNaCa = 4900; // A_per_F + const double var_i_NaK__Km_K = 1; // millimolar + const double var_i_NaK__Km_Na = 40; // millimolar + const double var_i_NaK__PNaK = 1.8414239999999999; // A_per_F + const double var_i_PCa__KPCa = 0.00050000000000000001; // millimolar + const double var_i_PCa__g_PCa = 0.41249999999999998; // A_per_F + const double var_i_PCa__i_PCa = var_chaste_interface__calcium_dynamics__Cai * var_i_PCa__g_PCa / (var_chaste_interface__calcium_dynamics__Cai + var_i_PCa__KPCa); // A_per_F + const double var_i_PCa__i_PCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_PCa__i_PCa; // uA_per_cm2 + const double var_i_b_Ca__g_b_Ca = 0.69264000000000003; // S_per_F + const double var_i_b_Na__g_b_Na = 0.90000000000000002; // S_per_F + const double var_i_f__E_f = -0.017000000000000001; // volt + const double var_i_f__i_f = (-var_i_f__E_f + var_Membrane__Vm) * NV_Ith_S(mParameters, 6) * var_chaste_interface__i_f_Xf_gate__Xf; // A_per_F + const double var_i_f__i_f_converted = HeartConfig::Instance()->GetCapacitance() * var_i_f__i_f; // uA_per_cm2 + const double var_model_parameters__F = 96485.341499999995; // coulomb_per_mole + const double var_i_K1__g_K1_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 7); // S_per_F + const double var_i_Kr__g_Kr_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 8); // S_per_F + const double var_model_parameters__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_electric_potentials__E_Ca = 0.5 * var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 1) / var_chaste_interface__calcium_dynamics__Cai) / var_model_parameters__F; // volt + const double var_electric_potentials__E_K = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 2) / NV_Ith_S(mParameters, 0)) / var_model_parameters__F; // volt + const double var_i_CaL__i_CaL = ((((var_Membrane__Vm >= -4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= 4.3086710741444596e-12 * NV_Ith_S(mParameters, 12))) || ((var_Membrane__Vm >= 4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= -4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)))) ? (-116045061550.51096 * (-4.3086710741444596e-12 * NV_Ith_S(mParameters, 12) + var_Membrane__Vm) * (-0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(9.9999999999999995e-8)) - 0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(-9.9999999999999995e-8))) / NV_Ith_S(mParameters, 12) + 0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(9.9999999999999995e-8))) : (4478658957.2358274 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(23209.012310102189 * var_Membrane__Vm / NV_Ith_S(mParameters, 12))) * var_Membrane__Vm * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / ((-1 + exp(23209.012310102189 * var_Membrane__Vm / NV_Ith_S(mParameters, 12))) * NV_Ith_S(mParameters, 12)))); // A_per_F + const double var_i_CaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_i_CaL__i_CaL; // uA_per_cm2 + const double var_i_K1__alpha_K1 = 3.9100000000000001 / (1 + exp(-118.83999999999999 + 594.19999999999993 * var_Membrane__Vm - 594.19999999999993 * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__beta_K1 = (-1.5089999999999999 * exp(0.02 + 0.20000000000000001 * var_Membrane__Vm - 0.20000000000000001 * var_electric_potentials__E_K) + exp(-5.8860000000000001 + 588.60000000000002 * var_Membrane__Vm - 588.60000000000002 * var_electric_potentials__E_K)) / (1 + exp(454.69999999999999 * var_Membrane__Vm - 454.69999999999999 * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__XK1_inf = var_i_K1__alpha_K1 / (var_i_K1__alpha_K1 + var_i_K1__beta_K1); // dimensionless + const double var_i_K1__i_K1 = (-var_electric_potentials__E_K + var_Membrane__Vm) * var_i_K1__XK1_inf * var_i_K1__g_K1_total; // A_per_F + const double var_i_K1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_K1__i_K1; // uA_per_cm2 + const double var_i_Kr__i_Kr = (-var_electric_potentials__E_K + var_Membrane__Vm) * var_i_Kr__E4031_coeff * var_i_Kr__g_Kr_total * var_chaste_interface__i_Kr_Xr1_gate__Xr1 * var_chaste_interface__i_Kr_Xr2_gate__Xr2; // A_per_F + const double var_i_Kr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Kr__i_Kr; // uA_per_cm2 + const double var_i_b_Ca__i_b_Ca = (-var_electric_potentials__E_Ca + var_Membrane__Vm) * var_i_b_Ca__g_b_Ca; // A_per_F + const double var_i_to__i_to = (-var_electric_potentials__E_K + var_Membrane__Vm) * NV_Ith_S(mParameters, 10) * var_chaste_interface__i_to_q_gate__q * var_chaste_interface__i_to_r_gate__r; // A_per_F + const double var_i_to__i_to_converted = HeartConfig::Instance()->GetCapacitance() * var_i_to__i_to; // uA_per_cm2 + const double var_electric_potentials__E_Ks = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log((var_electric_potentials__PkNa * NV_Ith_S(mParameters, 3) + NV_Ith_S(mParameters, 2)) / (var_electric_potentials__PkNa * var_chaste_interface__sodium_dynamics__Nai + NV_Ith_S(mParameters, 0))) / var_model_parameters__F; // volt + const double var_electric_potentials__E_Na = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 3) / var_chaste_interface__sodium_dynamics__Nai) / var_model_parameters__F; // volt + const double var_i_Ks__i_Ks = pow(var_chaste_interface__i_Ks_Xs_gate__Xs, 2) * (-var_electric_potentials__E_Ks + var_Membrane__Vm) * var_i_Ks__Chromanol_coeff * var_i_Ks__g_Ks_total; // A_per_F + const double var_i_Ks__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_electric_potentials__E_Na + var_Membrane__Vm) * var_i_Na__TTX_coeff * NV_Ith_S(mParameters, 5) * var_chaste_interface__i_Na_h_gate__h * var_chaste_interface__i_Na_j_gate__j; // A_per_F + const double var_i_Na__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = (pow(var_chaste_interface__sodium_dynamics__Nai, 3) * NV_Ith_S(mParameters, 1) * exp(var_Membrane__Vm * var_i_NaCa__gamma * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) - pow(NV_Ith_S(mParameters, 3), 3) * var_chaste_interface__calcium_dynamics__Cai * var_i_NaCa__alpha * exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * var_i_NaCa__kNaCa / ((1 + var_i_NaCa__Ksat * exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * (pow(var_i_NaCa__KmNai, 3) + pow(NV_Ith_S(mParameters, 3), 3)) * (var_i_NaCa__KmCa + NV_Ith_S(mParameters, 1))); // A_per_F + const double var_i_NaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaCa__i_NaCa; // uA_per_cm2 + const double var_i_NaK__i_NaK = var_i_NaK__PNaK * NV_Ith_S(mParameters, 2) * var_chaste_interface__sodium_dynamics__Nai / ((var_i_NaK__Km_K + NV_Ith_S(mParameters, 2)) * (var_i_NaK__Km_Na + var_chaste_interface__sodium_dynamics__Nai) * (1 + 0.035299999999999998 * exp(-var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) + 0.1245 * exp(-0.10000000000000001 * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))))); // A_per_F + const double var_i_NaK__i_NaK_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaK__i_NaK; // uA_per_cm2 + const double var_i_b_Na__i_b_Na = (-var_electric_potentials__E_Na + var_Membrane__Vm) * var_i_b_Na__g_b_Na; // A_per_F + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_i_b_Ca__i_b_Ca + HeartConfig::Instance()->GetCapacitance() * var_i_b_Na__i_b_Na + var_i_CaL__i_CaL_converted + var_i_K1__i_K1_converted + var_i_Kr__i_Kr_converted + var_i_Ks__i_Ks_converted + var_i_Na__i_Na_converted + var_i_NaCa__i_NaCa_converted + var_i_NaK__i_NaK_converted + var_i_PCa__i_PCa_converted + var_i_f__i_f_converted + var_i_to__i_to_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__Membrane__Vm_converted = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -74.3340057623841 + double var_chaste_interface__calcium_dynamics__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 1.80773974140477e-05 + double var_chaste_interface__i_Na_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.102953468725004 + double var_chaste_interface__i_Na_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.786926637881461 + double var_chaste_interface__i_Na_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.253943221774722 + double var_chaste_interface__i_CaL_d_gate__d = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 8.96088425225182e-05 + double var_chaste_interface__i_CaL_f1_gate__f1 = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.970411811263976 + double var_chaste_interface__i_CaL_f2_gate__f2 = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.999965815466749 + double var_chaste_interface__i_CaL_fCa_gate__fCa = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.998925296531804 + double var_chaste_interface__i_Kr_Xr1_gate__Xr1 = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.00778547011240132 + double var_chaste_interface__i_Kr_Xr2_gate__Xr2 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.432162576531617 + double var_chaste_interface__i_Ks_Xs_gate__Xs = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.0322944866983666 + double var_chaste_interface__i_f_Xf_gate__Xf = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.100615100568753 + double var_chaste_interface__i_to_q_gate__q = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.839295925773219 + double var_chaste_interface__i_to_r_gate__r = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00573289893326379 + double var_chaste_interface__sodium_dynamics__Nai = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 10.9248496211574 + double var_chaste_interface__calcium_dynamics__Ca_SR = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 0.2734234751931 + double var_chaste_interface__calcium_dynamics__g = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 0.999999981028517 + + // Mathematics + double d_dt_chaste_interface_var_Membrane__Vm_converted; + const double var_Membrane__Vm = 0.001 * var_chaste_interface__Membrane__Vm_converted; // volt + const double var_calcium_dynamics__Buf_C = 0.25; // millimolar + const double var_calcium_dynamics__Buf_SR = 10; // millimolar + const double var_calcium_dynamics__Kbuf_C = 0.001; // millimolar + const double var_calcium_dynamics__Cai_bufc = 1 / (1 + var_calcium_dynamics__Buf_C * var_calcium_dynamics__Kbuf_C / pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__Kbuf_C), 2)); // dimensionless + const double var_calcium_dynamics__Kbuf_SR = 0.29999999999999999; // millimolar + const double var_calcium_dynamics__Ca_SR_bufSR = 1 / (1 + var_calcium_dynamics__Buf_SR * var_calcium_dynamics__Kbuf_SR / pow((var_chaste_interface__calcium_dynamics__Ca_SR + var_calcium_dynamics__Kbuf_SR), 2)); // dimensionless + const double var_calcium_dynamics__Kup = 0.00025000000000000001; // millimolar + const double var_calcium_dynamics__V_leak = 0.00044443999999999999; // per_second + const double var_calcium_dynamics__VmaxUp = 0.56064000000000003; // millimolar_per_second + const double var_calcium_dynamics__a_rel = 16.463999999999999; // millimolar_per_second + const double var_calcium_dynamics__b_rel = 0.25; // millimolar + const double var_calcium_dynamics__c_rel = 8.2319999999999993; // millimolar_per_second + const double var_calcium_dynamics__g_inf = ((var_chaste_interface__calcium_dynamics__Cai <= 0.00035) ? (1 / (1 + 5.439910241481016e+20 * pow(var_chaste_interface__calcium_dynamics__Cai, 6))) : (1 / (1 + 1.9720198874049176e+55 * pow(var_chaste_interface__calcium_dynamics__Cai, 16)))); // dimensionless + const double var_calcium_dynamics__const2 = (((var_Membrane__Vm > -0.059999999999999998) && (var_chaste_interface__calcium_dynamics__g < var_calcium_dynamics__g_inf)) ? (0) : (1)); // dimensionless + const double var_calcium_dynamics__i_leak = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_SR) * var_calcium_dynamics__V_leak; // millimolar_per_second + const double var_calcium_dynamics__i_up = var_calcium_dynamics__VmaxUp / (1 + pow(var_calcium_dynamics__Kup, 2) / pow(var_chaste_interface__calcium_dynamics__Cai, 2)); // millimolar_per_second + const double var_calcium_dynamics__tau_g = 0.002; // second + const double var_calcium_dynamics__g_orig_deriv = (-var_chaste_interface__calcium_dynamics__g + var_calcium_dynamics__g_inf) * var_calcium_dynamics__const2 / var_calcium_dynamics__tau_g; // 1 / second + const double d_dt_chaste_interface_var_calcium_dynamics__g = 0.001 * var_calcium_dynamics__g_orig_deriv; // 1 / millisecond + const double var_current_blockers__TTX_10uM = 0; // dimensionless + const double var_current_blockers__TTX_30uM = 0; // dimensionless + const double var_current_blockers__TTX_3uM = 0; // dimensionless + const double var_i_CaL_d_gate__alpha_d = 0.25 + 1.3999999999999999 / (1 + exp(-2.6923076923076925 - 76.92307692307692 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_d_gate__beta_d = 1.3999999999999999 / (1 + exp(1 + 200 * var_Membrane__Vm)); // dimensionless + const double var_calcium_dynamics__i_rel = 0.041099999999999998 * (pow(var_chaste_interface__calcium_dynamics__Ca_SR, 2) * var_calcium_dynamics__a_rel / (pow(var_chaste_interface__calcium_dynamics__Ca_SR, 2) + pow(var_calcium_dynamics__b_rel, 2)) + var_calcium_dynamics__c_rel) * var_chaste_interface__calcium_dynamics__g * var_chaste_interface__i_CaL_d_gate__d; // millimolar_per_second + const double var_i_CaL_d_gate__d_infinity = 1 / (1 + exp(-1.3 - 142.85714285714286 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_d_gate__gamma_d = 1 / (1 + exp(2.5 - 50 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_d_gate__tau_d = 0.001 * var_i_CaL_d_gate__gamma_d + 0.001 * var_i_CaL_d_gate__alpha_d * var_i_CaL_d_gate__beta_d; // second + const double var_i_CaL_d_gate__d_orig_deriv = (-var_chaste_interface__i_CaL_d_gate__d + var_i_CaL_d_gate__d_infinity) / var_i_CaL_d_gate__tau_d; // 1 / second + const double d_dt_chaste_interface_var_i_CaL_d_gate__d = 0.001 * var_i_CaL_d_gate__d_orig_deriv; // 1 / millisecond + const double var_i_CaL_f1_gate__f1_inf = 1 / (1 + exp(8.6666666666666661 + 333.33333333333331 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_f1_gate__constf1 = ((-var_i_CaL_f1_gate__f1_inf + var_chaste_interface__i_CaL_f1_gate__f1 < 0) ? (0.92835000000000001 + 1433 * var_chaste_interface__calcium_dynamics__Cai) : (1)); // dimensionless + const double var_i_CaL_f1_gate__tau_f1 = 0.001 * (20 + 200 / (1 + exp(1.3 - 100 * var_Membrane__Vm)) + 180 / (1 + exp(3 + 100 * var_Membrane__Vm)) + 1102.5 * exp(-0.0044444444444444444 * pow((27 + 1000 * var_Membrane__Vm), 4))) * var_i_CaL_f1_gate__constf1; // second + const double var_i_CaL_f1_gate__f1_orig_deriv = (-var_chaste_interface__i_CaL_f1_gate__f1 + var_i_CaL_f1_gate__f1_inf) / var_i_CaL_f1_gate__tau_f1; // 1 / second + const double d_dt_chaste_interface_var_i_CaL_f1_gate__f1 = 0.001 * var_i_CaL_f1_gate__f1_orig_deriv; // 1 / millisecond + const double var_i_CaL_f2_gate__constf2 = 1; // dimensionless + const double var_i_CaL_f2_gate__f2_inf = 0.33000000000000002 + 0.67000000000000004 / (1 + exp(8.75 + 250 * var_Membrane__Vm)); // dimensionless + const double var_i_CaL_f2_gate__tau_f2 = 0.001 * (16 / (1 + exp(3 + 100 * var_Membrane__Vm)) + 31 / (1 + exp(2.5 - 100 * var_Membrane__Vm)) + 600 * exp(-0.0058823529411764705 * pow((25 + 1000 * var_Membrane__Vm), 2))) * var_i_CaL_f2_gate__constf2; // second + const double var_i_CaL_f2_gate__f2_orig_deriv = (-var_chaste_interface__i_CaL_f2_gate__f2 + var_i_CaL_f2_gate__f2_inf) / var_i_CaL_f2_gate__tau_f2; // 1 / second + const double d_dt_chaste_interface_var_i_CaL_f2_gate__f2 = 0.001 * var_i_CaL_f2_gate__f2_orig_deriv; // 1 / millisecond + const double var_i_CaL_fCa_gate__alpha_fCa = 1 / (1 + 5.9537418076512766e+25 * pow(var_chaste_interface__calcium_dynamics__Cai, 8)); // dimensionless + const double var_i_CaL_fCa_gate__beta_fCa = 0.10000000000000001 / (1 + exp(-9 + 10000 * var_chaste_interface__calcium_dynamics__Cai)); // dimensionless + const double var_i_CaL_fCa_gate__gamma_fCa = 0.29999999999999999 / (1 + exp(-0.9375 + 1250 * var_chaste_interface__calcium_dynamics__Cai)); // dimensionless + const double var_i_CaL_fCa_gate__fCa_inf = 0.76010945576162958 * var_i_CaL_fCa_gate__alpha_fCa + 0.76010945576162958 * var_i_CaL_fCa_gate__beta_fCa + 0.76010945576162958 * var_i_CaL_fCa_gate__gamma_fCa; // dimensionless + const double var_i_CaL_fCa_gate__constfCa = (((var_Membrane__Vm > -0.059999999999999998) && (var_chaste_interface__i_CaL_fCa_gate__fCa < var_i_CaL_fCa_gate__fCa_inf)) ? (0) : (1)); // dimensionless + const double var_i_CaL_fCa_gate__tau_fCa = 0.002; // second + const double var_i_CaL_fCa_gate__fCa_orig_deriv = (-var_chaste_interface__i_CaL_fCa_gate__fCa + var_i_CaL_fCa_gate__fCa_inf) * var_i_CaL_fCa_gate__constfCa / var_i_CaL_fCa_gate__tau_fCa; // 1 / second + const double d_dt_chaste_interface_var_i_CaL_fCa_gate__fCa = 0.001 * var_i_CaL_fCa_gate__fCa_orig_deriv; // 1 / millisecond + const double var_i_Kr_Xr1_gate__L0 = 0.025000000000000001; // dimensionless + const double var_i_Kr_Xr1_gate__Q = 2.2999999999999998; // dimensionless + const double var_i_Kr_Xr1_gate__alpha_Xr1 = 450 / (1 + exp(-4.5 - 100 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr1_gate__beta_Xr1 = 6 / (1 + exp(2.6086956521739131 + 86.956521739130437 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr1_gate__tau_Xr1 = 0.001 * var_i_Kr_Xr1_gate__alpha_Xr1 * var_i_Kr_Xr1_gate__beta_Xr1; // second + const double var_i_Kr_Xr2_gate__Xr2_infinity = 1 / (1 + exp(1.76 + 20 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr2_gate__alpha_Xr2 = 3 / (1 + exp(-3 - 50 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr2_gate__beta_Xr2 = 1.1200000000000001 / (1 + exp(-3 + 50 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr2_gate__tau_Xr2 = 0.001 * var_i_Kr_Xr2_gate__alpha_Xr2 * var_i_Kr_Xr2_gate__beta_Xr2; // second + const double var_i_Kr_Xr2_gate__Xr2_orig_deriv = (-var_chaste_interface__i_Kr_Xr2_gate__Xr2 + var_i_Kr_Xr2_gate__Xr2_infinity) / var_i_Kr_Xr2_gate__tau_Xr2; // 1 / second + const double d_dt_chaste_interface_var_i_Kr_Xr2_gate__Xr2 = 0.001 * var_i_Kr_Xr2_gate__Xr2_orig_deriv; // 1 / millisecond + const double var_i_Ks_Xs_gate__Xs_infinity = 1 / (1 + exp(-1.25 - 62.5 * var_Membrane__Vm)); // dimensionless + const double var_i_Ks_Xs_gate__alpha_Xs = 1100 / sqrt(1 + exp(-1.6666666666666667 - 166.66666666666666 * var_Membrane__Vm)); // dimensionless + const double var_i_Ks_Xs_gate__beta_Xs = 1 / (1 + exp(-3 + 50 * var_Membrane__Vm)); // dimensionless + const double var_i_Ks_Xs_gate__tau_Xs = 0.001 * var_i_Ks_Xs_gate__alpha_Xs * var_i_Ks_Xs_gate__beta_Xs; // second + const double var_i_Ks_Xs_gate__Xs_orig_deriv = (-var_chaste_interface__i_Ks_Xs_gate__Xs + var_i_Ks_Xs_gate__Xs_infinity) / var_i_Ks_Xs_gate__tau_Xs; // 1 / second + const double d_dt_chaste_interface_var_i_Ks_Xs_gate__Xs = 0.001 * var_i_Ks_Xs_gate__Xs_orig_deriv; // 1 / millisecond + const double var_i_Na__TTX_coeff = ((var_current_blockers__TTX_3uM == 1) ? (0.17999999999999999) : ((var_current_blockers__TTX_10uM == 1) ? (0.059999999999999998) : ((var_current_blockers__TTX_30uM == 1) ? (0.02) : (1)))); // dimensionless + const double var_i_NaCa__KmCa = 1.3799999999999999; // millimolar + const double var_i_NaCa__KmNai = 87.5; // millimolar + const double var_i_NaCa__Ksat = 0.10000000000000001; // dimensionless + const double var_i_NaCa__alpha = 2.8571431999999999; // dimensionless + const double var_i_NaCa__gamma = 0.34999999999999998; // dimensionless + const double var_i_NaCa__kNaCa = 4900; // A_per_F + const double var_i_NaK__Km_K = 1; // millimolar + const double var_i_NaK__Km_Na = 40; // millimolar + const double var_i_NaK__PNaK = 1.8414239999999999; // A_per_F + const double var_i_Na_h_gate__alpha_h = ((var_Membrane__Vm < -0.040000000000000001) ? (0.057000000000000002 * exp(-11.764705882352942 - 147.05882352941177 * var_Membrane__Vm)) : (0)); // dimensionless + const double var_i_Na_h_gate__beta_h = ((var_Membrane__Vm < -0.040000000000000001) ? (2.7000000000000002 * exp(79 * var_Membrane__Vm) + 310000 * exp(348.5 * var_Membrane__Vm)) : (5.9230769230769234 / (1 + exp(-0.96036036036036043 - 90.090090090090087 * var_Membrane__Vm)))); // dimensionless + const double var_i_Na_h_gate__h_inf = 1 / sqrt(1 + exp(12.649122807017543 + 175.43859649122805 * var_Membrane__Vm)); // dimensionless + const double var_i_Na_h_gate__tau_h = ((var_Membrane__Vm < -0.040000000000000001) ? (0.0015 / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h)) : (0.002542)); // second + const double var_i_Na_h_gate__h_orig_deriv = (-var_chaste_interface__i_Na_h_gate__h + var_i_Na_h_gate__h_inf) / var_i_Na_h_gate__tau_h; // 1 / second + const double d_dt_chaste_interface_var_i_Na_h_gate__h = 0.001 * var_i_Na_h_gate__h_orig_deriv; // 1 / millisecond + const double var_i_Na_j_gate__alpha_j = ((var_Membrane__Vm < -0.040000000000000001) ? ((37.780000000000001 + 1000 * var_Membrane__Vm) * (-25428 * exp(244.40000000000001 * var_Membrane__Vm) - 6.9480000000000002e-6 * exp(-43.909999999999997 * var_Membrane__Vm)) / (1 + exp(24.640530000000002 + 311 * var_Membrane__Vm))) : (0)); // dimensionless + const double var_i_Na_j_gate__beta_j = ((var_Membrane__Vm < -0.040000000000000001) ? (0.024240000000000001 * exp(-10.52 * var_Membrane__Vm) / (1 + exp(-5.5312920000000005 - 137.80000000000001 * var_Membrane__Vm))) : (0.59999999999999998 * exp(57 * var_Membrane__Vm) / (1 + exp(-3.2000000000000002 - 100 * var_Membrane__Vm)))); // dimensionless + const double var_i_Na_j_gate__j_inf = 1 / sqrt(1 + exp(12.649122807017543 + 175.43859649122805 * var_Membrane__Vm)); // dimensionless + const double var_i_Na_j_gate__tau_j = 0.0070000000000000001 / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j); // second + const double var_i_Na_j_gate__j_orig_deriv = (-var_chaste_interface__i_Na_j_gate__j + var_i_Na_j_gate__j_inf) / var_i_Na_j_gate__tau_j; // 1 / second + const double d_dt_chaste_interface_var_i_Na_j_gate__j = 0.001 * var_i_Na_j_gate__j_orig_deriv; // 1 / millisecond + const double var_i_Na_m_gate__alpha_m = 1 / (1 + exp(-12 - 200 * var_Membrane__Vm)); // dimensionless + const double var_i_Na_m_gate__beta_m = 0.10000000000000001 / (1 + exp(7 + 200 * var_Membrane__Vm)) + 0.10000000000000001 / (1 + exp(-0.25 + 5 * var_Membrane__Vm)); // dimensionless + const double var_i_Na_m_gate__m_inf = 1 * pow((1 + exp(-5.7796610169491522 - 169.4915254237288 * var_Membrane__Vm)), (-0.33333333333333331)); // dimensionless + const double var_i_Na_m_gate__tau_m = 0.001 * var_i_Na_m_gate__alpha_m * var_i_Na_m_gate__beta_m; // second + const double var_i_Na_m_gate__m_orig_deriv = (-var_chaste_interface__i_Na_m_gate__m + var_i_Na_m_gate__m_inf) / var_i_Na_m_gate__tau_m; // 1 / second + const double d_dt_chaste_interface_var_i_Na_m_gate__m = 0.001 * var_i_Na_m_gate__m_orig_deriv; // 1 / millisecond + const double var_i_PCa__KPCa = 0.00050000000000000001; // millimolar + const double var_i_PCa__g_PCa = 0.41249999999999998; // A_per_F + const double var_i_PCa__i_PCa = var_chaste_interface__calcium_dynamics__Cai * var_i_PCa__g_PCa / (var_chaste_interface__calcium_dynamics__Cai + var_i_PCa__KPCa); // A_per_F + const double var_i_b_Ca__g_b_Ca = 0.69264000000000003; // S_per_F + const double var_i_b_Na__g_b_Na = 0.90000000000000002; // S_per_F + const double var_i_f_Xf_gate__Xf_infinity = 1 / (1 + exp(15.569999999999999 + 200 * var_Membrane__Vm)); // dimensionless + const double var_i_f_Xf_gate__tau_Xf = 1.8999999999999999 / (1 + exp(1.5 + 100 * var_Membrane__Vm)); // second + const double var_i_f_Xf_gate__Xf_orig_deriv = (-var_chaste_interface__i_f_Xf_gate__Xf + var_i_f_Xf_gate__Xf_infinity) / var_i_f_Xf_gate__tau_Xf; // 1 / second + const double d_dt_chaste_interface_var_i_f_Xf_gate__Xf = 0.001 * var_i_f_Xf_gate__Xf_orig_deriv; // 1 / millisecond + const double var_i_to_q_gate__q_inf = 1 / (1 + exp(4.0769230769230766 + 76.92307692307692 * var_Membrane__Vm)); // dimensionless + const double var_i_to_q_gate__tau_q = 0.0060599999999999994 + 0.039101999999999998 / (0.065000000000000002 * exp(4.593 + 100 * var_Membrane__Vm) + 0.56999999999999995 * exp(-3.52 - 80 * var_Membrane__Vm)); // second + const double var_i_to_q_gate__q_orig_deriv = (-var_chaste_interface__i_to_q_gate__q + var_i_to_q_gate__q_inf) / var_i_to_q_gate__tau_q; // 1 / second + const double d_dt_chaste_interface_var_i_to_q_gate__q = 0.001 * var_i_to_q_gate__q_orig_deriv; // 1 / millisecond + const double var_i_to_r_gate__r_inf = 1 / (1 + exp(1.1893333333333334 - 53.333333333333336 * var_Membrane__Vm)); // dimensionless + const double var_i_to_r_gate__tau_r = 0.0027535199999999998 + 0.01440516 / (1.0369999999999999 * exp(2.7548999999999997 + 90 * var_Membrane__Vm) + 0.36899999999999999 * exp(-2.8607999999999998 - 120 * var_Membrane__Vm)); // second + const double var_i_to_r_gate__r_orig_deriv = (-var_chaste_interface__i_to_r_gate__r + var_i_to_r_gate__r_inf) / var_i_to_r_gate__tau_r; // 1 / second + const double d_dt_chaste_interface_var_i_to_r_gate__r = 0.001 * var_i_to_r_gate__r_orig_deriv; // 1 / millisecond + const double var_model_parameters__F = 96485.341499999995; // coulomb_per_mole + const double var_model_parameters__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_electric_potentials__E_Ca = 0.5 * var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 1) / var_chaste_interface__calcium_dynamics__Cai) / var_model_parameters__F; // volt + const double var_i_CaL__i_CaL = ((((var_Membrane__Vm >= -4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= 4.3086710741444596e-12 * NV_Ith_S(mParameters, 12))) || ((var_Membrane__Vm >= 4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= -4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)))) ? (-116045061550.51096 * (-4.3086710741444596e-12 * NV_Ith_S(mParameters, 12) + var_Membrane__Vm) * (-0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(9.9999999999999995e-8)) - 0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(-9.9999999999999995e-8))) / NV_Ith_S(mParameters, 12) + 0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(9.9999999999999995e-8))) : (4478658957.2358274 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(23209.012310102189 * var_Membrane__Vm / NV_Ith_S(mParameters, 12))) * var_Membrane__Vm * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / ((-1 + exp(23209.012310102189 * var_Membrane__Vm / NV_Ith_S(mParameters, 12))) * NV_Ith_S(mParameters, 12)))); // A_per_F + const double var_i_Kr_Xr1_gate__V_half = -19 - 1000 * (-2.1789087017666886 + log(pow((1 + 0.38461538461538458 * NV_Ith_S(mParameters, 1)), 4) / (pow((0.57999999999999996 + 1 * NV_Ith_S(mParameters, 1)), 4) * var_i_Kr_Xr1_gate__L0))) * var_model_parameters__R * NV_Ith_S(mParameters, 12) / (var_i_Kr_Xr1_gate__Q * var_model_parameters__F); // millivolt + const double var_i_Kr_Xr1_gate__Xr1_inf = 1 / (1 + exp(0.2040816326530612 * var_i_Kr_Xr1_gate__V_half - 204.08163265306121 * var_Membrane__Vm)); // dimensionless + const double var_i_Kr_Xr1_gate__Xr1_orig_deriv = (-var_chaste_interface__i_Kr_Xr1_gate__Xr1 + var_i_Kr_Xr1_gate__Xr1_inf) / var_i_Kr_Xr1_gate__tau_Xr1; // 1 / second + const double d_dt_chaste_interface_var_i_Kr_Xr1_gate__Xr1 = 0.001 * var_i_Kr_Xr1_gate__Xr1_orig_deriv; // 1 / millisecond + const double var_i_b_Ca__i_b_Ca = (-var_electric_potentials__E_Ca + var_Membrane__Vm) * var_i_b_Ca__g_b_Ca; // A_per_F + const double var_model_parameters__V_SR = 583.73000000000002; // micrometre_cube + const double var_model_parameters__Vc = 8800; // micrometre_cube + const double var_calcium_dynamics__Ca_SR_orig_deriv = (-var_calcium_dynamics__i_leak - var_calcium_dynamics__i_rel + var_calcium_dynamics__i_up) * var_calcium_dynamics__Ca_SR_bufSR * var_model_parameters__Vc / var_model_parameters__V_SR; // millimolar / second + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_SR = 0.001 * var_calcium_dynamics__Ca_SR_orig_deriv; // millimolar / millisecond + const double var_electric_potentials__E_Na = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 3) / var_chaste_interface__sodium_dynamics__Nai) / var_model_parameters__F; // volt + const double var_i_Na__i_Na = pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_electric_potentials__E_Na + var_Membrane__Vm) * var_i_Na__TTX_coeff * NV_Ith_S(mParameters, 5) * var_chaste_interface__i_Na_h_gate__h * var_chaste_interface__i_Na_j_gate__j; // A_per_F + const double var_i_NaCa__i_NaCa = (pow(var_chaste_interface__sodium_dynamics__Nai, 3) * NV_Ith_S(mParameters, 1) * exp(var_Membrane__Vm * var_i_NaCa__gamma * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) - pow(NV_Ith_S(mParameters, 3), 3) * var_chaste_interface__calcium_dynamics__Cai * var_i_NaCa__alpha * exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * var_i_NaCa__kNaCa / ((1 + var_i_NaCa__Ksat * exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * (pow(var_i_NaCa__KmNai, 3) + pow(NV_Ith_S(mParameters, 3), 3)) * (var_i_NaCa__KmCa + NV_Ith_S(mParameters, 1))); // A_per_F + const double var_calcium_dynamics__Cai_orig_deriv = (-var_calcium_dynamics__i_up - 4.9999999999999994e+17 * (-2 * var_i_NaCa__i_NaCa + var_i_CaL__i_CaL + var_i_PCa__i_PCa + var_i_b_Ca__i_b_Ca) * NV_Ith_S(mParameters, 11) / (var_model_parameters__F * var_model_parameters__Vc) + var_calcium_dynamics__i_leak + var_calcium_dynamics__i_rel) * var_calcium_dynamics__Cai_bufc; // millimolar / second + const double d_dt_chaste_interface_var_calcium_dynamics__Cai = 0.001 * var_calcium_dynamics__Cai_orig_deriv; // millimolar / millisecond + const double var_i_NaK__i_NaK = var_i_NaK__PNaK * NV_Ith_S(mParameters, 2) * var_chaste_interface__sodium_dynamics__Nai / ((var_i_NaK__Km_K + NV_Ith_S(mParameters, 2)) * (var_i_NaK__Km_Na + var_chaste_interface__sodium_dynamics__Nai) * (1 + 0.035299999999999998 * exp(-var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) + 0.1245 * exp(-0.10000000000000001 * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))))); // A_per_F + const double var_i_b_Na__i_b_Na = (-var_electric_potentials__E_Na + var_Membrane__Vm) * var_i_b_Na__g_b_Na; // A_per_F + const double var_sodium_dynamics__Nai_orig_deriv = -9.9999999999999987e+17 * (3 * var_i_NaCa__i_NaCa + 3 * var_i_NaK__i_NaK + var_i_Na__i_Na + var_i_b_Na__i_b_Na) * NV_Ith_S(mParameters, 11) / (var_model_parameters__F * var_model_parameters__Vc); // millimolar / second + const double d_dt_chaste_interface_var_sodium_dynamics__Nai = 0.001 * var_sodium_dynamics__Nai_orig_deriv; // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_Membrane__Vm_converted = 0.0; + } + else + { + const double var_current_blockers__Chromanol_iKs30 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs50 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs70 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs90 = 0; // dimensionless + const double var_current_blockers__E4031_100nM = 0; // dimensionless + const double var_current_blockers__E4031_30nM = 0; // dimensionless + const double var_electric_potentials__PkNa = 0.029999999999999999; // dimensionless + const double var_i_Kr__E4031_coeff = ((var_current_blockers__E4031_30nM == 1) ? (0.77000000000000002) : ((var_current_blockers__E4031_100nM == 1) ? (0.5) : (1))); // dimensionless + const double var_i_Ks__Chromanol_coeff = ((var_current_blockers__Chromanol_iKs30 == 1) ? (0.69999999999999996) : ((var_current_blockers__Chromanol_iKs50 == 1) ? (0.5) : ((var_current_blockers__Chromanol_iKs70 == 1) ? (0.29999999999999999) : ((var_current_blockers__Chromanol_iKs90 == 1) ? (0.10000000000000001) : (1))))); // dimensionless + const double var_i_Ks__g_Ks_total = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * NV_Ith_S(mParameters, 9); // S_per_F + const double var_i_f__E_f = -0.017000000000000001; // volt + const double var_i_f__i_f = (-var_i_f__E_f + var_Membrane__Vm) * NV_Ith_S(mParameters, 6) * var_chaste_interface__i_f_Xf_gate__Xf; // A_per_F + const double var_i_K1__g_K1_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 7); // S_per_F + const double var_i_Kr__g_Kr_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 8); // S_per_F + const double var_electric_potentials__E_K = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 2) / NV_Ith_S(mParameters, 0)) / var_model_parameters__F; // volt + const double var_i_K1__alpha_K1 = 3.9100000000000001 / (1 + exp(-118.83999999999999 + 594.19999999999993 * var_Membrane__Vm - 594.19999999999993 * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__beta_K1 = (-1.5089999999999999 * exp(0.02 + 0.20000000000000001 * var_Membrane__Vm - 0.20000000000000001 * var_electric_potentials__E_K) + exp(-5.8860000000000001 + 588.60000000000002 * var_Membrane__Vm - 588.60000000000002 * var_electric_potentials__E_K)) / (1 + exp(454.69999999999999 * var_Membrane__Vm - 454.69999999999999 * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__XK1_inf = var_i_K1__alpha_K1 / (var_i_K1__alpha_K1 + var_i_K1__beta_K1); // dimensionless + const double var_i_K1__i_K1 = (-var_electric_potentials__E_K + var_Membrane__Vm) * var_i_K1__XK1_inf * var_i_K1__g_K1_total; // A_per_F + const double var_i_Kr__i_Kr = (-var_electric_potentials__E_K + var_Membrane__Vm) * var_i_Kr__E4031_coeff * var_i_Kr__g_Kr_total * var_chaste_interface__i_Kr_Xr1_gate__Xr1 * var_chaste_interface__i_Kr_Xr2_gate__Xr2; // A_per_F + const double var_i_to__i_to = (-var_electric_potentials__E_K + var_Membrane__Vm) * NV_Ith_S(mParameters, 10) * var_chaste_interface__i_to_q_gate__q * var_chaste_interface__i_to_r_gate__r; // A_per_F + const double var_electric_potentials__E_Ks = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log((var_electric_potentials__PkNa * NV_Ith_S(mParameters, 3) + NV_Ith_S(mParameters, 2)) / (var_electric_potentials__PkNa * var_chaste_interface__sodium_dynamics__Nai + NV_Ith_S(mParameters, 0))) / var_model_parameters__F; // volt + const double var_i_Ks__i_Ks = pow(var_chaste_interface__i_Ks_Xs_gate__Xs, 2) * (-var_electric_potentials__E_Ks + var_Membrane__Vm) * var_i_Ks__Chromanol_coeff * var_i_Ks__g_Ks_total; // A_per_F + const double var_stim_mode__i_stim_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_stim_mode__i_stim = var_stim_mode__i_stim_converted / HeartConfig::Instance()->GetCapacitance(); // A_per_F + const double var_Membrane__Vm_orig_deriv = -var_i_CaL__i_CaL - var_i_K1__i_K1 - var_i_Kr__i_Kr - var_i_Ks__i_Ks - var_i_Na__i_Na - var_i_NaCa__i_NaCa - var_i_NaK__i_NaK - var_i_PCa__i_PCa - var_i_b_Ca__i_b_Ca - var_i_b_Na__i_b_Na - var_i_f__i_f - var_i_to__i_to + var_stim_mode__i_stim; // volt / second + const double var_Membrane__Vm_orig_deriv_a = 0.001 * var_Membrane__Vm_orig_deriv; // volt / millisecond + d_dt_chaste_interface_var_Membrane__Vm_converted = 1000 * var_Membrane__Vm_orig_deriv_a; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_Membrane__Vm_converted; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_calcium_dynamics__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_i_Na_m_gate__m; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_i_Na_h_gate__h; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_i_Na_j_gate__j; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_i_CaL_d_gate__d; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_i_CaL_f1_gate__f1; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_i_CaL_f2_gate__f2; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_i_CaL_fCa_gate__fCa; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_i_Kr_Xr1_gate__Xr1; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_i_Kr_Xr2_gate__Xr2; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_i_Ks_Xs_gate__Xs; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_i_f_Xf_gate__Xf; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_i_to_q_gate__q; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_i_to_r_gate__r; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_sodium_dynamics__Nai; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_calcium_dynamics__Ca_SR; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_calcium_dynamics__g; + } + + N_Vector Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__Membrane__Vm_converted = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -74.3340057623841 + double var_chaste_interface__calcium_dynamics__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 1.80773974140477e-05 + double var_chaste_interface__i_Na_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.102953468725004 + double var_chaste_interface__i_Na_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.786926637881461 + double var_chaste_interface__i_Na_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.253943221774722 + double var_chaste_interface__i_CaL_d_gate__d = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 8.96088425225182e-05 + double var_chaste_interface__i_CaL_f1_gate__f1 = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.970411811263976 + double var_chaste_interface__i_CaL_f2_gate__f2 = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.999965815466749 + double var_chaste_interface__i_CaL_fCa_gate__fCa = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.998925296531804 + double var_chaste_interface__i_Kr_Xr1_gate__Xr1 = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.00778547011240132 + double var_chaste_interface__i_Kr_Xr2_gate__Xr2 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.432162576531617 + double var_chaste_interface__i_Ks_Xs_gate__Xs = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.0322944866983666 + double var_chaste_interface__i_f_Xf_gate__Xf = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.100615100568753 + double var_chaste_interface__i_to_q_gate__q = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.839295925773219 + double var_chaste_interface__i_to_r_gate__r = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00573289893326379 + double var_chaste_interface__sodium_dynamics__Nai = NV_Ith_S(rY, 15); + // Units: millimolar; Initial value: 10.9248496211574 + + // Mathematics + const double var_Membrane__Vm = 0.001 * var_chaste_interface__Membrane__Vm_converted; // volt + const double var_calcium_dynamics__Buf_C = 0.25; // millimolar + const double var_calcium_dynamics__Kbuf_C = 0.001; // millimolar + const double var_calcium_dynamics__Cai_bufc = 1 / (1 + var_calcium_dynamics__Buf_C * var_calcium_dynamics__Kbuf_C / pow((var_chaste_interface__calcium_dynamics__Cai + var_calcium_dynamics__Kbuf_C), 2)); // dimensionless + const double var_current_blockers__Chromanol_iKs30 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs50 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs70 = 0; // dimensionless + const double var_current_blockers__Chromanol_iKs90 = 0; // dimensionless + const double var_current_blockers__E4031_100nM = 0; // dimensionless + const double var_current_blockers__E4031_30nM = 0; // dimensionless + const double var_current_blockers__TTX_10uM = 0; // dimensionless + const double var_current_blockers__TTX_30uM = 0; // dimensionless + const double var_current_blockers__TTX_3uM = 0; // dimensionless + const double var_electric_potentials__PkNa = 0.029999999999999999; // dimensionless + const double var_i_Kr__E4031_coeff = ((var_current_blockers__E4031_30nM == 1) ? (0.77000000000000002) : ((var_current_blockers__E4031_100nM == 1) ? (0.5) : (1))); // dimensionless + const double var_i_Ks__Chromanol_coeff = ((var_current_blockers__Chromanol_iKs30 == 1) ? (0.69999999999999996) : ((var_current_blockers__Chromanol_iKs50 == 1) ? (0.5) : ((var_current_blockers__Chromanol_iKs70 == 1) ? (0.29999999999999999) : ((var_current_blockers__Chromanol_iKs90 == 1) ? (0.10000000000000001) : (1))))); // dimensionless + const double var_i_Ks__g_Ks_total = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * NV_Ith_S(mParameters, 9); // S_per_F + const double var_i_Na__TTX_coeff = ((var_current_blockers__TTX_3uM == 1) ? (0.17999999999999999) : ((var_current_blockers__TTX_10uM == 1) ? (0.059999999999999998) : ((var_current_blockers__TTX_30uM == 1) ? (0.02) : (1)))); // dimensionless + const double var_i_NaCa__KmCa = 1.3799999999999999; // millimolar + const double var_i_NaCa__KmNai = 87.5; // millimolar + const double var_i_NaCa__Ksat = 0.10000000000000001; // dimensionless + const double var_i_NaCa__alpha = 2.8571431999999999; // dimensionless + const double var_i_NaCa__gamma = 0.34999999999999998; // dimensionless + const double var_i_NaCa__kNaCa = 4900; // A_per_F + const double var_i_NaK__Km_K = 1; // millimolar + const double var_i_NaK__Km_Na = 40; // millimolar + const double var_i_NaK__PNaK = 1.8414239999999999; // A_per_F + const double var_i_PCa__KPCa = 0.00050000000000000001; // millimolar + const double var_i_PCa__g_PCa = 0.41249999999999998; // A_per_F + const double var_i_PCa__i_PCa = var_chaste_interface__calcium_dynamics__Cai * var_i_PCa__g_PCa / (var_chaste_interface__calcium_dynamics__Cai + var_i_PCa__KPCa); // A_per_F + const double var_i_PCa__i_PCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_PCa__i_PCa; // uA_per_cm2 + const double var_i_f__E_f = -0.017000000000000001; // volt + const double var_i_f__i_f = (-var_i_f__E_f + var_Membrane__Vm) * NV_Ith_S(mParameters, 6) * var_chaste_interface__i_f_Xf_gate__Xf; // A_per_F + const double var_i_f__i_f_converted = HeartConfig::Instance()->GetCapacitance() * var_i_f__i_f; // uA_per_cm2 + const double var_model_parameters__Cm_converted = 1000000 * NV_Ith_S(mParameters, 11); // uF + const double var_model_parameters__F = 96485.341499999995; // coulomb_per_mole + const double var_i_K1__g_K1_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 7); // S_per_F + const double var_i_Kr__g_Kr_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 2)) * NV_Ith_S(mParameters, 8); // S_per_F + const double var_model_parameters__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_electric_potentials__E_K = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 2) / NV_Ith_S(mParameters, 0)) / var_model_parameters__F; // volt + const double var_i_CaL__i_CaL = ((((var_Membrane__Vm >= -4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= 4.3086710741444596e-12 * NV_Ith_S(mParameters, 12))) || ((var_Membrane__Vm >= 4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)) && (var_Membrane__Vm <= -4.3086710741444596e-12 * NV_Ith_S(mParameters, 12)))) ? (-116045061550.51096 * (-4.3086710741444596e-12 * NV_Ith_S(mParameters, 12) + var_Membrane__Vm) * (-0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(9.9999999999999995e-8)) - 0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(-9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(-9.9999999999999995e-8))) / NV_Ith_S(mParameters, 12) + 0.019297068299999998 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(9.9999999999999995e-8)) * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / (-1 + exp(9.9999999999999995e-8))) : (4478658957.2358274 * (-0.34100000000000003 * NV_Ith_S(mParameters, 1) + var_chaste_interface__calcium_dynamics__Cai * exp(23209.012310102189 * var_Membrane__Vm / NV_Ith_S(mParameters, 12))) * var_Membrane__Vm * NV_Ith_S(mParameters, 4) * var_chaste_interface__i_CaL_d_gate__d * var_chaste_interface__i_CaL_f1_gate__f1 * var_chaste_interface__i_CaL_f2_gate__f2 * var_chaste_interface__i_CaL_fCa_gate__fCa / ((-1 + exp(23209.012310102189 * var_Membrane__Vm / NV_Ith_S(mParameters, 12))) * NV_Ith_S(mParameters, 12)))); // A_per_F + const double var_i_CaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_i_CaL__i_CaL; // uA_per_cm2 + const double var_i_K1__alpha_K1 = 3.9100000000000001 / (1 + exp(-118.83999999999999 + 594.19999999999993 * var_Membrane__Vm - 594.19999999999993 * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__beta_K1 = (-1.5089999999999999 * exp(0.02 + 0.20000000000000001 * var_Membrane__Vm - 0.20000000000000001 * var_electric_potentials__E_K) + exp(-5.8860000000000001 + 588.60000000000002 * var_Membrane__Vm - 588.60000000000002 * var_electric_potentials__E_K)) / (1 + exp(454.69999999999999 * var_Membrane__Vm - 454.69999999999999 * var_electric_potentials__E_K)); // dimensionless + const double var_i_K1__XK1_inf = var_i_K1__alpha_K1 / (var_i_K1__alpha_K1 + var_i_K1__beta_K1); // dimensionless + const double var_i_K1__i_K1 = (-var_electric_potentials__E_K + var_Membrane__Vm) * var_i_K1__XK1_inf * var_i_K1__g_K1_total; // A_per_F + const double var_i_K1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_K1__i_K1; // uA_per_cm2 + const double var_i_Kr__i_Kr = (-var_electric_potentials__E_K + var_Membrane__Vm) * var_i_Kr__E4031_coeff * var_i_Kr__g_Kr_total * var_chaste_interface__i_Kr_Xr1_gate__Xr1 * var_chaste_interface__i_Kr_Xr2_gate__Xr2; // A_per_F + const double var_i_Kr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Kr__i_Kr; // uA_per_cm2 + const double var_i_to__i_to = (-var_electric_potentials__E_K + var_Membrane__Vm) * NV_Ith_S(mParameters, 10) * var_chaste_interface__i_to_q_gate__q * var_chaste_interface__i_to_r_gate__r; // A_per_F + const double var_i_to__i_to_converted = HeartConfig::Instance()->GetCapacitance() * var_i_to__i_to; // uA_per_cm2 + const double var_electric_potentials__E_Ks = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log((var_electric_potentials__PkNa * NV_Ith_S(mParameters, 3) + NV_Ith_S(mParameters, 2)) / (var_electric_potentials__PkNa * var_chaste_interface__sodium_dynamics__Nai + NV_Ith_S(mParameters, 0))) / var_model_parameters__F; // volt + const double var_electric_potentials__E_Na = var_model_parameters__R * NV_Ith_S(mParameters, 12) * log(NV_Ith_S(mParameters, 3) / var_chaste_interface__sodium_dynamics__Nai) / var_model_parameters__F; // volt + const double var_i_Ks__i_Ks = pow(var_chaste_interface__i_Ks_Xs_gate__Xs, 2) * (-var_electric_potentials__E_Ks + var_Membrane__Vm) * var_i_Ks__Chromanol_coeff * var_i_Ks__g_Ks_total; // A_per_F + const double var_i_Ks__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_electric_potentials__E_Na + var_Membrane__Vm) * var_i_Na__TTX_coeff * NV_Ith_S(mParameters, 5) * var_chaste_interface__i_Na_h_gate__h * var_chaste_interface__i_Na_j_gate__j; // A_per_F + const double var_i_Na__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = (pow(var_chaste_interface__sodium_dynamics__Nai, 3) * NV_Ith_S(mParameters, 1) * exp(var_Membrane__Vm * var_i_NaCa__gamma * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) - pow(NV_Ith_S(mParameters, 3), 3) * var_chaste_interface__calcium_dynamics__Cai * var_i_NaCa__alpha * exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * var_i_NaCa__kNaCa / ((1 + var_i_NaCa__Ksat * exp((-1 + var_i_NaCa__gamma) * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12)))) * (pow(var_i_NaCa__KmNai, 3) + pow(NV_Ith_S(mParameters, 3), 3)) * (var_i_NaCa__KmCa + NV_Ith_S(mParameters, 1))); // A_per_F + const double var_i_NaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaCa__i_NaCa; // uA_per_cm2 + const double var_i_NaK__i_NaK = var_i_NaK__PNaK * NV_Ith_S(mParameters, 2) * var_chaste_interface__sodium_dynamics__Nai / ((var_i_NaK__Km_K + NV_Ith_S(mParameters, 2)) * (var_i_NaK__Km_Na + var_chaste_interface__sodium_dynamics__Nai) * (1 + 0.035299999999999998 * exp(-var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))) + 0.1245 * exp(-0.10000000000000001 * var_Membrane__Vm * var_model_parameters__F / (var_model_parameters__R * NV_Ith_S(mParameters, 12))))); // A_per_F + const double var_i_NaK__i_NaK_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaK__i_NaK; // uA_per_cm2 + const double var_stim_mode__i_stim_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(18, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(18); +#endif + NV_Ith_S(dqs, 0) = var_calcium_dynamics__Cai_bufc; + NV_Ith_S(dqs, 1) = var_i_CaL__i_CaL_converted; + NV_Ith_S(dqs, 2) = var_i_PCa__i_PCa_converted; + NV_Ith_S(dqs, 3) = var_model_parameters__Cm_converted; + NV_Ith_S(dqs, 4) = var_i_Na__i_Na_converted; + NV_Ith_S(dqs, 5) = var_i_f__i_f_converted; + NV_Ith_S(dqs, 6) = var_i_K1__i_K1_converted; + NV_Ith_S(dqs, 7) = var_i_K1__g_K1_total; + NV_Ith_S(dqs, 8) = var_i_Kr__i_Kr_converted; + NV_Ith_S(dqs, 9) = var_i_Kr__g_Kr_total; + NV_Ith_S(dqs, 10) = var_i_Ks__i_Ks_converted; + NV_Ith_S(dqs, 11) = var_i_Ks__g_Ks_total; + NV_Ith_S(dqs, 12) = var_i_NaCa__i_NaCa_converted; + NV_Ith_S(dqs, 13) = var_i_NaK__i_NaK_converted; + NV_Ith_S(dqs, 14) = var_stim_mode__i_stim_converted; + NV_Ith_S(dqs, 15) = var_i_to__i_to_converted; + NV_Ith_S(dqs, 16) = var_chaste_interface__Membrane__Vm_converted; + NV_Ith_S(dqs, 17) = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "paci_hyttinen_aaltosetala_severi_ventricularVersion"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-74.3340057623841); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.80773974140477e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.102953468725004); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.786926637881461); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.253943221774722); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.96088425225182e-05); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.970411811263976); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999965815466749); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998925296531804); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("i_Kr_Xr1_gate__Xr1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00778547011240132); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("i_Kr_Xr2_gate__Xr2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.432162576531617); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("i_Ks_Xs_gate__Xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0322944866983666); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("membrane_hyperpolarisation_activated_funny_current_single_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.100615100568753); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("i_to_q_gate__q"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.839295925773219); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("i_to_r_gate__r"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00573289893326379); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(10.9248496211574); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.2734234751931); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("calcium_dynamics__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999999981028517); + + // mParameters[0]: + this->mParameterNames.push_back("cytosolic_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[1]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("metre_cube_per_F_per_s"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("S_per_F"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component_conductance"); + this->mParameterUnits.push_back("S_per_F"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("S_per_F"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("S_per_F"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("S_per_F"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("S_per_F"); + + // mParameters[11]: + this->mParameterNames.push_back("model_parameters__Cm"); + this->mParameterUnits.push_back("farad"); + + // mParameters[12]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_flux_scaling_from_intrinsic_buffers"); + this->mDerivedQuantityUnits.push_back("dimensionless"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("S_per_F"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("S_per_F"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("S_per_F"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_sodium_potassium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_voltage"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellpaci_hyttinen_aaltosetala_severi_ventricularVersionFromCellMLCvode) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/hilgemann_noble_model_1987--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/hilgemann_noble_model_1987--sympy_1_13.cpp new file mode 100644 index 00000000..d7549d97 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/hilgemann_noble_model_1987--sympy_1_13.cpp @@ -0,0 +1,855 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: hilgemann_noble_model_1987 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NumericCvodeOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "hilgemann_noble_model_1987.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + +class Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<9; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= 2){ + EXCEPTION("Lookup table 2 at ["<= 2){ + EXCEPTION("Lookup table 3 at ["<= 2){ + EXCEPTION("Lookup table 4 at ["<= 2){ + EXCEPTION("Lookup table 5 at ["<= 2){ + EXCEPTION("Lookup table 7 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[9]; + + // Lookup tables + double (*_lookup_table_0)[9]; + int _lookup_table_0_num_misshit_piecewise[9] = {0}; + +}; + +std::shared_ptr Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables::mpInstance; + + + boost::shared_ptr Cellhilgemann_noble_model_1987FromCellMLCvodeOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -0.20000000000000001 * HeartConfig::Instance()->GetCapacitance() / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = 2; // millisecond + const double var_chaste_interface__membrane__stim_period_converted = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start_converted = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration_converted, + var_chaste_interface__membrane__stim_period_converted, + var_chaste_interface__membrane__stim_start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Cellhilgemann_noble_model_1987FromCellMLCvodeOpt::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Cellhilgemann_noble_model_1987FromCellMLCvodeOpt::Cellhilgemann_noble_model_1987FromCellMLCvodeOpt(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 15, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + NV_Ith_S(this->mParameters, 0) = 0; // (var_calcium_release__K_leak_rate) [per_second] + NV_Ith_S(this->mParameters, 1) = 250; // (var_calcium_release__K_m_rel) [per_second] + NV_Ith_S(this->mParameters, 2) = 0.00050000000000000001; // (var_calcium_release__K_m_Ca) [millimolar] + NV_Ith_S(this->mParameters, 3) = 1; // (var_sarcoplasmic_reticulum_calcium_pump__uptake_factor) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 1; // (var_intracellular_sodium_concentration__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 5) = 4; // (var_extracellular_potassium_concentration__K_c) [millimolar] + NV_Ith_S(this->mParameters, 6) = 140; // (var_extracellular_sodium_concentration__Na_o) [millimolar] + NV_Ith_S(this->mParameters, 7) = 5; // (var_second_inward_calcium_current__P_si) [nanoA_per_millimolar] + NV_Ith_S(this->mParameters, 8) = 0.0060000000000000001; // (var_membrane__C_m) [microF] + NV_Ith_S(this->mParameters, 9) = 50; // (var_fast_sodium_current__g_Na) [microS] + NV_Ith_S(this->mParameters, 10) = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 11) = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + NV_Ith_S(this->mParameters, 12) = 1.7; // (var_time_independent_potassium_current__g_K1) [microS] + NV_Ith_S(this->mParameters, 13) = 0.01; // (var_Na_Ca_exchanger__k_NaCa) [nanoA] + } + + Cellhilgemann_noble_model_1987FromCellMLCvodeOpt::~Cellhilgemann_noble_model_1987FromCellMLCvodeOpt() + { + } + + AbstractLookupTableCollection* Cellhilgemann_noble_model_1987FromCellMLCvodeOpt::GetLookupTableCollection() + { + return Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables::Instance(); + } + + void Cellhilgemann_noble_model_1987FromCellMLCvodeOpt::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 15; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellhilgemann_noble_model_1987FromCellMLCvodeOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -88.0 + double var_chaste_interface__intracellular_calcium_concentration__Ca_i = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 1e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.076 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.015 + double var_chaste_interface__second_inward_calcium_current_d_gate__d = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0011 + double var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.785 + double var_chaste_interface__intracellular_sodium_concentration__Na_i = NV_Ith_S(rY, 8); + // Units: millimolar; Initial value: 6.5 + double var_chaste_interface__extracellular_calcium_concentration__Ca_o = NV_Ith_S(rY, 9); + // Units: millimolar; Initial value: 2.0 + double var_chaste_interface__intracellular_potassium_concentration__K_i = NV_Ith_S(rY, 10); + // Units: millimolar; Initial value: 140.0 + + // Lookup table indexing + const bool _oob_0 = Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_Na_Ca_exchanger__i_NaCa_converted = 0.001 * (pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, 3) * var_chaste_interface__extracellular_calcium_concentration__Ca_o * _lt_0_row[0] - pow(NV_Ith_S(mParameters, 6), 3) * var_chaste_interface__intracellular_calcium_concentration__Ca_i * _lt_0_row[1]) * HeartConfig::Instance()->GetCapacitance() * NV_Ith_S(mParameters, 13) / ((1 + 144.92753623188406 * var_chaste_interface__intracellular_calcium_concentration__Ca_i) * (1 + 0.0001 * pow(NV_Ith_S(mParameters, 6), 3) * var_chaste_interface__intracellular_calcium_concentration__Ca_i + 0.0001 * pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, 3) * var_chaste_interface__extracellular_calcium_concentration__Ca_o) * NV_Ith_S(mParameters, 8)); // uA_per_cm2 + const double var_calcium_background_current__i_b_Ca = 0.0050000000000000001 * var_chaste_interface__membrane__V - 0.066784401649239128 * log(var_chaste_interface__extracellular_calcium_concentration__Ca_o / var_chaste_interface__intracellular_calcium_concentration__Ca_i); // nanoA + const double var_fast_sodium_current__i_Na_converted = 0.001 * pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-26.713760659695652 * log((1 * NV_Ith_S(mParameters, 6) + 0.12 * NV_Ith_S(mParameters, 5)) / (1 * var_chaste_interface__intracellular_sodium_concentration__Na_i + 0.12 * var_chaste_interface__intracellular_potassium_concentration__K_i)) + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * NV_Ith_S(mParameters, 9) * var_chaste_interface__fast_sodium_current_h_gate__h / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_second_inward_calcium_current__i_si_converted = 0.001 * ((((var_chaste_interface__membrane__V >= 49.999997328623934) && (var_chaste_interface__membrane__V <= 50.000002671376066)) ? (187169.45411399176 * (-49.999997328623934 + var_chaste_interface__membrane__V) * (9.9999999999858744e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999999858739e-8)) + 9.9999999999858744e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(-9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(-9.9999999999858739e-8))) - 9.9999999999858744e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999999858739e-8))) : (0.00037433890822745472 * _lt_0_row[3] * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * _lt_0_row[2]) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d)) + (((var_chaste_interface__membrane__V >= 49.999997328623934) && (var_chaste_interface__membrane__V <= 50.000002671376066)) ? (187169.45411399176 * (-49.999997328623934 + var_chaste_interface__membrane__V) * (1.999999999997175e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 5) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999999858739e-8)) + 1.999999999997175e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 5) * exp(-9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(-9.9999999999858739e-8))) - 1.999999999997175e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 5) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999999858739e-8))) : (7.4867781645490941e-5 * _lt_0_row[3] * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 5) * _lt_0_row[2]) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d)) + (((var_chaste_interface__membrane__V >= 49.999998664311967) && (var_chaste_interface__membrane__V <= 50.000001335688033)) ? (374338.90823576227 * (-49.999998664311967 + var_chaste_interface__membrane__V) * (1.9999999999556149e-7 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(3.7433890822745473) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * exp(9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999997780743e-8)) + 1.9999999999556149e-7 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(3.7433890822745473) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * exp(-9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(-9.9999999997780743e-8))) - 1.9999999999556149e-7 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(3.7433890822745473) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * exp(9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999997780743e-8))) : (0.14973556329098189 * _lt_0_row[5] * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(3.7433890822745473) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * _lt_0_row[4]) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d))) * HeartConfig::Instance()->GetCapacitance() / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_sodium_background_current__i_b_Na = 0.012 * var_chaste_interface__membrane__V - 0.32056512791634778 * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__intracellular_sodium_concentration__Na_i); // nanoA + const double var_sodium_potassium_pump__i_NaK = 14 * NV_Ith_S(mParameters, 5) * var_chaste_interface__intracellular_sodium_concentration__Na_i / ((1 + NV_Ith_S(mParameters, 5)) * (40 + var_chaste_interface__intracellular_sodium_concentration__Na_i)); // nanoA + const double var_time_independent_potassium_current__E_K = 26.713760659695652 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__intracellular_potassium_concentration__K_i); // millivolt + const double var_potassium_background_current__i_b_K = 0.17000000000000001 * var_chaste_interface__membrane__V - 0.17000000000000001 * var_time_independent_potassium_current__E_K; // nanoA + const double var_time_independent_potassium_current__i_K1_converted = 0.001 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * NV_Ith_S(mParameters, 5) * NV_Ith_S(mParameters, 12) / ((1 + exp(-0.74867781645490938 + 0.074867781645490947 * var_chaste_interface__membrane__V - 0.074867781645490947 * var_time_independent_potassium_current__E_K)) * (10 + NV_Ith_S(mParameters, 5)) * NV_Ith_S(mParameters, 8)); // uA_per_cm2 + const double var_chaste_interface__i_ionic = ((var_Na_Ca_exchanger__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_second_inward_calcium_current__i_si_converted + var_time_independent_potassium_current__i_K1_converted) * NV_Ith_S(mParameters, 8) + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_b_Ca + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_potassium_background_current__i_b_K + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_b_Na + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK) / NV_Ith_S(mParameters, 8); // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellhilgemann_noble_model_1987FromCellMLCvodeOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -88.0 + double var_chaste_interface__intracellular_calcium_concentration__Ca_i = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 1e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.076 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.015 + double var_chaste_interface__second_inward_calcium_current_d_gate__d = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0011 + double var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.785 + double var_chaste_interface__calcium_release__ActFrac = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_release__ProdFrac = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_sodium_concentration__Na_i = NV_Ith_S(rY, 8); + // Units: millimolar; Initial value: 6.5 + double var_chaste_interface__extracellular_calcium_concentration__Ca_o = NV_Ith_S(rY, 9); + // Units: millimolar; Initial value: 2.0 + double var_chaste_interface__intracellular_potassium_concentration__K_i = NV_Ith_S(rY, 10); + // Units: millimolar; Initial value: 140.0 + double var_chaste_interface__intracellular_calcium_concentration__Ca_up = NV_Ith_S(rY, 11); + // Units: millimolar; Initial value: 0.3 + double var_chaste_interface__intracellular_calcium_concentration__Ca_rel = NV_Ith_S(rY, 12); + // Units: millimolar; Initial value: 0.3 + double var_chaste_interface__intracellular_calcium_concentration__Ca_Calmod = NV_Ith_S(rY, 13); + // Units: millimolar; Initial value: 0.0005 + double var_chaste_interface__intracellular_calcium_concentration__Ca_Trop = NV_Ith_S(rY, 14); + // Units: millimolar; Initial value: 0.0015 + + // Lookup table indexing + const bool _oob_0 = Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_calcium_release__RegBindSite = pow(var_chaste_interface__intracellular_calcium_concentration__Ca_i, 2) / pow((NV_Ith_S(mParameters, 2) + var_chaste_interface__intracellular_calcium_concentration__Ca_i), 2); // dimensionless + const double var_calcium_release__InactRate = 60 + 500 * var_calcium_release__RegBindSite; // per_second + const double d_dt_chaste_interface_var_calcium_release__ProdFrac = -0.00059999999999999995 * var_chaste_interface__calcium_release__ProdFrac + 0.001 * var_chaste_interface__calcium_release__ActFrac * var_calcium_release__InactRate; // 1 / millisecond + const double var_calcium_release__i_rel = (pow(var_chaste_interface__calcium_release__ActFrac, 2) * NV_Ith_S(mParameters, 1) / pow((0.25 + var_chaste_interface__calcium_release__ActFrac), 2) + NV_Ith_S(mParameters, 0)) * var_chaste_interface__intracellular_calcium_concentration__Ca_rel; // millimolar_per_second + const double var_calcium_translocation__i_trans = 50 * var_chaste_interface__intracellular_calcium_concentration__Ca_up - 50 * var_chaste_interface__intracellular_calcium_concentration__Ca_rel; // millimolar_per_second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_rel = 9.9999999999999991e-5 * var_calcium_translocation__i_trans - 0.001 * var_calcium_release__i_rel; // millimolar / millisecond + const double var_intracellular_calcium_concentration__Ca_Calmod_orig_deriv = -50 * var_chaste_interface__intracellular_calcium_concentration__Ca_Calmod + 100000 * (0.02 - var_chaste_interface__intracellular_calcium_concentration__Ca_Calmod) * var_chaste_interface__intracellular_calcium_concentration__Ca_i; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_Calmod = 0.001 * var_intracellular_calcium_concentration__Ca_Calmod_orig_deriv; // millimolar / millisecond + const double var_intracellular_calcium_concentration__Ca_Trop_orig_deriv = -200 * var_chaste_interface__intracellular_calcium_concentration__Ca_Trop + 100000 * (0.14999999999999999 - var_chaste_interface__intracellular_calcium_concentration__Ca_Trop) * var_chaste_interface__intracellular_calcium_concentration__Ca_i; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_Trop = 0.001 * var_intracellular_calcium_concentration__Ca_Trop_orig_deriv; // millimolar / millisecond + const double var_Na_Ca_exchanger__i_NaCa = (pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, 3) * var_chaste_interface__extracellular_calcium_concentration__Ca_o * _lt_0_row[0] - pow(NV_Ith_S(mParameters, 6), 3) * var_chaste_interface__intracellular_calcium_concentration__Ca_i * _lt_0_row[1]) * NV_Ith_S(mParameters, 13) / ((1 + 144.92753623188406 * var_chaste_interface__intracellular_calcium_concentration__Ca_i) * (1 + 0.0001 * pow(NV_Ith_S(mParameters, 6), 3) * var_chaste_interface__intracellular_calcium_concentration__Ca_i + 0.0001 * pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, 3) * var_chaste_interface__extracellular_calcium_concentration__Ca_o)); // nanoA + const double var_calcium_background_current__i_b_Ca = 0.0050000000000000001 * var_chaste_interface__membrane__V - 0.066784401649239128 * log(var_chaste_interface__extracellular_calcium_concentration__Ca_o / var_chaste_interface__intracellular_calcium_concentration__Ca_i); // nanoA + const double d_dt_chaste_interface_var_calcium_release__ActFrac = 0.001 * (_lt_0_row[6] + 500 * var_calcium_release__RegBindSite) * (1 - var_chaste_interface__calcium_release__ActFrac - var_chaste_interface__calcium_release__ProdFrac) - 0.001 * var_chaste_interface__calcium_release__ActFrac * var_calcium_release__InactRate; // 1 / millisecond + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-26.713760659695652 * log((1 * NV_Ith_S(mParameters, 6) + 0.12 * NV_Ith_S(mParameters, 5)) / (1 * var_chaste_interface__intracellular_sodium_concentration__Na_i + 0.12 * var_chaste_interface__intracellular_potassium_concentration__K_i)) + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 9) * var_chaste_interface__fast_sodium_current_h_gate__h; // nanoA + const double var_fast_sodium_current_h_gate__alpha_h = 20 * exp(-9.375 + 0.125 * NV_Ith_S(mParameters, 11) - 0.125 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 2000 / (1 + 320 * exp(-7.5 + 0.10000000000000001 * NV_Ith_S(mParameters, 11) - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * (1 * var_fast_sodium_current_h_gate__alpha_h + 1 * var_fast_sodium_current_h_gate__beta_h) * (-var_chaste_interface__fast_sodium_current_h_gate__h + 0.01 * NV_Ith_S(mParameters, 10) + (1 - 0.01 * NV_Ith_S(mParameters, 10)) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h)); // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * _lt_0_row[7] - 8 * var_chaste_interface__fast_sodium_current_m_gate__m * _lt_0_row[8]; // 1 / millisecond + const double var_sarcoplasmic_reticulum_calcium_pump__i_up = (3 * var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.00041999999999999996 + 0.00023999999999999998 * var_chaste_interface__intracellular_calcium_concentration__Ca_up + var_chaste_interface__intracellular_calcium_concentration__Ca_i) - 5.52e-5 * var_chaste_interface__intracellular_calcium_concentration__Ca_up / (0.00041999999999999996 + 0.00023999999999999998 * var_chaste_interface__intracellular_calcium_concentration__Ca_up + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * NV_Ith_S(mParameters, 3); // millimolar_per_second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_up = 0.048999999999999995 * var_sarcoplasmic_reticulum_calcium_pump__i_up - 0.001 * var_calcium_translocation__i_trans; // millimolar / millisecond + const double var_second_inward_calcium_current_d_gate__E0_d = 19 + var_chaste_interface__membrane__V; // millivolt + const double d_dt_chaste_interface_var_second_inward_calcium_current_d_gate__d = 0.001 * (1 - var_chaste_interface__second_inward_calcium_current_d_gate__d) * ((fabs(var_second_inward_calcium_current_d_gate__E0_d) < 0.0001) ? (120) : (30 * var_second_inward_calcium_current_d_gate__E0_d / (1 - exp(-0.25 * var_second_inward_calcium_current_d_gate__E0_d)))) - 0.001 * ((fabs(var_second_inward_calcium_current_d_gate__E0_d) < 0.0001) ? (120) : (12 * var_second_inward_calcium_current_d_gate__E0_d / (-1 + exp(0.10000000000000001 * var_second_inward_calcium_current_d_gate__E0_d)))) * var_chaste_interface__second_inward_calcium_current_d_gate__d; // 1 / millisecond + const double var_second_inward_calcium_current_f_Ca_gate__E0_f = 34 + var_chaste_interface__membrane__V; // millivolt + const double var_second_inward_calcium_current__i_siCa = (((var_chaste_interface__membrane__V >= 49.999998664311967) && (var_chaste_interface__membrane__V <= 50.000001335688033)) ? (374338.90823576227 * (-49.999998664311967 + var_chaste_interface__membrane__V) * (1.9999999999556149e-7 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(3.7433890822745473) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * exp(9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999997780743e-8)) + 1.9999999999556149e-7 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(3.7433890822745473) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * exp(-9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(-9.9999999997780743e-8))) - 1.9999999999556149e-7 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(3.7433890822745473) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * exp(9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999997780743e-8))) : (0.14973556329098189 * _lt_0_row[5] * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(3.7433890822745473) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * _lt_0_row[4]) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d)); // nanoA + const double d_dt_chaste_interface_var_extracellular_calcium_concentration__Ca_o = 0.001 * (0.001 - 0.00050000000000000001 * var_chaste_interface__extracellular_calcium_concentration__Ca_o - 0.0080543192715385042 * var_Na_Ca_exchanger__i_NaCa - 0.0080543192715385042 * var_calcium_background_current__i_b_Ca - 0.0080543192715385042 * var_second_inward_calcium_current__i_siCa) * NV_Ith_S(mParameters, 4); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_i = 0.00020408163265306126 * var_calcium_release__i_rel + 1.3149909014756744e-5 * var_Na_Ca_exchanger__i_NaCa - 0.001 * var_intracellular_calcium_concentration__Ca_Calmod_orig_deriv - 0.001 * var_intracellular_calcium_concentration__Ca_Trop_orig_deriv - 0.001 * var_sarcoplasmic_reticulum_calcium_pump__i_up - 6.5749545073783721e-6 * var_calcium_background_current__i_b_Ca - 6.5749545073783721e-6 * var_second_inward_calcium_current__i_siCa; // millimolar / millisecond + const double var_second_inward_calcium_current__i_siK = (((var_chaste_interface__membrane__V >= 49.999997328623934) && (var_chaste_interface__membrane__V <= 50.000002671376066)) ? (187169.45411399176 * (-49.999997328623934 + var_chaste_interface__membrane__V) * (1.999999999997175e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 5) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999999858739e-8)) + 1.999999999997175e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 5) * exp(-9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(-9.9999999999858739e-8))) - 1.999999999997175e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 5) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999999858739e-8))) : (7.4867781645490941e-5 * _lt_0_row[3] * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 5) * _lt_0_row[2]) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d)); // nanoA + const double var_second_inward_calcium_current__i_siNa = (((var_chaste_interface__membrane__V >= 49.999997328623934) && (var_chaste_interface__membrane__V <= 50.000002671376066)) ? (187169.45411399176 * (-49.999997328623934 + var_chaste_interface__membrane__V) * (9.9999999999858744e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999999858739e-8)) + 9.9999999999858744e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(-9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(-9.9999999999858739e-8))) - 9.9999999999858744e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999999858739e-8))) : (0.00037433890822745472 * _lt_0_row[3] * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * _lt_0_row[2]) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d)); // nanoA + const double d_dt_chaste_interface_var_second_inward_calcium_current_f_Ca_gate__f_Ca = 0.012 * ((1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) + 120 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) / (1 + exp(-0.25 * var_second_inward_calcium_current_f_Ca_gate__E0_f)) - 0.001 * ((fabs(var_second_inward_calcium_current_f_Ca_gate__E0_f) < 0.0001) ? (25) : (6.25 * var_second_inward_calcium_current_f_Ca_gate__E0_f / (-1 + exp(0.25 * var_second_inward_calcium_current_f_Ca_gate__E0_f)))) * var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca; // 1 / millisecond + const double var_sodium_background_current__i_b_Na = 0.012 * var_chaste_interface__membrane__V - 0.32056512791634778 * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__intracellular_sodium_concentration__Na_i); // nanoA + const double var_sodium_potassium_pump__i_NaK = 14 * NV_Ith_S(mParameters, 5) * var_chaste_interface__intracellular_sodium_concentration__Na_i / ((1 + NV_Ith_S(mParameters, 5)) * (40 + var_chaste_interface__intracellular_sodium_concentration__Na_i)); // nanoA + const double d_dt_chaste_interface_var_intracellular_sodium_concentration__Na_i = -1.3149909014756744e-5 * (3 * var_Na_Ca_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_fast_sodium_current__i_Na + var_second_inward_calcium_current__i_siNa + var_sodium_background_current__i_b_Na) * NV_Ith_S(mParameters, 4); // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = 26.713760659695652 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__intracellular_potassium_concentration__K_i); // millivolt + const double var_potassium_background_current__i_b_K = 0.17000000000000001 * var_chaste_interface__membrane__V - 0.17000000000000001 * var_time_independent_potassium_current__E_K; // nanoA + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 5) * NV_Ith_S(mParameters, 12) / ((1 + exp(-0.74867781645490938 + 0.074867781645490947 * var_chaste_interface__membrane__V - 0.074867781645490947 * var_time_independent_potassium_current__E_K)) * (10 + NV_Ith_S(mParameters, 5))); // nanoA + const double d_dt_chaste_interface_var_intracellular_potassium_concentration__K_i = -1.3149909014756744e-5 * (-2 * var_sodium_potassium_pump__i_NaK + var_potassium_background_current__i_b_K + var_second_inward_calcium_current__i_siK + var_time_independent_potassium_current__i_K1) * NV_Ith_S(mParameters, 4); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + d_dt_chaste_interface_var_membrane__V = 0.001 * (-var_Na_Ca_exchanger__i_NaCa - var_calcium_background_current__i_b_Ca - var_fast_sodium_current__i_Na - var_potassium_background_current__i_b_K - var_second_inward_calcium_current__i_siCa - var_second_inward_calcium_current__i_siK - var_second_inward_calcium_current__i_siNa - var_sodium_background_current__i_b_Na - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - 1000 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) * NV_Ith_S(mParameters, 8) / HeartConfig::Instance()->GetCapacitance()) / NV_Ith_S(mParameters, 8); // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_i; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_second_inward_calcium_current_d_gate__d; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_second_inward_calcium_current_f_Ca_gate__f_Ca; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_calcium_release__ActFrac; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_calcium_release__ProdFrac; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_intracellular_sodium_concentration__Na_i; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_extracellular_calcium_concentration__Ca_o; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_intracellular_potassium_concentration__K_i; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_up; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_rel; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_Calmod; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_Trop; + } + + N_Vector Cellhilgemann_noble_model_1987FromCellMLCvodeOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -88.0 + double var_chaste_interface__intracellular_calcium_concentration__Ca_i = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 1e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.076 + double var_chaste_interface__fast_sodium_current_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.015 + double var_chaste_interface__second_inward_calcium_current_d_gate__d = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0011 + double var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.785 + double var_chaste_interface__calcium_release__ActFrac = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_sodium_concentration__Na_i = NV_Ith_S(rY, 8); + // Units: millimolar; Initial value: 6.5 + double var_chaste_interface__extracellular_calcium_concentration__Ca_o = NV_Ith_S(rY, 9); + // Units: millimolar; Initial value: 2.0 + double var_chaste_interface__intracellular_potassium_concentration__K_i = NV_Ith_S(rY, 10); + // Units: millimolar; Initial value: 140.0 + double var_chaste_interface__intracellular_calcium_concentration__Ca_rel = NV_Ith_S(rY, 12); + // Units: millimolar; Initial value: 0.3 + + // Lookup table indexing + const bool _oob_0 = Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellhilgemann_noble_model_1987FromCellMLCvodeOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_Na_Ca_exchanger__d_NaCa = 0.0001; // dimensionless + const double var_Na_Ca_exchanger__gamma = 0.5; // dimensionless + const double var_Na_Ca_exchanger__n_NaCa = 3; // dimensionless + const double var_calcium_release__i_rel = (pow(var_chaste_interface__calcium_release__ActFrac, 2) * NV_Ith_S(mParameters, 1) / pow((0.25 + var_chaste_interface__calcium_release__ActFrac), 2) + NV_Ith_S(mParameters, 0)) * var_chaste_interface__intracellular_calcium_concentration__Ca_rel; // millimolar_per_second + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_membrane__RTONF = var_membrane__R * var_membrane__T / var_membrane__F; // millivolt + const double var_fast_sodium_current__E_mh = var_membrane__RTONF * log((1 * NV_Ith_S(mParameters, 6) + 0.12 * NV_Ith_S(mParameters, 5)) / (1 * var_chaste_interface__intracellular_sodium_concentration__Na_i + 0.12 * var_chaste_interface__intracellular_potassium_concentration__K_i)); // millivolt + const double var_Na_Ca_exchanger__i_NaCa = (pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__extracellular_calcium_concentration__Ca_o * exp((-2 + var_Na_Ca_exchanger__n_NaCa) * var_Na_Ca_exchanger__gamma * var_chaste_interface__membrane__V / var_membrane__RTONF) - pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp((-1 + var_Na_Ca_exchanger__gamma) * (-2 + var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__membrane__V / var_membrane__RTONF)) * NV_Ith_S(mParameters, 13) / ((1 + 144.92753623188406 * var_chaste_interface__intracellular_calcium_concentration__Ca_i) * (1 + (pow(NV_Ith_S(mParameters, 6), var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i + pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_Na_Ca_exchanger__n_NaCa) * var_chaste_interface__extracellular_calcium_concentration__Ca_o) * var_Na_Ca_exchanger__d_NaCa)); // nanoA + const double var_Na_Ca_exchanger__i_NaCa_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_mh + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 9) * var_chaste_interface__fast_sodium_current_h_gate__h; // nanoA + const double var_fast_sodium_current__i_Na_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_fast_sodium_current_h_gate__alpha_h = 20 * exp(-9.375 + 0.125 * NV_Ith_S(mParameters, 11) - 0.125 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 2000 / (1 + 320 * exp(-7.5 + 0.10000000000000001 * NV_Ith_S(mParameters, 11) - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_second_inward_calcium_current_f_Ca_gate__E0_f = 34 + var_chaste_interface__membrane__V; // millivolt + const double var_second_inward_calcium_current_f_Ca_gate__beta_f_Ca = 12 / (1 + exp(-0.25 * var_second_inward_calcium_current_f_Ca_gate__E0_f)); // per_second + const double var_second_inward_calcium_current_f_Ca_gate__delta_f = 0.0001; // millivolt + const double var_second_inward_calcium_current_f_Ca_gate__alpha_f_Ca = ((var_second_inward_calcium_current_f_Ca_gate__delta_f > fabs(var_second_inward_calcium_current_f_Ca_gate__E0_f)) ? (25) : (6.25 * var_second_inward_calcium_current_f_Ca_gate__E0_f / (-1 + exp(0.25 * var_second_inward_calcium_current_f_Ca_gate__E0_f)))); // per_second + const double var_second_inward_calcium_current__i_siCa = (((var_chaste_interface__membrane__V >= 49.999998664311967) && (var_chaste_interface__membrane__V <= 50.000001335688033)) ? (374338.90823576227 * (-49.999998664311967 + var_chaste_interface__membrane__V) * (1.9999999999556149e-7 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(3.7433890822745473) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * exp(9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999997780743e-8)) + 1.9999999999556149e-7 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(3.7433890822745473) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * exp(-9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(-9.9999999997780743e-8))) - 1.9999999999556149e-7 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(3.7433890822745473) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * exp(9.9999999997780743e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999997780743e-8))) : (0.14973556329098189 * _lt_0_row[5] * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(3.7433890822745473) - var_chaste_interface__extracellular_calcium_concentration__Ca_o * _lt_0_row[4]) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d)); // nanoA + const double var_second_inward_calcium_current__i_siK = (((var_chaste_interface__membrane__V >= 49.999997328623934) && (var_chaste_interface__membrane__V <= 50.000002671376066)) ? (187169.45411399176 * (-49.999997328623934 + var_chaste_interface__membrane__V) * (1.999999999997175e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 5) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999999858739e-8)) + 1.999999999997175e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 5) * exp(-9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(-9.9999999999858739e-8))) - 1.999999999997175e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 5) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999999858739e-8))) : (7.4867781645490941e-5 * _lt_0_row[3] * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 5) * _lt_0_row[2]) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d)); // nanoA + const double var_second_inward_calcium_current__i_siNa = (((var_chaste_interface__membrane__V >= 49.999997328623934) && (var_chaste_interface__membrane__V <= 50.000002671376066)) ? (187169.45411399176 * (-49.999997328623934 + var_chaste_interface__membrane__V) * (9.9999999999858744e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999999858739e-8)) + 9.9999999999858744e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(-9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(-9.9999999999858739e-8))) - 9.9999999999858744e-10 * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * exp(9.9999999999858739e-8)) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d / (1 - exp(9.9999999999858739e-8))) : (0.00037433890822745472 * _lt_0_row[3] * (1 - var_chaste_interface__second_inward_calcium_current_f_Ca_gate__f_Ca) * (1 - var_chaste_interface__intracellular_calcium_concentration__Ca_i / (0.001 + var_chaste_interface__intracellular_calcium_concentration__Ca_i)) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(1.8716945411372736) - NV_Ith_S(mParameters, 6) * _lt_0_row[2]) * NV_Ith_S(mParameters, 7) * var_chaste_interface__second_inward_calcium_current_d_gate__d)); // nanoA + const double var_second_inward_calcium_current__i_si = var_second_inward_calcium_current__i_siCa + var_second_inward_calcium_current__i_siK + var_second_inward_calcium_current__i_siNa; // nanoA + const double var_second_inward_calcium_current__i_si_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_second_inward_calcium_current__i_si / NV_Ith_S(mParameters, 8); // uA_per_cm2 + const double var_second_inward_calcium_current_f_Ca_gate__tau_f_Ca = 1 / (var_second_inward_calcium_current_f_Ca_gate__alpha_f_Ca + var_second_inward_calcium_current_f_Ca_gate__beta_f_Ca); // second + const double var_time_independent_potassium_current__E_K = var_membrane__RTONF * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__intracellular_potassium_concentration__K_i); // millivolt + const double var_time_independent_potassium_current__K_m_K1 = 10; // millimolar + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 5) * NV_Ith_S(mParameters, 12) / ((1 + exp(2 * (-10 - var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) / var_membrane__RTONF)) * (NV_Ith_S(mParameters, 5) + var_time_independent_potassium_current__K_m_K1)); // nanoA + const double var_time_independent_potassium_current__i_K1_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / NV_Ith_S(mParameters, 8); // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(9, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(9); +#endif + NV_Ith_S(dqs, 0) = var_calcium_release__i_rel; + NV_Ith_S(dqs, 1) = var_second_inward_calcium_current__i_si_converted; + NV_Ith_S(dqs, 2) = var_second_inward_calcium_current_f_Ca_gate__tau_f_Ca; + NV_Ith_S(dqs, 3) = var_fast_sodium_current__i_Na_converted; + NV_Ith_S(dqs, 4) = var_fast_sodium_current_h_gate__tau_h; + NV_Ith_S(dqs, 5) = var_time_independent_potassium_current__i_K1_converted; + NV_Ith_S(dqs, 6) = var_Na_Ca_exchanger__i_NaCa_converted; + NV_Ith_S(dqs, 7) = var_membrane__i_Stim_converted; + NV_Ith_S(dqs, 8) = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "hilgemann_noble_model_1987"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-88.0); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.076); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.015); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0011); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.785); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("calcium_release__ActFrac"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("calcium_release__ProdFrac"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(6.5); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("extracellular_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.0); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(140.0); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("intracellular_calcium_concentration__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.3); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.3); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("intracellular_calcium_concentration__Ca_Calmod"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0005); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("intracellular_calcium_concentration__Ca_Trop"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0015); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_second"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_second"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_release_kmcacyt"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoA_per_millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("nanoA"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_second"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellhilgemann_noble_model_1987FromCellMLCvodeOpt) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_11.cpp similarity index 89% rename from chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_11.cpp index ccddd802..a5d0d009 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_11.cpp @@ -148,7 +148,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt_Lookup for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return (((var_chaste_interface__membrane__V >= -65.000000999999997) && (var_chaste_interface__membrane__V <= -64.999999000000003)) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (0.099999999999999992 * (-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + return (((6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-0.099999999999999992 * (6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -203,7 +203,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt_Lookup for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return (((var_chaste_interface__membrane__V >= -50.000000999999997) && (var_chaste_interface__membrane__V <= -49.999999000000003)) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : ((-5 - 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + return (((5 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (5 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (-(5 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -440,39 +440,38 @@ const double var_x0 = 1 / NV_Ith_S(mParameters, 0); const double var_x1 = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * NV_Ith_S(mParameters, 1); const double var_x2 = var_x0 * (-40 + var_chaste_interface__membrane__V); const double var_x3 = _lt_0_row[5]; - const double var_x4 = 0.22222222222222221 * var_x3 * var_chaste_interface__sodium_channel_m_gate__m; - const double var_x5 = (var_chaste_interface__membrane__V >= -50.000000999999997) && (var_chaste_interface__membrane__V <= -49.999999000000003); - const double var_x6 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x7 = -5 + var_x6; - const double var_x8 = exp(var_x7); - const double var_x9 = -1 + var_x8; - const double var_x10 = 1 / var_x9; - const double var_x11 = 0.10000000000000001 - 0.10000000000000001 * var_chaste_interface__sodium_channel_m_gate__m; - const double var_x12 = -4 * var_x3; - const double var_x13 = _lt_0_row[2]; - const double var_x14 = exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x15 = 1 + var_x14; - const double var_x16 = _lt_0_row[1]; - const double var_x17 = -0.0015625000000000001 * var_x16 * var_chaste_interface__potassium_channel_n_gate__n; - const double var_x18 = (var_chaste_interface__membrane__V >= -65.000000999999997) && (var_chaste_interface__membrane__V <= -64.999999000000003); - const double var_x19 = -6.5 + var_x6; - const double var_x20 = exp(var_x19); - const double var_x21 = -1 + var_x20; - const double var_x22 = 1 / var_x21; - const double var_x23 = 0.01 - 0.01 * var_chaste_interface__potassium_channel_n_gate__n; - const double var_x24 = -0.125 * var_x16; + const double var_x4 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x5 = 5 + var_x4; + const double var_x6 = (var_x5 >= -9.9999999999999995e-8) && (var_x5 <= 9.9999999999999995e-8); + const double var_x7 = exp(-var_x5); + const double var_x8 = -1 + var_x7; + const double var_x9 = 1 / var_x8; + const double var_x10 = 0.10000000000000001 - 0.10000000000000001 * var_chaste_interface__sodium_channel_m_gate__m; + const double var_x11 = 4 * var_x3; + const double var_x12 = _lt_0_row[2]; + const double var_x13 = exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x14 = 1 + var_x13; + const double var_x15 = _lt_0_row[1]; + const double var_x16 = 0.0015625000000000001 * var_x15 * var_chaste_interface__potassium_channel_n_gate__n; + const double var_x17 = 6.5 + var_x4; + const double var_x18 = (var_x17 >= -9.9999999999999995e-8) && (var_x17 <= 9.9999999999999995e-8); + const double var_x19 = exp(-var_x17); + const double var_x20 = -1 + var_x19; + const double var_x21 = 1 / var_x20; + const double var_x22 = 0.01 - 0.01 * var_chaste_interface__potassium_channel_n_gate__n; + const double var_x23 = 0.125 * var_x15; // Matrix entries IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (var_x0 * (-NV_Ith_S(mParameters, 2) - var_x1 * var_chaste_interface__sodium_channel_h_gate__h - pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * NV_Ith_S(mParameters, 3))); - IJth(rJacobian, 1, 0) = ((var_x5) ? (0.050000000000000003 + var_x4 - 0.050000000000000003 * var_chaste_interface__sodium_channel_m_gate__m) : (var_x4 - var_x10 * var_x11 + var_x11 * var_x7 * var_x8 / pow(var_x9, 2))); - IJth(rJacobian, 2, 0) = -0.050000000000000003 * var_x13 * (0.070000000000000007 - 0.070000000000000007 * var_chaste_interface__sodium_channel_h_gate__h) - 0.10000000000000001 * var_x14 * var_chaste_interface__sodium_channel_h_gate__h / pow(var_x15, 2); - IJth(rJacobian, 3, 0) = ((var_x18) ? (0.0050000000000000001 + var_x17 - 0.0050000000000000001 * var_chaste_interface__potassium_channel_n_gate__n) : (var_x17 - var_x22 * var_x23 + var_x19 * var_x20 * var_x23 / pow(var_x21, 2))); + IJth(rJacobian, 1, 0) = ((var_x6) ? (0.050000000000000003 - 0.050000000000000003 * var_chaste_interface__sodium_channel_m_gate__m + 0.22222222222222221 * var_x3 * var_chaste_interface__sodium_channel_m_gate__m) : (-var_x10 * var_x9 + 0.22222222222222221 * var_x3 * var_chaste_interface__sodium_channel_m_gate__m - var_x10 * var_x5 * var_x7 / pow(var_x8, 2))); + IJth(rJacobian, 2, 0) = -0.0035000000000000005 * var_x12 * (1 - var_chaste_interface__sodium_channel_h_gate__h) - 0.10000000000000001 * var_x13 * var_chaste_interface__sodium_channel_h_gate__h / pow(var_x14, 2); + IJth(rJacobian, 3, 0) = ((var_x18) ? (0.0050000000000000001 - var_x16 - 0.0050000000000000001 * var_chaste_interface__potassium_channel_n_gate__n) : (-var_x16 - var_x21 * var_x22 - var_x17 * var_x19 * var_x22 / pow(var_x20, 2))); IJth(rJacobian, 0, 1) = mSetVoltageDerivativeToZero ? 0.0 : (-3 * var_x2 * pow(var_chaste_interface__sodium_channel_m_gate__m, 2) * NV_Ith_S(mParameters, 1) * var_chaste_interface__sodium_channel_h_gate__h); - IJth(rJacobian, 1, 1) = ((var_x5) ? (-3.5 + var_x12 - 0.050000000000000003 * var_chaste_interface__membrane__V) : (var_x12 - var_x10 * var_x7)); + IJth(rJacobian, 1, 1) = ((var_x6) ? (-3.5 - var_x11 - 0.050000000000000003 * var_chaste_interface__membrane__V) : (-var_x11 + var_x5 * var_x9)); IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x1 * var_x2); - IJth(rJacobian, 2, 2) = -1 / var_x15 - 0.070000000000000007 * var_x13; + IJth(rJacobian, 2, 2) = -1 / var_x14 - 0.070000000000000007 * var_x12; IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-4 * var_x0 * pow(var_chaste_interface__potassium_channel_n_gate__n, 3) * (87 + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3)); - IJth(rJacobian, 3, 3) = ((var_x18) ? (-0.42499999999999999 + var_x24 - 0.0050000000000000001 * var_chaste_interface__membrane__V) : (var_x24 - 0.099999999999999992 * var_x19 * var_x22)); + IJth(rJacobian, 3, 3) = ((var_x18) ? (-0.42499999999999999 - var_x23 - 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-var_x23 + 0.099999999999999992 * var_x17 * var_x21)); } N_Vector Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp new file mode 100644 index 00000000..97fcaffe --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp @@ -0,0 +1,584 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: hodgkin_huxley_squid_axon_model_1952_modified +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: AnalyticCvodeOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "hodgkin_huxley_squid_axon_model_1952_modified.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + +class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<6; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= -9.9999999999999995e-8) && (6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-0.099999999999999992 * (6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[0] < 2){ + double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[0] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[0] >= 2){ + EXCEPTION("Lookup table 0 at ["<= -9.9999999999999995e-8) && (5 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (-1 * (5 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[4] < 2){ + double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[4] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[4] >= 2){ + EXCEPTION("Lookup table 4 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[6]; + + // Lookup tables + double (*_lookup_table_0)[6]; + int _lookup_table_0_num_misshit_piecewise[6] = {0}; + +}; + +std::shared_ptr Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt_LookupTables::mpInstance; + + + boost::shared_ptr Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude = -20; // microA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 0.5; // millisecond + const double var_chaste_interface__membrane__stim_period = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start = 10; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt::Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 4, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + mUseAnalyticJacobian = true; + mHasAnalyticJacobian = true; + + NV_Ith_S(this->mParameters, 0) = 1; // (var_membrane__Cm) [microF_per_cm2] + NV_Ith_S(this->mParameters, 1) = 120; // (var_sodium_channel__g_Na) [milliS_per_cm2] + NV_Ith_S(this->mParameters, 2) = 0.29999999999999999; // (var_leakage_current__g_L) [milliS_per_cm2] + NV_Ith_S(this->mParameters, 3) = 36; // (var_potassium_channel__g_K) [milliS_per_cm2] + } + + Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt::~Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt() + { + } + + AbstractLookupTableCollection* Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt::GetLookupTableCollection() + { + return Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt_LookupTables::Instance(); + } + + void Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 4; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -75.0 + double var_chaste_interface__sodium_channel_m_gate__m = NV_Ith_S(rY, 1); + // Units: dimensionless; Initial value: 0.05 + double var_chaste_interface__sodium_channel_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.6 + double var_chaste_interface__potassium_channel_n_gate__n = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.325 + + + const double var_leakage_current__i_L = (64.387 + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 2); // microA_per_cm2 + const double var_potassium_channel__i_K = pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (87 + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); // microA_per_cm2 + const double var_sodium_channel__i_Na = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * (-40 + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 1) * var_chaste_interface__sodium_channel_h_gate__h; // microA_per_cm2 + const double var_chaste_interface__i_ionic = var_leakage_current__i_L + var_potassium_channel__i_K + var_sodium_channel__i_Na; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -75.0 + double var_chaste_interface__sodium_channel_m_gate__m = NV_Ith_S(rY, 1); + // Units: dimensionless; Initial value: 0.05 + double var_chaste_interface__sodium_channel_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.6 + double var_chaste_interface__potassium_channel_n_gate__n = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.325 + + // Lookup table indexing + const bool _oob_0 = Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double d_dt_chaste_interface_var_potassium_channel_n_gate__n = (1 - var_chaste_interface__potassium_channel_n_gate__n) * _lt_0_row[0] - 0.125 * var_chaste_interface__potassium_channel_n_gate__n * _lt_0_row[1]; // 1 / millisecond + const double d_dt_chaste_interface_var_sodium_channel_h_gate__h = 0.070000000000000007 * (1 - var_chaste_interface__sodium_channel_h_gate__h) * _lt_0_row[2] - 1 * _lt_0_row[3] * var_chaste_interface__sodium_channel_h_gate__h; // 1 / millisecond + const double d_dt_chaste_interface_var_sodium_channel_m_gate__m = (1 - var_chaste_interface__sodium_channel_m_gate__m) * _lt_0_row[4] - 4 * var_chaste_interface__sodium_channel_m_gate__m * _lt_0_row[5]; // 1 / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + d_dt_chaste_interface_var_membrane__V = (-GetIntracellularAreaStimulus(var_chaste_interface__environment__time) - (64.387 + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 2) - pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (87 + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3) - pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * (-40 + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 1) * var_chaste_interface__sodium_channel_h_gate__h) / NV_Ith_S(mParameters, 0); // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_sodium_channel_m_gate__m; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_sodium_channel_h_gate__h; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_potassium_channel_n_gate__n; + } + + void Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt::EvaluateAnalyticJacobian(double var_chaste_interface__environment__time, N_Vector rY, N_Vector rDY, CHASTE_CVODE_DENSE_MATRIX rJacobian, N_Vector rTmp1, N_Vector rTmp2, N_Vector rTmp3) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -75.0 + double var_chaste_interface__sodium_channel_m_gate__m = NV_Ith_S(rY, 1); + // Units: dimensionless; Initial value: 0.05 + double var_chaste_interface__sodium_channel_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.6 + double var_chaste_interface__potassium_channel_n_gate__n = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.325 + + // Lookup table indexing + const bool _oob_0 = Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); +const double var_x0 = 1 / NV_Ith_S(mParameters, 0); + const double var_x1 = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * NV_Ith_S(mParameters, 1); + const double var_x2 = var_x0 * (-40 + var_chaste_interface__membrane__V); + const double var_x3 = _lt_0_row[5]; + const double var_x4 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x5 = 5 + var_x4; + const double var_x6 = (var_x5 >= -9.9999999999999995e-8) && (var_x5 <= 9.9999999999999995e-8); + const double var_x7 = exp(-var_x5); + const double var_x8 = -1 + var_x7; + const double var_x9 = 1 / var_x8; + const double var_x10 = 0.10000000000000001 - 0.10000000000000001 * var_chaste_interface__sodium_channel_m_gate__m; + const double var_x11 = 4 * var_x3; + const double var_x12 = _lt_0_row[2]; + const double var_x13 = exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x14 = 1 + var_x13; + const double var_x15 = _lt_0_row[1]; + const double var_x16 = 0.0015625000000000001 * var_x15 * var_chaste_interface__potassium_channel_n_gate__n; + const double var_x17 = 6.5 + var_x4; + const double var_x18 = (var_x17 >= -9.9999999999999995e-8) && (var_x17 <= 9.9999999999999995e-8); + const double var_x19 = exp(-var_x17); + const double var_x20 = -1 + var_x19; + const double var_x21 = 1 / var_x20; + const double var_x22 = 0.01 - 0.01 * var_chaste_interface__potassium_channel_n_gate__n; + const double var_x23 = 0.125 * var_x15; + + // Matrix entries + IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (var_x0 * (-NV_Ith_S(mParameters, 2) - var_x1 * var_chaste_interface__sodium_channel_h_gate__h - pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * NV_Ith_S(mParameters, 3))); + IJth(rJacobian, 1, 0) = ((var_x6) ? (0.050000000000000003 - 0.050000000000000003 * var_chaste_interface__sodium_channel_m_gate__m + 0.22222222222222221 * var_x3 * var_chaste_interface__sodium_channel_m_gate__m) : (-var_x10 * var_x9 + 0.22222222222222221 * var_x3 * var_chaste_interface__sodium_channel_m_gate__m - var_x10 * var_x5 * var_x7 / pow(var_x8, 2))); + IJth(rJacobian, 2, 0) = -0.0035000000000000005 * var_x12 * (1 - var_chaste_interface__sodium_channel_h_gate__h) - 0.10000000000000001 * var_x13 * var_chaste_interface__sodium_channel_h_gate__h / pow(var_x14, 2); + IJth(rJacobian, 3, 0) = ((var_x18) ? (0.0050000000000000001 - var_x16 - 0.0050000000000000001 * var_chaste_interface__potassium_channel_n_gate__n) : (-var_x16 - var_x21 * var_x22 - var_x17 * var_x19 * var_x22 / pow(var_x20, 2))); + IJth(rJacobian, 0, 1) = mSetVoltageDerivativeToZero ? 0.0 : (-3 * var_x2 * pow(var_chaste_interface__sodium_channel_m_gate__m, 2) * NV_Ith_S(mParameters, 1) * var_chaste_interface__sodium_channel_h_gate__h); + IJth(rJacobian, 1, 1) = ((var_x6) ? (-3.5 - var_x11 - 0.050000000000000003 * var_chaste_interface__membrane__V) : (-var_x11 + 1 * var_x5 * var_x9)); + IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x1 * var_x2); + IJth(rJacobian, 2, 2) = -1 / var_x14 - 0.070000000000000007 * var_x12; + IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-4 * var_x0 * pow(var_chaste_interface__potassium_channel_n_gate__n, 3) * (87 + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3)); + IJth(rJacobian, 3, 3) = ((var_x18) ? (-0.42499999999999999 - var_x23 - 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-var_x23 + 0.099999999999999992 * var_x17 * var_x21)); + } + + N_Vector Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -75.0 + double var_chaste_interface__sodium_channel_m_gate__m = NV_Ith_S(rY, 1); + // Units: dimensionless; Initial value: 0.05 + double var_chaste_interface__sodium_channel_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.6 + double var_chaste_interface__potassium_channel_n_gate__n = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.325 + + + // Mathematics + const double var_membrane__E_R = -75; // millivolt + const double var_leakage_current__E_L = 10.613 + var_membrane__E_R; // millivolt + const double var_leakage_current__i_L = (-var_leakage_current__E_L + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 2); // microA_per_cm2 + const double var_membrane__i_Stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // microA_per_cm2 + const double var_potassium_channel__E_K = -12 + var_membrane__E_R; // millivolt + const double var_potassium_channel__i_K = pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (-var_potassium_channel__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); // microA_per_cm2 + const double var_sodium_channel__E_Na = 115 + var_membrane__E_R; // millivolt + const double var_sodium_channel__i_Na = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * (-var_sodium_channel__E_Na + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 1) * var_chaste_interface__sodium_channel_h_gate__h; // microA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(5, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(5); +#endif + NV_Ith_S(dqs, 0) = var_sodium_channel__i_Na; + NV_Ith_S(dqs, 1) = var_leakage_current__i_L; + NV_Ith_S(dqs, 2) = var_potassium_channel__i_K; + NV_Ith_S(dqs, 3) = var_membrane__i_Stim; + NV_Ith_S(dqs, 4) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "hodgkin_huxley_squid_axon_model_1952_modified"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-75.0); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("sodium_channel_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("sodium_channel_h_gate__h"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.6); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("potassium_channel_n_gate__n"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.325); + + // mParameters[0]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[1]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[2]: + this->mParameterNames.push_back("membrane_leakage_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_leakage_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_potassium_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvodeOpt) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009--sympy_1_11.cpp similarity index 75% rename from chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009--sympy_1_11.cpp index 31f3dfb3..68a0b5f3 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009--sympy_1_11.cpp @@ -29,6 +29,8 @@ + + boost::shared_ptr Cellaslanidi_atrial_model_2009FromCellMLCvode::UseCellMLDefaultStimulus() { // Use the default stimulus specified by CellML metadata @@ -118,7 +120,7 @@ EXCEPTION(DumpState(error_message)); } } - + double Cellaslanidi_atrial_model_2009FromCellMLCvode::GetIIonic(const std::vector* pStateVariables) { // For state variable interpolation (SVI) we read in interpolated state variables, @@ -192,26 +194,26 @@ const double var_membrane__T = 308; // kelvin const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(NV_Ith_S(mParameters, 1) / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt - const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA - const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)))); // picoA + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)))); // picoA const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1) * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * NV_Ith_S(mParameters, 9) / (1 + (pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1)) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA const double var_Na_Ca_ion_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_ion_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA - const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA const double var_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 8) * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA const double var_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 - const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA const double var_inward_rectifier__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt - const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * var_chaste_interface__membrane__V * NV_Ith_S(mParameters, 5) / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA @@ -351,8 +353,8 @@ const double var_Ca_handling_by_the_SR__r_act = 240 * exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 203.80000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / pow((var_Ca_handling_by_the_SR__k_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 4); // per_second const double var_Ca_handling_by_the_SR__F1_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F3 * var_Ca_handling_by_the_SR__k_F3 - var_chaste_interface__Ca_handling_by_the_SR__F1 * var_Ca_handling_by_the_SR__r_act; // 1 / second const double var_Ca_handling_by_the_SR__F2_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F1 * var_Ca_handling_by_the_SR__r_act - var_chaste_interface__Ca_handling_by_the_SR__F2 * var_Ca_handling_by_the_SR__r_inact; // 1 / second - const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA - const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA const double var_Ca_independent_transient_outward_K_current_r_gate__alpha_r = 386.60000000000002 * exp(0.083333333333333329 * var_chaste_interface__membrane__V); // per_second const double var_Ca_independent_transient_outward_K_current_r_gate__beta_r = 8.0109999999999992 * exp(-0.1388888888888889 * var_chaste_interface__membrane__V); // per_second const double var_Ca_independent_transient_outward_K_current_r_gate__r_infinity = 1 / (1 + exp(-2.6628794603230959 - 0.17752529735487307 * var_chaste_interface__membrane__V)); // dimensionless @@ -374,7 +376,7 @@ const double d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s2_gate__s2 = 0.001 * var_Ca_independent_transient_outward_K_current_s2_gate__s2_orig_deriv; // 1 / millisecond const double d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s3_gate__s3 = 0.001 * var_Ca_independent_transient_outward_K_current_s3_gate__s3_orig_deriv; // 1 / millisecond const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)))); // picoA + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)))); // picoA const double var_L_type_Ca_channel_d_L_gate__E10 = 10 + var_chaste_interface__membrane__V; // millivolt const double var_L_type_Ca_channel_d_L_gate__alpha_d_L = (((var_chaste_interface__membrane__V >= -10.000000480800001) && (var_chaste_interface__membrane__V <= -9.9999995191999993)) ? (2.4040000000391526e-5 / (-1 + exp(1.0000000000162864e-7)) + 1039933.4442576389 * (10.000000480800001 + var_chaste_interface__membrane__V) * (-2.4040000000391526e-5 / (-1 + exp(1.0000000000162864e-7)) - 2.4039999999697637e-5 / (-1 + exp(-9.9999999998742257e-8)))) : (-50 * (10 + var_chaste_interface__membrane__V) / (-1 + exp(-2.0798668885191347 - 0.20798668885191349 * var_chaste_interface__membrane__V)))) + (((var_chaste_interface__membrane__V >= -45.000000249999999) && (var_chaste_interface__membrane__V <= -44.999999750000001)) ? (4.1799999996561256e-6 / (-1 + exp(9.9999999991773334e-8)) + 1999999.9999424887 * (45.000000249999999 + var_chaste_interface__membrane__V) * (-4.1800000005842713e-6 / (-1 + exp(-1.000000000139778e-7)) - 4.1799999996561256e-6 / (-1 + exp(9.9999999991773334e-8)))) : (-16.719999999999999 * (45 + var_chaste_interface__membrane__V) / (-1 + exp(-18 - 0.40000000000000002 * var_chaste_interface__membrane__V)))); // per_second const double var_L_type_Ca_channel_d_L_gate__beta_d_L = (((var_chaste_interface__membrane__V >= -5.0000002500000003) && (var_chaste_interface__membrane__V <= -4.9999997499999997)) ? (-1.1200000000011203e-6 / (-1 + exp(-1.0000000000010001e-7)) + 1999999.9999979998 * (5.0000002500000003 + var_chaste_interface__membrane__V) * (1.1200000000011203e-6 / (-1 + exp(1.0000000000010001e-7)) + 1.1200000000011203e-6 / (-1 + exp(-1.0000000000010001e-7)))) : (4.4800000000000004 * (5 + var_chaste_interface__membrane__V) / (-1 + exp(2 + 0.40000000000000002 * var_chaste_interface__membrane__V)))); // per_second @@ -405,7 +407,7 @@ const double var_T_type_Ca_channel_f_T_gate__tau_f_T = 1 / (var_T_type_Ca_channel_f_T_gate__alpha_f_T + var_T_type_Ca_channel_f_T_gate__beta_f_T); // second const double var_T_type_Ca_channel_f_T_gate__f_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T + var_T_type_Ca_channel_f_T_gate__f_T_infinity) / var_T_type_Ca_channel_f_T_gate__tau_f_T; // 1 / second const double d_dt_chaste_interface_var_T_type_Ca_channel_f_T_gate__f_T = 0.001 * var_T_type_Ca_channel_f_T_gate__f_T_orig_deriv; // 1 / millisecond - const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 8) * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA const double var_delayed_rectifier_K_current_pa_gate__alpha_p_a = 9 * exp(0.03941508020968823 * var_chaste_interface__membrane__V); // per_second @@ -426,14 +428,14 @@ const double var_delayed_rectifier_K_current_z_gate__z_infinity = 1 / (1 + exp(0.065217391304347824 - 0.072463768115942032 * var_chaste_interface__membrane__V)); // dimensionless const double var_delayed_rectifier_K_current_z_gate__z_orig_deriv = (-var_chaste_interface__delayed_rectifier_K_current_z_gate__z + var_delayed_rectifier_K_current_z_gate__z_infinity) / var_delayed_rectifier_K_current_z_gate__tau_z; // 1 / second const double d_dt_chaste_interface_var_delayed_rectifier_K_current_z_gate__z = 0.001 * var_delayed_rectifier_K_current_z_gate__z_orig_deriv; // 1 / millisecond - const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA const double var_intracellular_ion_concentrations__Ca_i_orig_deriv = -0.044999999999999998 * var_intracellular_Ca_buffering__dOCdt - 0.080000000000000002 * var_intracellular_Ca_buffering__dOTCdt - 0.16 * var_intracellular_Ca_buffering__dOTMgCdt + 0.5 * (-var_Ca_handling_by_the_SR__i_up - var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_background_currents__i_B_Ca - var_sarcolemmal_calcium_pump_current__i_CaP + 2 * var_Na_Ca_ion_exchanger_current__i_NaCa + var_Ca_handling_by_the_SR__i_rel) / (var_intracellular_ion_concentrations__Vol_Ca * var_membrane__F); // millimolar / second const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = 0.001 * var_intracellular_ion_concentrations__Ca_i_orig_deriv; // millimolar / millisecond const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt - const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA const double var_sodium_current_h1_gate__alpha_h = 44.899999999999999 * exp(-12.010771992818672 - 0.17953321364452424 * var_chaste_interface__membrane__V); // per_second const double var_sodium_current_h1_gate__beta_h = 1491 / (1 + 323.30000000000001 * exp(-7.333333333333333 - 0.077519379844961239 * var_chaste_interface__membrane__V)); // per_second const double var_sodium_current_h1_gate__h_infinity = var_sodium_current_h1_gate__alpha_h / (var_sodium_current_h1_gate__alpha_h + var_sodium_current_h1_gate__beta_h); // dimensionless @@ -562,30 +564,30 @@ // Units: dimensionless; Initial value: 0.288039 double var_chaste_interface__Ca_handling_by_the_SR__F2 = NV_Ith_S(rY, 27); // Units: dimensionless; Initial value: 0.002262 - const double var_x0 = 0.083333333333333329 * var_chaste_interface__membrane__V; - const double var_x1 = exp(1.9166666666666667 - var_x0); - const double var_x2 = 1 + var_x1; - const double var_x3 = 1 / var_x2; - const double var_x4 = var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L; - const double var_x5 = NV_Ith_S(mParameters, 8) * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; - const double var_x6 = var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; - const double var_x7 = exp(0.016955889611951675 * var_chaste_interface__membrane__V); - const double var_x8 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1); - const double var_x9 = var_x7 * var_x8; - const double var_x10 = exp(-0.02072386508127427 * var_chaste_interface__membrane__V); - const double var_x11 = pow(NV_Ith_S(mParameters, 2), 3); - const double var_x12 = var_x11 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x13 = var_x10 * var_x12; - const double var_x14 = 1 + 0.00029999999999999997 * var_x12 + 0.00029999999999999997 * var_x8; - const double var_x15 = NV_Ith_S(mParameters, 9) / var_x14; - const double var_x16 = var_x15 * (0.016955889611951675 * var_x9 + 0.02072386508127427 * var_x13); - const double var_x17 = pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6); - const double var_x18 = 0.00400016 + 0.0060002399999999996 * var_x17; - const double var_x19 = 0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3); - const double var_x20 = var_x19 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; - const double var_x21 = var_x18 * var_x20; - const double var_x22 = NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; - const double var_x23 = var_x22 * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x0 = NV_Ith_S(mParameters, 8) * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; + const double var_x1 = var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; + const double var_x2 = 0.083333333333333329 * var_chaste_interface__membrane__V; + const double var_x3 = exp(1.9166666666666667 - var_x2); + const double var_x4 = 1 + var_x3; + const double var_x5 = (1 / var_x4 + var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L) * NV_Ith_S(mParameters, 3); + const double var_x6 = exp(0.016955889611951675 * var_chaste_interface__membrane__V); + const double var_x7 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1); + const double var_x8 = var_x6 * var_x7; + const double var_x9 = exp(-0.02072386508127427 * var_chaste_interface__membrane__V); + const double var_x10 = pow(NV_Ith_S(mParameters, 2), 3); + const double var_x11 = var_x10 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x12 = var_x11 * var_x9; + const double var_x13 = 0.016955889611951675 * var_x8 + 0.02072386508127427 * var_x12; + const double var_x14 = 1 + 0.00029999999999999997 * var_x11 + 0.00029999999999999997 * var_x7; + const double var_x15 = 1 / var_x14; + const double var_x16 = var_x15 * NV_Ith_S(mParameters, 9); + const double var_x17 = var_x13 * var_x16; + const double var_x18 = NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; + const double var_x19 = var_x18 * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x20 = 0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6); + const double var_x21 = 0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3); + const double var_x22 = var_x20 * var_x21; + const double var_x23 = var_x22 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; const double var_x24 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3); const double var_x25 = 1 / var_chaste_interface__intracellular_ion_concentrations__K_i; const double var_x26 = log(var_x25 * var_chaste_interface__cleft_space_ion_concentrations__K_c); @@ -593,407 +595,404 @@ const double var_x28 = 1 + var_x27; const double var_x29 = 1 / var_x28; const double var_x30 = 0.58999999999999997 + var_chaste_interface__cleft_space_ion_concentrations__K_c; - const double var_x31 = NV_Ith_S(mParameters, 6) / pow(var_x30, 3); - const double var_x32 = var_x29 * var_x31; - const double var_x33 = var_x24 * var_x32; - const double var_x34 = (-90 + 1.8 * var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); - const double var_x35 = 0.083333333333333329 * var_x1 / pow(var_x2, 2); - const double var_x36 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); - const double var_x37 = 1 + var_chaste_interface__cleft_space_ion_concentrations__K_c; - const double var_x38 = 1 / var_x37; - const double var_x39 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5); - const double var_x40 = 1 / (36.4828726939094 + var_x39); - const double var_x41 = var_x39 * var_x40 * var_chaste_interface__cleft_space_ion_concentrations__K_c; - const double var_x42 = var_x36 * var_x38 * var_x41 / pow((1 + 0.66666666666666663 * var_x36), 2); - const double var_x43 = -26.53945091048535 * var_x26 + var_chaste_interface__membrane__V; - const double var_x44 = var_x27 * var_x31 * var_x43 / pow(var_x28, 2); - const double var_x45 = var_x24 * var_x44; - const double var_x46 = 1 / (-1 + exp(9.9999999999999995e-8)); - const double var_x47 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; - const double var_x48 = var_x47 * NV_Ith_S(mParameters, 2); - const double var_x49 = -log(var_x48); - const double var_x50 = exp(9.9999999999999995e-8 + var_x49); - const double var_x51 = var_x46 * (-1 + var_x50); - const double var_x52 = 0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1; - const double var_x53 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); - const double var_x54 = NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5); - const double var_x55 = var_x53 * var_x54; - const double var_x56 = var_x52 * var_x55; - const double var_x57 = 1817.803245542646 * var_x56; - const double var_x58 = 1 / (-1 + exp(-9.9999999999999995e-8)); - const double var_x59 = exp(-9.9999999999999995e-8 + var_x49); - const double var_x60 = var_x58 * (-1 + var_x59); - const double var_x61 = (var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6); - const double var_x62 = 0.037679754693225945 * var_chaste_interface__membrane__V; - const double var_x63 = exp(var_x62); - const double var_x64 = -1 + var_x63; - const double var_x65 = 1 / var_x64; - const double var_x66 = exp(var_x49 + var_x62); + const double var_x31 = pow(var_x30, (-3)); + const double var_x32 = var_x31 * NV_Ith_S(mParameters, 6); + const double var_x33 = var_x29 * var_x32; + const double var_x34 = var_x24 * var_x33; + const double var_x35 = (-50 + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); + const double var_x36 = var_x3 * var_x35 / pow(var_x4, 2); + const double var_x37 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); + const double var_x38 = 1 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x39 = 1 / var_x38; + const double var_x40 = pow((1 + 0.66666666666666663 * var_x37), (-2)); + const double var_x41 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5); + const double var_x42 = 1 / (36.4828726939094 + var_x41); + const double var_x43 = var_x41 * var_x42 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x44 = var_x37 * var_x39 * var_x40 * var_x43; + const double var_x45 = -26.53945091048535 * var_x26 + var_chaste_interface__membrane__V; + const double var_x46 = pow(var_x28, (-2)); + const double var_x47 = var_x27 * var_x32 * var_x45 * var_x46; + const double var_x48 = var_x24 * var_x47; + const double var_x49 = 1 / (-1 + exp(9.9999999999999995e-8)); + const double var_x50 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x51 = var_x50 * NV_Ith_S(mParameters, 2); + const double var_x52 = log(var_x51); + const double var_x53 = exp(9.9999999999999995e-8 - var_x52); + const double var_x54 = var_x49 * (-1 + var_x53); + const double var_x55 = 0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1; + const double var_x56 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x57 = NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5); + const double var_x58 = var_x56 * var_x57; + const double var_x59 = var_x55 * var_x58; + const double var_x60 = 1817.803245542646 * var_x59; + const double var_x61 = 1 / (-1 + exp(-9.9999999999999995e-8)); + const double var_x62 = exp(-9.9999999999999995e-8 - var_x52); + const double var_x63 = var_x61 * (-1 + var_x62); + const double var_x64 = (var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6); + const double var_x65 = 0.037679754693225945 * var_chaste_interface__membrane__V; + const double var_x66 = exp(var_x65); const double var_x67 = -1 + var_x66; - const double var_x68 = var_x65 * var_x67; - const double var_x69 = 136.98876074519373 * var_x56 * var_chaste_interface__membrane__V; - const double var_x70 = var_x65 * var_x66; - const double var_x71 = ((var_x61) ? (var_x51 * var_x57 + var_x57 * var_x60) : (var_x69 * var_x70 + 3635.606491085292 * var_x56 * var_x68 - var_x63 * var_x67 * var_x69 / pow(var_x64, 2))); - const double var_x72 = 1 / NV_Ith_S(mParameters, 4); - const double var_x73 = 0.001 * var_x72; - const double var_x74 = 0.00020000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x75 = 1 / var_x74; - const double var_x76 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x77 = var_chaste_interface__intracellular_ion_concentrations__Ca_i / pow(var_x74, 2); - const double var_x78 = var_x10 * var_x11 * var_x15; - const double var_x79 = (var_x9 - var_x13) * NV_Ith_S(mParameters, 9) / pow(var_x14, 2); - const double var_x80 = var_x11 * var_x79; - const double var_x81 = 0.5 + 188398.77346612973 * var_chaste_interface__membrane__V; - const double var_x82 = var_x52 * var_x54 * pow(var_chaste_interface__sodium_current_m_gate__m, 2); - const double var_x83 = 0.028946099999999999 * var_x82; - const double var_x84 = var_x60 * var_x83; - const double var_x85 = var_x68 * var_chaste_interface__membrane__V; - const double var_x86 = ((var_x61) ? (-var_x84 + var_x81 * (var_x84 + var_x51 * var_x83)) : (10906.819473255875 * var_x82 * var_x85)); - const double var_x87 = 0.0061269244999999995 * var_x55; - const double var_x88 = var_x60 * var_x87; - const double var_x89 = var_x55 * var_x85; - const double var_x90 = ((var_x61) ? (-var_x88 + var_x81 * (var_x88 + var_x51 * var_x87)) : (2308.6101218391605 * var_x89)); - const double var_x91 = 0.0035217754999999997 * var_x55; - const double var_x92 = var_x60 * var_x91; - const double var_x93 = ((var_x61) ? (-var_x92 + var_x81 * (var_x92 + var_x51 * var_x91)) : (1326.9963692461315 * var_x89)); - const double var_x94 = 0.001 * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L; - const double var_x95 = var_x34 * var_x72; - const double var_x96 = 0.001 * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L; - const double var_x97 = 0.001 * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; - const double var_x98 = var_x72 * (-0.22800000000000001 + 0.0060000000000000001 * var_chaste_interface__membrane__V); - const double var_x99 = 0.001 * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T; - const double var_x100 = var_x19 * var_x43; - const double var_x101 = pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 2); - const double var_x102 = var_x43 * var_x72; - const double var_x103 = var_x102 * var_x18 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; - const double var_x104 = pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 2); - const double var_x105 = var_x20 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 5); - const double var_x106 = 0.001 * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; - const double var_x107 = var_x102 * NV_Ith_S(mParameters, 7); - const double var_x108 = 0.001 * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; - const double var_x109 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2) * NV_Ith_S(mParameters, 1); - const double var_x110 = var_x109 * var_x15 * var_x7; - const double var_x111 = 1 / (1.5 + var_x36); - const double var_x112 = var_x111 * var_x38; - const double var_x113 = var_x112 * var_x40; - const double var_x114 = var_x113 * sqrt(var_chaste_interface__intracellular_ion_concentrations__Na_i) * var_chaste_interface__cleft_space_ion_concentrations__K_c; - const double var_x115 = var_x109 * var_x79; - const double var_x116 = var_x112 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2) * var_chaste_interface__cleft_space_ion_concentrations__K_c / pow((1 + 0.027410122234342148 * var_x39), 2); - const double var_x117 = var_x48 * var_x52 * var_x53 * NV_Ith_S(mParameters, 5); - const double var_x118 = 0.0096486999999999996 * var_x117; - const double var_x119 = var_x118 * var_x58 * var_x59; - const double var_x120 = ((var_x61) ? (-var_x119 + var_x81 * (var_x119 + var_x118 * var_x46 * var_x50)) : (3635.606491085292 * var_x117 * var_x70 * var_chaste_interface__membrane__V)); - const double var_x121 = 26.53945091048535 * var_x5; - const double var_x122 = 26.53945091048535 * var_x25; - const double var_x123 = var_x25 * var_x33; - const double var_x124 = var_x25 * var_x45; - const double var_x125 = 1 / var_chaste_interface__cleft_space_ion_concentrations__K_c; - const double var_x126 = var_x113 * var_x39; - const double var_x127 = 26.53945091048535 * var_x125; - const double var_x128 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); - const double var_x129 = var_x128 * var_x32; - const double var_x130 = 6 * var_x43; - const double var_x131 = var_x24 * var_x29 * NV_Ith_S(mParameters, 6) / pow(var_x30, 4); - const double var_x132 = var_x111 * var_x41 / pow(var_x37, 2); - const double var_x133 = var_x128 * var_x44; - const double var_x134 = (0.079263098651550096 - 0.001585261973031002 * var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); - const double var_x135 = 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x136 = 1 / (1.3999999999999999 + var_x135 + 0.80000000000000004 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up); - const double var_x137 = (var_x135 - 0.32000000000000006 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up) / pow((0.00041999999999999996 + 0.00023999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2); - const double var_x138 = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2); - const double var_x139 = 0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2; - const double var_x140 = NV_Ith_S(mParameters, 0) / pow(var_x139, 2); - const double var_x141 = var_x138 * var_x140; - const double var_x142 = 0.00088070109612833447 * var_x141; - const double var_x143 = 0.00020079984991726025 - 5.2842065767700066e-6 * var_chaste_interface__membrane__V; - const double var_x144 = 32 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x145 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; - const double var_x146 = 0.0017614021922566689 * var_x145; - const double var_x147 = var_x140 * var_chaste_interface__Ca_handling_by_the_SR__F2; - const double var_x148 = var_x138 * NV_Ith_S(mParameters, 0) / pow(var_x139, 3); - const double var_x149 = 1 / (-1 + exp(9.9999999999708629e-8)); - const double var_x150 = 1 / (-1 + exp(-9.9999999999708629e-8)); - const double var_x151 = (var_chaste_interface__membrane__V >= -44.400001267299999) && (var_chaste_interface__membrane__V <= -44.399998732699999); - const double var_x152 = exp(-3.5035114021936398 - 0.078907914463820727 * var_chaste_interface__membrane__V); - const double var_x153 = -1 + var_x152; - const double var_x154 = 460 / var_x153; - const double var_x155 = 44.399999999999999 + var_chaste_interface__membrane__V; - const double var_x156 = 0.00058295799999830145 * var_x149; - const double var_x157 = exp(-7.333333333333333 - 0.077519379844961239 * var_chaste_interface__membrane__V); - const double var_x158 = 1 / (1 + 323.30000000000001 * var_x157); - const double var_x159 = exp(-12.010771992818672 - 0.17953321364452424 * var_chaste_interface__membrane__V); - const double var_x160 = 44.899999999999999 * var_x159; - const double var_x161 = 1 / (var_x160 + 1491 * var_x158); - const double var_x162 = 8.0610412926391373 * var_x159; - const double var_x163 = -var_x161 * var_x162 + 2.019719479407183e-5 * var_x159 * (var_x162 - 0.35750508923240704 * var_x157 / pow((0.0030931023816888337 + var_x157), 2)) / pow((var_x158 + 0.030114017437961098 * var_x159), 2); - const double var_x164 = exp(6.666666666666667 + 0.16666666666666666 * var_chaste_interface__membrane__V); - const double var_x165 = 1 + var_x164; - const double var_x166 = 1 / var_x165; - const double var_x167 = 0.001 / (0.00014999999999999999 + 0.029999999999999999 * var_x166); - const double var_x168 = var_x160 * var_x161; - const double var_x169 = exp(30 + 0.5 * var_chaste_interface__membrane__V); - const double var_x170 = 1 + var_x169; - const double var_x171 = 1 / var_x170; - const double var_x172 = 0.001 / (0.00044999999999999999 + 0.12 * var_x171); - const double var_x173 = 1 / (-1 + exp(1.0000000000010001e-7)); - const double var_x174 = 1 / (-1 + exp(-1.0000000000010001e-7)); - const double var_x175 = (var_chaste_interface__membrane__V >= -5.0000002500000003) && (var_chaste_interface__membrane__V <= -4.9999997499999997); - const double var_x176 = 0.40000000000000002 * var_chaste_interface__membrane__V; - const double var_x177 = exp(2 + var_x176); - const double var_x178 = -1 + var_x177; - const double var_x179 = 4.4800000000000004 / var_x178; - const double var_x180 = 5 + var_chaste_interface__membrane__V; - const double var_x181 = 1 / (-1 + exp(-1.000000000139778e-7)); - const double var_x182 = 1 / (-1 + exp(9.9999999991773334e-8)); - const double var_x183 = exp(-2.0798668885191347 - 0.20798668885191349 * var_chaste_interface__membrane__V); - const double var_x184 = -1 + var_x183; - const double var_x185 = 50 / var_x184; - const double var_x186 = 10 + var_chaste_interface__membrane__V; - const double var_x187 = -var_x185 - 10.399334442595674 * var_x183 * var_x186 / pow(var_x184, 2); - const double var_x188 = (var_chaste_interface__membrane__V >= -45.000000249999999) && (var_chaste_interface__membrane__V <= -44.999999750000001); - const double var_x189 = 1 / (-1 + exp(-9.9999999998742257e-8)); - const double var_x190 = 1 / (-1 + exp(1.0000000000162864e-7)); - const double var_x191 = exp(-18 - var_x176); - const double var_x192 = -1 + var_x191; - const double var_x193 = 16.719999999999999 / var_x192; - const double var_x194 = 45 + var_chaste_interface__membrane__V; - const double var_x195 = -var_x193 - 6.6879999999999997 * var_x191 * var_x194 / pow(var_x192, 2); - const double var_x196 = (var_chaste_interface__membrane__V >= -10.000000480800001) && (var_chaste_interface__membrane__V <= -9.9999995191999993); - const double var_x197 = exp(-1.6590909090909092 - 0.15151515151515152 * var_chaste_interface__membrane__V); - const double var_x198 = 1 + var_x197; - const double var_x199 = 1.1200000000011203e-6 * var_x174; - const double var_x200 = ((var_x175) ? (-var_x199 + 1999999.9999979998 * (5.0000002500000003 + var_chaste_interface__membrane__V) * (var_x199 + 1.1200000000011203e-6 * var_x173)) : (var_x179 * var_x180)); - const double var_x201 = 4.1799999996561256e-6 * var_x182; - const double var_x202 = -var_x185 * var_x186; - const double var_x203 = 2.4040000000391526e-5 * var_x190; - const double var_x204 = -var_x193 * var_x194; - const double var_x205 = ((var_x188) ? (var_x201 + var_x202 + 1999999.9999424887 * (45.000000249999999 + var_chaste_interface__membrane__V) * (-var_x201 - 4.1800000005842713e-6 * var_x181)) : ((var_x196) ? (var_x203 + var_x204 + 1039933.4442576389 * (10.000000480800001 + var_chaste_interface__membrane__V) * (-var_x203 - 2.4039999999697637e-5 * var_x189)) : (var_x202 + var_x204))); - const double var_x206 = 1 / (-1 + exp(1.0000000000287557e-7)); - const double var_x207 = 1 / (-1 + exp(-1.0000000000287557e-7)); - const double var_x208 = (var_chaste_interface__membrane__V >= -18.000000400000001) && (var_chaste_interface__membrane__V <= -17.999999599999999); - const double var_x209 = 0.25 * var_chaste_interface__membrane__V; - const double var_x210 = exp(4.5 + var_x209); - const double var_x211 = -1 + var_x210; - const double var_x212 = 8.4900000000000002 / var_x211; - const double var_x213 = 18 + var_chaste_interface__membrane__V; - const double var_x214 = ((var_x208) ? (4.2450000000000001 * var_x206 + 4.2450000000000001 * var_x207) : (var_x212 - 2.1225000000000001 * var_x210 * var_x213 / pow(var_x211, 2))); - const double var_x215 = exp(-4.5 - var_x209); - const double var_x216 = 1 + var_x215; - const double var_x217 = 16.980499999999999 * var_x215 / pow(var_x216, 2); - const double var_x218 = 1 / var_x216; - const double var_x219 = 67.921999999999997 * var_x218; - const double var_x220 = 3.3960000000976542e-6 * var_x207; - const double var_x221 = ((var_x208) ? (-var_x220 + 1249999.9999640554 * (18.000000400000001 + var_chaste_interface__membrane__V) * (var_x220 + 3.3960000000976542e-6 * var_x206)) : (var_x212 * var_x213)); - const double var_x222 = 1 / (var_x219 + var_x221); - const double var_x223 = 0.001 * var_x221; - const double var_x224 = exp(-3.7704918032786887 - 0.16393442622950821 * var_chaste_interface__membrane__V); - const double var_x225 = 1 + var_x224; - const double var_x226 = 0.033333333333333333 * var_chaste_interface__membrane__V; - const double var_x227 = exp(0.77666666666666673 + var_x226); - const double var_x228 = exp(-0.77666666666666673 - var_x226); - const double var_x229 = exp(4.876462938881664 + 0.065019505851755519 * var_chaste_interface__membrane__V); - const double var_x230 = exp(-0.9003601440576231 - 0.012004801920768308 * var_chaste_interface__membrane__V); - const double var_x231 = 9.6370000000000005 * var_x229 + 9.6370000000000005 * var_x230; - const double var_x232 = 1 / var_x231; - const double var_x233 = 0.11569027611044419 * var_x230; - const double var_x234 = 0.62659297789336799 * var_x229; - const double var_x235 = 0.0096369999999999997 * var_x230; - const double var_x236 = exp(-2.6628794603230959 - 0.17752529735487307 * var_chaste_interface__membrane__V); - const double var_x237 = 1 + var_x236; - const double var_x238 = exp(-0.1388888888888889 * var_chaste_interface__membrane__V); - const double var_x239 = exp(var_x0); - const double var_x240 = 0.00040000000000000002 + 1 / (8.0109999999999992 * var_x238 + 386.60000000000002 * var_x239); - const double var_x241 = 1 / var_x240; - const double var_x242 = exp(327.99999999999994 + 10 * var_chaste_interface__membrane__V); - const double var_x243 = 1 + var_x242; - const double var_x244 = 1 / var_x243; - const double var_x245 = 1 / (0.020400000000000001 + 0.54659999999999997 * var_x244); - const double var_x246 = exp(4.0070821529745047 + 0.14164305949008499 * var_chaste_interface__membrane__V); - const double var_x247 = 1 + var_x246; - const double var_x248 = 0.000141643059490085 * var_x246 / pow(var_x247, 2); - const double var_x249 = 1 / var_x247; - const double var_x250 = var_x242 / pow(var_x243, 2); - const double var_x251 = exp(0.96921975662133131 - 0.071581961345740866 * var_chaste_interface__membrane__V); + const double var_x68 = 1 / var_x67; + const double var_x69 = exp(var_x65 - var_x52); + const double var_x70 = -1 + var_x69; + const double var_x71 = var_x68 * var_x70; + const double var_x72 = 136.98876074519373 * var_x59 * var_chaste_interface__membrane__V; + const double var_x73 = var_x68 * var_x69; + const double var_x74 = ((var_x64) ? (var_x54 * var_x60 + var_x60 * var_x63) : (var_x72 * var_x73 + 3635.606491085292 * var_x59 * var_x71 - var_x66 * var_x70 * var_x72 / pow(var_x67, 2))); + const double var_x75 = 1 / NV_Ith_S(mParameters, 4); + const double var_x76 = 0.001 * var_x75; + const double var_x77 = 0.00020000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x78 = 1 / var_x77; + const double var_x79 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x80 = pow(var_x77, (-2)); + const double var_x81 = var_x10 * var_x16 * var_x9; + const double var_x82 = pow(var_x14, (-2)); + const double var_x83 = var_x8 - var_x12; + const double var_x84 = var_x82 * var_x83 * NV_Ith_S(mParameters, 9); + const double var_x85 = var_x10 * var_x84; + const double var_x86 = 2.6539450910485349e-6 + var_chaste_interface__membrane__V; + const double var_x87 = var_x55 * var_x57 * pow(var_chaste_interface__sodium_current_m_gate__m, 2); + const double var_x88 = 0.028946099999999999 * var_x87; + const double var_x89 = var_x63 * var_x88; + const double var_x90 = var_x71 * var_chaste_interface__membrane__V; + const double var_x91 = ((var_x64) ? (-var_x89 + 188398.77346612973 * var_x86 * (var_x89 + var_x54 * var_x88)) : (10906.819473255875 * var_x87 * var_x90)); + const double var_x92 = 0.0061269244999999995 * var_x58; + const double var_x93 = var_x63 * var_x92; + const double var_x94 = var_x58 * var_x90; + const double var_x95 = ((var_x64) ? (-var_x93 + 188398.77346612973 * var_x86 * (var_x93 + var_x54 * var_x92)) : (2308.6101218391605 * var_x94)); + const double var_x96 = 0.0035217754999999997 * var_x58; + const double var_x97 = var_x63 * var_x96; + const double var_x98 = ((var_x64) ? (-var_x97 + 188398.77346612973 * var_x86 * (var_x97 + var_x54 * var_x96)) : (1326.9963692461315 * var_x94)); + const double var_x99 = 0.0018 * var_x35 * var_x75; + const double var_x100 = -38 + var_chaste_interface__membrane__V; + const double var_x101 = 6.0000000000000002e-6 * var_x100 * var_x75; + const double var_x102 = var_x22 * var_x45; + const double var_x103 = var_x45 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x104 = var_x103 * var_x20; + const double var_x105 = var_x104 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 2); + const double var_x106 = var_x104 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 2); + const double var_x107 = var_x103 * var_x21 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 5); + const double var_x108 = var_x45 * NV_Ith_S(mParameters, 8); + const double var_x109 = var_x45 * var_x76; + const double var_x110 = NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x111 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x112 = var_x111 * NV_Ith_S(mParameters, 1); + const double var_x113 = var_x112 * var_x16 * var_x6; + const double var_x114 = 1 / (1.5 + var_x37); + const double var_x115 = var_x114 * var_x39; + const double var_x116 = var_x115 * var_x42; + const double var_x117 = var_x116 * sqrt(var_chaste_interface__intracellular_ion_concentrations__Na_i) * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x118 = var_x112 * var_x84; + const double var_x119 = pow((1 + 0.027410122234342148 * var_x41), (-2)); + const double var_x120 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x121 = var_x115 * var_x119 * var_x120 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x122 = var_x51 * var_x55 * var_x56 * NV_Ith_S(mParameters, 5); + const double var_x123 = 0.0096486999999999996 * var_x122; + const double var_x124 = var_x123 * var_x61 * var_x62; + const double var_x125 = ((var_x64) ? (-var_x124 + 188398.77346612973 * var_x86 * (var_x124 + var_x123 * var_x49 * var_x53)) : (3635.606491085292 * var_x122 * var_x73 * var_chaste_interface__membrane__V)); + const double var_x126 = 26.53945091048535 * var_x0; + const double var_x127 = 0.26540512488521772 * var_x23; + const double var_x128 = 26.53945091048535 * var_x19; + const double var_x129 = var_x25 * var_x34; + const double var_x130 = var_x25 * var_x48; + const double var_x131 = 1 / var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x132 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); + const double var_x133 = var_x132 * var_x33; + const double var_x134 = var_x24 * var_x29 * NV_Ith_S(mParameters, 6) / pow(var_x30, 4); + const double var_x135 = pow(var_x38, (-2)); + const double var_x136 = var_x114 * var_x135 * var_x43; + const double var_x137 = 1 / (1.3999999999999999 + 0.80000000000000004 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i); + const double var_x138 = pow((0.00041999999999999996 + 0.00023999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_chaste_interface__intracellular_ion_concentrations__Ca_i), (-2)); + const double var_x139 = 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.32000000000000006 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up; + const double var_x140 = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2); + const double var_x141 = 0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x142 = pow(var_x141, (-2)); + const double var_x143 = var_x142 * NV_Ith_S(mParameters, 0); + const double var_x144 = var_x140 * var_x143; + const double var_x145 = 0.00088070109612833447 * var_x144; + const double var_x146 = 0.001585261973031002 * var_x35; + const double var_x147 = 5.2842065767700066e-6 * var_x100; + const double var_x148 = 32 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x149 = var_x138 * var_x139; + const double var_x150 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + const double var_x151 = var_x140 * NV_Ith_S(mParameters, 0) / pow(var_x141, 3); + const double var_x152 = 1 / (-1 + exp(9.9999999999708629e-8)); + const double var_x153 = 1 / (-1 + exp(-9.9999999999708629e-8)); + const double var_x154 = (var_chaste_interface__membrane__V >= -44.400001267299999) && (var_chaste_interface__membrane__V <= -44.399998732699999); + const double var_x155 = exp(-3.5035114021936398 - 0.078907914463820727 * var_chaste_interface__membrane__V); + const double var_x156 = -1 + var_x155; + const double var_x157 = 460 / var_x156; + const double var_x158 = 44.399999999999999 + var_chaste_interface__membrane__V; + const double var_x159 = 0.00058295799999830145 * var_x152; + const double var_x160 = exp(-7.333333333333333 - 0.077519379844961239 * var_chaste_interface__membrane__V); + const double var_x161 = 1 / (1 + 323.30000000000001 * var_x160); + const double var_x162 = exp(-12.010771992818672 - 0.17953321364452424 * var_chaste_interface__membrane__V); + const double var_x163 = 1 / (1491 * var_x161 + 44.899999999999999 * var_x162); + const double var_x164 = 8.0610412926391373 * var_x162; + const double var_x165 = -var_x163 * var_x164 + 2.019719479407183e-5 * var_x162 * (var_x164 - 0.35750508923240704 * var_x160 / pow((0.0030931023816888337 + var_x160), 2)) / pow((var_x161 + 0.030114017437961098 * var_x162), 2); + const double var_x166 = exp(6.666666666666667 + 0.16666666666666666 * var_chaste_interface__membrane__V); + const double var_x167 = 1 + var_x166; + const double var_x168 = 1 / var_x167; + const double var_x169 = 0.001 / (0.00014999999999999999 + 0.029999999999999999 * var_x168); + const double var_x170 = -44.899999999999999 * var_x162 * var_x163; + const double var_x171 = exp(30 + 0.5 * var_chaste_interface__membrane__V); + const double var_x172 = 1 + var_x171; + const double var_x173 = 1 / var_x172; + const double var_x174 = 0.001 / (0.00044999999999999999 + 0.12 * var_x173); + const double var_x175 = exp(-1.6590909090909092 - 0.15151515151515152 * var_chaste_interface__membrane__V); + const double var_x176 = 1 + var_x175; + const double var_x177 = 1 / (-1 + exp(1.0000000000010001e-7)); + const double var_x178 = 1 / (-1 + exp(-1.0000000000010001e-7)); + const double var_x179 = (var_chaste_interface__membrane__V >= -5.0000002500000003) && (var_chaste_interface__membrane__V <= -4.9999997499999997); + const double var_x180 = 0.40000000000000002 * var_chaste_interface__membrane__V; + const double var_x181 = exp(2 + var_x180); + const double var_x182 = -1 + var_x181; + const double var_x183 = 1 / var_x182; + const double var_x184 = 5 + var_chaste_interface__membrane__V; + const double var_x185 = 1 / (-1 + exp(-1.000000000139778e-7)); + const double var_x186 = 1 / (-1 + exp(9.9999999991773334e-8)); + const double var_x187 = 8.3600000009281459 * var_x185 + 8.359999999071853 * var_x186; + const double var_x188 = 1 / (-1 + exp(-9.9999999998742257e-8)); + const double var_x189 = 1 / (-1 + exp(1.0000000000162864e-7)); + const double var_x190 = 24.999999999639201 * var_x188 + 25.000000000360799 * var_x189; + const double var_x191 = var_chaste_interface__membrane__V >= -45.000000249999999; + const double var_x192 = var_chaste_interface__membrane__V >= -10.000000480800001; + const double var_x193 = var_chaste_interface__membrane__V <= -44.999999750000001; + const double var_x194 = var_chaste_interface__membrane__V <= -9.9999995191999993; + const double var_x195 = (var_x191) && (var_x192) && (var_x193) && (var_x194); + const double var_x196 = exp(-2.0798668885191347 - 0.20798668885191349 * var_chaste_interface__membrane__V); + const double var_x197 = -1 + var_x196; + const double var_x198 = 50 / var_x197; + const double var_x199 = 10 + var_chaste_interface__membrane__V; + const double var_x200 = var_x198 + 10.399334442595674 * var_x196 * var_x199 / pow(var_x197, 2); + const double var_x201 = (var_x191) && (var_x193); + const double var_x202 = exp(-18 - var_x180); + const double var_x203 = -1 + var_x202; + const double var_x204 = 16.719999999999999 / var_x203; + const double var_x205 = 45 + var_chaste_interface__membrane__V; + const double var_x206 = var_x204 + 6.6879999999999997 * var_x202 * var_x205 / pow(var_x203, 2); + const double var_x207 = (var_x192) && (var_x194); + const double var_x208 = 1.1200000000011203e-6 * var_x178; + const double var_x209 = ((var_x179) ? (-var_x208 + 1999999.9999979998 * (5.0000002500000003 + var_chaste_interface__membrane__V) * (var_x208 + 1.1200000000011203e-6 * var_x177)) : (4.4800000000000004 * var_x183 * var_x184)); + const double var_x210 = 4.1799999996561256e-6 * var_x186; + const double var_x211 = var_x210 + 1999999.9999424887 * (45.000000249999999 + var_chaste_interface__membrane__V) * (-var_x210 - 4.1800000005842713e-6 * var_x185); + const double var_x212 = 2.4040000000391526e-5 * var_x189; + const double var_x213 = var_x212 + 1039933.4442576389 * (10.000000480800001 + var_chaste_interface__membrane__V) * (-var_x212 - 2.4039999999697637e-5 * var_x188); + const double var_x214 = var_x198 * var_x199; + const double var_x215 = var_x204 * var_x205; + const double var_x216 = ((var_x195) ? (var_x211 + var_x213) : ((var_x201) ? (var_x211 - var_x214) : ((var_x207) ? (var_x213 - var_x215) : (-var_x214 - var_x215)))); + const double var_x217 = 4.5 + 0.25 * var_chaste_interface__membrane__V; + const double var_x218 = exp(-var_x217); + const double var_x219 = 1 + var_x218; + const double var_x220 = 1 / var_x219; + const double var_x221 = 67.921999999999997 * var_x220; + const double var_x222 = 1 / (-1 + exp(-1.0000000000287557e-7)); + const double var_x223 = 3.3960000000976542e-6 * var_x222; + const double var_x224 = 1 / (-1 + exp(1.0000000000287557e-7)); + const double var_x225 = (var_chaste_interface__membrane__V >= -18.000000400000001) && (var_chaste_interface__membrane__V <= -17.999999599999999); + const double var_x226 = 18 + var_chaste_interface__membrane__V; + const double var_x227 = exp(var_x217); + const double var_x228 = -1 + var_x227; + const double var_x229 = 1 / var_x228; + const double var_x230 = ((var_x225) ? (-var_x223 + 1249999.9999640554 * (18.000000400000001 + var_chaste_interface__membrane__V) * (var_x223 + 3.3960000000976542e-6 * var_x224)) : (8.4900000000000002 * var_x226 * var_x229)); + const double var_x231 = 1 / (var_x221 + var_x230); + const double var_x232 = ((var_x225) ? (4.2450000000000001 * var_x222 + 4.2450000000000001 * var_x224) : (8.4900000000000002 * var_x229 - 2.1225000000000001 * var_x226 * var_x227 / pow(var_x228, 2))); + const double var_x233 = 16.980499999999999 * var_x218 / pow(var_x219, 2); + const double var_x234 = exp(-3.7704918032786887 - 0.16393442622950821 * var_chaste_interface__membrane__V); + const double var_x235 = 1 + var_x234; + const double var_x236 = 0.77666666666666673 + 0.033333333333333333 * var_chaste_interface__membrane__V; + const double var_x237 = exp(-var_x236); + const double var_x238 = exp(var_x236); + const double var_x239 = exp(4.876462938881664 + 0.065019505851755519 * var_chaste_interface__membrane__V); + const double var_x240 = exp(-0.9003601440576231 - 0.012004801920768308 * var_chaste_interface__membrane__V); + const double var_x241 = 9.6370000000000005 * var_x239 + 9.6370000000000005 * var_x240; + const double var_x242 = 1 / var_x241; + const double var_x243 = 0.11569027611044419 * var_x240; + const double var_x244 = var_x243 - 0.62659297789336799 * var_x239; + const double var_x245 = exp(-2.6628794603230959 - 0.17752529735487307 * var_chaste_interface__membrane__V); + const double var_x246 = 1 + var_x245; + const double var_x247 = exp(-0.1388888888888889 * var_chaste_interface__membrane__V); + const double var_x248 = exp(var_x2); + const double var_x249 = 0.00040000000000000002 + 1 / (8.0109999999999992 * var_x247 + 386.60000000000002 * var_x248); + const double var_x250 = 1 / var_x249; + const double var_x251 = exp(327.99999999999994 + 10 * var_chaste_interface__membrane__V); const double var_x252 = 1 + var_x251; const double var_x253 = 1 / var_x252; - const double var_x254 = 1 / (5.75 * var_x244 + 0.45000000000000001 * var_x253); - const double var_x255 = exp(46 + 2 * var_chaste_interface__membrane__V); + const double var_x254 = 1 / (0.020400000000000001 + 0.54659999999999997 * var_x253); + const double var_x255 = exp(4.0070821529745047 + 0.14164305949008499 * var_chaste_interface__membrane__V); const double var_x256 = 1 + var_x255; - const double var_x257 = 1 / var_x256; - const double var_x258 = 1 / (0.5 + 7.5 * var_x257); - const double var_x259 = exp(1.8506208911614319 + 0.036523009495982472 * var_chaste_interface__membrane__V); - const double var_x260 = 1 + var_x259; - const double var_x261 = exp(0.065217391304347824 - 0.072463768115942032 * var_chaste_interface__membrane__V); - const double var_x262 = 1 + var_x261; - const double var_x263 = exp(-0.045816915605241454 * var_chaste_interface__membrane__V); - const double var_x264 = exp(0.014398433450440593 * var_chaste_interface__membrane__V); - const double var_x265 = 0.059999999999999998 + 1 / (0.29999999999999999 * var_x263 + 1.6599999999999999 * var_x264); + const double var_x257 = 0.000141643059490085 * var_x255 / pow(var_x256, 2); + const double var_x258 = -1 / var_x256; + const double var_x259 = var_x251 / pow(var_x252, 2); + const double var_x260 = exp(0.96921975662133131 - 0.071581961345740866 * var_chaste_interface__membrane__V); + const double var_x261 = 1 + var_x260; + const double var_x262 = 1 / var_x261; + const double var_x263 = 1 / (5.75 * var_x253 + 0.45000000000000001 * var_x262); + const double var_x264 = exp(46 + 2 * var_chaste_interface__membrane__V); + const double var_x265 = 1 + var_x264; const double var_x266 = 1 / var_x265; - const double var_x267 = exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V); - const double var_x268 = 1 + var_x267; - const double var_x269 = exp(0.03941508020968823 * var_chaste_interface__membrane__V); - const double var_x270 = exp(-0.076769537847382163 * var_chaste_interface__membrane__V); - const double var_x271 = exp(0.009420009985210585 * var_chaste_interface__membrane__V); - const double var_x272 = exp(-0.018299935950224173 * var_chaste_interface__membrane__V); - const double var_x273 = exp(2.539728728905752 + 0.05358970648917756 * var_chaste_interface__membrane__V); - const double var_x274 = 1 + var_x273; - const double var_x275 = -3.290319067574035e-6 - 4.9354786013610522e-6 * var_x17; - const double var_x276 = var_x20 * var_x275; - const double var_x277 = var_x43 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; - const double var_x278 = var_x275 * var_x277; - const double var_x279 = 1.77 * var_x101; - const double var_x280 = 1.23 * var_x104; - const double var_x281 = var_x105 * var_x43; - const double var_x282 = 0.021829942145742926 * var_x26 - 0.00082254686501890791 * var_chaste_interface__membrane__V; - const double var_x283 = NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; - const double var_x284 = 0.021829942145742926 * var_x5; - const double var_x285 = 0.021829942145742926 * var_x23; - const double var_x286 = 0.0049352811901134472 * var_x43; - const double var_x287 = -200 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; - const double var_x288 = 1.6583208100573134e-5 + 2.4874812150859699e-5 * var_x17; - const double var_x289 = var_x20 * var_x288; - const double var_x290 = var_x277 * var_x288; - const double var_x291 = 0.0041456361996952953 * var_chaste_interface__membrane__V - 0.11002290841454433 * var_x26; - const double var_x292 = 0.11002290841454433 * var_x5; - const double var_x293 = 0.11002290841454433 * var_x23; - const double var_x294 = 0.024873817198171774 * var_x43; - const double var_x295 = 0.11777375567316183 * var_x141; - const double var_x296 = 0.23554751134632365 * var_x145; + const double var_x267 = 1 / (0.5 + 7.5 * var_x266); + const double var_x268 = exp(1.8506208911614319 + 0.036523009495982472 * var_chaste_interface__membrane__V); + const double var_x269 = 1 + var_x268; + const double var_x270 = exp(0.065217391304347824 - 0.072463768115942032 * var_chaste_interface__membrane__V); + const double var_x271 = 1 + var_x270; + const double var_x272 = exp(-0.045816915605241454 * var_chaste_interface__membrane__V); + const double var_x273 = exp(0.014398433450440593 * var_chaste_interface__membrane__V); + const double var_x274 = 0.059999999999999998 + 1 / (0.29999999999999999 * var_x272 + 1.6599999999999999 * var_x273); + const double var_x275 = 1 / var_x274; + const double var_x276 = exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V); + const double var_x277 = 1 + var_x276; + const double var_x278 = exp(-0.076769537847382163 * var_chaste_interface__membrane__V); + const double var_x279 = exp(0.03941508020968823 * var_chaste_interface__membrane__V); + const double var_x280 = exp(2.539728728905752 + 0.05358970648917756 * var_chaste_interface__membrane__V); + const double var_x281 = 1 + var_x280; + const double var_x282 = exp(-0.018299935950224173 * var_chaste_interface__membrane__V); + const double var_x283 = exp(0.009420009985210585 * var_chaste_interface__membrane__V); + const double var_x284 = var_x116 * var_x41; + const double var_x285 = 0.00082254686501890791 * var_x45; + const double var_x286 = 0.021829942145742926 * var_x0; + const double var_x287 = 0.021829942145742926 * var_x19; + const double var_x288 = 0.00021830815343428756 * var_x23; + const double var_x289 = 0.0049352811901134472 * var_x45; + const double var_x290 = 200 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x291 = 0.0041456361996952953 * var_x45; + const double var_x292 = 0.11002290841454433 * var_x0; + const double var_x293 = 0.0011002730933088092 * var_x23; + const double var_x294 = 0.11002290841454433 * var_x19; + const double var_x295 = 0.11777375567316183 * var_x144; + const double var_x296 = 0.23554751134632365 * var_x150; const double var_x297 = exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V); const double var_x298 = 0.019200000000000002 * var_x297 * var_chaste_interface__Ca_handling_by_the_SR__F1; const double var_x299 = 0.00029999999999999997 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; const double var_x300 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4); const double var_x301 = var_x300 / pow(var_x299, 5); - const double var_x302 = 0.81520000000000004 * var_x301; - const double var_x303 = pow(var_x299, (-4)); - const double var_x304 = var_x303 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); - const double var_x305 = 0.81520000000000004 * var_x304; - const double var_x306 = 0.23999999999999999 * var_x297; - const double var_x307 = var_x300 * var_x303; - const double var_x308 = 0.20380000000000001 * var_x307; - const double var_x309 = 1.3584000000000001 * var_x301; - const double var_x310 = 1.3584000000000001 * var_x304; - const double var_x311 = 0.33960000000000001 * var_x307; + const double var_x302 = pow(var_x299, (-4)); + const double var_x303 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); + const double var_x304 = 0.001 * (-815.20000000000005 * var_x301 + 815.20000000000005 * var_x302 * var_x303) * var_chaste_interface__Ca_handling_by_the_SR__F1; + const double var_x305 = var_x300 * var_x302; + const double var_x306 = 0.20380000000000001 * var_x305 + 0.23999999999999999 * var_x297; + const double var_x307 = 0.001 * (-1358.4000000000001 * var_x301 + 1358.4000000000001 * var_x302 * var_x303) * var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x308 = 0.033960000000000004 + 0.33960000000000001 * var_x305; // Matrix entries - IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x73 * (0.0014400000000000001 + var_x16 + var_x21 + var_x23 + var_x5 + var_x71 + 2 * var_x33 + 0.0060000000000000001 * var_x6 + 0.0011450666666666667 * var_x42 - 0.10497579657532749 * var_x45 + var_x34 * var_x35 + (1.8 * var_x3 + 1.8 * var_x4) * NV_Ith_S(mParameters, 3))); - IJth(rJacobian, 1, 0) = -1.7614021922566692e-8 + 0.0017614021922566689 * var_x16 - 5.2842065767700066e-6 * var_x6 + var_x134 * var_x35 + (-0.001585261973031002 * var_x3 - 0.001585261973031002 * var_x4) * NV_Ith_S(mParameters, 3); - IJth(rJacobian, 2, 0) = (0.001 - 0.001 * var_chaste_interface__sodium_current_m_gate__m) * ((var_x151) ? (-230 * var_x149 - 230 * var_x150) : (-var_x154 - 36.297640653357533 * var_x152 * var_x155 / pow(var_x153, 2))) + 1.4519056261343013 * var_x152 * var_chaste_interface__sodium_current_m_gate__m; - IJth(rJacobian, 3, 0) = var_x163 * var_x167 + 0.0055555555555555558 * var_x164 * (var_x168 - var_chaste_interface__sodium_current_h1_gate__h1) / (pow(var_x165, 2) * pow((0.0050000000000000001 + var_x166), 2)); - IJth(rJacobian, 4, 0) = var_x163 * var_x172 + 0.0041666666666666666 * var_x169 * (var_x168 - var_chaste_interface__sodium_current_h2_gate__h2) / (pow(var_x170, 2) * pow((0.0037499999999999999 + var_x171), 2)); - IJth(rJacobian, 5, 0) = (-var_x96 + 0.001 / var_x198) * (((var_x175) ? (2.2400000000000002 * var_x173 + 2.2400000000000002 * var_x174) : (var_x179 - 1.7920000000000003 * var_x177 * var_x180 / pow(var_x178, 2))) + ((var_x188) ? (var_x187 - 8.3600000009281459 * var_x181 - 8.359999999071853 * var_x182) : ((var_x196) ? (var_x195 - 24.999999999639201 * var_x189 - 25.000000000360799 * var_x190) : (var_x187 + var_x195)))) + 0.00015151515151515152 * var_x197 * (var_x200 + var_x205) / pow(var_x198, 2); - IJth(rJacobian, 6, 0) = (var_x217 + var_x214) * (-var_x94 + var_x222 * var_x223) + (var_x219 + var_x221) * (0.001 * var_x214 * var_x222 + 2.1675996343523e-7 * var_x221 * (-var_x214 - var_x217) / pow((var_x218 + 0.014722770236447691 * var_x221), 2)); - IJth(rJacobian, 7, 0) = (-var_x99 + 0.001 / var_x225) * (22.472433333333335 * var_x227 - 22.472433333333335 * var_x228) + 0.0001639344262295082 * var_x224 * (674.173 * var_x227 + 674.173 * var_x228) / pow(var_x225, 2); - IJth(rJacobian, 8, 0) = var_x231 * (-0.00011569027611044419 * var_x230 * var_x232 + 0.00010376673238559718 * var_x230 * (var_x233 - var_x234) / pow((var_x229 + var_x230), 2)) + (var_x234 - var_x233) * (-var_x97 + var_x232 * var_x235); - IJth(rJacobian, 9, 0) = 0.00017752529735487306 * var_x236 * var_x241 / pow(var_x237, 2) - 6.6907730760079843e-9 * (-var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + 1 / var_x237) * (1.1126388888888887 * var_x238 - 32.216666666666669 * var_x239) / (pow(var_x240, 2) * pow((var_x239 + 0.020721676151060523 * var_x238), 2)); - IJth(rJacobian, 10, 0) = -var_x245 * var_x248 + 0.018294914013904134 * var_x250 * (var_x249 - var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1) / pow((0.037321624588364438 + var_x244), 2); - IJth(rJacobian, 11, 0) = -var_x248 * var_x254 + 3.0245746691871456e-5 * (var_x249 - var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2) * (57.5 * var_x250 - 0.032211882605583393 * var_x251 / pow(var_x252, 2)) / pow((var_x244 + 0.078260869565217397 * var_x253), 2); - IJth(rJacobian, 12, 0) = -2.1922574727480476e-5 * var_x258 * var_x259 / pow(var_x260, 2) + 0.00026666666666666668 * var_x255 * (0.39975990396158467 - var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 + 0.60024009603841544 / var_x260) / (pow(var_x256, 2) * pow((0.066666666666666666 + var_x257), 2)); - IJth(rJacobian, 13, 0) = 7.2463768115942027e-5 * var_x261 * var_x266 / pow(var_x262, 2) - 0.00036289737262302222 * (-var_chaste_interface__delayed_rectifier_K_current_z_gate__z + 1 / var_x262) * (0.013745074681572435 * var_x263 - 0.023901399527731383 * var_x264) / (pow(var_x265, 2) * pow((var_x264 + 0.18072289156626506 * var_x263), 2)); - IJth(rJacobian, 14, 0) = (-var_x108 + 0.001 / var_x268) * (0.35473572188719404 * var_x269 - 0.099800399201596807 * var_x270) + 0.00013513513513513514 * var_x267 * (9 * var_x269 + 1.3 * var_x270) / pow(var_x268, 2); - IJth(rJacobian, 15, 0) = (-var_x106 + 0.001 / var_x274) * (6.1795265502981431 * var_x271 - 1.8299935950224173 * var_x272) - 5.3589706489177562e-5 * var_x273 * (100 * var_x272 + 656 * var_x271) / pow(var_x274, 2); - IJth(rJacobian, 16, 0) = -1.6450937300378158e-8 - 0.0024676405950567236 * var_x16 - 2.8256129907129523e-6 * var_x42 - 0.00082254686501890791 * var_x71; - IJth(rJacobian, 17, 0) = -1.151565611026471e-6 + var_x276 + 8.6347512375898239e-5 * var_x45 + 1.8837419938086349e-6 * var_x42 - 0.00082254686501890791 * var_x23 - 0.00082254686501890791 * var_x5 - 0.0016450937300378158 * var_x33; - IJth(rJacobian, 22, 0) = 5.8038906795734136e-6 + var_x289 + 0.0041456361996952953 * var_x23 + 0.0041456361996952953 * var_x5 + 0.0082912723993905906 * var_x33 - 9.4940596487955185e-6 * var_x42 - 0.00043519146237452704 * var_x45; + IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * (0.0014400000000000001 + var_x0 + var_x17 + var_x19 + var_x74 + 2 * var_x34 + 0.0060000000000000001 * var_x1 + 1.8 * var_x5 + 0.0011450666666666667 * var_x44 + 0.14999999999999999 * var_x36 + 0.0100004 * var_x23 - 0.10497579657532749 * var_x48)); + IJth(rJacobian, 1, 0) = -1.7614021922566692e-8 - 0.00013210516441925017 * var_x36 - 0.001585261973031002 * var_x5 - 5.2842065767700066e-6 * var_x1 + 0.0017614021922566689 * var_x13 * var_x15 * NV_Ith_S(mParameters, 9); + IJth(rJacobian, 2, 0) = 0.001 * (1 - var_chaste_interface__sodium_current_m_gate__m) * ((var_x154) ? (-230 * var_x152 - 230 * var_x153) : (-var_x157 - 36.297640653357533 * var_x155 * var_x158 / pow(var_x156, 2))) + 1.4519056261343013 * var_x155 * var_chaste_interface__sodium_current_m_gate__m; + IJth(rJacobian, 3, 0) = var_x165 * var_x169 + 0.0055555555555555558 * var_x166 * (-var_x170 - var_chaste_interface__sodium_current_h1_gate__h1) / (pow(var_x167, 2) * pow((0.0050000000000000001 + var_x168), 2)); + IJth(rJacobian, 4, 0) = var_x165 * var_x174 + 0.0041666666666666666 * var_x171 * (-var_x170 - var_chaste_interface__sodium_current_h2_gate__h2) / (pow(var_x172, 2) * pow((0.0037499999999999999 + var_x173), 2)); + IJth(rJacobian, 5, 0) = 0.001 * (-var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L + 1 / var_x176) * (((var_x179) ? (2.2400000000000002 * var_x177 + 2.2400000000000002 * var_x178) : (4.4800000000000004 * var_x183 - 1.7920000000000003 * var_x181 * var_x184 / pow(var_x182, 2))) + ((var_x195) ? (-var_x187 - var_x190) : ((var_x201) ? (-var_x187 - var_x200) : ((var_x207) ? (-var_x190 - var_x206) : (-var_x200 - var_x206))))) + 0.00015151515151515152 * var_x175 * (var_x209 + var_x216) / pow(var_x176, 2); + IJth(rJacobian, 6, 0) = 0.001 * (var_x221 + var_x230) * (var_x231 * var_x232 + 0.00021675996343522999 * var_x230 * (-var_x232 - var_x233) / pow((var_x220 + 0.014722770236447691 * var_x230), 2)) + 0.001 * (var_x233 + var_x232) * (-var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_x230 * var_x231); + IJth(rJacobian, 7, 0) = 0.001 * (-var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T + 1 / var_x235) * (22.472433333333335 * var_x238 - 22.472433333333335 * var_x237) + 0.0001639344262295082 * var_x234 * (674.173 * var_x237 + 674.173 * var_x238) / pow(var_x235, 2); + IJth(rJacobian, 8, 0) = 0.001 * var_x241 * (-var_x242 * var_x243 + 0.10376673238559717 * var_x240 * var_x244 / pow((var_x239 + var_x240), 2)) - 0.001 * var_x244 * (-var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T + 9.6370000000000005 * var_x240 * var_x242); + IJth(rJacobian, 9, 0) = 0.00017752529735487306 * var_x245 * var_x250 / pow(var_x246, 2) - 6.6907730760079843e-9 * (-var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + 1 / var_x246) * (1.1126388888888887 * var_x247 - 32.216666666666669 * var_x248) / (pow(var_x249, 2) * pow((var_x248 + 0.020721676151060523 * var_x247), 2)); + IJth(rJacobian, 10, 0) = -var_x254 * var_x257 + 0.018294914013904134 * var_x259 * (-var_x258 - var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1) / pow((0.037321624588364438 + var_x253), 2); + IJth(rJacobian, 11, 0) = -var_x257 * var_x263 + 3.0245746691871456e-5 * (-var_x258 - var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2) * (57.5 * var_x259 - 0.032211882605583393 * var_x260 / pow(var_x261, 2)) / pow((var_x253 + 0.078260869565217397 * var_x262), 2); + IJth(rJacobian, 12, 0) = -2.1922574727480476e-5 * var_x267 * var_x268 / pow(var_x269, 2) + 0.00026666666666666668 * var_x264 * (0.39975990396158467 - var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 + 0.60024009603841544 / var_x269) / (pow(var_x265, 2) * pow((0.066666666666666666 + var_x266), 2)); + IJth(rJacobian, 13, 0) = 7.2463768115942027e-5 * var_x270 * var_x275 / pow(var_x271, 2) - 0.00036289737262302222 * (-var_chaste_interface__delayed_rectifier_K_current_z_gate__z + 1 / var_x271) * (0.013745074681572435 * var_x272 - 0.023901399527731383 * var_x273) / (pow(var_x274, 2) * pow((var_x273 + 0.18072289156626506 * var_x272), 2)); + IJth(rJacobian, 14, 0) = 0.001 * (-var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a + 1 / var_x277) * (0.35473572188719404 * var_x279 - 0.099800399201596807 * var_x278) + 0.00013513513513513514 * var_x276 * (9 * var_x279 + 1.3 * var_x278) / pow(var_x277, 2); + IJth(rJacobian, 15, 0) = 0.001 * (-var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i + 1 / var_x281) * (6.1795265502981431 * var_x283 - 1.8299935950224173 * var_x282) - 5.3589706489177562e-5 * var_x280 * (100 * var_x282 + 656 * var_x283) / pow(var_x281, 2); + IJth(rJacobian, 16, 0) = -1.6450937300378158e-8 - 0.0024676405950567236 * var_x17 - 2.8256129907129523e-6 * var_x44 - 0.00082254686501890791 * var_x74; + IJth(rJacobian, 17, 0) = -1.151565611026471e-6 - 8.2257976689350868e-6 * var_x23 - 0.00082254686501890791 * var_x0 - 0.00082254686501890791 * var_x19 - 0.0016450937300378158 * var_x34 + 8.6347512375898239e-5 * var_x24 * var_x27 * var_x31 * var_x45 * var_x46 * NV_Ith_S(mParameters, 6) + 1.8837419938086349e-6 * var_x37 * var_x39 * var_x40 * var_x41 * var_x42 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + IJth(rJacobian, 22, 0) = 5.8038906795734136e-6 + 0.0041456361996952953 * var_x0 + 0.0041456361996952953 * var_x19 + 0.0082912723993905906 * var_x34 + 4.145802025143283e-5 * var_x23 - 9.4940596487955185e-6 * var_x44 - 0.00043519146237452704 * var_x48; IJth(rJacobian, 26, 0) = -var_x298; IJth(rJacobian, 27, 0) = var_x298; - IJth(rJacobian, 0, 1) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x73 * (-var_x78 + 0.0095090000000000001 * var_x75 + 0.0002653945091048535 * var_x76 - 0.0095090000000000001 * var_x77 - 0.00029999999999999997 * var_x80)); - IJth(rJacobian, 1, 1) = -47.271999999999998 - var_x142 + 8.3745867230843319e-6 * var_x77 + 6.2720000000000002 * var_chaste_interface__intracellular_Ca_buffering__O_TC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg + 9 * var_chaste_interface__intracellular_Ca_buffering__O_C + 7.3978892074780085e-7 * var_x137 - 8.3745867230843319e-6 * var_x75 - 5.2842065767700058e-7 * var_x80 - 8.2198768971977874 * var_x136 - 0.0017614021922566689 * var_x78 - 2.3373323507508574e-7 * var_x76; - IJth(rJacobian, 16, 1) = 0.0024676405950567236 * var_x78 + 7.4029217851701709e-7 * var_x80; + IJth(rJacobian, 0, 1) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * (-var_x81 + 0.0095090000000000001 * var_x78 + 0.0002653945091048535 * var_x79 - 0.00029999999999999997 * var_x85 - 0.0095090000000000001 * var_x80 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + IJth(rJacobian, 1, 1) = -47.271999999999998 - var_x145 + 6.2720000000000002 * var_chaste_interface__intracellular_Ca_buffering__O_TC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg + 9 * var_chaste_interface__intracellular_Ca_buffering__O_C - 8.3745867230843319e-6 * var_x78 - 5.2842065767700058e-7 * var_x85 - 8.2198768971977874 * var_x137 - 0.0017614021922566689 * var_x81 - 2.3373323507508574e-7 * var_x79 + 8.3745867230843319e-6 * var_x80 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + 7.3978892074780085e-7 * var_x138 * var_x139; + IJth(rJacobian, 16, 1) = 0.0024676405950567236 * var_x81 + 7.4029217851701709e-7 * var_x85; IJth(rJacobian, 18, 1) = 200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_C; IJth(rJacobian, 19, 1) = 78.400000000000006 - 78.400000000000006 * var_chaste_interface__intracellular_Ca_buffering__O_TC; IJth(rJacobian, 20, 1) = 200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg; IJth(rJacobian, 23, 1) = var_x295; - IJth(rJacobian, 24, 1) = 121.85879481761599 * var_x136 - 1.0967291533585437e-5 * var_x137; - IJth(rJacobian, 26, 1) = (var_x302 - var_x305) * var_chaste_interface__Ca_handling_by_the_SR__F1; - IJth(rJacobian, 27, 1) = (var_x305 - var_x302) * var_chaste_interface__Ca_handling_by_the_SR__F1 + (var_x309 - var_x310) * var_chaste_interface__Ca_handling_by_the_SR__F2; - IJth(rJacobian, 28, 1) = (var_x310 - var_x309) * var_chaste_interface__Ca_handling_by_the_SR__F2; - IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x73 * var_x86); - IJth(rJacobian, 2, 2) = -0.001 * ((var_x151) ? (var_x156 + 394539.57232025318 * (44.400001267299999 + var_chaste_interface__membrane__V) * (-var_x156 - 0.00058295799999830145 * var_x150)) : (-var_x154 * var_x155)) - 18.399999999999999 * var_x152; - IJth(rJacobian, 16, 2) = -0.00082254686501890791 * var_x86; - IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x73 * var_x90); - IJth(rJacobian, 3, 3) = -var_x167; - IJth(rJacobian, 16, 3) = -0.00082254686501890791 * var_x90; - IJth(rJacobian, 0, 4) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x73 * var_x93); - IJth(rJacobian, 4, 4) = -var_x172; - IJth(rJacobian, 16, 4) = -0.00082254686501890791 * var_x93; - IJth(rJacobian, 0, 5) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x94 * var_x95); - IJth(rJacobian, 1, 5) = var_x134 * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L; - IJth(rJacobian, 5, 5) = -0.001 * var_x200 - 0.001 * var_x205; - IJth(rJacobian, 0, 6) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x95 * var_x96); - IJth(rJacobian, 1, 6) = var_x134 * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L; - IJth(rJacobian, 6, 6) = -var_x223 - 0.067921999999999996 * var_x218; - IJth(rJacobian, 0, 7) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x97 * var_x98); - IJth(rJacobian, 1, 7) = var_x143 * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; - IJth(rJacobian, 7, 7) = -0.67417300000000002 * var_x227 - 0.67417300000000002 * var_x228; - IJth(rJacobian, 0, 8) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x98 * var_x99); - IJth(rJacobian, 1, 8) = var_x143 * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T; - IJth(rJacobian, 8, 8) = -var_x235 - 0.0096369999999999997 * var_x229; - IJth(rJacobian, 0, 9) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x100 * var_x18 * var_x73); - IJth(rJacobian, 9, 9) = -0.001 * var_x241; - IJth(rJacobian, 17, 9) = var_x100 * var_x275; - IJth(rJacobian, 22, 9) = var_x100 * var_x288; - IJth(rJacobian, 0, 10) = mSetVoltageDerivativeToZero ? 0.0 : (-0.0017699999999999999 * var_x101 * var_x103); - IJth(rJacobian, 10, 10) = -0.001 * var_x245; - IJth(rJacobian, 17, 10) = var_x278 * var_x279; - IJth(rJacobian, 22, 10) = var_x279 * var_x290; - IJth(rJacobian, 0, 11) = mSetVoltageDerivativeToZero ? 0.0 : (-0.00123 * var_x103 * var_x104); - IJth(rJacobian, 11, 11) = -0.001 * var_x254; - IJth(rJacobian, 17, 11) = var_x278 * var_x280; - IJth(rJacobian, 22, 11) = var_x280 * var_x290; - IJth(rJacobian, 0, 12) = mSetVoltageDerivativeToZero ? 0.0 : (-3.600144e-5 * var_x102 * var_x105); - IJth(rJacobian, 12, 12) = -0.001 * var_x258; - IJth(rJacobian, 17, 12) = -2.9612871608166312e-5 * var_x281; - IJth(rJacobian, 22, 12) = 0.00014924887290515819 * var_x281; - IJth(rJacobian, 0, 13) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x43 * var_x73 * NV_Ith_S(mParameters, 8)); - IJth(rJacobian, 13, 13) = -0.001 * var_x266; - IJth(rJacobian, 17, 13) = var_x282 * NV_Ith_S(mParameters, 8); - IJth(rJacobian, 22, 13) = var_x291 * NV_Ith_S(mParameters, 8); - IJth(rJacobian, 0, 14) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x106 * var_x107); - IJth(rJacobian, 14, 14) = -0.0089999999999999993 * var_x269 - 0.0012999999999999999 * var_x270; - IJth(rJacobian, 17, 14) = var_x22 * var_x282; - IJth(rJacobian, 22, 14) = var_x22 * var_x291; - IJth(rJacobian, 0, 15) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x107 * var_x108); - IJth(rJacobian, 15, 15) = -0.65600000000000003 * var_x271 - 0.10000000000000001 * var_x272; - IJth(rJacobian, 17, 15) = var_x282 * var_x283; - IJth(rJacobian, 22, 15) = var_x283 * var_x291; - IJth(rJacobian, 0, 16) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x73 * (var_x120 + 3 * var_x110 + 0.00053078901820970701 * var_x47 + 0.154584 * var_x114 - 0.00089999999999999998 * var_x115 - 0.0001161412471825695 * var_x116)); - IJth(rJacobian, 1, 16) = 0.0052842065767700064 * var_x110 - 1.5852619730310017e-6 * var_x115; - IJth(rJacobian, 16, 16) = 2.2208765355510512e-6 * var_x115 + 2.8659485630822583e-7 * var_x116 - 0.00038145775374624855 * var_x114 - 4.3659884291485854e-7 * var_x47 - 0.00082254686501890791 * var_x120 - 0.0074029217851701709 * var_x110; - IJth(rJacobian, 17, 16) = 0.00025430516916416572 * var_x114 - 1.9106323753881723e-7 * var_x116; - IJth(rJacobian, 22, 16) = 9.6295871719563877e-7 * var_x116 - 0.0012816980525873951 * var_x114; - IJth(rJacobian, 0, 17) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x73 * (53.0789018209707 * var_x123 - 2.786 * var_x124 + var_x121 * var_x25 + var_x122 * var_x21 + var_x122 * var_x23)); - IJth(rJacobian, 17, 17) = 0.0022916155659426776 * var_x124 - 0.043659884291485852 * var_x123 + var_x122 * var_x276 - var_x25 * var_x284 - var_x25 * var_x285; - IJth(rJacobian, 22, 17) = 0.22004581682908866 * var_x123 - 0.011549742452351092 * var_x124 + var_x122 * var_x289 + var_x25 * var_x292 + var_x25 * var_x293; + IJth(rJacobian, 24, 1) = 121.85879481761599 * var_x137 - 1.0967291533585437e-5 * var_x149; + IJth(rJacobian, 26, 1) = -var_x304; + IJth(rJacobian, 27, 1) = var_x304 - var_x307; + IJth(rJacobian, 28, 1) = var_x307; + IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * var_x91); + IJth(rJacobian, 2, 2) = -0.001 * ((var_x154) ? (var_x159 + 394539.57232025318 * (44.400001267299999 + var_chaste_interface__membrane__V) * (-var_x159 - 0.00058295799999830145 * var_x153)) : (-var_x157 * var_x158)) - 18.399999999999999 * var_x155; + IJth(rJacobian, 16, 2) = -0.00082254686501890791 * var_x91; + IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * var_x95); + IJth(rJacobian, 3, 3) = -var_x169; + IJth(rJacobian, 16, 3) = -0.00082254686501890791 * var_x95; + IJth(rJacobian, 0, 4) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * var_x98); + IJth(rJacobian, 4, 4) = -var_x174; + IJth(rJacobian, 16, 4) = -0.00082254686501890791 * var_x98; + IJth(rJacobian, 0, 5) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x99 * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L); + IJth(rJacobian, 1, 5) = -var_x146 * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L; + IJth(rJacobian, 5, 5) = -0.001 * var_x209 - 0.001 * var_x216; + IJth(rJacobian, 0, 6) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x99 * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L); + IJth(rJacobian, 1, 6) = -var_x146 * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L; + IJth(rJacobian, 6, 6) = -0.001 * var_x230 - 0.067921999999999996 * var_x220; + IJth(rJacobian, 0, 7) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x101 * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T); + IJth(rJacobian, 1, 7) = -var_x147 * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; + IJth(rJacobian, 7, 7) = -0.67417300000000002 * var_x237 - 0.67417300000000002 * var_x238; + IJth(rJacobian, 0, 8) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x101 * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T); + IJth(rJacobian, 1, 8) = -var_x147 * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T; + IJth(rJacobian, 8, 8) = -0.0096369999999999997 * var_x239 - 0.0096369999999999997 * var_x240; + IJth(rJacobian, 0, 9) = mSetVoltageDerivativeToZero ? 0.0 : (-1.00004e-5 * var_x102 * var_x75); + IJth(rJacobian, 9, 9) = -0.001 * var_x250; + IJth(rJacobian, 17, 9) = -8.2257976689350868e-6 * var_x102; + IJth(rJacobian, 22, 9) = 4.145802025143283e-5 * var_x102; + IJth(rJacobian, 0, 10) = mSetVoltageDerivativeToZero ? 0.0 : (-1.7700708e-5 * var_x105 * var_x75); + IJth(rJacobian, 10, 10) = -0.001 * var_x254; + IJth(rJacobian, 17, 10) = -1.4559661874015103e-5 * var_x105; + IJth(rJacobian, 22, 10) = 7.3380695845036111e-5 * var_x105; + IJth(rJacobian, 0, 11) = mSetVoltageDerivativeToZero ? 0.0 : (-1.2300492e-5 * var_x106 * var_x75); + IJth(rJacobian, 11, 11) = -0.001 * var_x263; + IJth(rJacobian, 17, 11) = -1.0117731132790156e-5 * var_x106; + IJth(rJacobian, 22, 11) = 5.0993364909262378e-5 * var_x106; + IJth(rJacobian, 0, 12) = mSetVoltageDerivativeToZero ? 0.0 : (-3.600144e-5 * var_x107 * var_x75); + IJth(rJacobian, 12, 12) = -0.001 * var_x267; + IJth(rJacobian, 17, 12) = -2.9612871608166312e-5 * var_x107; + IJth(rJacobian, 22, 12) = 0.00014924887290515819 * var_x107; + IJth(rJacobian, 0, 13) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x108 * var_x76); + IJth(rJacobian, 13, 13) = -0.001 * var_x275; + IJth(rJacobian, 17, 13) = -0.00082254686501890791 * var_x108; + IJth(rJacobian, 22, 13) = 0.0041456361996952953 * var_x108; + IJth(rJacobian, 0, 14) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x109 * var_x18); + IJth(rJacobian, 14, 14) = -0.0089999999999999993 * var_x279 - 0.0012999999999999999 * var_x278; + IJth(rJacobian, 17, 14) = -var_x18 * var_x285; + IJth(rJacobian, 22, 14) = var_x18 * var_x291; + IJth(rJacobian, 0, 15) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x109 * var_x110); + IJth(rJacobian, 15, 15) = -0.65600000000000003 * var_x283 - 0.10000000000000001 * var_x282; + IJth(rJacobian, 17, 15) = -var_x110 * var_x285; + IJth(rJacobian, 22, 15) = var_x110 * var_x291; + IJth(rJacobian, 0, 16) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * (var_x125 + 3 * var_x113 + 0.00053078901820970701 * var_x50 + 0.154584 * var_x117 - 0.00089999999999999998 * var_x118 - 0.0001161412471825695 * var_x121)); + IJth(rJacobian, 1, 16) = -1.5852619730310017e-6 * var_x118 + 0.0052842065767700064 * var_x111 * var_x15 * var_x6 * NV_Ith_S(mParameters, 9) * NV_Ith_S(mParameters, 1); + IJth(rJacobian, 16, 16) = -0.00038145775374624855 * var_x117 - 4.3659884291485854e-7 * var_x50 - 0.00082254686501890791 * var_x125 - 0.0074029217851701709 * var_x113 + 2.2208765355510512e-6 * var_x111 * var_x82 * var_x83 * NV_Ith_S(mParameters, 9) * NV_Ith_S(mParameters, 1) + 2.8659485630822583e-7 * var_x114 * var_x119 * var_x120 * var_x39 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + IJth(rJacobian, 17, 16) = 0.00025430516916416572 * var_x117 - 1.9106323753881723e-7 * var_x121; + IJth(rJacobian, 22, 16) = -0.0012816980525873951 * var_x117 + 9.6295871719563877e-7 * var_x114 * var_x119 * var_x120 * var_x39 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + IJth(rJacobian, 0, 17) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * (53.0789018209707 * var_x129 - 2.786 * var_x130 + var_x126 * var_x25 + var_x127 * var_x25 + var_x128 * var_x25)); + IJth(rJacobian, 17, 17) = -0.043659884291485852 * var_x129 - var_x25 * var_x286 - var_x25 * var_x287 - var_x25 * var_x288 + 0.0022916155659426776 * var_x24 * var_x25 * var_x27 * var_x31 * var_x45 * var_x46 * NV_Ith_S(mParameters, 6); + IJth(rJacobian, 22, 17) = 0.22004581682908866 * var_x129 - 0.011549742452351092 * var_x130 + var_x25 * var_x292 + var_x25 * var_x293 + var_x25 * var_x294; IJth(rJacobian, 1, 18) = 0.021419999999999998 + 9 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; - IJth(rJacobian, 18, 18) = -0.47599999999999998 + var_x287; + IJth(rJacobian, 18, 18) = -0.47599999999999998 - var_x290; IJth(rJacobian, 1, 19) = 0.031359999999999999 + 6.2720000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; IJth(rJacobian, 19, 19) = -0.39200000000000002 - 78.400000000000006 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; - IJth(rJacobian, 1, 20) = 0.0010559999999999999 + var_x144; - IJth(rJacobian, 20, 20) = -0.0066 + var_x287; + IJth(rJacobian, 1, 20) = 0.0010559999999999999 + var_x148; + IJth(rJacobian, 20, 20) = -0.0066 - var_x290; IJth(rJacobian, 21, 20) = -5; - IJth(rJacobian, 1, 21) = var_x144; - IJth(rJacobian, 20, 21) = var_x287; + IJth(rJacobian, 1, 21) = var_x148; + IJth(rJacobian, 20, 21) = -var_x290; IJth(rJacobian, 21, 21) = -5.6660000000000004; - IJth(rJacobian, 0, 22) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x73 * (2.786 * var_x133 + 0.10305599999999999 * var_x126 - 53.0789018209707 * var_x129 - 0.10305599999999999 * var_x132 + var_x129 * var_x130 - var_x121 * var_x125 - var_x127 * var_x21 - var_x127 * var_x23 - var_x130 * var_x131)); - IJth(rJacobian, 16, 22) = 0.00025430516916416572 * var_x132 - 0.00025430516916416572 * var_x126; - IJth(rJacobian, 17, 22) = 0.043659884291485852 * var_x129 + 0.00016953677944277714 * var_x126 - 0.0022916155659426776 * var_x133 - 0.00016953677944277714 * var_x132 + var_x125 * var_x284 + var_x125 * var_x285 + var_x131 * var_x286 - var_x127 * var_x276 - var_x129 * var_x286; - IJth(rJacobian, 22, 22) = 0.011549742452351092 * var_x133 + 0.00085446536839159674 * var_x132 - 0.00085446536839159674 * var_x126 - 0.22004581682908866 * var_x129 + var_x129 * var_x294 - var_x125 * var_x292 - var_x125 * var_x293 - var_x127 * var_x289 - var_x131 * var_x294; - IJth(rJacobian, 1, 23) = var_x142; + IJth(rJacobian, 0, 22) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * (-53.0789018209707 * var_x133 - 0.10305599999999999 * var_x136 - var_x126 * var_x131 - var_x127 * var_x131 - var_x128 * var_x131 - 6 * var_x134 * var_x45 + 0.10305599999999999 * var_x114 * var_x39 * var_x41 * var_x42 + 6 * var_x132 * var_x29 * var_x31 * var_x45 * NV_Ith_S(mParameters, 6) + 2.786 * var_x132 * var_x27 * var_x31 * var_x45 * var_x46 * NV_Ith_S(mParameters, 6))); + IJth(rJacobian, 16, 22) = 0.00025430516916416572 * var_x136 - 0.00025430516916416572 * var_x284; + IJth(rJacobian, 17, 22) = 0.043659884291485852 * var_x133 + 0.00016953677944277714 * var_x284 - 0.00016953677944277714 * var_x136 + var_x131 * var_x286 + var_x131 * var_x287 + var_x131 * var_x288 + var_x134 * var_x289 - var_x133 * var_x289 - 0.0022916155659426776 * var_x132 * var_x47; + IJth(rJacobian, 22, 22) = -0.00085446536839159674 * var_x284 - 0.22004581682908866 * var_x133 - var_x131 * var_x292 - var_x131 * var_x293 - var_x131 * var_x294 - 0.024873817198171774 * var_x134 * var_x45 + 0.024873817198171774 * var_x132 * var_x29 * var_x31 * var_x45 * NV_Ith_S(mParameters, 6) + 0.00085446536839159674 * var_x114 * var_x135 * var_x41 * var_x42 * var_chaste_interface__cleft_space_ion_concentrations__K_c + 0.011549742452351092 * var_x132 * var_x27 * var_x31 * var_x45 * var_x46 * NV_Ith_S(mParameters, 6); + IJth(rJacobian, 1, 23) = var_x145; IJth(rJacobian, 23, 23) = -14.98 - var_x295 + 14.880000000000001 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse; IJth(rJacobian, 24, 23) = 0.011085915847820609; IJth(rJacobian, 25, 23) = 0.47999999999999998 - 0.47999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse; - IJth(rJacobian, 1, 24) = 1.7754934097947219e-10 * var_x137 + 0.00078910818213098765 * var_x136; + IJth(rJacobian, 1, 24) = 1.7754934097947219e-10 * var_x149 + 0.00078910818213098765 * var_x137; IJth(rJacobian, 23, 24) = 0.099999999999999992; - IJth(rJacobian, 24, 24) = -0.011085915847820609 - 2.6321499680605046e-9 * var_x137 - 0.011698444302491135 * var_x136; + IJth(rJacobian, 24, 24) = -0.011085915847820609 - 2.6321499680605046e-9 * var_x149 - 0.011698444302491135 * var_x137; IJth(rJacobian, 23, 25) = 12.4 + 14.880000000000001 * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; IJth(rJacobian, 25, 25) = -0.40000000000000002 - 0.47999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; - IJth(rJacobian, 26, 26) = -var_x306 - var_x308; - IJth(rJacobian, 27, 26) = var_x306 + var_x308; - IJth(rJacobian, 1, 27) = var_x146 * var_x147 - var_x146 * var_x148; - IJth(rJacobian, 23, 27) = var_x148 * var_x296 - var_x147 * var_x296; - IJth(rJacobian, 27, 27) = -0.033960000000000004 - var_x311; - IJth(rJacobian, 28, 27) = 0.033960000000000004 + var_x311; + IJth(rJacobian, 26, 26) = -var_x306; + IJth(rJacobian, 27, 26) = var_x306; + IJth(rJacobian, 1, 27) = -0.0017614021922566689 * var_x150 * var_x151 + 0.0017614021922566689 * var_x142 * var_x150 * var_chaste_interface__Ca_handling_by_the_SR__F2 * NV_Ith_S(mParameters, 0); + IJth(rJacobian, 23, 27) = var_x151 * var_x296 - var_x143 * var_x296 * var_chaste_interface__Ca_handling_by_the_SR__F2; + IJth(rJacobian, 27, 27) = -var_x308; + IJth(rJacobian, 28, 27) = var_x308; IJth(rJacobian, 26, 28) = 0.00081499999999999997; IJth(rJacobian, 28, 28) = -0.00081499999999999997; } @@ -1049,7 +1048,7 @@ const double var_membrane__T = 308; // kelvin const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)))); // picoA + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)))); // picoA const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1) * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * NV_Ith_S(mParameters, 9) / (1 + (pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1)) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA const double var_Na_Ca_ion_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_ion_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 @@ -1057,7 +1056,7 @@ const double var_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 8) * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA const double var_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 - const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__CT == 0) && (var_environment__PM == 1)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA const double var_inward_rectifier__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * var_chaste_interface__membrane__V * NV_Ith_S(mParameters, 5) / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009--sympy_1_13.cpp new file mode 100644 index 00000000..ec8867ce --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009--sympy_1_13.cpp @@ -0,0 +1,1322 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: aslanidi_atrial_model_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: AnalyticCvode) +//! on (date omitted as unimportant) +//! +//! + +#include "aslanidi_atrial_model_2009.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + + + + boost::shared_ptr Cellaslanidi_atrial_model_2009FromCellMLCvode::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_membrane__Cm_converted = 0.001 * NV_Ith_S(mParameters, 4); // uF + const double var_chaste_interface__membrane__stim_amplitude_converted = -3.9999999999999998e-6 * HeartConfig::Instance()->GetCapacitance() / var_membrane__Cm_converted; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = 0.5; // millisecond + const double var_chaste_interface__membrane__stim_period_converted = 500; // millisecond + const double var_chaste_interface__membrane__stim_start_converted = 10; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration_converted, + var_chaste_interface__membrane__stim_period_converted, + var_chaste_interface__membrane__stim_start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Cellaslanidi_atrial_model_2009FromCellMLCvode::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Cellaslanidi_atrial_model_2009FromCellMLCvode::Cellaslanidi_atrial_model_2009FromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 29, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + mUseAnalyticJacobian = true; + mHasAnalyticJacobian = true; + + NV_Ith_S(this->mParameters, 0) = 200; // (var_Ca_handling_by_the_SR__alpha_rel) [picoA_per_millimolar] + NV_Ith_S(this->mParameters, 1) = 2.5; // (var_cleft_space_ion_concentrations__Ca_c) [millimolar] + NV_Ith_S(this->mParameters, 2) = 140; // (var_cleft_space_ion_concentrations__Na_c) [millimolar] + NV_Ith_S(this->mParameters, 3) = 0.0040000000000000001; // (var_L_type_Ca_channel__g_Ca_L) [nanoS] + NV_Ith_S(this->mParameters, 4) = 5.0000000000000002e-5; // (var_membrane__Cm) [nanoF] + NV_Ith_S(this->mParameters, 5) = 1.3999999999999999e-6; // (var_sodium_current__P_Na) [nanolitre_per_second] + NV_Ith_S(this->mParameters, 6) = 0.0050800000000000003; // (var_inward_rectifier__g_K1) [nanoS] + NV_Ith_S(this->mParameters, 7) = 0.0035000000000000001; // (var_delayed_rectifier_K_current__g_Kr) [nanoS] + NV_Ith_S(this->mParameters, 8) = 0.0025000000000000001; // (var_delayed_rectifier_K_current__g_Ks) [nanoS] + NV_Ith_S(this->mParameters, 9) = 2.0000000000000002e-5; // (var_Na_Ca_ion_exchanger_current__k_NaCa) [picoA_per_millimolar_4] + } + + Cellaslanidi_atrial_model_2009FromCellMLCvode::~Cellaslanidi_atrial_model_2009FromCellMLCvode() + { + } + + + void Cellaslanidi_atrial_model_2009FromCellMLCvode::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 29; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellaslanidi_atrial_model_2009FromCellMLCvode::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 5.0 + + const double var_Ca_independent_transient_outward_K_current__g_to = 0.050001999999999998; // nanoS + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_T_type_Ca_channel__E_Ca_T = 38; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.0060000000000000001; // nanoS + const double var_background_currents__g_B_Ca = 3.1000000000000001e-5; // nanoS + const double var_background_currents__g_B_Na = 6.3999999999999997e-5; // nanoS + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__Cm_converted = 0.001 * NV_Ith_S(mParameters, 4); // uF + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(NV_Ith_S(mParameters, 1) / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)))); // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1) * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * NV_Ith_S(mParameters, 9) / (1 + (pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1)) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_Na_Ca_ion_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_ion_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 8) * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA + const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * var_chaste_interface__membrane__V * NV_Ith_S(mParameters, 5) / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA + const double var_sodium_potassium_pump__k_NaK_K = 1; // millimolar + const double var_sodium_potassium_pump__k_NaK_Na = 11; // millimolar + const double var_sodium_potassium_pump__i_p = 1.6000000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) + pow(var_sodium_potassium_pump__k_NaK_Na, 1.5)) * (var_chaste_interface__cleft_space_ion_concentrations__K_c + var_sodium_potassium_pump__k_NaK_K)); // picoA + const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_ion_exchanger_current__i_NaCa_converted + var_delayed_rectifier_K_current__i_Kr_converted + var_delayed_rectifier_K_current__i_Ks_converted + var_inward_rectifier__i_K1_converted + var_sodium_current__i_Na_converted) * var_membrane__Cm_converted + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Ca_independent_transient_outward_K_current__i_sus + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Ca_independent_transient_outward_K_current__i_to + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Ca + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Na + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump_current__i_CaP + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_p) / var_membrane__Cm_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellaslanidi_atrial_model_2009FromCellMLCvode::EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__intracellular_Ca_buffering__O_C = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 0.029108 + double var_chaste_interface__intracellular_Ca_buffering__O_TC = NV_Ith_S(rY, 19); + // Units: dimensionless; Initial value: 0.014071 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgC = NV_Ith_S(rY, 20); + // Units: dimensionless; Initial value: 0.214036 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgMg = NV_Ith_S(rY, 21); + // Units: dimensionless; Initial value: 0.693565 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 5.0 + double var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 0.726776 + double var_chaste_interface__Ca_handling_by_the_SR__Ca_up = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.730866 + double var_chaste_interface__Ca_handling_by_the_SR__O_Calse = NV_Ith_S(rY, 25); + // Units: dimensionless; Initial value: 0.465921 + double var_chaste_interface__Ca_handling_by_the_SR__F1 = NV_Ith_S(rY, 26); + // Units: dimensionless; Initial value: 0.288039 + double var_chaste_interface__Ca_handling_by_the_SR__F2 = NV_Ith_S(rY, 27); + // Units: dimensionless; Initial value: 0.002262 + double var_chaste_interface__Ca_handling_by_the_SR__F3 = NV_Ith_S(rY, 28); + // Units: dimensionless; Initial value: 0.612697 + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_Ca_handling_by_the_SR__I_up_max = 2.7999999999999998; // picoA + const double var_Ca_handling_by_the_SR__O_Calse_orig_deriv = -400 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse + 480 * (1 - var_chaste_interface__Ca_handling_by_the_SR__O_Calse) * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; // 1 / second + const double var_Ca_handling_by_the_SR__Vol_rel = 4.3999999999999997e-8; // nanolitre + const double var_Ca_handling_by_the_SR__Vol_up = 3.9690000000000001e-7; // nanolitre + const double var_Ca_handling_by_the_SR__k_F3 = 0.81499999999999995; // per_second + const double var_Ca_handling_by_the_SR__k_cyca = 0.00029999999999999997; // millimolar + const double var_Ca_handling_by_the_SR__k_rel = 0.00029999999999999997; // millimolar + const double var_Ca_handling_by_the_SR__k_srca = 0.5; // millimolar + const double var_Ca_handling_by_the_SR__k_xcs = 0.40000000000000002; // dimensionless + const double var_Ca_handling_by_the_SR__tau_tr = 0.01; // second + const double var_Ca_independent_transient_outward_K_current__g_to = 0.050001999999999998; // nanoS + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__O_Calse = 0.001 * var_Ca_handling_by_the_SR__O_Calse_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_T_type_Ca_channel__E_Ca_T = 38; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.0060000000000000001; // nanoS + const double var_background_currents__g_B_Ca = 3.1000000000000001e-5; // nanoS + const double var_background_currents__g_B_Na = 6.3999999999999997e-5; // nanoS + const double var_cleft_space_ion_concentrations__Vol_c = 2.5000000000000002e-6; // nanolitre + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_intracellular_Ca_buffering__Mg_i = 2.5; // millimolar + const double var_intracellular_Ca_buffering__O_TMgMg_orig_deriv = -666 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg + 2000 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_TMgC - var_chaste_interface__intracellular_Ca_buffering__O_TMgMg) * var_intracellular_Ca_buffering__Mg_i; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgMg = 0.001 * var_intracellular_Ca_buffering__O_TMgMg_orig_deriv; // 1 / millisecond + const double var_Ca_handling_by_the_SR__i_rel = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel) * NV_Ith_S(mParameters, 0) / pow((0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2), 2); // picoA + const double var_Ca_handling_by_the_SR__i_up = (var_chaste_interface__intracellular_ion_concentrations__Ca_i / var_Ca_handling_by_the_SR__k_cyca - pow(var_Ca_handling_by_the_SR__k_xcs, 2) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up / var_Ca_handling_by_the_SR__k_srca) * var_Ca_handling_by_the_SR__I_up_max / ((var_Ca_handling_by_the_SR__k_cyca + var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_Ca_handling_by_the_SR__k_cyca + (var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_Ca_handling_by_the_SR__k_srca) * var_Ca_handling_by_the_SR__k_xcs / var_Ca_handling_by_the_SR__k_srca); // picoA + const double var_Ca_handling_by_the_SR__r_inact = 33.960000000000001 + 339.60000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / pow((var_Ca_handling_by_the_SR__k_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 4); // per_second + const double var_Ca_handling_by_the_SR__F3_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F2 * var_Ca_handling_by_the_SR__r_inact - var_chaste_interface__Ca_handling_by_the_SR__F3 * var_Ca_handling_by_the_SR__k_F3; // 1 / second + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F3 = 0.001 * var_Ca_handling_by_the_SR__F3_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOCdt = -476 * var_chaste_interface__intracellular_Ca_buffering__O_C + 200000 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_C) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; // per_second + const double var_intracellular_Ca_buffering__O_C_orig_deriv = var_intracellular_Ca_buffering__dOCdt; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_C = 0.001 * var_intracellular_Ca_buffering__O_C_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOTCdt = -392 * var_chaste_interface__intracellular_Ca_buffering__O_TC + 78400 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_TC) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; // per_second + const double var_intracellular_Ca_buffering__O_TC_orig_deriv = var_intracellular_Ca_buffering__dOTCdt; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TC = 0.001 * var_intracellular_Ca_buffering__O_TC_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOTMgCdt = -6.5999999999999996 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC + 200000 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_TMgC - var_chaste_interface__intracellular_Ca_buffering__O_TMgMg) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; // per_second + const double var_intracellular_Ca_buffering__O_TMgC_orig_deriv = var_intracellular_Ca_buffering__dOTMgCdt; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgC = 0.001 * var_intracellular_Ca_buffering__O_TMgC_orig_deriv; // 1 / millisecond + const double var_intracellular_ion_concentrations__Vol_Ca = 5.8839999999999999e-6; // nanolitre + const double var_intracellular_ion_concentrations__Vol_i = 1.26e-5; // nanolitre + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_Ca_handling_by_the_SR__i_tr = 2 * (-var_chaste_interface__Ca_handling_by_the_SR__Ca_rel + var_chaste_interface__Ca_handling_by_the_SR__Ca_up) * var_Ca_handling_by_the_SR__Vol_rel * var_membrane__F / var_Ca_handling_by_the_SR__tau_tr; // picoA + const double var_Ca_handling_by_the_SR__Ca_rel_orig_deriv = -31 * var_Ca_handling_by_the_SR__O_Calse_orig_deriv + 0.5 * (-var_Ca_handling_by_the_SR__i_rel + var_Ca_handling_by_the_SR__i_tr) / (var_Ca_handling_by_the_SR__Vol_rel * var_membrane__F); // millimolar / second + const double var_Ca_handling_by_the_SR__Ca_up_orig_deriv = 0.5 * (-var_Ca_handling_by_the_SR__i_tr + var_Ca_handling_by_the_SR__i_up) / (var_Ca_handling_by_the_SR__Vol_up * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_rel = 0.001 * var_Ca_handling_by_the_SR__Ca_rel_orig_deriv; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_up = 0.001 * var_Ca_handling_by_the_SR__Ca_up_orig_deriv; // millimolar / millisecond + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(NV_Ith_S(mParameters, 1) / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_Ca_handling_by_the_SR__r_act = 240 * exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 203.80000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / pow((var_Ca_handling_by_the_SR__k_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 4); // per_second + const double var_Ca_handling_by_the_SR__F1_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F3 * var_Ca_handling_by_the_SR__k_F3 - var_chaste_interface__Ca_handling_by_the_SR__F1 * var_Ca_handling_by_the_SR__r_act; // 1 / second + const double var_Ca_handling_by_the_SR__F2_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F1 * var_Ca_handling_by_the_SR__r_act - var_chaste_interface__Ca_handling_by_the_SR__F2 * var_Ca_handling_by_the_SR__r_inact; // 1 / second + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double var_Ca_independent_transient_outward_K_current_r_gate__alpha_r = 386.60000000000002 * exp(0.083333333333333329 * var_chaste_interface__membrane__V); // per_second + const double var_Ca_independent_transient_outward_K_current_r_gate__beta_r = 8.0109999999999992 * exp(-0.1388888888888889 * var_chaste_interface__membrane__V); // per_second + const double var_Ca_independent_transient_outward_K_current_r_gate__r_infinity = 1 / (1 + exp(-2.6628794603230959 - 0.17752529735487307 * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_r_gate__tau_r = 0.00040000000000000002 + 1 / (var_Ca_independent_transient_outward_K_current_r_gate__alpha_r + var_Ca_independent_transient_outward_K_current_r_gate__beta_r); // second + const double var_Ca_independent_transient_outward_K_current_r_gate__r_orig_deriv = (-var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + var_Ca_independent_transient_outward_K_current_r_gate__r_infinity) / var_Ca_independent_transient_outward_K_current_r_gate__tau_r; // 1 / second + const double var_Ca_independent_transient_outward_K_current_s1_gate__s1_infinity = 1 / (1 + exp(4.0070821529745047 + 0.14164305949008499 * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1 = 0.020400000000000001 + 0.54659999999999997 / (1 + exp(327.99999999999994 + 10 * var_chaste_interface__membrane__V)); // second + const double var_Ca_independent_transient_outward_K_current_s1_gate__s1_orig_deriv = (-var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 + var_Ca_independent_transient_outward_K_current_s1_gate__s1_infinity) / var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1; // 1 / second + const double var_Ca_independent_transient_outward_K_current_s2_gate__s2_infinity = 1 / (1 + exp(4.0070821529745047 + 0.14164305949008499 * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2 = 5.75 / (1 + exp(327.99999999999994 + 10 * var_chaste_interface__membrane__V)) + 0.45000000000000001 / (1 + exp(0.96921975662133131 - 0.071581961345740866 * var_chaste_interface__membrane__V)); // second + const double var_Ca_independent_transient_outward_K_current_s2_gate__s2_orig_deriv = (-var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 + var_Ca_independent_transient_outward_K_current_s2_gate__s2_infinity) / var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2; // 1 / second + const double var_Ca_independent_transient_outward_K_current_s3_gate__s3_infinity = 0.39975990396158467 + 0.60024009603841544 / (1 + exp(1.8506208911614319 + 0.036523009495982472 * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3 = 0.5 + 7.5 / (1 + exp(46 + 2 * var_chaste_interface__membrane__V)); // second + const double var_Ca_independent_transient_outward_K_current_s3_gate__s3_orig_deriv = (-var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 + var_Ca_independent_transient_outward_K_current_s3_gate__s3_infinity) / var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3; // 1 / second + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F1 = 0.001 * var_Ca_handling_by_the_SR__F1_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F2 = 0.001 * var_Ca_handling_by_the_SR__F2_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_r_gate__r = 0.001 * var_Ca_independent_transient_outward_K_current_r_gate__r_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s1_gate__s1 = 0.001 * var_Ca_independent_transient_outward_K_current_s1_gate__s1_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s2_gate__s2 = 0.001 * var_Ca_independent_transient_outward_K_current_s2_gate__s2_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s3_gate__s3 = 0.001 * var_Ca_independent_transient_outward_K_current_s3_gate__s3_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)))); // picoA + const double var_L_type_Ca_channel_d_L_gate__E10 = 10 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_channel_d_L_gate__alpha_d_L = (((var_chaste_interface__membrane__V >= -10.000000480800001) && (var_chaste_interface__membrane__V <= -9.9999995191999993)) ? (2.4040000000391526e-5 / (-1 + exp(1.0000000000162864e-7)) + 1039933.4442576389 * (10.000000480800001 + var_chaste_interface__membrane__V) * (-2.4040000000391526e-5 / (-1 + exp(1.0000000000162864e-7)) - 2.4039999999697637e-5 / (-1 + exp(-9.9999999998742257e-8)))) : (-50 * (10 + var_chaste_interface__membrane__V) / (-1 + exp(-2.0798668885191347 - 0.20798668885191349 * var_chaste_interface__membrane__V)))) + (((var_chaste_interface__membrane__V >= -45.000000249999999) && (var_chaste_interface__membrane__V <= -44.999999750000001)) ? (4.1799999996561256e-6 / (-1 + exp(9.9999999991773334e-8)) + 1999999.9999424887 * (45.000000249999999 + var_chaste_interface__membrane__V) * (-4.1800000005842713e-6 / (-1 + exp(-1.000000000139778e-7)) - 4.1799999996561256e-6 / (-1 + exp(9.9999999991773334e-8)))) : (-16.719999999999999 * (45 + var_chaste_interface__membrane__V) / (-1 + exp(-18 - 0.40000000000000002 * var_chaste_interface__membrane__V)))); // per_second + const double var_L_type_Ca_channel_d_L_gate__beta_d_L = (((var_chaste_interface__membrane__V >= -5.0000002500000003) && (var_chaste_interface__membrane__V <= -4.9999997499999997)) ? (-1.1200000000011203e-6 / (-1 + exp(-1.0000000000010001e-7)) + 1999999.9999979998 * (5.0000002500000003 + var_chaste_interface__membrane__V) * (1.1200000000011203e-6 / (-1 + exp(1.0000000000010001e-7)) + 1.1200000000011203e-6 / (-1 + exp(-1.0000000000010001e-7)))) : (4.4800000000000004 * (5 + var_chaste_interface__membrane__V) / (-1 + exp(2 + 0.40000000000000002 * var_chaste_interface__membrane__V)))); // per_second + const double var_L_type_Ca_channel_d_L_gate__d_L_infinity = 1 / (1 + exp(-0.14393939393939395 - 0.15151515151515152 * var_L_type_Ca_channel_d_L_gate__E10)); // dimensionless + const double var_L_type_Ca_channel_d_L_gate__tau_d_L = 1 / (var_L_type_Ca_channel_d_L_gate__alpha_d_L + var_L_type_Ca_channel_d_L_gate__beta_d_L); // second + const double var_L_type_Ca_channel_d_L_gate__d_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L + var_L_type_Ca_channel_d_L_gate__d_L_infinity) / var_L_type_Ca_channel_d_L_gate__tau_d_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_L_gate__d_L = 0.001 * var_L_type_Ca_channel_d_L_gate__d_L_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel_f_L_gate__E0_f_L = 18 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_channel_f_L_gate__alpha_f_L = (((var_chaste_interface__membrane__V >= -18.000000400000001) && (var_chaste_interface__membrane__V <= -17.999999599999999)) ? (-3.3960000000976542e-6 / (-1 + exp(-1.0000000000287557e-7)) + 1249999.9999640554 * (18.000000400000001 + var_chaste_interface__membrane__V) * (3.3960000000976542e-6 / (-1 + exp(1.0000000000287557e-7)) + 3.3960000000976542e-6 / (-1 + exp(-1.0000000000287557e-7)))) : (8.4900000000000002 * (18 + var_chaste_interface__membrane__V) / (-1 + exp(4.5 + 0.25 * var_chaste_interface__membrane__V)))); // per_second + const double var_L_type_Ca_channel_f_L_gate__beta_f_L = 67.921999999999997 / (1 + exp(-0.25 * var_L_type_Ca_channel_f_L_gate__E0_f_L)); // per_second + const double var_L_type_Ca_channel_f_L_gate__f_L_infinity = var_L_type_Ca_channel_f_L_gate__alpha_f_L / (var_L_type_Ca_channel_f_L_gate__alpha_f_L + var_L_type_Ca_channel_f_L_gate__beta_f_L); // dimensionless + const double var_L_type_Ca_channel_f_L_gate__tau_f_L = 1 / (var_L_type_Ca_channel_f_L_gate__alpha_f_L + var_L_type_Ca_channel_f_L_gate__beta_f_L); // second + const double var_L_type_Ca_channel_f_L_gate__f_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel_f_L_gate__f_L_infinity) / var_L_type_Ca_channel_f_L_gate__tau_f_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_L_gate__f_L = 0.001 * var_L_type_Ca_channel_f_L_gate__f_L_orig_deriv; // 1 / millisecond + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1) * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * NV_Ith_S(mParameters, 9) / (1 + (pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1)) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA + const double var_T_type_Ca_channel_d_T_gate__E0_d_T = 23.300000000000001 + var_chaste_interface__membrane__V; // millivolt + const double var_T_type_Ca_channel_d_T_gate__alpha_d_T = 674.173 * exp(0.033333333333333333 * var_T_type_Ca_channel_d_T_gate__E0_d_T); // per_second + const double var_T_type_Ca_channel_d_T_gate__beta_d_T = 674.173 * exp(-0.033333333333333333 * var_T_type_Ca_channel_d_T_gate__E0_d_T); // per_second + const double var_T_type_Ca_channel_d_T_gate__d_T_infinity = 1 / (1 + exp(0.049180327868852458 - 0.16393442622950821 * var_T_type_Ca_channel_d_T_gate__E0_d_T)); // dimensionless + const double var_T_type_Ca_channel_d_T_gate__tau_d_T = 1 / (var_T_type_Ca_channel_d_T_gate__alpha_d_T + var_T_type_Ca_channel_d_T_gate__beta_d_T); // second + const double var_T_type_Ca_channel_d_T_gate__d_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T + var_T_type_Ca_channel_d_T_gate__d_T_infinity) / var_T_type_Ca_channel_d_T_gate__tau_d_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_d_T_gate__d_T = 0.001 * var_T_type_Ca_channel_d_T_gate__d_T_orig_deriv; // 1 / millisecond + const double var_T_type_Ca_channel_f_T_gate__E0_f_T = 75 + var_chaste_interface__membrane__V; // millivolt + const double var_T_type_Ca_channel_f_T_gate__alpha_f_T = 9.6370000000000005 * exp(-0.012004801920768308 * var_T_type_Ca_channel_f_T_gate__E0_f_T); // per_second + const double var_T_type_Ca_channel_f_T_gate__beta_f_T = 9.6370000000000005 * exp(0.065019505851755519 * var_T_type_Ca_channel_f_T_gate__E0_f_T); // per_second + const double var_T_type_Ca_channel_f_T_gate__f_T_infinity = var_T_type_Ca_channel_f_T_gate__alpha_f_T / (var_T_type_Ca_channel_f_T_gate__alpha_f_T + var_T_type_Ca_channel_f_T_gate__beta_f_T); // dimensionless + const double var_T_type_Ca_channel_f_T_gate__tau_f_T = 1 / (var_T_type_Ca_channel_f_T_gate__alpha_f_T + var_T_type_Ca_channel_f_T_gate__beta_f_T); // second + const double var_T_type_Ca_channel_f_T_gate__f_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T + var_T_type_Ca_channel_f_T_gate__f_T_infinity) / var_T_type_Ca_channel_f_T_gate__tau_f_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_f_T_gate__f_T = 0.001 * var_T_type_Ca_channel_f_T_gate__f_T_orig_deriv; // 1 / millisecond + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 8) * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_delayed_rectifier_K_current_pa_gate__alpha_p_a = 9 * exp(0.03941508020968823 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pa_gate__beta_p_a = 1.3 * exp(-0.076769537847382163 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pa_gate__p_a_infinity = 1 / (1 + exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifier_K_current_pa_gate__tau_p_a = 1 / (var_delayed_rectifier_K_current_pa_gate__alpha_p_a + var_delayed_rectifier_K_current_pa_gate__beta_p_a); // second + const double var_delayed_rectifier_K_current_pa_gate__p_a_orig_deriv = (-var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a + var_delayed_rectifier_K_current_pa_gate__p_a_infinity) / var_delayed_rectifier_K_current_pa_gate__tau_p_a; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifier_K_current_pa_gate__p_a = 0.001 * var_delayed_rectifier_K_current_pa_gate__p_a_orig_deriv; // 1 / millisecond + const double var_delayed_rectifier_K_current_pi_gate__alpha_p_i = 100 * exp(-0.018299935950224173 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pi_gate__beta_p_i = 656 * exp(0.009420009985210585 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pi_gate__p_i_infinity = 1 / (1 + exp(2.539728728905752 + 0.05358970648917756 * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifier_K_current_pi_gate__tau_p_i = 1 / (var_delayed_rectifier_K_current_pi_gate__alpha_p_i + var_delayed_rectifier_K_current_pi_gate__beta_p_i); // second + const double var_delayed_rectifier_K_current_pi_gate__p_i_orig_deriv = (-var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i + var_delayed_rectifier_K_current_pi_gate__p_i_infinity) / var_delayed_rectifier_K_current_pi_gate__tau_p_i; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifier_K_current_pi_gate__p_i = 0.001 * var_delayed_rectifier_K_current_pi_gate__p_i_orig_deriv; // 1 / millisecond + const double var_delayed_rectifier_K_current_z_gate__alpha_z = 1.6599999999999999 * exp(0.014398433450440593 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_z_gate__beta_z = 0.29999999999999999 * exp(-0.045816915605241454 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_z_gate__tau_z = 0.059999999999999998 + 1 / (var_delayed_rectifier_K_current_z_gate__alpha_z + var_delayed_rectifier_K_current_z_gate__beta_z); // second + const double var_delayed_rectifier_K_current_z_gate__z_infinity = 1 / (1 + exp(0.065217391304347824 - 0.072463768115942032 * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifier_K_current_z_gate__z_orig_deriv = (-var_chaste_interface__delayed_rectifier_K_current_z_gate__z + var_delayed_rectifier_K_current_z_gate__z_infinity) / var_delayed_rectifier_K_current_z_gate__tau_z; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifier_K_current_z_gate__z = 0.001 * var_delayed_rectifier_K_current_z_gate__z_orig_deriv; // 1 / millisecond + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA + const double var_intracellular_ion_concentrations__Ca_i_orig_deriv = -0.044999999999999998 * var_intracellular_Ca_buffering__dOCdt - 0.080000000000000002 * var_intracellular_Ca_buffering__dOTCdt - 0.16 * var_intracellular_Ca_buffering__dOTMgCdt + 0.5 * (-var_Ca_handling_by_the_SR__i_up - var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_background_currents__i_B_Ca - var_sarcolemmal_calcium_pump_current__i_CaP + 2 * var_Na_Ca_ion_exchanger_current__i_NaCa + var_Ca_handling_by_the_SR__i_rel) / (var_intracellular_ion_concentrations__Vol_Ca * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = 0.001 * var_intracellular_ion_concentrations__Ca_i_orig_deriv; // millimolar / millisecond + const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_sodium_current_h1_gate__alpha_h = 44.899999999999999 * exp(-12.010771992818672 - 0.17953321364452424 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h1_gate__beta_h = 1491 / (1 + 323.30000000000001 * exp(-7.333333333333333 - 0.077519379844961239 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_h1_gate__h_infinity = var_sodium_current_h1_gate__alpha_h / (var_sodium_current_h1_gate__alpha_h + var_sodium_current_h1_gate__beta_h); // dimensionless + const double var_sodium_current_h1_gate__tau_h1 = 0.00014999999999999999 + 0.029999999999999999 / (1 + exp(6.666666666666667 + 0.16666666666666666 * var_chaste_interface__membrane__V)); // second + const double var_sodium_current_h1_gate__h1_orig_deriv = (-var_chaste_interface__sodium_current_h1_gate__h1 + var_sodium_current_h1_gate__h_infinity) / var_sodium_current_h1_gate__tau_h1; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h1_gate__h1 = 0.001 * var_sodium_current_h1_gate__h1_orig_deriv; // 1 / millisecond + const double var_sodium_current_h2_gate__tau_h2 = 0.00044999999999999999 + 0.12 / (1 + exp(30 + 0.5 * var_chaste_interface__membrane__V)); // second + const double var_sodium_current_h2_gate__h2_orig_deriv = (-var_chaste_interface__sodium_current_h2_gate__h2 + var_sodium_current_h1_gate__h_infinity) / var_sodium_current_h2_gate__tau_h2; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h2_gate__h2 = 0.001 * var_sodium_current_h2_gate__h2_orig_deriv; // 1 / millisecond + const double var_sodium_current_m_gate__E0_m = 44.399999999999999 + var_chaste_interface__membrane__V; // millivolt + const double var_sodium_current_m_gate__alpha_m = (((var_chaste_interface__membrane__V >= -44.400001267299999) && (var_chaste_interface__membrane__V <= -44.399998732699999)) ? (0.00058295799999830145 / (-1 + exp(9.9999999999708629e-8)) + 394539.57232025318 * (44.400001267299999 + var_chaste_interface__membrane__V) * (-0.00058295799999830145 / (-1 + exp(9.9999999999708629e-8)) - 0.00058295799999830145 / (-1 + exp(-9.9999999999708629e-8)))) : (-460 * (44.399999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-3.5035114021936398 - 0.078907914463820727 * var_chaste_interface__membrane__V)))); // per_second + const double var_sodium_current_m_gate__beta_m = 18400 * exp(-0.078907914463820727 * var_sodium_current_m_gate__E0_m); // per_second + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * var_chaste_interface__membrane__V * NV_Ith_S(mParameters, 5) / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current_m_gate__m_orig_deriv = (1 - var_chaste_interface__sodium_current_m_gate__m) * var_sodium_current_m_gate__alpha_m - var_sodium_current_m_gate__beta_m * var_chaste_interface__sodium_current_m_gate__m; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_m_gate__m = 0.001 * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA + const double var_sodium_potassium_pump__k_NaK_K = 1; // millimolar + const double var_sodium_potassium_pump__k_NaK_Na = 11; // millimolar + const double var_sodium_potassium_pump__i_p = 1.6000000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) + pow(var_sodium_potassium_pump__k_NaK_Na, 1.5)) * (var_chaste_interface__cleft_space_ion_concentrations__K_c + var_sodium_potassium_pump__k_NaK_K)); // picoA + const double var_cleft_space_ion_concentrations__K_c_orig_deriv = (-2 * var_sodium_potassium_pump__i_p + var_Ca_independent_transient_outward_K_current__i_sus + var_Ca_independent_transient_outward_K_current__i_to + var_delayed_rectifier_K_current__i_Kr + var_delayed_rectifier_K_current__i_Ks + var_inward_rectifier__i_K1) / (var_cleft_space_ion_concentrations__Vol_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_ion_concentrations__K_c = 0.001 * var_cleft_space_ion_concentrations__K_c_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__K_i_orig_deriv = (-var_Ca_independent_transient_outward_K_current__i_sus - var_Ca_independent_transient_outward_K_current__i_to - var_delayed_rectifier_K_current__i_Kr - var_delayed_rectifier_K_current__i_Ks - var_inward_rectifier__i_K1 + 2 * var_sodium_potassium_pump__i_p) / (var_intracellular_ion_concentrations__Vol_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = 0.001 * var_intracellular_ion_concentrations__K_i_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__Na_i_orig_deriv = (-var_background_currents__i_B_Na - var_sodium_current__i_Na - 3 * var_Na_Ca_ion_exchanger_current__i_NaCa - 3 * var_sodium_potassium_pump__i_p) / (var_intracellular_ion_concentrations__Vol_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = 0.001 * var_intracellular_ion_concentrations__Na_i_orig_deriv; // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_membrane__Cm_converted = 0.001 * NV_Ith_S(mParameters, 4); // uF + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = 1000000 * var_membrane__Cm_converted * var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_membrane__V_orig_deriv = -1 * (var_Ca_independent_transient_outward_K_current__i_sus + var_Ca_independent_transient_outward_K_current__i_to + var_L_type_Ca_channel__i_Ca_L + var_Na_Ca_ion_exchanger_current__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_background_currents__i_B_Ca + var_background_currents__i_B_Na + var_delayed_rectifier_K_current__i_Kr + var_delayed_rectifier_K_current__i_Ks + var_inward_rectifier__i_K1 + var_membrane__i_Stim + var_sarcolemmal_calcium_pump_current__i_CaP + var_sodium_current__i_Na + var_sodium_potassium_pump__i_p) / NV_Ith_S(mParameters, 4); // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_sodium_current_m_gate__m; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_sodium_current_h1_gate__h1; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_sodium_current_h2_gate__h2; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_L_type_Ca_channel_d_L_gate__d_L; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_L_type_Ca_channel_f_L_gate__f_L; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_T_type_Ca_channel_d_T_gate__d_T; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_T_type_Ca_channel_f_T_gate__f_T; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_r_gate__r; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s1_gate__s1; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s2_gate__s2; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s3_gate__s3; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_delayed_rectifier_K_current_z_gate__z; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_delayed_rectifier_K_current_pa_gate__p_a; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_delayed_rectifier_K_current_pi_gate__p_i; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_intracellular_Ca_buffering__O_C; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TC; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgC; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgMg; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_cleft_space_ion_concentrations__K_c; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_rel; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_up; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Ca_handling_by_the_SR__O_Calse; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Ca_handling_by_the_SR__F1; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Ca_handling_by_the_SR__F2; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Ca_handling_by_the_SR__F3; + } + + void Cellaslanidi_atrial_model_2009FromCellMLCvode::EvaluateAnalyticJacobian(double var_chaste_interface__environment__time_converted, N_Vector rY, N_Vector rDY, CHASTE_CVODE_DENSE_MATRIX rJacobian, N_Vector rTmp1, N_Vector rTmp2, N_Vector rTmp3) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__intracellular_Ca_buffering__O_C = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 0.029108 + double var_chaste_interface__intracellular_Ca_buffering__O_TC = NV_Ith_S(rY, 19); + // Units: dimensionless; Initial value: 0.014071 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgC = NV_Ith_S(rY, 20); + // Units: dimensionless; Initial value: 0.214036 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgMg = NV_Ith_S(rY, 21); + // Units: dimensionless; Initial value: 0.693565 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 5.0 + double var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 0.726776 + double var_chaste_interface__Ca_handling_by_the_SR__Ca_up = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.730866 + double var_chaste_interface__Ca_handling_by_the_SR__O_Calse = NV_Ith_S(rY, 25); + // Units: dimensionless; Initial value: 0.465921 + double var_chaste_interface__Ca_handling_by_the_SR__F1 = NV_Ith_S(rY, 26); + // Units: dimensionless; Initial value: 0.288039 + double var_chaste_interface__Ca_handling_by_the_SR__F2 = NV_Ith_S(rY, 27); + // Units: dimensionless; Initial value: 0.002262 + const double var_x0 = NV_Ith_S(mParameters, 8) * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; + const double var_x1 = var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; + const double var_x2 = 0.083333333333333329 * var_chaste_interface__membrane__V; + const double var_x3 = exp(1.9166666666666667 - var_x2); + const double var_x4 = 1 + var_x3; + const double var_x5 = (1 / var_x4 + var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L) * NV_Ith_S(mParameters, 3); + const double var_x6 = exp(0.016955889611951675 * var_chaste_interface__membrane__V); + const double var_x7 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1); + const double var_x8 = var_x6 * var_x7; + const double var_x9 = exp(-0.02072386508127427 * var_chaste_interface__membrane__V); + const double var_x10 = pow(NV_Ith_S(mParameters, 2), 3); + const double var_x11 = var_x10 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x12 = var_x11 * var_x9; + const double var_x13 = 0.016955889611951675 * var_x8 + 0.02072386508127427 * var_x12; + const double var_x14 = 1 + 0.00029999999999999997 * var_x11 + 0.00029999999999999997 * var_x7; + const double var_x15 = 1 / var_x14; + const double var_x16 = var_x15 * NV_Ith_S(mParameters, 9); + const double var_x17 = var_x13 * var_x16; + const double var_x18 = NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; + const double var_x19 = var_x18 * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x20 = 0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6); + const double var_x21 = 0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3); + const double var_x22 = var_x20 * var_x21; + const double var_x23 = var_x22 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x24 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3); + const double var_x25 = 1 / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x26 = log(var_x25 * var_chaste_interface__cleft_space_ion_concentrations__K_c); + const double var_x27 = exp(0.18895643383558949 + 0.052487898287663745 * var_chaste_interface__membrane__V - 1.393 * var_x26); + const double var_x28 = 1 + var_x27; + const double var_x29 = 1 / var_x28; + const double var_x30 = 0.58999999999999997 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x31 = pow(var_x30, (-3)); + const double var_x32 = var_x31 * NV_Ith_S(mParameters, 6); + const double var_x33 = var_x29 * var_x32; + const double var_x34 = var_x24 * var_x33; + const double var_x35 = (-50 + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); + const double var_x36 = var_x3 * var_x35 / pow(var_x4, 2); + const double var_x37 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); + const double var_x38 = 1 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x39 = 1 / var_x38; + const double var_x40 = pow((1 + 0.66666666666666663 * var_x37), (-2)); + const double var_x41 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5); + const double var_x42 = 1 / (36.4828726939094 + var_x41); + const double var_x43 = var_x41 * var_x42 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x44 = var_x37 * var_x39 * var_x40 * var_x43; + const double var_x45 = -26.53945091048535 * var_x26 + var_chaste_interface__membrane__V; + const double var_x46 = pow(var_x28, (-2)); + const double var_x47 = var_x27 * var_x32 * var_x45 * var_x46; + const double var_x48 = var_x24 * var_x47; + const double var_x49 = 1 / (-1 + exp(9.9999999999999995e-8)); + const double var_x50 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x51 = var_x50 * NV_Ith_S(mParameters, 2); + const double var_x52 = 1 * log(var_x51); + const double var_x53 = exp(9.9999999999999995e-8 - var_x52); + const double var_x54 = var_x49 * (-1 + var_x53); + const double var_x55 = 0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1; + const double var_x56 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x57 = NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5); + const double var_x58 = var_x56 * var_x57; + const double var_x59 = var_x55 * var_x58; + const double var_x60 = 1817.803245542646 * var_x59; + const double var_x61 = 1 / (-1 + exp(-9.9999999999999995e-8)); + const double var_x62 = exp(-9.9999999999999995e-8 - var_x52); + const double var_x63 = var_x61 * (-1 + var_x62); + const double var_x64 = (var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6); + const double var_x65 = 0.037679754693225945 * var_chaste_interface__membrane__V; + const double var_x66 = exp(var_x65); + const double var_x67 = -1 + var_x66; + const double var_x68 = 1 / var_x67; + const double var_x69 = exp(var_x65 - var_x52); + const double var_x70 = -1 + var_x69; + const double var_x71 = var_x68 * var_x70; + const double var_x72 = 136.98876074519373 * var_x59 * var_chaste_interface__membrane__V; + const double var_x73 = var_x68 * var_x69; + const double var_x74 = ((var_x64) ? (var_x54 * var_x60 + var_x60 * var_x63) : (var_x72 * var_x73 + 3635.606491085292 * var_x59 * var_x71 - var_x66 * var_x70 * var_x72 / pow(var_x67, 2))); + const double var_x75 = 1 / NV_Ith_S(mParameters, 4); + const double var_x76 = 0.001 * var_x75; + const double var_x77 = 0.00020000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x78 = 1 / var_x77; + const double var_x79 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x80 = pow(var_x77, (-2)); + const double var_x81 = var_x10 * var_x16 * var_x9; + const double var_x82 = pow(var_x14, (-2)); + const double var_x83 = var_x8 - var_x12; + const double var_x84 = var_x82 * var_x83 * NV_Ith_S(mParameters, 9); + const double var_x85 = var_x10 * var_x84; + const double var_x86 = 2.6539450910485349e-6 + var_chaste_interface__membrane__V; + const double var_x87 = var_x55 * var_x57 * pow(var_chaste_interface__sodium_current_m_gate__m, 2); + const double var_x88 = 0.028946099999999999 * var_x87; + const double var_x89 = var_x63 * var_x88; + const double var_x90 = var_x71 * var_chaste_interface__membrane__V; + const double var_x91 = ((var_x64) ? (-var_x89 + 188398.77346612973 * var_x86 * (var_x89 + var_x54 * var_x88)) : (10906.819473255875 * var_x87 * var_x90)); + const double var_x92 = 0.0061269244999999995 * var_x58; + const double var_x93 = var_x63 * var_x92; + const double var_x94 = var_x58 * var_x90; + const double var_x95 = ((var_x64) ? (-var_x93 + 188398.77346612973 * var_x86 * (var_x93 + var_x54 * var_x92)) : (2308.6101218391605 * var_x94)); + const double var_x96 = 0.0035217754999999997 * var_x58; + const double var_x97 = var_x63 * var_x96; + const double var_x98 = ((var_x64) ? (-var_x97 + 188398.77346612973 * var_x86 * (var_x97 + var_x54 * var_x96)) : (1326.9963692461315 * var_x94)); + const double var_x99 = 0.0018 * var_x35 * var_x75; + const double var_x100 = -38 + var_chaste_interface__membrane__V; + const double var_x101 = 6.0000000000000002e-6 * var_x100 * var_x75; + const double var_x102 = var_x22 * var_x45; + const double var_x103 = var_x45 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x104 = var_x103 * var_x20; + const double var_x105 = var_x104 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 2); + const double var_x106 = var_x104 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 2); + const double var_x107 = var_x103 * var_x21 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 5); + const double var_x108 = var_x45 * NV_Ith_S(mParameters, 8); + const double var_x109 = var_x45 * var_x76; + const double var_x110 = NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x111 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x112 = var_x111 * NV_Ith_S(mParameters, 1); + const double var_x113 = var_x112 * var_x16 * var_x6; + const double var_x114 = 1 / (1.5 + var_x37); + const double var_x115 = var_x114 * var_x39; + const double var_x116 = var_x115 * var_x42; + const double var_x117 = var_x116 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 0.5) * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x118 = var_x112 * var_x84; + const double var_x119 = pow((1 + 0.027410122234342148 * var_x41), (-2)); + const double var_x120 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x121 = var_x115 * var_x119 * var_x120 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x122 = var_x51 * var_x55 * var_x56 * NV_Ith_S(mParameters, 5); + const double var_x123 = 0.0096486999999999996 * var_x122; + const double var_x124 = var_x123 * var_x61 * var_x62; + const double var_x125 = ((var_x64) ? (-var_x124 + 188398.77346612973 * var_x86 * (var_x124 + var_x123 * var_x49 * var_x53)) : (3635.606491085292 * var_x122 * var_x73 * var_chaste_interface__membrane__V)); + const double var_x126 = 26.53945091048535 * var_x0; + const double var_x127 = 0.26540512488521772 * var_x23; + const double var_x128 = 26.53945091048535 * var_x19; + const double var_x129 = var_x25 * var_x34; + const double var_x130 = var_x25 * var_x48; + const double var_x131 = 1 / var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x132 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); + const double var_x133 = var_x132 * var_x33; + const double var_x134 = var_x24 * var_x29 * NV_Ith_S(mParameters, 6) / pow(var_x30, 4); + const double var_x135 = pow(var_x38, (-2)); + const double var_x136 = var_x114 * var_x135 * var_x43; + const double var_x137 = 1 / (1.3999999999999999 + 0.80000000000000004 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i); + const double var_x138 = pow((0.00041999999999999996 + 0.00023999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_chaste_interface__intracellular_ion_concentrations__Ca_i), (-2)); + const double var_x139 = 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.32000000000000006 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up; + const double var_x140 = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2); + const double var_x141 = 0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x142 = pow(var_x141, (-2)); + const double var_x143 = var_x142 * NV_Ith_S(mParameters, 0); + const double var_x144 = var_x140 * var_x143; + const double var_x145 = 0.00088070109612833447 * var_x144; + const double var_x146 = 0.001585261973031002 * var_x35; + const double var_x147 = 5.2842065767700066e-6 * var_x100; + const double var_x148 = 32 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x149 = var_x138 * var_x139; + const double var_x150 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + const double var_x151 = var_x140 * NV_Ith_S(mParameters, 0) / pow(var_x141, 3); + const double var_x152 = 1 / (-1 + exp(9.9999999999708629e-8)); + const double var_x153 = 1 / (-1 + exp(-9.9999999999708629e-8)); + const double var_x154 = (var_chaste_interface__membrane__V >= -44.400001267299999) && (var_chaste_interface__membrane__V <= -44.399998732699999); + const double var_x155 = exp(-3.5035114021936398 - 0.078907914463820727 * var_chaste_interface__membrane__V); + const double var_x156 = -1 + var_x155; + const double var_x157 = 460 / var_x156; + const double var_x158 = 44.399999999999999 + var_chaste_interface__membrane__V; + const double var_x159 = 0.00058295799999830145 * var_x152; + const double var_x160 = exp(-7.333333333333333 - 0.077519379844961239 * var_chaste_interface__membrane__V); + const double var_x161 = 1 / (1 + 323.30000000000001 * var_x160); + const double var_x162 = exp(-12.010771992818672 - 0.17953321364452424 * var_chaste_interface__membrane__V); + const double var_x163 = 1 / (1491 * var_x161 + 44.899999999999999 * var_x162); + const double var_x164 = 8.0610412926391373 * var_x162; + const double var_x165 = -var_x163 * var_x164 + 2.019719479407183e-5 * var_x162 * (var_x164 - 0.35750508923240704 * var_x160 / pow((0.0030931023816888337 + var_x160), 2)) / pow((var_x161 + 0.030114017437961098 * var_x162), 2); + const double var_x166 = exp(6.666666666666667 + 0.16666666666666666 * var_chaste_interface__membrane__V); + const double var_x167 = 1 + var_x166; + const double var_x168 = 1 / var_x167; + const double var_x169 = 0.001 / (0.00014999999999999999 + 0.029999999999999999 * var_x168); + const double var_x170 = -44.899999999999999 * var_x162 * var_x163; + const double var_x171 = exp(30 + 0.5 * var_chaste_interface__membrane__V); + const double var_x172 = 1 + var_x171; + const double var_x173 = 1 / var_x172; + const double var_x174 = 0.001 / (0.00044999999999999999 + 0.12 * var_x173); + const double var_x175 = exp(-1.6590909090909092 - 0.15151515151515152 * var_chaste_interface__membrane__V); + const double var_x176 = 1 + var_x175; + const double var_x177 = 1 / (-1 + exp(1.0000000000010001e-7)); + const double var_x178 = 1 / (-1 + exp(-1.0000000000010001e-7)); + const double var_x179 = (var_chaste_interface__membrane__V >= -5.0000002500000003) && (var_chaste_interface__membrane__V <= -4.9999997499999997); + const double var_x180 = 0.40000000000000002 * var_chaste_interface__membrane__V; + const double var_x181 = exp(2 + var_x180); + const double var_x182 = -1 + var_x181; + const double var_x183 = 1 / var_x182; + const double var_x184 = 5 + var_chaste_interface__membrane__V; + const double var_x185 = 1 / (-1 + exp(-1.000000000139778e-7)); + const double var_x186 = 1 / (-1 + exp(9.9999999991773334e-8)); + const double var_x187 = 8.3600000009281459 * var_x185 + 8.359999999071853 * var_x186; + const double var_x188 = 1 / (-1 + exp(-9.9999999998742257e-8)); + const double var_x189 = 1 / (-1 + exp(1.0000000000162864e-7)); + const double var_x190 = 24.999999999639201 * var_x188 + 25.000000000360799 * var_x189; + const double var_x191 = var_chaste_interface__membrane__V >= -45.000000249999999; + const double var_x192 = var_chaste_interface__membrane__V >= -10.000000480800001; + const double var_x193 = var_chaste_interface__membrane__V <= -44.999999750000001; + const double var_x194 = var_chaste_interface__membrane__V <= -9.9999995191999993; + const double var_x195 = (var_x191) && (var_x192) && (var_x193) && (var_x194); + const double var_x196 = exp(-2.0798668885191347 - 0.20798668885191349 * var_chaste_interface__membrane__V); + const double var_x197 = -1 + var_x196; + const double var_x198 = 50 / var_x197; + const double var_x199 = 10 + var_chaste_interface__membrane__V; + const double var_x200 = var_x198 + 10.399334442595674 * var_x196 * var_x199 / pow(var_x197, 2); + const double var_x201 = (var_x191) && (var_x193); + const double var_x202 = exp(-18 - var_x180); + const double var_x203 = -1 + var_x202; + const double var_x204 = 16.719999999999999 / var_x203; + const double var_x205 = 45 + var_chaste_interface__membrane__V; + const double var_x206 = var_x204 + 6.6879999999999997 * var_x202 * var_x205 / pow(var_x203, 2); + const double var_x207 = (var_x192) && (var_x194); + const double var_x208 = 1.1200000000011203e-6 * var_x178; + const double var_x209 = ((var_x179) ? (-var_x208 + 1999999.9999979998 * (5.0000002500000003 + var_chaste_interface__membrane__V) * (var_x208 + 1.1200000000011203e-6 * var_x177)) : (4.4800000000000004 * var_x183 * var_x184)); + const double var_x210 = 4.1799999996561256e-6 * var_x186; + const double var_x211 = var_x210 + 1999999.9999424887 * (45.000000249999999 + var_chaste_interface__membrane__V) * (-var_x210 - 4.1800000005842713e-6 * var_x185); + const double var_x212 = 2.4040000000391526e-5 * var_x189; + const double var_x213 = var_x212 + 1039933.4442576389 * (10.000000480800001 + var_chaste_interface__membrane__V) * (-var_x212 - 2.4039999999697637e-5 * var_x188); + const double var_x214 = var_x198 * var_x199; + const double var_x215 = var_x204 * var_x205; + const double var_x216 = ((var_x195) ? (var_x211 + var_x213) : ((var_x201) ? (var_x211 - var_x214) : ((var_x207) ? (var_x213 - var_x215) : (-var_x214 - var_x215)))); + const double var_x217 = 4.5 + 0.25 * var_chaste_interface__membrane__V; + const double var_x218 = exp(-var_x217); + const double var_x219 = 1 + var_x218; + const double var_x220 = 1 / var_x219; + const double var_x221 = 67.921999999999997 * var_x220; + const double var_x222 = 1 / (-1 + exp(-1.0000000000287557e-7)); + const double var_x223 = 3.3960000000976542e-6 * var_x222; + const double var_x224 = 1 / (-1 + exp(1.0000000000287557e-7)); + const double var_x225 = (var_chaste_interface__membrane__V >= -18.000000400000001) && (var_chaste_interface__membrane__V <= -17.999999599999999); + const double var_x226 = 18 + var_chaste_interface__membrane__V; + const double var_x227 = exp(var_x217); + const double var_x228 = -1 + var_x227; + const double var_x229 = 1 / var_x228; + const double var_x230 = ((var_x225) ? (-var_x223 + 1249999.9999640554 * (18.000000400000001 + var_chaste_interface__membrane__V) * (var_x223 + 3.3960000000976542e-6 * var_x224)) : (8.4900000000000002 * var_x226 * var_x229)); + const double var_x231 = 1 / (var_x221 + var_x230); + const double var_x232 = ((var_x225) ? (4.2450000000000001 * var_x222 + 4.2450000000000001 * var_x224) : (8.4900000000000002 * var_x229 - 2.1225000000000001 * var_x226 * var_x227 / pow(var_x228, 2))); + const double var_x233 = 16.980499999999999 * var_x218 / pow(var_x219, 2); + const double var_x234 = exp(-3.7704918032786887 - 0.16393442622950821 * var_chaste_interface__membrane__V); + const double var_x235 = 1 + var_x234; + const double var_x236 = 0.77666666666666673 + 0.033333333333333333 * var_chaste_interface__membrane__V; + const double var_x237 = exp(-var_x236); + const double var_x238 = exp(var_x236); + const double var_x239 = exp(4.876462938881664 + 0.065019505851755519 * var_chaste_interface__membrane__V); + const double var_x240 = exp(-0.9003601440576231 - 0.012004801920768308 * var_chaste_interface__membrane__V); + const double var_x241 = 9.6370000000000005 * var_x239 + 9.6370000000000005 * var_x240; + const double var_x242 = 1 / var_x241; + const double var_x243 = 0.11569027611044419 * var_x240; + const double var_x244 = var_x243 - 0.62659297789336799 * var_x239; + const double var_x245 = exp(-2.6628794603230959 - 0.17752529735487307 * var_chaste_interface__membrane__V); + const double var_x246 = 1 + var_x245; + const double var_x247 = exp(-0.1388888888888889 * var_chaste_interface__membrane__V); + const double var_x248 = exp(var_x2); + const double var_x249 = 0.00040000000000000002 + 1 / (8.0109999999999992 * var_x247 + 386.60000000000002 * var_x248); + const double var_x250 = 1 / var_x249; + const double var_x251 = exp(327.99999999999994 + 10 * var_chaste_interface__membrane__V); + const double var_x252 = 1 + var_x251; + const double var_x253 = 1 / var_x252; + const double var_x254 = 1 / (0.020400000000000001 + 0.54659999999999997 * var_x253); + const double var_x255 = exp(4.0070821529745047 + 0.14164305949008499 * var_chaste_interface__membrane__V); + const double var_x256 = 1 + var_x255; + const double var_x257 = 0.000141643059490085 * var_x255 / pow(var_x256, 2); + const double var_x258 = -1 / var_x256; + const double var_x259 = var_x251 / pow(var_x252, 2); + const double var_x260 = exp(0.96921975662133131 - 0.071581961345740866 * var_chaste_interface__membrane__V); + const double var_x261 = 1 + var_x260; + const double var_x262 = 1 / var_x261; + const double var_x263 = 1 / (5.75 * var_x253 + 0.45000000000000001 * var_x262); + const double var_x264 = exp(46 + 2 * var_chaste_interface__membrane__V); + const double var_x265 = 1 + var_x264; + const double var_x266 = 1 / var_x265; + const double var_x267 = 1 / (0.5 + 7.5 * var_x266); + const double var_x268 = exp(1.8506208911614319 + 0.036523009495982472 * var_chaste_interface__membrane__V); + const double var_x269 = 1 + var_x268; + const double var_x270 = exp(0.065217391304347824 - 0.072463768115942032 * var_chaste_interface__membrane__V); + const double var_x271 = 1 + var_x270; + const double var_x272 = exp(-0.045816915605241454 * var_chaste_interface__membrane__V); + const double var_x273 = exp(0.014398433450440593 * var_chaste_interface__membrane__V); + const double var_x274 = 0.059999999999999998 + 1 / (0.29999999999999999 * var_x272 + 1.6599999999999999 * var_x273); + const double var_x275 = 1 / var_x274; + const double var_x276 = exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V); + const double var_x277 = 1 + var_x276; + const double var_x278 = exp(-0.076769537847382163 * var_chaste_interface__membrane__V); + const double var_x279 = exp(0.03941508020968823 * var_chaste_interface__membrane__V); + const double var_x280 = exp(2.539728728905752 + 0.05358970648917756 * var_chaste_interface__membrane__V); + const double var_x281 = 1 + var_x280; + const double var_x282 = exp(-0.018299935950224173 * var_chaste_interface__membrane__V); + const double var_x283 = exp(0.009420009985210585 * var_chaste_interface__membrane__V); + const double var_x284 = var_x116 * var_x41; + const double var_x285 = 0.00082254686501890791 * var_x45; + const double var_x286 = 0.021829942145742926 * var_x0; + const double var_x287 = 0.021829942145742926 * var_x19; + const double var_x288 = 0.00021830815343428756 * var_x23; + const double var_x289 = 0.0049352811901134472 * var_x45; + const double var_x290 = 200 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x291 = 0.0041456361996952953 * var_x45; + const double var_x292 = 0.11002290841454433 * var_x0; + const double var_x293 = 0.0011002730933088092 * var_x23; + const double var_x294 = 0.11002290841454433 * var_x19; + const double var_x295 = 0.11777375567316183 * var_x144; + const double var_x296 = 0.23554751134632365 * var_x150; + const double var_x297 = exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V); + const double var_x298 = 0.019200000000000002 * var_x297 * var_chaste_interface__Ca_handling_by_the_SR__F1; + const double var_x299 = 0.00029999999999999997 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x300 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4); + const double var_x301 = var_x300 / pow(var_x299, 5); + const double var_x302 = pow(var_x299, (-4)); + const double var_x303 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); + const double var_x304 = 0.001 * (-815.20000000000005 * var_x301 + 815.20000000000005 * var_x302 * var_x303) * var_chaste_interface__Ca_handling_by_the_SR__F1; + const double var_x305 = var_x300 * var_x302; + const double var_x306 = 0.20380000000000001 * var_x305 + 0.23999999999999999 * var_x297; + const double var_x307 = 0.001 * (-1358.4000000000001 * var_x301 + 1358.4000000000001 * var_x302 * var_x303) * var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x308 = 0.033960000000000004 + 0.33960000000000001 * var_x305; + + // Matrix entries + IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * (0.0014400000000000001 + var_x0 + var_x17 + var_x19 + var_x74 + 2 * var_x34 + 0.0060000000000000001 * var_x1 + 1.8 * var_x5 + 0.0011450666666666667 * var_x44 + 0.14999999999999999 * var_x36 + 0.0100004 * var_x23 - 0.10497579657532749 * var_x48)); + IJth(rJacobian, 1, 0) = -1.7614021922566692e-8 - 0.00013210516441925017 * var_x36 - 0.001585261973031002 * var_x5 - 5.2842065767700066e-6 * var_x1 + 0.0017614021922566689 * var_x13 * var_x15 * NV_Ith_S(mParameters, 9); + IJth(rJacobian, 2, 0) = 0.001 * (1 - var_chaste_interface__sodium_current_m_gate__m) * ((var_x154) ? (-230 * var_x152 - 230 * var_x153) : (-var_x157 - 36.297640653357533 * var_x155 * var_x158 / pow(var_x156, 2))) + 1.4519056261343013 * var_x155 * var_chaste_interface__sodium_current_m_gate__m; + IJth(rJacobian, 3, 0) = var_x165 * var_x169 + 0.0055555555555555558 * var_x166 * (-var_x170 - var_chaste_interface__sodium_current_h1_gate__h1) / (pow(var_x167, 2) * pow((0.0050000000000000001 + var_x168), 2)); + IJth(rJacobian, 4, 0) = var_x165 * var_x174 + 0.0041666666666666666 * var_x171 * (-var_x170 - var_chaste_interface__sodium_current_h2_gate__h2) / (pow(var_x172, 2) * pow((0.0037499999999999999 + var_x173), 2)); + IJth(rJacobian, 5, 0) = 0.001 * (-var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L + 1 / var_x176) * (1 * ((var_x179) ? (2.2400000000000002 * var_x177 + 2.2400000000000002 * var_x178) : (4.4800000000000004 * var_x183 - 1.7920000000000003 * var_x181 * var_x184 / pow(var_x182, 2))) + 1 * ((var_x195) ? (-var_x187 - var_x190) : ((var_x201) ? (-var_x187 - var_x200) : ((var_x207) ? (-var_x190 - var_x206) : (-var_x200 - var_x206))))) + 0.00015151515151515152 * var_x175 * (1 * var_x209 + 1 * var_x216) / pow(var_x176, 2); + IJth(rJacobian, 6, 0) = 0.001 * (var_x221 + 1 * var_x230) * (var_x231 * var_x232 + 0.00021675996343522999 * var_x230 * (-var_x232 - var_x233) / pow((var_x220 + 0.014722770236447691 * var_x230), 2)) + 0.001 * (var_x233 + 1 * var_x232) * (-var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_x230 * var_x231); + IJth(rJacobian, 7, 0) = 0.001 * (-var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T + 1 / var_x235) * (22.472433333333335 * var_x238 - 22.472433333333335 * var_x237) + 0.0001639344262295082 * var_x234 * (674.173 * var_x237 + 674.173 * var_x238) / pow(var_x235, 2); + IJth(rJacobian, 8, 0) = 0.001 * var_x241 * (-var_x242 * var_x243 + 0.10376673238559717 * var_x240 * var_x244 / pow((var_x239 + var_x240), 2)) - 0.001 * var_x244 * (-var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T + 9.6370000000000005 * var_x240 * var_x242); + IJth(rJacobian, 9, 0) = 0.00017752529735487306 * var_x245 * var_x250 / pow(var_x246, 2) - 6.6907730760079843e-9 * (-var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + 1 / var_x246) * (1.1126388888888887 * var_x247 - 32.216666666666669 * var_x248) / (pow(var_x249, 2) * pow((var_x248 + 0.020721676151060523 * var_x247), 2)); + IJth(rJacobian, 10, 0) = -var_x254 * var_x257 + 0.018294914013904134 * var_x259 * (-var_x258 - var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1) / pow((0.037321624588364438 + var_x253), 2); + IJth(rJacobian, 11, 0) = -var_x257 * var_x263 + 3.0245746691871456e-5 * (-var_x258 - var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2) * (57.5 * var_x259 - 0.032211882605583393 * var_x260 / pow(var_x261, 2)) / pow((var_x253 + 0.078260869565217397 * var_x262), 2); + IJth(rJacobian, 12, 0) = -2.1922574727480476e-5 * var_x267 * var_x268 / pow(var_x269, 2) + 0.00026666666666666668 * var_x264 * (0.39975990396158467 - var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 + 0.60024009603841544 / var_x269) / (pow(var_x265, 2) * pow((0.066666666666666666 + var_x266), 2)); + IJth(rJacobian, 13, 0) = 7.2463768115942027e-5 * var_x270 * var_x275 / pow(var_x271, 2) - 0.00036289737262302222 * (-var_chaste_interface__delayed_rectifier_K_current_z_gate__z + 1 / var_x271) * (0.013745074681572435 * var_x272 - 0.023901399527731383 * var_x273) / (pow(var_x274, 2) * pow((var_x273 + 0.18072289156626506 * var_x272), 2)); + IJth(rJacobian, 14, 0) = 0.001 * (-var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a + 1 / var_x277) * (0.35473572188719404 * var_x279 - 0.099800399201596807 * var_x278) + 0.00013513513513513514 * var_x276 * (9 * var_x279 + 1.3 * var_x278) / pow(var_x277, 2); + IJth(rJacobian, 15, 0) = 0.001 * (-var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i + 1 / var_x281) * (6.1795265502981431 * var_x283 - 1.8299935950224173 * var_x282) - 5.3589706489177562e-5 * var_x280 * (100 * var_x282 + 656 * var_x283) / pow(var_x281, 2); + IJth(rJacobian, 16, 0) = -1.6450937300378158e-8 - 0.0024676405950567236 * var_x17 - 2.8256129907129523e-6 * var_x44 - 0.00082254686501890791 * var_x74; + IJth(rJacobian, 17, 0) = -1.151565611026471e-6 - 8.2257976689350868e-6 * var_x23 - 0.00082254686501890791 * var_x0 - 0.00082254686501890791 * var_x19 - 0.0016450937300378158 * var_x34 + 8.6347512375898239e-5 * var_x24 * var_x27 * var_x31 * var_x45 * var_x46 * NV_Ith_S(mParameters, 6) + 1.8837419938086349e-6 * var_x37 * var_x39 * var_x40 * var_x41 * var_x42 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + IJth(rJacobian, 22, 0) = 5.8038906795734136e-6 + 0.0041456361996952953 * var_x0 + 0.0041456361996952953 * var_x19 + 0.0082912723993905906 * var_x34 + 4.145802025143283e-5 * var_x23 - 9.4940596487955185e-6 * var_x44 - 0.00043519146237452704 * var_x48; + IJth(rJacobian, 26, 0) = -var_x298; + IJth(rJacobian, 27, 0) = var_x298; + IJth(rJacobian, 0, 1) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * (-var_x81 + 0.0095090000000000001 * var_x78 + 0.0002653945091048535 * var_x79 - 0.00029999999999999997 * var_x85 - 0.0095090000000000001 * var_x80 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + IJth(rJacobian, 1, 1) = -47.271999999999998 - var_x145 + 6.2720000000000002 * var_chaste_interface__intracellular_Ca_buffering__O_TC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg + 9 * var_chaste_interface__intracellular_Ca_buffering__O_C - 8.3745867230843319e-6 * var_x78 - 5.2842065767700058e-7 * var_x85 - 8.2198768971977874 * var_x137 - 0.0017614021922566689 * var_x81 - 2.3373323507508574e-7 * var_x79 + 8.3745867230843319e-6 * var_x80 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + 7.3978892074780085e-7 * var_x138 * var_x139; + IJth(rJacobian, 16, 1) = 0.0024676405950567236 * var_x81 + 7.4029217851701709e-7 * var_x85; + IJth(rJacobian, 18, 1) = 200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_C; + IJth(rJacobian, 19, 1) = 78.400000000000006 - 78.400000000000006 * var_chaste_interface__intracellular_Ca_buffering__O_TC; + IJth(rJacobian, 20, 1) = 200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg; + IJth(rJacobian, 23, 1) = var_x295; + IJth(rJacobian, 24, 1) = 121.85879481761599 * var_x137 - 1.0967291533585437e-5 * var_x149; + IJth(rJacobian, 26, 1) = -var_x304; + IJth(rJacobian, 27, 1) = var_x304 - var_x307; + IJth(rJacobian, 28, 1) = var_x307; + IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * var_x91); + IJth(rJacobian, 2, 2) = -0.001 * ((var_x154) ? (var_x159 + 394539.57232025318 * (44.400001267299999 + var_chaste_interface__membrane__V) * (-var_x159 - 0.00058295799999830145 * var_x153)) : (-var_x157 * var_x158)) - 18.399999999999999 * var_x155; + IJth(rJacobian, 16, 2) = -0.00082254686501890791 * var_x91; + IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * var_x95); + IJth(rJacobian, 3, 3) = -var_x169; + IJth(rJacobian, 16, 3) = -0.00082254686501890791 * var_x95; + IJth(rJacobian, 0, 4) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * var_x98); + IJth(rJacobian, 4, 4) = -var_x174; + IJth(rJacobian, 16, 4) = -0.00082254686501890791 * var_x98; + IJth(rJacobian, 0, 5) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x99 * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L); + IJth(rJacobian, 1, 5) = -var_x146 * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L; + IJth(rJacobian, 5, 5) = -0.001 * var_x209 - 0.001 * var_x216; + IJth(rJacobian, 0, 6) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x99 * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L); + IJth(rJacobian, 1, 6) = -var_x146 * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L; + IJth(rJacobian, 6, 6) = -0.001 * var_x230 - 0.067921999999999996 * var_x220; + IJth(rJacobian, 0, 7) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x101 * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T); + IJth(rJacobian, 1, 7) = -var_x147 * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; + IJth(rJacobian, 7, 7) = -0.67417300000000002 * var_x237 - 0.67417300000000002 * var_x238; + IJth(rJacobian, 0, 8) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x101 * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T); + IJth(rJacobian, 1, 8) = -var_x147 * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T; + IJth(rJacobian, 8, 8) = -0.0096369999999999997 * var_x239 - 0.0096369999999999997 * var_x240; + IJth(rJacobian, 0, 9) = mSetVoltageDerivativeToZero ? 0.0 : (-1.00004e-5 * var_x102 * var_x75); + IJth(rJacobian, 9, 9) = -0.001 * var_x250; + IJth(rJacobian, 17, 9) = -8.2257976689350868e-6 * var_x102; + IJth(rJacobian, 22, 9) = 4.145802025143283e-5 * var_x102; + IJth(rJacobian, 0, 10) = mSetVoltageDerivativeToZero ? 0.0 : (-1.7700708e-5 * var_x105 * var_x75); + IJth(rJacobian, 10, 10) = -0.001 * var_x254; + IJth(rJacobian, 17, 10) = -1.4559661874015103e-5 * var_x105; + IJth(rJacobian, 22, 10) = 7.3380695845036111e-5 * var_x105; + IJth(rJacobian, 0, 11) = mSetVoltageDerivativeToZero ? 0.0 : (-1.2300492e-5 * var_x106 * var_x75); + IJth(rJacobian, 11, 11) = -0.001 * var_x263; + IJth(rJacobian, 17, 11) = -1.0117731132790156e-5 * var_x106; + IJth(rJacobian, 22, 11) = 5.0993364909262378e-5 * var_x106; + IJth(rJacobian, 0, 12) = mSetVoltageDerivativeToZero ? 0.0 : (-3.600144e-5 * var_x107 * var_x75); + IJth(rJacobian, 12, 12) = -0.001 * var_x267; + IJth(rJacobian, 17, 12) = -2.9612871608166312e-5 * var_x107; + IJth(rJacobian, 22, 12) = 0.00014924887290515819 * var_x107; + IJth(rJacobian, 0, 13) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x108 * var_x76); + IJth(rJacobian, 13, 13) = -0.001 * var_x275; + IJth(rJacobian, 17, 13) = -0.00082254686501890791 * var_x108; + IJth(rJacobian, 22, 13) = 0.0041456361996952953 * var_x108; + IJth(rJacobian, 0, 14) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x109 * var_x18); + IJth(rJacobian, 14, 14) = -0.0089999999999999993 * var_x279 - 0.0012999999999999999 * var_x278; + IJth(rJacobian, 17, 14) = -var_x18 * var_x285; + IJth(rJacobian, 22, 14) = var_x18 * var_x291; + IJth(rJacobian, 0, 15) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x109 * var_x110); + IJth(rJacobian, 15, 15) = -0.65600000000000003 * var_x283 - 0.10000000000000001 * var_x282; + IJth(rJacobian, 17, 15) = -var_x110 * var_x285; + IJth(rJacobian, 22, 15) = var_x110 * var_x291; + IJth(rJacobian, 0, 16) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * (var_x125 + 3 * var_x113 + 0.00053078901820970701 * var_x50 + 0.154584 * var_x117 - 0.00089999999999999998 * var_x118 - 0.0001161412471825695 * var_x121)); + IJth(rJacobian, 1, 16) = -1.5852619730310017e-6 * var_x118 + 0.0052842065767700064 * var_x111 * var_x15 * var_x6 * NV_Ith_S(mParameters, 9) * NV_Ith_S(mParameters, 1); + IJth(rJacobian, 16, 16) = -0.00038145775374624855 * var_x117 - 4.3659884291485854e-7 * var_x50 - 0.00082254686501890791 * var_x125 - 0.0074029217851701709 * var_x113 + 2.2208765355510512e-6 * var_x111 * var_x82 * var_x83 * NV_Ith_S(mParameters, 9) * NV_Ith_S(mParameters, 1) + 2.8659485630822583e-7 * var_x114 * var_x119 * var_x120 * var_x39 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + IJth(rJacobian, 17, 16) = 0.00025430516916416572 * var_x117 - 1.9106323753881723e-7 * var_x121; + IJth(rJacobian, 22, 16) = -0.0012816980525873951 * var_x117 + 9.6295871719563877e-7 * var_x114 * var_x119 * var_x120 * var_x39 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + IJth(rJacobian, 0, 17) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * (53.0789018209707 * var_x129 - 2.786 * var_x130 + var_x126 * var_x25 + var_x127 * var_x25 + var_x128 * var_x25)); + IJth(rJacobian, 17, 17) = -0.043659884291485852 * var_x129 - var_x25 * var_x286 - var_x25 * var_x287 - var_x25 * var_x288 + 0.0022916155659426776 * var_x24 * var_x25 * var_x27 * var_x31 * var_x45 * var_x46 * NV_Ith_S(mParameters, 6); + IJth(rJacobian, 22, 17) = 0.22004581682908866 * var_x129 - 0.011549742452351092 * var_x130 + var_x25 * var_x292 + var_x25 * var_x293 + var_x25 * var_x294; + IJth(rJacobian, 1, 18) = 0.021419999999999998 + 9 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + IJth(rJacobian, 18, 18) = -0.47599999999999998 - var_x290; + IJth(rJacobian, 1, 19) = 0.031359999999999999 + 6.2720000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + IJth(rJacobian, 19, 19) = -0.39200000000000002 - 78.400000000000006 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + IJth(rJacobian, 1, 20) = 0.0010559999999999999 + var_x148; + IJth(rJacobian, 20, 20) = -0.0066 - var_x290; + IJth(rJacobian, 21, 20) = -5; + IJth(rJacobian, 1, 21) = var_x148; + IJth(rJacobian, 20, 21) = -var_x290; + IJth(rJacobian, 21, 21) = -5.6660000000000004; + IJth(rJacobian, 0, 22) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x76 * (-53.0789018209707 * var_x133 - 0.10305599999999999 * var_x136 - var_x126 * var_x131 - var_x127 * var_x131 - var_x128 * var_x131 - 6 * var_x134 * var_x45 + 0.10305599999999999 * var_x114 * var_x39 * var_x41 * var_x42 + 6 * var_x132 * var_x29 * var_x31 * var_x45 * NV_Ith_S(mParameters, 6) + 2.786 * var_x132 * var_x27 * var_x31 * var_x45 * var_x46 * NV_Ith_S(mParameters, 6))); + IJth(rJacobian, 16, 22) = 0.00025430516916416572 * var_x136 - 0.00025430516916416572 * var_x284; + IJth(rJacobian, 17, 22) = 0.043659884291485852 * var_x133 + 0.00016953677944277714 * var_x284 - 0.00016953677944277714 * var_x136 + var_x131 * var_x286 + var_x131 * var_x287 + var_x131 * var_x288 + var_x134 * var_x289 - var_x133 * var_x289 - 0.0022916155659426776 * var_x132 * var_x47; + IJth(rJacobian, 22, 22) = -0.00085446536839159674 * var_x284 - 0.22004581682908866 * var_x133 - var_x131 * var_x292 - var_x131 * var_x293 - var_x131 * var_x294 - 0.024873817198171774 * var_x134 * var_x45 + 0.024873817198171774 * var_x132 * var_x29 * var_x31 * var_x45 * NV_Ith_S(mParameters, 6) + 0.00085446536839159674 * var_x114 * var_x135 * var_x41 * var_x42 * var_chaste_interface__cleft_space_ion_concentrations__K_c + 0.011549742452351092 * var_x132 * var_x27 * var_x31 * var_x45 * var_x46 * NV_Ith_S(mParameters, 6); + IJth(rJacobian, 1, 23) = var_x145; + IJth(rJacobian, 23, 23) = -14.98 - var_x295 + 14.880000000000001 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse; + IJth(rJacobian, 24, 23) = 0.011085915847820609; + IJth(rJacobian, 25, 23) = 0.47999999999999998 - 0.47999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse; + IJth(rJacobian, 1, 24) = 1.7754934097947219e-10 * var_x149 + 0.00078910818213098765 * var_x137; + IJth(rJacobian, 23, 24) = 0.099999999999999992; + IJth(rJacobian, 24, 24) = -0.011085915847820609 - 2.6321499680605046e-9 * var_x149 - 0.011698444302491135 * var_x137; + IJth(rJacobian, 23, 25) = 12.4 + 14.880000000000001 * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + IJth(rJacobian, 25, 25) = -0.40000000000000002 - 0.47999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + IJth(rJacobian, 26, 26) = -var_x306; + IJth(rJacobian, 27, 26) = var_x306; + IJth(rJacobian, 1, 27) = -0.0017614021922566689 * var_x150 * var_x151 + 0.0017614021922566689 * var_x142 * var_x150 * var_chaste_interface__Ca_handling_by_the_SR__F2 * NV_Ith_S(mParameters, 0); + IJth(rJacobian, 23, 27) = var_x151 * var_x296 - var_x143 * var_x296 * var_chaste_interface__Ca_handling_by_the_SR__F2; + IJth(rJacobian, 27, 27) = -var_x308; + IJth(rJacobian, 28, 27) = var_x308; + IJth(rJacobian, 26, 28) = 0.00081499999999999997; + IJth(rJacobian, 28, 28) = -0.00081499999999999997; + } + + N_Vector Cellaslanidi_atrial_model_2009FromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 5.0 + double var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 0.726776 + double var_chaste_interface__Ca_handling_by_the_SR__F2 = NV_Ith_S(rY, 27); + // Units: dimensionless; Initial value: 0.002262 + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_Ca_handling_by_the_SR__i_rel = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel) * NV_Ith_S(mParameters, 0) / pow((0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2), 2); // picoA + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__Cm_converted = 0.001 * NV_Ith_S(mParameters, 4); // uF + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)))); // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1) * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * NV_Ith_S(mParameters, 9) / (1 + (pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1)) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_Na_Ca_ion_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_ion_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 8) * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * var_chaste_interface__membrane__V * NV_Ith_S(mParameters, 5) / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(10, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(10); +#endif + NV_Ith_S(dqs, 0) = var_Ca_handling_by_the_SR__i_rel; + NV_Ith_S(dqs, 1) = var_L_type_Ca_channel__i_Ca_L_converted; + NV_Ith_S(dqs, 2) = var_membrane__Cm_converted; + NV_Ith_S(dqs, 3) = var_sodium_current__i_Na_converted; + NV_Ith_S(dqs, 4) = var_inward_rectifier__i_K1_converted; + NV_Ith_S(dqs, 5) = var_delayed_rectifier_K_current__i_Kr_converted; + NV_Ith_S(dqs, 6) = var_delayed_rectifier_K_current__i_Ks_converted; + NV_Ith_S(dqs, 7) = var_Na_Ca_ion_exchanger_current__i_NaCa_converted; + NV_Ith_S(dqs, 8) = var_membrane__i_Stim_converted; + NV_Ith_S(dqs, 9) = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "aslanidi_atrial_model_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-80.0); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(7.1e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01309); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("sodium_current_h1_gate__h1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.706); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("sodium_current_h2_gate__h2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.61493); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("L_type_Ca_channel_d_L_gate__d_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3e-05); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("L_type_Ca_channel_f_L_gate__f_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99981); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("T_type_Ca_channel_d_T_gate__d_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00046); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("T_type_Ca_channel_f_T_gate__f_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.30752); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_r_gate__r"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6e-05); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_s1_gate__s1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.5753); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_s2_gate__s2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.39871); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_s3_gate__s3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.57363); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("delayed_rectifier_K_current_z_gate__z"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.02032); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("delayed_rectifier_K_current_pa_gate__p_a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00016); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("delayed_rectifier_K_current_pi_gate__p_i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.76898); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.4); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(100.0); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("intracellular_Ca_buffering__O_C"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.029108); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("intracellular_Ca_buffering__O_TC"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.014071); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("intracellular_Ca_buffering__O_TMgC"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.214036); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("intracellular_Ca_buffering__O_TMgMg"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.693565); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("extracellular_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(5.0); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("Ca_handling_by_the_SR__Ca_rel"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.726776); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("Ca_handling_by_the_SR__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.730866); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("Ca_handling_by_the_SR__O_Calse"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.465921); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("Ca_handling_by_the_SR__F1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.288039); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("Ca_handling_by_the_SR__F2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002262); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("Ca_handling_by_the_SR__F3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.612697); + + // mParameters[0]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[1]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane__Cm"); + this->mParameterUnits.push_back("nanoF"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("nanolitre_per_second"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar_4"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("picoA"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellaslanidi_atrial_model_2009FromCellMLCvode) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009--sympy_1_14.cpp new file mode 100644 index 00000000..ce75cc58 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/aslanidi_atrial_model_2009--sympy_1_14.cpp @@ -0,0 +1,1334 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: aslanidi_atrial_model_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: AnalyticCvode) +//! on (date omitted as unimportant) +//! +//! + +#include "aslanidi_atrial_model_2009.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + + + + boost::shared_ptr Cellaslanidi_atrial_model_2009FromCellMLCvode::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_membrane__Cm_converted = 0.001 * NV_Ith_S(mParameters, 4); // uF + const double var_chaste_interface__membrane__stim_amplitude_converted = -3.9999999999999998e-6 * HeartConfig::Instance()->GetCapacitance() / var_membrane__Cm_converted; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = 0.5; // millisecond + const double var_chaste_interface__membrane__stim_period_converted = 500; // millisecond + const double var_chaste_interface__membrane__stim_start_converted = 10; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration_converted, + var_chaste_interface__membrane__stim_period_converted, + var_chaste_interface__membrane__stim_start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Cellaslanidi_atrial_model_2009FromCellMLCvode::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Cellaslanidi_atrial_model_2009FromCellMLCvode::Cellaslanidi_atrial_model_2009FromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 29, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + mUseAnalyticJacobian = true; + mHasAnalyticJacobian = true; + + NV_Ith_S(this->mParameters, 0) = 200; // (var_Ca_handling_by_the_SR__alpha_rel) [picoA_per_millimolar] + NV_Ith_S(this->mParameters, 1) = 2.5; // (var_cleft_space_ion_concentrations__Ca_c) [millimolar] + NV_Ith_S(this->mParameters, 2) = 140; // (var_cleft_space_ion_concentrations__Na_c) [millimolar] + NV_Ith_S(this->mParameters, 3) = 0.0040000000000000001; // (var_L_type_Ca_channel__g_Ca_L) [nanoS] + NV_Ith_S(this->mParameters, 4) = 5.0000000000000002e-5; // (var_membrane__Cm) [nanoF] + NV_Ith_S(this->mParameters, 5) = 1.3999999999999999e-6; // (var_sodium_current__P_Na) [nanolitre_per_second] + NV_Ith_S(this->mParameters, 6) = 0.0050800000000000003; // (var_inward_rectifier__g_K1) [nanoS] + NV_Ith_S(this->mParameters, 7) = 0.0035000000000000001; // (var_delayed_rectifier_K_current__g_Kr) [nanoS] + NV_Ith_S(this->mParameters, 8) = 0.0025000000000000001; // (var_delayed_rectifier_K_current__g_Ks) [nanoS] + NV_Ith_S(this->mParameters, 9) = 2.0000000000000002e-5; // (var_Na_Ca_ion_exchanger_current__k_NaCa) [picoA_per_millimolar_4] + } + + Cellaslanidi_atrial_model_2009FromCellMLCvode::~Cellaslanidi_atrial_model_2009FromCellMLCvode() + { + } + + + void Cellaslanidi_atrial_model_2009FromCellMLCvode::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 29; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellaslanidi_atrial_model_2009FromCellMLCvode::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 5.0 + + const double var_Ca_independent_transient_outward_K_current__g_to = 0.050001999999999998; // nanoS + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_T_type_Ca_channel__E_Ca_T = 38; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.0060000000000000001; // nanoS + const double var_background_currents__g_B_Ca = 3.1000000000000001e-5; // nanoS + const double var_background_currents__g_B_Na = 6.3999999999999997e-5; // nanoS + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__Cm_converted = 0.001 * NV_Ith_S(mParameters, 4); // uF + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(NV_Ith_S(mParameters, 1) / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)))); // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1) * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * NV_Ith_S(mParameters, 9) / (1 + (pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1)) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_Na_Ca_ion_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_ion_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 8) * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA + const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * var_chaste_interface__membrane__V * NV_Ith_S(mParameters, 5) / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA + const double var_sodium_potassium_pump__k_NaK_K = 1; // millimolar + const double var_sodium_potassium_pump__k_NaK_Na = 11; // millimolar + const double var_sodium_potassium_pump__i_p = 1.6000000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) + pow(var_sodium_potassium_pump__k_NaK_Na, 1.5)) * (var_chaste_interface__cleft_space_ion_concentrations__K_c + var_sodium_potassium_pump__k_NaK_K)); // picoA + const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_ion_exchanger_current__i_NaCa_converted + var_delayed_rectifier_K_current__i_Kr_converted + var_delayed_rectifier_K_current__i_Ks_converted + var_inward_rectifier__i_K1_converted + var_sodium_current__i_Na_converted) * var_membrane__Cm_converted + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Ca_independent_transient_outward_K_current__i_sus + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Ca_independent_transient_outward_K_current__i_to + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Ca + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Na + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump_current__i_CaP + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_p) / var_membrane__Cm_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellaslanidi_atrial_model_2009FromCellMLCvode::EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__intracellular_Ca_buffering__O_C = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 0.029108 + double var_chaste_interface__intracellular_Ca_buffering__O_TC = NV_Ith_S(rY, 19); + // Units: dimensionless; Initial value: 0.014071 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgC = NV_Ith_S(rY, 20); + // Units: dimensionless; Initial value: 0.214036 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgMg = NV_Ith_S(rY, 21); + // Units: dimensionless; Initial value: 0.693565 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 5.0 + double var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 0.726776 + double var_chaste_interface__Ca_handling_by_the_SR__Ca_up = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.730866 + double var_chaste_interface__Ca_handling_by_the_SR__O_Calse = NV_Ith_S(rY, 25); + // Units: dimensionless; Initial value: 0.465921 + double var_chaste_interface__Ca_handling_by_the_SR__F1 = NV_Ith_S(rY, 26); + // Units: dimensionless; Initial value: 0.288039 + double var_chaste_interface__Ca_handling_by_the_SR__F2 = NV_Ith_S(rY, 27); + // Units: dimensionless; Initial value: 0.002262 + double var_chaste_interface__Ca_handling_by_the_SR__F3 = NV_Ith_S(rY, 28); + // Units: dimensionless; Initial value: 0.612697 + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_Ca_handling_by_the_SR__I_up_max = 2.7999999999999998; // picoA + const double var_Ca_handling_by_the_SR__O_Calse_orig_deriv = -400 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse + 480 * (1 - var_chaste_interface__Ca_handling_by_the_SR__O_Calse) * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; // 1 / second + const double var_Ca_handling_by_the_SR__Vol_rel = 4.3999999999999997e-8; // nanolitre + const double var_Ca_handling_by_the_SR__Vol_up = 3.9690000000000001e-7; // nanolitre + const double var_Ca_handling_by_the_SR__k_F3 = 0.81499999999999995; // per_second + const double var_Ca_handling_by_the_SR__k_cyca = 0.00029999999999999997; // millimolar + const double var_Ca_handling_by_the_SR__k_rel = 0.00029999999999999997; // millimolar + const double var_Ca_handling_by_the_SR__k_srca = 0.5; // millimolar + const double var_Ca_handling_by_the_SR__k_xcs = 0.40000000000000002; // dimensionless + const double var_Ca_handling_by_the_SR__tau_tr = 0.01; // second + const double var_Ca_independent_transient_outward_K_current__g_to = 0.050001999999999998; // nanoS + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__O_Calse = 0.001 * var_Ca_handling_by_the_SR__O_Calse_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_T_type_Ca_channel__E_Ca_T = 38; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.0060000000000000001; // nanoS + const double var_background_currents__g_B_Ca = 3.1000000000000001e-5; // nanoS + const double var_background_currents__g_B_Na = 6.3999999999999997e-5; // nanoS + const double var_cleft_space_ion_concentrations__Vol_c = 2.5000000000000002e-6; // nanolitre + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_intracellular_Ca_buffering__Mg_i = 2.5; // millimolar + const double var_intracellular_Ca_buffering__O_TMgMg_orig_deriv = -666 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg + 2000 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_TMgC - var_chaste_interface__intracellular_Ca_buffering__O_TMgMg) * var_intracellular_Ca_buffering__Mg_i; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgMg = 0.001 * var_intracellular_Ca_buffering__O_TMgMg_orig_deriv; // 1 / millisecond + const double var_Ca_handling_by_the_SR__i_rel = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel) * NV_Ith_S(mParameters, 0) / pow((0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2), 2); // picoA + const double var_Ca_handling_by_the_SR__i_up = (var_chaste_interface__intracellular_ion_concentrations__Ca_i / var_Ca_handling_by_the_SR__k_cyca - pow(var_Ca_handling_by_the_SR__k_xcs, 2) * var_chaste_interface__Ca_handling_by_the_SR__Ca_up / var_Ca_handling_by_the_SR__k_srca) * var_Ca_handling_by_the_SR__I_up_max / ((var_Ca_handling_by_the_SR__k_cyca + var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_Ca_handling_by_the_SR__k_cyca + (var_chaste_interface__Ca_handling_by_the_SR__Ca_up + var_Ca_handling_by_the_SR__k_srca) * var_Ca_handling_by_the_SR__k_xcs / var_Ca_handling_by_the_SR__k_srca); // picoA + const double var_Ca_handling_by_the_SR__r_inact = 33.960000000000001 + 339.60000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / pow((var_Ca_handling_by_the_SR__k_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 4); // per_second + const double var_Ca_handling_by_the_SR__F3_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F2 * var_Ca_handling_by_the_SR__r_inact - var_chaste_interface__Ca_handling_by_the_SR__F3 * var_Ca_handling_by_the_SR__k_F3; // 1 / second + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F3 = 0.001 * var_Ca_handling_by_the_SR__F3_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOCdt = -476 * var_chaste_interface__intracellular_Ca_buffering__O_C + 200000 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_C) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; // per_second + const double var_intracellular_Ca_buffering__O_C_orig_deriv = var_intracellular_Ca_buffering__dOCdt; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_C = 0.001 * var_intracellular_Ca_buffering__O_C_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOTCdt = -392 * var_chaste_interface__intracellular_Ca_buffering__O_TC + 78400 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_TC) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; // per_second + const double var_intracellular_Ca_buffering__O_TC_orig_deriv = var_intracellular_Ca_buffering__dOTCdt; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TC = 0.001 * var_intracellular_Ca_buffering__O_TC_orig_deriv; // 1 / millisecond + const double var_intracellular_Ca_buffering__dOTMgCdt = -6.5999999999999996 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC + 200000 * (1 - var_chaste_interface__intracellular_Ca_buffering__O_TMgC - var_chaste_interface__intracellular_Ca_buffering__O_TMgMg) * var_chaste_interface__intracellular_ion_concentrations__Ca_i; // per_second + const double var_intracellular_Ca_buffering__O_TMgC_orig_deriv = var_intracellular_Ca_buffering__dOTMgCdt; // 1 / second + const double d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgC = 0.001 * var_intracellular_Ca_buffering__O_TMgC_orig_deriv; // 1 / millisecond + const double var_intracellular_ion_concentrations__Vol_Ca = 5.8839999999999999e-6; // nanolitre + const double var_intracellular_ion_concentrations__Vol_i = 1.26e-5; // nanolitre + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_Ca_handling_by_the_SR__i_tr = 2 * (-var_chaste_interface__Ca_handling_by_the_SR__Ca_rel + var_chaste_interface__Ca_handling_by_the_SR__Ca_up) * var_Ca_handling_by_the_SR__Vol_rel * var_membrane__F / var_Ca_handling_by_the_SR__tau_tr; // picoA + const double var_Ca_handling_by_the_SR__Ca_rel_orig_deriv = -31 * var_Ca_handling_by_the_SR__O_Calse_orig_deriv + 0.5 * (-var_Ca_handling_by_the_SR__i_rel + var_Ca_handling_by_the_SR__i_tr) / (var_Ca_handling_by_the_SR__Vol_rel * var_membrane__F); // millimolar / second + const double var_Ca_handling_by_the_SR__Ca_up_orig_deriv = 0.5 * (-var_Ca_handling_by_the_SR__i_tr + var_Ca_handling_by_the_SR__i_up) / (var_Ca_handling_by_the_SR__Vol_up * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_rel = 0.001 * var_Ca_handling_by_the_SR__Ca_rel_orig_deriv; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_up = 0.001 * var_Ca_handling_by_the_SR__Ca_up_orig_deriv; // millimolar / millisecond + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(NV_Ith_S(mParameters, 1) / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_Ca_handling_by_the_SR__r_act = 240 * exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 203.80000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4) / pow((var_Ca_handling_by_the_SR__k_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 4); // per_second + const double var_Ca_handling_by_the_SR__F1_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F3 * var_Ca_handling_by_the_SR__k_F3 - var_chaste_interface__Ca_handling_by_the_SR__F1 * var_Ca_handling_by_the_SR__r_act; // 1 / second + const double var_Ca_handling_by_the_SR__F2_orig_deriv = var_chaste_interface__Ca_handling_by_the_SR__F1 * var_Ca_handling_by_the_SR__r_act - var_chaste_interface__Ca_handling_by_the_SR__F2 * var_Ca_handling_by_the_SR__r_inact; // 1 / second + const double var_Ca_independent_transient_outward_K_current__i_sus = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.098000000000000004 + 0.0014 * var_chaste_interface__membrane__V) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.16799999999999998 + 0.0023999999999999998 * var_chaste_interface__membrane__V) : (0.070000000000000007 + 0.001 * var_chaste_interface__membrane__V))); // picoA + const double var_Ca_independent_transient_outward_K_current__i_to = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (0.20000000000000001 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (0.34999999999999998 * (0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r) : ((0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6)) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * (0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3)) * var_Ca_independent_transient_outward_K_current__g_to * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r))); // picoA + const double var_Ca_independent_transient_outward_K_current_r_gate__alpha_r = 386.60000000000002 * exp(0.083333333333333329 * var_chaste_interface__membrane__V); // per_second + const double var_Ca_independent_transient_outward_K_current_r_gate__beta_r = 8.0109999999999992 * exp(-0.1388888888888889 * var_chaste_interface__membrane__V); // per_second + const double var_Ca_independent_transient_outward_K_current_r_gate__r_infinity = 1 / (1 + exp(-2.6628794603230959 - 0.17752529735487307 * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_r_gate__tau_r = 0.00040000000000000002 + 1 / (var_Ca_independent_transient_outward_K_current_r_gate__alpha_r + var_Ca_independent_transient_outward_K_current_r_gate__beta_r); // second + const double var_Ca_independent_transient_outward_K_current_r_gate__r_orig_deriv = (-var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + var_Ca_independent_transient_outward_K_current_r_gate__r_infinity) / var_Ca_independent_transient_outward_K_current_r_gate__tau_r; // 1 / second + const double var_Ca_independent_transient_outward_K_current_s1_gate__s1_infinity = 1 / (1 + exp(4.0070821529745047 + 0.14164305949008499 * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1 = 0.020400000000000001 + 0.54659999999999997 / (1 + exp(327.99999999999994 + 10 * var_chaste_interface__membrane__V)); // second + const double var_Ca_independent_transient_outward_K_current_s1_gate__s1_orig_deriv = (-var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 + var_Ca_independent_transient_outward_K_current_s1_gate__s1_infinity) / var_Ca_independent_transient_outward_K_current_s1_gate__tau_s1; // 1 / second + const double var_Ca_independent_transient_outward_K_current_s2_gate__s2_infinity = 1 / (1 + exp(4.0070821529745047 + 0.14164305949008499 * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2 = 5.75 / (1 + exp(327.99999999999994 + 10 * var_chaste_interface__membrane__V)) + 0.45000000000000001 / (1 + exp(0.96921975662133131 - 0.071581961345740866 * var_chaste_interface__membrane__V)); // second + const double var_Ca_independent_transient_outward_K_current_s2_gate__s2_orig_deriv = (-var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 + var_Ca_independent_transient_outward_K_current_s2_gate__s2_infinity) / var_Ca_independent_transient_outward_K_current_s2_gate__tau_s2; // 1 / second + const double var_Ca_independent_transient_outward_K_current_s3_gate__s3_infinity = 0.39975990396158467 + 0.60024009603841544 / (1 + exp(1.8506208911614319 + 0.036523009495982472 * var_chaste_interface__membrane__V)); // dimensionless + const double var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3 = 0.5 + 7.5 / (1 + exp(46 + 2 * var_chaste_interface__membrane__V)); // second + const double var_Ca_independent_transient_outward_K_current_s3_gate__s3_orig_deriv = (-var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 + var_Ca_independent_transient_outward_K_current_s3_gate__s3_infinity) / var_Ca_independent_transient_outward_K_current_s3_gate__tau_s3; // 1 / second + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F1 = 0.001 * var_Ca_handling_by_the_SR__F1_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_handling_by_the_SR__F2 = 0.001 * var_Ca_handling_by_the_SR__F2_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_r_gate__r = 0.001 * var_Ca_independent_transient_outward_K_current_r_gate__r_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s1_gate__s1 = 0.001 * var_Ca_independent_transient_outward_K_current_s1_gate__s1_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s2_gate__s2 = 0.001 * var_Ca_independent_transient_outward_K_current_s2_gate__s2_orig_deriv; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s3_gate__s3 = 0.001 * var_Ca_independent_transient_outward_K_current_s3_gate__s3_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)))); // picoA + const double var_L_type_Ca_channel_d_L_gate__E10 = 10 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_channel_d_L_gate__alpha_d_L = (((var_chaste_interface__membrane__V >= -10.000000480800001) && (var_chaste_interface__membrane__V <= -9.9999995191999993)) ? (2.4040000000391526e-5 / (-1 + exp(1.0000000000162864e-7)) + 1039933.4442576389 * (10.000000480800001 + var_chaste_interface__membrane__V) * (-2.4040000000391526e-5 / (-1 + exp(1.0000000000162864e-7)) - 2.4039999999697637e-5 / (-1 + exp(-9.9999999998742257e-8)))) : (-50 * (10 + var_chaste_interface__membrane__V) / (-1 + exp(-2.0798668885191347 - 0.20798668885191349 * var_chaste_interface__membrane__V)))) + (((var_chaste_interface__membrane__V >= -45.000000249999999) && (var_chaste_interface__membrane__V <= -44.999999750000001)) ? (4.1799999996561256e-6 / (-1 + exp(9.9999999991773334e-8)) + 1999999.9999424887 * (45.000000249999999 + var_chaste_interface__membrane__V) * (-4.1800000005842713e-6 / (-1 + exp(-1.000000000139778e-7)) - 4.1799999996561256e-6 / (-1 + exp(9.9999999991773334e-8)))) : (-16.719999999999999 * (45 + var_chaste_interface__membrane__V) / (-1 + exp(-18 - 0.40000000000000002 * var_chaste_interface__membrane__V)))); // per_second + const double var_L_type_Ca_channel_d_L_gate__beta_d_L = (((var_chaste_interface__membrane__V >= -5.0000002500000003) && (var_chaste_interface__membrane__V <= -4.9999997499999997)) ? (-1.1200000000011203e-6 / (-1 + exp(-1.0000000000010001e-7)) + 1999999.9999979998 * (5.0000002500000003 + var_chaste_interface__membrane__V) * (1.1200000000011203e-6 / (-1 + exp(1.0000000000010001e-7)) + 1.1200000000011203e-6 / (-1 + exp(-1.0000000000010001e-7)))) : (4.4800000000000004 * (5 + var_chaste_interface__membrane__V) / (-1 + exp(2 + 0.40000000000000002 * var_chaste_interface__membrane__V)))); // per_second + const double var_L_type_Ca_channel_d_L_gate__d_L_infinity = 1 / (1 + exp(-0.14393939393939395 - 0.15151515151515152 * var_L_type_Ca_channel_d_L_gate__E10)); // dimensionless + const double var_L_type_Ca_channel_d_L_gate__tau_d_L = 1 / (var_L_type_Ca_channel_d_L_gate__alpha_d_L + var_L_type_Ca_channel_d_L_gate__beta_d_L); // second + const double var_L_type_Ca_channel_d_L_gate__d_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L + var_L_type_Ca_channel_d_L_gate__d_L_infinity) / var_L_type_Ca_channel_d_L_gate__tau_d_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_L_gate__d_L = 0.001 * var_L_type_Ca_channel_d_L_gate__d_L_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel_f_L_gate__E0_f_L = 18 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_channel_f_L_gate__alpha_f_L = (((var_chaste_interface__membrane__V >= -18.000000400000001) && (var_chaste_interface__membrane__V <= -17.999999599999999)) ? (-3.3960000000976542e-6 / (-1 + exp(-1.0000000000287557e-7)) + 1249999.9999640554 * (18.000000400000001 + var_chaste_interface__membrane__V) * (3.3960000000976542e-6 / (-1 + exp(1.0000000000287557e-7)) + 3.3960000000976542e-6 / (-1 + exp(-1.0000000000287557e-7)))) : (8.4900000000000002 * (18 + var_chaste_interface__membrane__V) / (-1 + exp(4.5 + 0.25 * var_chaste_interface__membrane__V)))); // per_second + const double var_L_type_Ca_channel_f_L_gate__beta_f_L = 67.921999999999997 / (1 + exp(-0.25 * var_L_type_Ca_channel_f_L_gate__E0_f_L)); // per_second + const double var_L_type_Ca_channel_f_L_gate__f_L_infinity = var_L_type_Ca_channel_f_L_gate__alpha_f_L / (var_L_type_Ca_channel_f_L_gate__alpha_f_L + var_L_type_Ca_channel_f_L_gate__beta_f_L); // dimensionless + const double var_L_type_Ca_channel_f_L_gate__tau_f_L = 1 / (var_L_type_Ca_channel_f_L_gate__alpha_f_L + var_L_type_Ca_channel_f_L_gate__beta_f_L); // second + const double var_L_type_Ca_channel_f_L_gate__f_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel_f_L_gate__f_L_infinity) / var_L_type_Ca_channel_f_L_gate__tau_f_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_L_gate__f_L = 0.001 * var_L_type_Ca_channel_f_L_gate__f_L_orig_deriv; // 1 / millisecond + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1) * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * NV_Ith_S(mParameters, 9) / (1 + (pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1)) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; // picoA + const double var_T_type_Ca_channel_d_T_gate__E0_d_T = 23.300000000000001 + var_chaste_interface__membrane__V; // millivolt + const double var_T_type_Ca_channel_d_T_gate__alpha_d_T = 674.173 * exp(0.033333333333333333 * var_T_type_Ca_channel_d_T_gate__E0_d_T); // per_second + const double var_T_type_Ca_channel_d_T_gate__beta_d_T = 674.173 * exp(-0.033333333333333333 * var_T_type_Ca_channel_d_T_gate__E0_d_T); // per_second + const double var_T_type_Ca_channel_d_T_gate__d_T_infinity = 1 / (1 + exp(0.049180327868852458 - 0.16393442622950821 * var_T_type_Ca_channel_d_T_gate__E0_d_T)); // dimensionless + const double var_T_type_Ca_channel_d_T_gate__tau_d_T = 1 / (var_T_type_Ca_channel_d_T_gate__alpha_d_T + var_T_type_Ca_channel_d_T_gate__beta_d_T); // second + const double var_T_type_Ca_channel_d_T_gate__d_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T + var_T_type_Ca_channel_d_T_gate__d_T_infinity) / var_T_type_Ca_channel_d_T_gate__tau_d_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_d_T_gate__d_T = 0.001 * var_T_type_Ca_channel_d_T_gate__d_T_orig_deriv; // 1 / millisecond + const double var_T_type_Ca_channel_f_T_gate__E0_f_T = 75 + var_chaste_interface__membrane__V; // millivolt + const double var_T_type_Ca_channel_f_T_gate__alpha_f_T = 9.6370000000000005 * exp(-0.012004801920768308 * var_T_type_Ca_channel_f_T_gate__E0_f_T); // per_second + const double var_T_type_Ca_channel_f_T_gate__beta_f_T = 9.6370000000000005 * exp(0.065019505851755519 * var_T_type_Ca_channel_f_T_gate__E0_f_T); // per_second + const double var_T_type_Ca_channel_f_T_gate__f_T_infinity = var_T_type_Ca_channel_f_T_gate__alpha_f_T / (var_T_type_Ca_channel_f_T_gate__alpha_f_T + var_T_type_Ca_channel_f_T_gate__beta_f_T); // dimensionless + const double var_T_type_Ca_channel_f_T_gate__tau_f_T = 1 / (var_T_type_Ca_channel_f_T_gate__alpha_f_T + var_T_type_Ca_channel_f_T_gate__beta_f_T); // second + const double var_T_type_Ca_channel_f_T_gate__f_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T + var_T_type_Ca_channel_f_T_gate__f_T_infinity) / var_T_type_Ca_channel_f_T_gate__tau_f_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_f_T_gate__f_T = 0.001 * var_T_type_Ca_channel_f_T_gate__f_T_orig_deriv; // 1 / millisecond + const double var_background_currents__i_B_Ca = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_background_currents__E_Ca) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_background_currents__E_Ca) : ((-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca))); // picoA + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 8) * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_delayed_rectifier_K_current_pa_gate__alpha_p_a = 9 * exp(0.03941508020968823 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pa_gate__beta_p_a = 1.3 * exp(-0.076769537847382163 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pa_gate__p_a_infinity = 1 / (1 + exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifier_K_current_pa_gate__tau_p_a = 1 / (var_delayed_rectifier_K_current_pa_gate__alpha_p_a + var_delayed_rectifier_K_current_pa_gate__beta_p_a); // second + const double var_delayed_rectifier_K_current_pa_gate__p_a_orig_deriv = (-var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a + var_delayed_rectifier_K_current_pa_gate__p_a_infinity) / var_delayed_rectifier_K_current_pa_gate__tau_p_a; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifier_K_current_pa_gate__p_a = 0.001 * var_delayed_rectifier_K_current_pa_gate__p_a_orig_deriv; // 1 / millisecond + const double var_delayed_rectifier_K_current_pi_gate__alpha_p_i = 100 * exp(-0.018299935950224173 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pi_gate__beta_p_i = 656 * exp(0.009420009985210585 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_pi_gate__p_i_infinity = 1 / (1 + exp(2.539728728905752 + 0.05358970648917756 * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifier_K_current_pi_gate__tau_p_i = 1 / (var_delayed_rectifier_K_current_pi_gate__alpha_p_i + var_delayed_rectifier_K_current_pi_gate__beta_p_i); // second + const double var_delayed_rectifier_K_current_pi_gate__p_i_orig_deriv = (-var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i + var_delayed_rectifier_K_current_pi_gate__p_i_infinity) / var_delayed_rectifier_K_current_pi_gate__tau_p_i; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifier_K_current_pi_gate__p_i = 0.001 * var_delayed_rectifier_K_current_pi_gate__p_i_orig_deriv; // 1 / millisecond + const double var_delayed_rectifier_K_current_z_gate__alpha_z = 1.6599999999999999 * exp(0.014398433450440593 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_z_gate__beta_z = 0.29999999999999999 * exp(-0.045816915605241454 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifier_K_current_z_gate__tau_z = 0.059999999999999998 + 1 / (var_delayed_rectifier_K_current_z_gate__alpha_z + var_delayed_rectifier_K_current_z_gate__beta_z); // second + const double var_delayed_rectifier_K_current_z_gate__z_infinity = 1 / (1 + exp(0.065217391304347824 - 0.072463768115942032 * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifier_K_current_z_gate__z_orig_deriv = (-var_chaste_interface__delayed_rectifier_K_current_z_gate__z + var_delayed_rectifier_K_current_z_gate__z_infinity) / var_delayed_rectifier_K_current_z_gate__tau_z; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifier_K_current_z_gate__z = 0.001 * var_delayed_rectifier_K_current_z_gate__z_orig_deriv; // 1 / millisecond + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.0095090000000000001; // picoA + const double var_sarcolemmal_calcium_pump_current__k_CaP = 0.00020000000000000001; // millimolar + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * var_sarcolemmal_calcium_pump_current__i_CaP_max / (var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_sarcolemmal_calcium_pump_current__k_CaP); // picoA + const double var_intracellular_ion_concentrations__Ca_i_orig_deriv = -0.044999999999999998 * var_intracellular_Ca_buffering__dOCdt - 0.080000000000000002 * var_intracellular_Ca_buffering__dOTCdt - 0.16 * var_intracellular_Ca_buffering__dOTMgCdt + 0.5 * (-var_Ca_handling_by_the_SR__i_up - var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_background_currents__i_B_Ca - var_sarcolemmal_calcium_pump_current__i_CaP + 2 * var_Na_Ca_ion_exchanger_current__i_NaCa + var_Ca_handling_by_the_SR__i_rel) / (var_intracellular_ion_concentrations__Vol_Ca * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = 0.001 * var_intracellular_ion_concentrations__Ca_i_orig_deriv; // millimolar / millisecond + const double var_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2.0000000000000002e-5 * var_chaste_interface__membrane__V - 2.0000000000000002e-5 * var_sodium_current__E_Na) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (3.0000000000000001e-5 * var_chaste_interface__membrane__V - 3.0000000000000001e-5 * var_sodium_current__E_Na) : ((-var_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na))); // picoA + const double var_sodium_current_h1_gate__alpha_h = 44.899999999999999 * exp(-12.010771992818672 - 0.17953321364452424 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h1_gate__beta_h = 1491 / (1 + 323.30000000000001 * exp(-7.333333333333333 - 0.077519379844961239 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_h1_gate__h_infinity = var_sodium_current_h1_gate__alpha_h / (var_sodium_current_h1_gate__alpha_h + var_sodium_current_h1_gate__beta_h); // dimensionless + const double var_sodium_current_h1_gate__tau_h1 = 0.00014999999999999999 + 0.029999999999999999 / (1 + exp(6.666666666666667 + 0.16666666666666666 * var_chaste_interface__membrane__V)); // second + const double var_sodium_current_h1_gate__h1_orig_deriv = (-var_chaste_interface__sodium_current_h1_gate__h1 + var_sodium_current_h1_gate__h_infinity) / var_sodium_current_h1_gate__tau_h1; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h1_gate__h1 = 0.001 * var_sodium_current_h1_gate__h1_orig_deriv; // 1 / millisecond + const double var_sodium_current_h2_gate__tau_h2 = 0.00044999999999999999 + 0.12 / (1 + exp(30 + 0.5 * var_chaste_interface__membrane__V)); // second + const double var_sodium_current_h2_gate__h2_orig_deriv = (-var_chaste_interface__sodium_current_h2_gate__h2 + var_sodium_current_h1_gate__h_infinity) / var_sodium_current_h2_gate__tau_h2; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h2_gate__h2 = 0.001 * var_sodium_current_h2_gate__h2_orig_deriv; // 1 / millisecond + const double var_sodium_current_m_gate__E0_m = 44.399999999999999 + var_chaste_interface__membrane__V; // millivolt + const double var_sodium_current_m_gate__alpha_m = (((var_chaste_interface__membrane__V >= -44.400001267299999) && (var_chaste_interface__membrane__V <= -44.399998732699999)) ? (0.00058295799999830145 / (-1 + exp(9.9999999999708629e-8)) + 394539.57232025318 * (44.400001267299999 + var_chaste_interface__membrane__V) * (-0.00058295799999830145 / (-1 + exp(9.9999999999708629e-8)) - 0.00058295799999830145 / (-1 + exp(-9.9999999999708629e-8)))) : (-460 * (44.399999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-3.5035114021936398 - 0.078907914463820727 * var_chaste_interface__membrane__V)))); // per_second + const double var_sodium_current_m_gate__beta_m = 18400 * exp(-0.078907914463820727 * var_sodium_current_m_gate__E0_m); // per_second + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * var_chaste_interface__membrane__V * NV_Ith_S(mParameters, 5) / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current_m_gate__m_orig_deriv = (1 - var_chaste_interface__sodium_current_m_gate__m) * var_sodium_current_m_gate__alpha_m - var_sodium_current_m_gate__beta_m * var_chaste_interface__sodium_current_m_gate__m; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_m_gate__m = 0.001 * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_sodium_potassium_pump__i_NaK_max = 0.064409999999999995; // picoA + const double var_sodium_potassium_pump__k_NaK_K = 1; // millimolar + const double var_sodium_potassium_pump__k_NaK_Na = 11; // millimolar + const double var_sodium_potassium_pump__i_p = 1.6000000000000001 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) * var_chaste_interface__cleft_space_ion_concentrations__K_c * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5) + pow(var_sodium_potassium_pump__k_NaK_Na, 1.5)) * (var_chaste_interface__cleft_space_ion_concentrations__K_c + var_sodium_potassium_pump__k_NaK_K)); // picoA + const double var_cleft_space_ion_concentrations__K_c_orig_deriv = (-2 * var_sodium_potassium_pump__i_p + var_Ca_independent_transient_outward_K_current__i_sus + var_Ca_independent_transient_outward_K_current__i_to + var_delayed_rectifier_K_current__i_Kr + var_delayed_rectifier_K_current__i_Ks + var_inward_rectifier__i_K1) / (var_cleft_space_ion_concentrations__Vol_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_ion_concentrations__K_c = 0.001 * var_cleft_space_ion_concentrations__K_c_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__K_i_orig_deriv = (-var_Ca_independent_transient_outward_K_current__i_sus - var_Ca_independent_transient_outward_K_current__i_to - var_delayed_rectifier_K_current__i_Kr - var_delayed_rectifier_K_current__i_Ks - var_inward_rectifier__i_K1 + 2 * var_sodium_potassium_pump__i_p) / (var_intracellular_ion_concentrations__Vol_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = 0.001 * var_intracellular_ion_concentrations__K_i_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__Na_i_orig_deriv = (-var_background_currents__i_B_Na - var_sodium_current__i_Na - 3 * var_Na_Ca_ion_exchanger_current__i_NaCa - 3 * var_sodium_potassium_pump__i_p) / (var_intracellular_ion_concentrations__Vol_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = 0.001 * var_intracellular_ion_concentrations__Na_i_orig_deriv; // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_membrane__Cm_converted = 0.001 * NV_Ith_S(mParameters, 4); // uF + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = 1000000 * var_membrane__Cm_converted * var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_membrane__V_orig_deriv = -1 * (var_Ca_independent_transient_outward_K_current__i_sus + var_Ca_independent_transient_outward_K_current__i_to + var_L_type_Ca_channel__i_Ca_L + var_Na_Ca_ion_exchanger_current__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_background_currents__i_B_Ca + var_background_currents__i_B_Na + var_delayed_rectifier_K_current__i_Kr + var_delayed_rectifier_K_current__i_Ks + var_inward_rectifier__i_K1 + var_membrane__i_Stim + var_sarcolemmal_calcium_pump_current__i_CaP + var_sodium_current__i_Na + var_sodium_potassium_pump__i_p) / NV_Ith_S(mParameters, 4); // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_sodium_current_m_gate__m; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_sodium_current_h1_gate__h1; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_sodium_current_h2_gate__h2; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_L_type_Ca_channel_d_L_gate__d_L; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_L_type_Ca_channel_f_L_gate__f_L; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_T_type_Ca_channel_d_T_gate__d_T; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_T_type_Ca_channel_f_T_gate__f_T; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_r_gate__r; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s1_gate__s1; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s2_gate__s2; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_Ca_independent_transient_outward_K_current_s3_gate__s3; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_delayed_rectifier_K_current_z_gate__z; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_delayed_rectifier_K_current_pa_gate__p_a; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_delayed_rectifier_K_current_pi_gate__p_i; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_intracellular_Ca_buffering__O_C; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TC; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgC; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_intracellular_Ca_buffering__O_TMgMg; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_cleft_space_ion_concentrations__K_c; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_rel; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Ca_handling_by_the_SR__Ca_up; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Ca_handling_by_the_SR__O_Calse; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Ca_handling_by_the_SR__F1; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Ca_handling_by_the_SR__F2; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Ca_handling_by_the_SR__F3; + } + + void Cellaslanidi_atrial_model_2009FromCellMLCvode::EvaluateAnalyticJacobian(double var_chaste_interface__environment__time_converted, N_Vector rY, N_Vector rDY, CHASTE_CVODE_DENSE_MATRIX rJacobian, N_Vector rTmp1, N_Vector rTmp2, N_Vector rTmp3) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00046 + double var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.30752 + double var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 6e-05 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1 = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.5753 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.39871 + double var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.57363 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__intracellular_Ca_buffering__O_C = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 0.029108 + double var_chaste_interface__intracellular_Ca_buffering__O_TC = NV_Ith_S(rY, 19); + // Units: dimensionless; Initial value: 0.014071 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgC = NV_Ith_S(rY, 20); + // Units: dimensionless; Initial value: 0.214036 + double var_chaste_interface__intracellular_Ca_buffering__O_TMgMg = NV_Ith_S(rY, 21); + // Units: dimensionless; Initial value: 0.693565 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 5.0 + double var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 0.726776 + double var_chaste_interface__Ca_handling_by_the_SR__Ca_up = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.730866 + double var_chaste_interface__Ca_handling_by_the_SR__O_Calse = NV_Ith_S(rY, 25); + // Units: dimensionless; Initial value: 0.465921 + double var_chaste_interface__Ca_handling_by_the_SR__F1 = NV_Ith_S(rY, 26); + // Units: dimensionless; Initial value: 0.288039 + double var_chaste_interface__Ca_handling_by_the_SR__F2 = NV_Ith_S(rY, 27); + // Units: dimensionless; Initial value: 0.002262 + const double var_x0 = NV_Ith_S(mParameters, 8) * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; + const double var_x1 = var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; + const double var_x2 = 0.083333333333333329 * var_chaste_interface__membrane__V; + const double var_x3 = exp(1.9166666666666667 - var_x2); + const double var_x4 = 1 + var_x3; + const double var_x5 = (1 / var_x4 + var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L) * NV_Ith_S(mParameters, 3); + const double var_x6 = exp(0.016955889611951675 * var_chaste_interface__membrane__V); + const double var_x7 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1); + const double var_x8 = var_x6 * var_x7; + const double var_x9 = exp(-0.02072386508127427 * var_chaste_interface__membrane__V); + const double var_x10 = pow(NV_Ith_S(mParameters, 2), 3); + const double var_x11 = var_x10 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x12 = var_x11 * var_x9; + const double var_x13 = 0.016955889611951675 * var_x8 + 0.02072386508127427 * var_x12; + const double var_x14 = 1 + 0.00029999999999999997 * var_x11 + 0.00029999999999999997 * var_x7; + const double var_x15 = 1 / var_x14; + const double var_x16 = var_x15 * NV_Ith_S(mParameters, 9); + const double var_x17 = var_x13 * var_x16; + const double var_x18 = NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; + const double var_x19 = var_x18 * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x20 = 0.40000000000000002 + 0.59999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 6); + const double var_x21 = 0.58999999999999997 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 3) + 0.40999999999999998 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 3); + const double var_x22 = var_x20 * var_x21; + const double var_x23 = var_x22 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x24 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3); + const double var_x25 = 1 / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x26 = log(var_x25 * var_chaste_interface__cleft_space_ion_concentrations__K_c); + const double var_x27 = exp(0.18895643383558949 + 0.052487898287663745 * var_chaste_interface__membrane__V - 1.393 * var_x26); + const double var_x28 = 1 + var_x27; + const double var_x29 = 1 / var_x28; + const double var_x30 = 0.58999999999999997 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x31 = pow(var_x30, (-3)); + const double var_x32 = var_x31 * NV_Ith_S(mParameters, 6); + const double var_x33 = var_x29 * var_x32; + const double var_x34 = var_x24 * var_x33; + const double var_x35 = (-50 + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); + const double var_x36 = var_x3 * var_x35 / pow(var_x4, 2); + const double var_x37 = 1 + var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x38 = 1 / var_x37; + const double var_x39 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); + const double var_x40 = 1.5 + var_x39; + const double var_x41 = pow(var_x40, (-2)); + const double var_x42 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 1.5); + const double var_x43 = 36.4828726939094 + var_x42; + const double var_x44 = 1 / var_x43; + const double var_x45 = var_x42 * var_x44 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x46 = var_x38 * var_x39 * var_x41 * var_x45; + const double var_x47 = -26.53945091048535 * var_x26 + var_chaste_interface__membrane__V; + const double var_x48 = pow(var_x28, (-2)); + const double var_x49 = var_x27 * var_x32 * var_x47 * var_x48; + const double var_x50 = var_x24 * var_x49; + const double var_x51 = 1 / (-1 + exp(9.9999999999999995e-8)); + const double var_x52 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x53 = var_x52 * NV_Ith_S(mParameters, 2); + const double var_x54 = 1 * log(var_x53); + const double var_x55 = exp(9.9999999999999995e-8 - var_x54); + const double var_x56 = var_x51 * (-1 + var_x55); + const double var_x57 = 0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1; + const double var_x58 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x59 = NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5); + const double var_x60 = var_x58 * var_x59; + const double var_x61 = var_x57 * var_x60; + const double var_x62 = 1817.803245542646 * var_x61; + const double var_x63 = 1 / (-1 + exp(-9.9999999999999995e-8)); + const double var_x64 = exp(-9.9999999999999995e-8 - var_x54); + const double var_x65 = var_x63 * (-1 + var_x64); + const double var_x66 = (var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6); + const double var_x67 = 0.037679754693225945 * var_chaste_interface__membrane__V; + const double var_x68 = exp(var_x67); + const double var_x69 = -1 + var_x68; + const double var_x70 = 1 / var_x69; + const double var_x71 = exp(var_x67 - var_x54); + const double var_x72 = -1 + var_x71; + const double var_x73 = var_x70 * var_x72; + const double var_x74 = 136.98876074519373 * var_x61 * var_chaste_interface__membrane__V; + const double var_x75 = var_x70 * var_x71; + const double var_x76 = ((var_x66) ? (var_x56 * var_x62 + var_x62 * var_x65) : (var_x74 * var_x75 + 3635.606491085292 * var_x61 * var_x73 - var_x68 * var_x72 * var_x74 / pow(var_x69, 2))); + const double var_x77 = 1 / NV_Ith_S(mParameters, 4); + const double var_x78 = 0.001 * var_x77; + const double var_x79 = 0.00020000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x80 = 1 / var_x79; + const double var_x81 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x82 = pow(var_x79, (-2)); + const double var_x83 = var_x10 * var_x16 * var_x9; + const double var_x84 = pow(var_x14, (-2)); + const double var_x85 = var_x8 - var_x12; + const double var_x86 = var_x84 * var_x85 * NV_Ith_S(mParameters, 9); + const double var_x87 = var_x10 * var_x86; + const double var_x88 = 2.6539450910485349e-6 + var_chaste_interface__membrane__V; + const double var_x89 = var_x57 * var_x59 * pow(var_chaste_interface__sodium_current_m_gate__m, 2); + const double var_x90 = 0.028946099999999999 * var_x89; + const double var_x91 = var_x65 * var_x90; + const double var_x92 = var_x73 * var_chaste_interface__membrane__V; + const double var_x93 = ((var_x66) ? (-var_x91 + 188398.77346612973 * var_x88 * (var_x91 + var_x56 * var_x90)) : (10906.819473255875 * var_x89 * var_x92)); + const double var_x94 = 0.0061269244999999995 * var_x60; + const double var_x95 = var_x65 * var_x94; + const double var_x96 = var_x60 * var_x92; + const double var_x97 = ((var_x66) ? (-var_x95 + 188398.77346612973 * var_x88 * (var_x95 + var_x56 * var_x94)) : (2308.6101218391605 * var_x96)); + const double var_x98 = 0.0035217754999999997 * var_x60; + const double var_x99 = var_x65 * var_x98; + const double var_x100 = ((var_x66) ? (-var_x99 + 188398.77346612973 * var_x88 * (var_x99 + var_x56 * var_x98)) : (1326.9963692461315 * var_x96)); + const double var_x101 = 0.0018 * var_x35 * var_x77; + const double var_x102 = -38 + var_chaste_interface__membrane__V; + const double var_x103 = 6.0000000000000002e-6 * var_x102 * var_x77; + const double var_x104 = var_x22 * var_x47; + const double var_x105 = var_x47 * var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r; + const double var_x106 = var_x105 * var_x20; + const double var_x107 = var_x106 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1, 2); + const double var_x108 = var_x106 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2, 2); + const double var_x109 = var_x105 * var_x21 * pow(var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3, 5); + const double var_x110 = var_x47 * NV_Ith_S(mParameters, 8); + const double var_x111 = var_x47 * var_x78; + const double var_x112 = NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a; + const double var_x113 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x114 = var_x113 * NV_Ith_S(mParameters, 1); + const double var_x115 = var_x114 * var_x16 * var_x6; + const double var_x116 = 0.154584 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x117 = 1 / var_x40; + const double var_x118 = var_x117 * var_x38; + const double var_x119 = var_x118 * var_x44; + const double var_x120 = var_x119 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 0.5); + const double var_x121 = var_x114 * var_x86; + const double var_x122 = pow(var_x43, (-2)); + const double var_x123 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2); + const double var_x124 = var_x118 * var_x122 * var_x123; + const double var_x125 = var_x53 * var_x57 * var_x58 * NV_Ith_S(mParameters, 5); + const double var_x126 = 0.0096486999999999996 * var_x125; + const double var_x127 = var_x126 * var_x63 * var_x64; + const double var_x128 = ((var_x66) ? (-var_x127 + 188398.77346612973 * var_x88 * (var_x127 + var_x126 * var_x51 * var_x55)) : (3635.606491085292 * var_x125 * var_x75 * var_chaste_interface__membrane__V)); + const double var_x129 = 26.53945091048535 * var_x0; + const double var_x130 = 0.26540512488521772 * var_x23; + const double var_x131 = 26.53945091048535 * var_x19; + const double var_x132 = var_x25 * var_x34; + const double var_x133 = var_x25 * var_x50; + const double var_x134 = 1 / var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x135 = pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 2); + const double var_x136 = var_x135 * var_x33; + const double var_x137 = var_x24 * var_x29 * NV_Ith_S(mParameters, 6) / pow(var_x30, 4); + const double var_x138 = pow(var_x37, (-2)); + const double var_x139 = var_x117 * var_x138 * var_x45; + const double var_x140 = 1.3999999999999999 + 0.80000000000000004 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up + 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x141 = 1 / var_x140; + const double var_x142 = pow(var_x140, (-2)); + const double var_x143 = 3333.3333333333335 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.32000000000000006 * var_chaste_interface__Ca_handling_by_the_SR__Ca_up; + const double var_x144 = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2); + const double var_x145 = 0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x146 = pow(var_x145, (-2)); + const double var_x147 = var_x146 * NV_Ith_S(mParameters, 0); + const double var_x148 = var_x144 * var_x147; + const double var_x149 = 0.00088070109612833447 * var_x148; + const double var_x150 = 0.001585261973031002 * var_x35; + const double var_x151 = 5.2842065767700066e-6 * var_x102; + const double var_x152 = 32 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x153 = var_x142 * var_x143; + const double var_x154 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + const double var_x155 = var_x144 * NV_Ith_S(mParameters, 0) / pow(var_x145, 3); + const double var_x156 = 1 / (-1 + exp(9.9999999999708629e-8)); + const double var_x157 = 1 / (-1 + exp(-9.9999999999708629e-8)); + const double var_x158 = (var_chaste_interface__membrane__V >= -44.400001267299999) && (var_chaste_interface__membrane__V <= -44.399998732699999); + const double var_x159 = exp(-3.5035114021936398 - 0.078907914463820727 * var_chaste_interface__membrane__V); + const double var_x160 = -1 + var_x159; + const double var_x161 = 460 / var_x160; + const double var_x162 = 44.399999999999999 + var_chaste_interface__membrane__V; + const double var_x163 = 0.00058295799999830145 * var_x156; + const double var_x164 = exp(-7.333333333333333 - 0.077519379844961239 * var_chaste_interface__membrane__V); + const double var_x165 = 1 + 323.30000000000001 * var_x164; + const double var_x166 = exp(-12.010771992818672 - 0.17953321364452424 * var_chaste_interface__membrane__V); + const double var_x167 = 44.899999999999999 * var_x166; + const double var_x168 = var_x167 + 1491 / var_x165; + const double var_x169 = 1 / var_x168; + const double var_x170 = 8.0610412926391373 * var_x166; + const double var_x171 = -var_x169 * var_x170 + var_x167 * (var_x170 - 37367.465116279069 * var_x164 / pow(var_x165, 2)) / pow(var_x168, 2); + const double var_x172 = exp(6.666666666666667 + 0.16666666666666666 * var_chaste_interface__membrane__V); + const double var_x173 = 1 + var_x172; + const double var_x174 = 0.00014999999999999999 + 0.029999999999999999 / var_x173; + const double var_x175 = 0.001 / var_x174; + const double var_x176 = -44.899999999999999 * var_x166 * var_x169; + const double var_x177 = exp(30 + 0.5 * var_chaste_interface__membrane__V); + const double var_x178 = 1 + var_x177; + const double var_x179 = 0.00044999999999999999 + 0.12 / var_x178; + const double var_x180 = 0.001 / var_x179; + const double var_x181 = exp(-1.6590909090909092 - 0.15151515151515152 * var_chaste_interface__membrane__V); + const double var_x182 = 1 + var_x181; + const double var_x183 = 1 / (-1 + exp(1.0000000000010001e-7)); + const double var_x184 = 1 / (-1 + exp(-1.0000000000010001e-7)); + const double var_x185 = (var_chaste_interface__membrane__V >= -5.0000002500000003) && (var_chaste_interface__membrane__V <= -4.9999997499999997); + const double var_x186 = 0.40000000000000002 * var_chaste_interface__membrane__V; + const double var_x187 = exp(2 + var_x186); + const double var_x188 = -1 + var_x187; + const double var_x189 = 1 / var_x188; + const double var_x190 = 5 + var_chaste_interface__membrane__V; + const double var_x191 = 1 / (-1 + exp(-1.000000000139778e-7)); + const double var_x192 = 1 / (-1 + exp(9.9999999991773334e-8)); + const double var_x193 = 8.3600000009281459 * var_x191 + 8.359999999071853 * var_x192; + const double var_x194 = 1 / (-1 + exp(-9.9999999998742257e-8)); + const double var_x195 = 1 / (-1 + exp(1.0000000000162864e-7)); + const double var_x196 = 24.999999999639201 * var_x194 + 25.000000000360799 * var_x195; + const double var_x197 = var_chaste_interface__membrane__V >= -45.000000249999999; + const double var_x198 = var_chaste_interface__membrane__V >= -10.000000480800001; + const double var_x199 = var_chaste_interface__membrane__V <= -44.999999750000001; + const double var_x200 = var_chaste_interface__membrane__V <= -9.9999995191999993; + const double var_x201 = (var_x197) && (var_x198) && (var_x199) && (var_x200); + const double var_x202 = exp(-2.0798668885191347 - 0.20798668885191349 * var_chaste_interface__membrane__V); + const double var_x203 = -1 + var_x202; + const double var_x204 = 50 / var_x203; + const double var_x205 = 10 + var_chaste_interface__membrane__V; + const double var_x206 = var_x204 + 10.399334442595674 * var_x202 * var_x205 / pow(var_x203, 2); + const double var_x207 = (var_x197) && (var_x199); + const double var_x208 = exp(-18 - var_x186); + const double var_x209 = -1 + var_x208; + const double var_x210 = 16.719999999999999 / var_x209; + const double var_x211 = 45 + var_chaste_interface__membrane__V; + const double var_x212 = var_x210 + 6.6879999999999997 * var_x208 * var_x211 / pow(var_x209, 2); + const double var_x213 = (var_x198) && (var_x200); + const double var_x214 = 1.1200000000011203e-6 * var_x184; + const double var_x215 = ((var_x185) ? (-var_x214 + 1999999.9999979998 * (5.0000002500000003 + var_chaste_interface__membrane__V) * (var_x214 + 1.1200000000011203e-6 * var_x183)) : (4.4800000000000004 * var_x189 * var_x190)); + const double var_x216 = 4.1799999996561256e-6 * var_x192; + const double var_x217 = var_x216 + 1999999.9999424887 * (45.000000249999999 + var_chaste_interface__membrane__V) * (-var_x216 - 4.1800000005842713e-6 * var_x191); + const double var_x218 = 2.4040000000391526e-5 * var_x195; + const double var_x219 = var_x218 + 1039933.4442576389 * (10.000000480800001 + var_chaste_interface__membrane__V) * (-var_x218 - 2.4039999999697637e-5 * var_x194); + const double var_x220 = var_x204 * var_x205; + const double var_x221 = var_x210 * var_x211; + const double var_x222 = ((var_x201) ? (var_x217 + var_x219) : ((var_x207) ? (var_x217 - var_x220) : ((var_x213) ? (var_x219 - var_x221) : (-var_x220 - var_x221)))); + const double var_x223 = 4.5 + 0.25 * var_chaste_interface__membrane__V; + const double var_x224 = exp(-var_x223); + const double var_x225 = 1 + var_x224; + const double var_x226 = 1 / var_x225; + const double var_x227 = 67.921999999999997 * var_x226; + const double var_x228 = 1 / (-1 + exp(-1.0000000000287557e-7)); + const double var_x229 = 3.3960000000976542e-6 * var_x228; + const double var_x230 = 1 / (-1 + exp(1.0000000000287557e-7)); + const double var_x231 = (var_chaste_interface__membrane__V >= -18.000000400000001) && (var_chaste_interface__membrane__V <= -17.999999599999999); + const double var_x232 = 18 + var_chaste_interface__membrane__V; + const double var_x233 = exp(var_x223); + const double var_x234 = -1 + var_x233; + const double var_x235 = 1 / var_x234; + const double var_x236 = ((var_x231) ? (-var_x229 + 1249999.9999640554 * (18.000000400000001 + var_chaste_interface__membrane__V) * (var_x229 + 3.3960000000976542e-6 * var_x230)) : (8.4900000000000002 * var_x232 * var_x235)); + const double var_x237 = var_x227 + var_x236; + const double var_x238 = 1 / var_x237; + const double var_x239 = ((var_x231) ? (4.2450000000000001 * var_x228 + 4.2450000000000001 * var_x230) : (8.4900000000000002 * var_x235 - 2.1225000000000001 * var_x232 * var_x233 / pow(var_x234, 2))); + const double var_x240 = 16.980499999999999 * var_x224 / pow(var_x225, 2); + const double var_x241 = exp(-3.7704918032786887 - 0.16393442622950821 * var_chaste_interface__membrane__V); + const double var_x242 = 1 + var_x241; + const double var_x243 = 0.77666666666666673 + 0.033333333333333333 * var_chaste_interface__membrane__V; + const double var_x244 = exp(-var_x243); + const double var_x245 = exp(var_x243); + const double var_x246 = exp(4.876462938881664 + 0.065019505851755519 * var_chaste_interface__membrane__V); + const double var_x247 = exp(-0.9003601440576231 - 0.012004801920768308 * var_chaste_interface__membrane__V); + const double var_x248 = 9.6370000000000005 * var_x247; + const double var_x249 = var_x248 + 9.6370000000000005 * var_x246; + const double var_x250 = 1 / var_x249; + const double var_x251 = 0.11569027611044419 * var_x247; + const double var_x252 = var_x251 - 0.62659297789336799 * var_x246; + const double var_x253 = exp(-2.6628794603230959 - 0.17752529735487307 * var_chaste_interface__membrane__V); + const double var_x254 = 1 + var_x253; + const double var_x255 = exp(-0.1388888888888889 * var_chaste_interface__membrane__V); + const double var_x256 = exp(var_x2); + const double var_x257 = 8.0109999999999992 * var_x255 + 386.60000000000002 * var_x256; + const double var_x258 = 0.00040000000000000002 + 1 / var_x257; + const double var_x259 = 1 / var_x258; + const double var_x260 = exp(327.99999999999994 + 10 * var_chaste_interface__membrane__V); + const double var_x261 = 1 + var_x260; + const double var_x262 = 1 / var_x261; + const double var_x263 = 0.020400000000000001 + 0.54659999999999997 * var_x262; + const double var_x264 = 1 / var_x263; + const double var_x265 = exp(4.0070821529745047 + 0.14164305949008499 * var_chaste_interface__membrane__V); + const double var_x266 = 1 + var_x265; + const double var_x267 = 0.000141643059490085 * var_x265 / pow(var_x266, 2); + const double var_x268 = pow(var_x261, (-2)); + const double var_x269 = -1 / var_x266; + const double var_x270 = exp(0.96921975662133131 - 0.071581961345740866 * var_chaste_interface__membrane__V); + const double var_x271 = 1 + var_x270; + const double var_x272 = 5.75 * var_x262 + 0.45000000000000001 / var_x271; + const double var_x273 = 1 / var_x272; + const double var_x274 = exp(46 + 2 * var_chaste_interface__membrane__V); + const double var_x275 = 1 + var_x274; + const double var_x276 = 0.5 + 7.5 / var_x275; + const double var_x277 = 1 / var_x276; + const double var_x278 = exp(1.8506208911614319 + 0.036523009495982472 * var_chaste_interface__membrane__V); + const double var_x279 = 1 + var_x278; + const double var_x280 = exp(0.065217391304347824 - 0.072463768115942032 * var_chaste_interface__membrane__V); + const double var_x281 = 1 + var_x280; + const double var_x282 = exp(-0.045816915605241454 * var_chaste_interface__membrane__V); + const double var_x283 = exp(0.014398433450440593 * var_chaste_interface__membrane__V); + const double var_x284 = 0.29999999999999999 * var_x282 + 1.6599999999999999 * var_x283; + const double var_x285 = 0.059999999999999998 + 1 / var_x284; + const double var_x286 = 1 / var_x285; + const double var_x287 = exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V); + const double var_x288 = 1 + var_x287; + const double var_x289 = exp(-0.076769537847382163 * var_chaste_interface__membrane__V); + const double var_x290 = exp(0.03941508020968823 * var_chaste_interface__membrane__V); + const double var_x291 = exp(2.539728728905752 + 0.05358970648917756 * var_chaste_interface__membrane__V); + const double var_x292 = 1 + var_x291; + const double var_x293 = exp(-0.018299935950224173 * var_chaste_interface__membrane__V); + const double var_x294 = exp(0.009420009985210585 * var_chaste_interface__membrane__V); + const double var_x295 = var_x119 * var_x42; + const double var_x296 = 0.00082254686501890791 * var_x47; + const double var_x297 = 0.00025430516916416572 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + const double var_x298 = 0.021829942145742926 * var_x0; + const double var_x299 = 0.021829942145742926 * var_x19; + const double var_x300 = 0.00021830815343428756 * var_x23; + const double var_x301 = 0.0049352811901134472 * var_x47; + const double var_x302 = 200 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x303 = 0.0041456361996952953 * var_x47; + const double var_x304 = 0.11002290841454433 * var_x0; + const double var_x305 = 0.0011002730933088092 * var_x23; + const double var_x306 = 0.11002290841454433 * var_x19; + const double var_x307 = 0.11777375567316183 * var_x148; + const double var_x308 = 0.23554751134632365 * var_x154; + const double var_x309 = exp(-1.6000000000000001 + 0.080000000000000002 * var_chaste_interface__membrane__V); + const double var_x310 = 0.019200000000000002 * var_x309 * var_chaste_interface__Ca_handling_by_the_SR__F1; + const double var_x311 = 0.00029999999999999997 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x312 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 4); + const double var_x313 = var_x312 / pow(var_x311, 5); + const double var_x314 = pow(var_x311, (-4)); + const double var_x315 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 3); + const double var_x316 = 0.001 * (-815.20000000000005 * var_x313 + 815.20000000000005 * var_x314 * var_x315) * var_chaste_interface__Ca_handling_by_the_SR__F1; + const double var_x317 = var_x312 * var_x314; + const double var_x318 = 0.20380000000000001 * var_x317 + 0.23999999999999999 * var_x309; + const double var_x319 = 0.001 * (-1358.4000000000001 * var_x313 + 1358.4000000000001 * var_x314 * var_x315) * var_chaste_interface__Ca_handling_by_the_SR__F2; + const double var_x320 = 0.033960000000000004 + 0.33960000000000001 * var_x317; + + // Matrix entries + IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x78 * (0.0014400000000000001 + var_x0 + var_x17 + var_x19 + var_x76 + 2 * var_x34 + 0.0060000000000000001 * var_x1 + 1.8 * var_x5 + 0.0025764 * var_x46 + 0.14999999999999999 * var_x36 + 0.0100004 * var_x23 - 0.10497579657532749 * var_x50)); + IJth(rJacobian, 1, 0) = -1.7614021922566692e-8 - 0.00013210516441925017 * var_x36 - 0.001585261973031002 * var_x5 - 5.2842065767700066e-6 * var_x1 + 0.0017614021922566689 * var_x13 * var_x15 * NV_Ith_S(mParameters, 9); + IJth(rJacobian, 2, 0) = 0.001 * (1 - var_chaste_interface__sodium_current_m_gate__m) * ((var_x158) ? (-230 * var_x156 - 230 * var_x157) : (-var_x161 - 36.297640653357533 * var_x159 * var_x162 / pow(var_x160, 2))) + 1.4519056261343013 * var_x159 * var_chaste_interface__sodium_current_m_gate__m; + IJth(rJacobian, 3, 0) = var_x171 * var_x175 + 4.9999999999999996e-6 * var_x172 * (-var_x176 - var_chaste_interface__sodium_current_h1_gate__h1) / (pow(var_x173, 2) * pow(var_x174, 2)); + IJth(rJacobian, 4, 0) = var_x171 * var_x180 + 5.9999999999999995e-5 * var_x177 * (-var_x176 - var_chaste_interface__sodium_current_h2_gate__h2) / (pow(var_x178, 2) * pow(var_x179, 2)); + IJth(rJacobian, 5, 0) = 0.001 * (-var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L + 1 / var_x182) * (1 * ((var_x185) ? (2.2400000000000002 * var_x183 + 2.2400000000000002 * var_x184) : (4.4800000000000004 * var_x189 - 1.7920000000000003 * var_x187 * var_x190 / pow(var_x188, 2))) + 1 * ((var_x201) ? (-var_x193 - var_x196) : ((var_x207) ? (-var_x193 - var_x206) : ((var_x213) ? (-var_x196 - var_x212) : (-var_x206 - var_x212))))) + 0.00015151515151515152 * var_x181 * (1 * var_x215 + 1 * var_x222) / pow(var_x182, 2); + IJth(rJacobian, 6, 0) = 0.001 * (var_x227 + 1 * var_x236) * (var_x238 * var_x239 + var_x236 * (-var_x239 - var_x240) / pow(var_x237, 2)) + 0.001 * (var_x240 + 1 * var_x239) * (-var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_x236 * var_x238); + IJth(rJacobian, 7, 0) = 0.001 * (-var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T + 1 / var_x242) * (22.472433333333335 * var_x245 - 22.472433333333335 * var_x244) + 0.0001639344262295082 * var_x241 * (674.173 * var_x244 + 674.173 * var_x245) / pow(var_x242, 2); + IJth(rJacobian, 8, 0) = 0.001 * var_x249 * (-var_x250 * var_x251 + var_x248 * var_x252 / pow(var_x249, 2)) - 0.001 * var_x252 * (-var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T + 9.6370000000000005 * var_x247 * var_x250); + IJth(rJacobian, 9, 0) = 0.00017752529735487306 * var_x253 * var_x259 / pow(var_x254, 2) - 0.001 * (-var_chaste_interface__Ca_independent_transient_outward_K_current_r_gate__r + 1 / var_x254) * (1.1126388888888887 * var_x255 - 32.216666666666669 * var_x256) / (pow(var_x257, 2) * pow(var_x258, 2)); + IJth(rJacobian, 10, 0) = -var_x264 * var_x267 + 0.0054659999999999995 * var_x260 * var_x268 * (-var_x269 - var_chaste_interface__Ca_independent_transient_outward_K_current_s1_gate__s1) / pow(var_x263, 2); + IJth(rJacobian, 11, 0) = -var_x267 * var_x273 + 0.001 * (-var_x269 - var_chaste_interface__Ca_independent_transient_outward_K_current_s2_gate__s2) * (57.5 * var_x260 * var_x268 - 0.032211882605583393 * var_x270 / pow(var_x271, 2)) / pow(var_x272, 2); + IJth(rJacobian, 12, 0) = -2.1922574727480476e-5 * var_x277 * var_x278 / pow(var_x279, 2) + 0.014999999999999999 * var_x274 * (0.39975990396158467 - var_chaste_interface__Ca_independent_transient_outward_K_current_s3_gate__s3 + 0.60024009603841544 / var_x279) / (pow(var_x275, 2) * pow(var_x276, 2)); + IJth(rJacobian, 13, 0) = 7.2463768115942027e-5 * var_x280 * var_x286 / pow(var_x281, 2) - 0.001 * (-var_chaste_interface__delayed_rectifier_K_current_z_gate__z + 1 / var_x281) * (0.013745074681572435 * var_x282 - 0.023901399527731383 * var_x283) / (pow(var_x284, 2) * pow(var_x285, 2)); + IJth(rJacobian, 14, 0) = 0.001 * (-var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a + 1 / var_x288) * (0.35473572188719404 * var_x290 - 0.099800399201596807 * var_x289) + 0.00013513513513513514 * var_x287 * (9 * var_x290 + 1.3 * var_x289) / pow(var_x288, 2); + IJth(rJacobian, 15, 0) = 0.001 * (-var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i + 1 / var_x292) * (6.1795265502981431 * var_x294 - 1.8299935950224173 * var_x293) - 5.3589706489177562e-5 * var_x291 * (100 * var_x293 + 656 * var_x294) / pow(var_x292, 2); + IJth(rJacobian, 16, 0) = -1.6450937300378158e-8 - 6.3576292291041427e-6 * var_x46 - 0.0024676405950567236 * var_x17 - 0.00082254686501890791 * var_x76; + IJth(rJacobian, 17, 0) = -1.151565611026471e-6 - 8.2257976689350868e-6 * var_x23 - 0.00082254686501890791 * var_x0 - 0.00082254686501890791 * var_x19 - 0.0016450937300378158 * var_x34 + 4.2384194860694284e-6 * var_x38 * var_x39 * var_x41 * var_x42 * var_x44 * var_chaste_interface__cleft_space_ion_concentrations__K_c + 8.6347512375898239e-5 * var_x24 * var_x27 * var_x31 * var_x47 * var_x48 * NV_Ith_S(mParameters, 6); + IJth(rJacobian, 22, 0) = 5.8038906795734136e-6 + 0.0041456361996952953 * var_x0 + 0.0041456361996952953 * var_x19 + 0.0082912723993905906 * var_x34 + 4.145802025143283e-5 * var_x23 - 0.00043519146237452704 * var_x50 - 2.1361634209789917e-5 * var_x46; + IJth(rJacobian, 26, 0) = -var_x310; + IJth(rJacobian, 27, 0) = var_x310; + IJth(rJacobian, 0, 1) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x78 * (-var_x83 + 0.0095090000000000001 * var_x80 + 0.0002653945091048535 * var_x81 - 0.00029999999999999997 * var_x87 - 0.0095090000000000001 * var_x82 * var_chaste_interface__intracellular_ion_concentrations__Ca_i)); + IJth(rJacobian, 1, 1) = -47.271999999999998 - var_x149 + 6.2720000000000002 * var_chaste_interface__intracellular_Ca_buffering__O_TC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC + 32 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg + 9 * var_chaste_interface__intracellular_Ca_buffering__O_C - 8.3745867230843319e-6 * var_x80 - 5.2842065767700058e-7 * var_x87 - 8.2198768971977874 * var_x141 - 0.0017614021922566689 * var_x83 - 2.3373323507508574e-7 * var_x81 + 8.3745867230843319e-6 * var_x82 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + 8.2198768971977874 * var_x142 * var_x143; + IJth(rJacobian, 16, 1) = 0.0024676405950567236 * var_x83 + 7.4029217851701709e-7 * var_x87; + IJth(rJacobian, 18, 1) = 200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_C; + IJth(rJacobian, 19, 1) = 78.400000000000006 - 78.400000000000006 * var_chaste_interface__intracellular_Ca_buffering__O_TC; + IJth(rJacobian, 20, 1) = 200 - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgC - 200 * var_chaste_interface__intracellular_Ca_buffering__O_TMgMg; + IJth(rJacobian, 23, 1) = var_x307; + IJth(rJacobian, 24, 1) = 121.85879481761599 * var_x141 - 121.85879481761599 * var_x153; + IJth(rJacobian, 26, 1) = -var_x316; + IJth(rJacobian, 27, 1) = var_x316 - var_x319; + IJth(rJacobian, 28, 1) = var_x319; + IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x78 * var_x93); + IJth(rJacobian, 2, 2) = -0.001 * ((var_x158) ? (var_x163 + 394539.57232025318 * (44.400001267299999 + var_chaste_interface__membrane__V) * (-var_x163 - 0.00058295799999830145 * var_x157)) : (-var_x161 * var_x162)) - 18.399999999999999 * var_x159; + IJth(rJacobian, 16, 2) = -0.00082254686501890791 * var_x93; + IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x78 * var_x97); + IJth(rJacobian, 3, 3) = -var_x175; + IJth(rJacobian, 16, 3) = -0.00082254686501890791 * var_x97; + IJth(rJacobian, 0, 4) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x100 * var_x78); + IJth(rJacobian, 4, 4) = -var_x180; + IJth(rJacobian, 16, 4) = -0.00082254686501890791 * var_x100; + IJth(rJacobian, 0, 5) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x101 * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L); + IJth(rJacobian, 1, 5) = -var_x150 * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L; + IJth(rJacobian, 5, 5) = -0.001 * var_x215 - 0.001 * var_x222; + IJth(rJacobian, 0, 6) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x101 * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L); + IJth(rJacobian, 1, 6) = -var_x150 * var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L; + IJth(rJacobian, 6, 6) = -0.001 * var_x236 - 0.067921999999999996 * var_x226; + IJth(rJacobian, 0, 7) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x103 * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T); + IJth(rJacobian, 1, 7) = -var_x151 * var_chaste_interface__T_type_Ca_channel_f_T_gate__f_T; + IJth(rJacobian, 7, 7) = -0.67417300000000002 * var_x244 - 0.67417300000000002 * var_x245; + IJth(rJacobian, 0, 8) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x103 * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T); + IJth(rJacobian, 1, 8) = -var_x151 * var_chaste_interface__T_type_Ca_channel_d_T_gate__d_T; + IJth(rJacobian, 8, 8) = -0.0096369999999999997 * var_x246 - 0.0096369999999999997 * var_x247; + IJth(rJacobian, 0, 9) = mSetVoltageDerivativeToZero ? 0.0 : (-1.00004e-5 * var_x104 * var_x77); + IJth(rJacobian, 9, 9) = -0.001 * var_x259; + IJth(rJacobian, 17, 9) = -8.2257976689350868e-6 * var_x104; + IJth(rJacobian, 22, 9) = 4.145802025143283e-5 * var_x104; + IJth(rJacobian, 0, 10) = mSetVoltageDerivativeToZero ? 0.0 : (-1.7700708e-5 * var_x107 * var_x77); + IJth(rJacobian, 10, 10) = -0.001 * var_x264; + IJth(rJacobian, 17, 10) = -1.4559661874015103e-5 * var_x107; + IJth(rJacobian, 22, 10) = 7.3380695845036111e-5 * var_x107; + IJth(rJacobian, 0, 11) = mSetVoltageDerivativeToZero ? 0.0 : (-1.2300492e-5 * var_x108 * var_x77); + IJth(rJacobian, 11, 11) = -0.001 * var_x273; + IJth(rJacobian, 17, 11) = -1.0117731132790156e-5 * var_x108; + IJth(rJacobian, 22, 11) = 5.0993364909262378e-5 * var_x108; + IJth(rJacobian, 0, 12) = mSetVoltageDerivativeToZero ? 0.0 : (-3.600144e-5 * var_x109 * var_x77); + IJth(rJacobian, 12, 12) = -0.001 * var_x277; + IJth(rJacobian, 17, 12) = -2.9612871608166312e-5 * var_x109; + IJth(rJacobian, 22, 12) = 0.00014924887290515819 * var_x109; + IJth(rJacobian, 0, 13) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x110 * var_x78); + IJth(rJacobian, 13, 13) = -0.001 * var_x286; + IJth(rJacobian, 17, 13) = -0.00082254686501890791 * var_x110; + IJth(rJacobian, 22, 13) = 0.0041456361996952953 * var_x110; + IJth(rJacobian, 0, 14) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x111 * var_x18); + IJth(rJacobian, 14, 14) = -0.0089999999999999993 * var_x290 - 0.0012999999999999999 * var_x289; + IJth(rJacobian, 17, 14) = -var_x18 * var_x296; + IJth(rJacobian, 22, 14) = var_x18 * var_x303; + IJth(rJacobian, 0, 15) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x111 * var_x112); + IJth(rJacobian, 15, 15) = -0.65600000000000003 * var_x294 - 0.10000000000000001 * var_x293; + IJth(rJacobian, 17, 15) = -var_x112 * var_x296; + IJth(rJacobian, 22, 15) = var_x112 * var_x303; + IJth(rJacobian, 0, 16) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x78 * (var_x128 + 3 * var_x115 + 0.00053078901820970701 * var_x52 - 0.00089999999999999998 * var_x121 + var_x116 * var_x120 - var_x116 * var_x124)); + IJth(rJacobian, 1, 16) = -1.5852619730310017e-6 * var_x121 + 0.0052842065767700064 * var_x113 * var_x15 * var_x6 * NV_Ith_S(mParameters, 9) * NV_Ith_S(mParameters, 1); + IJth(rJacobian, 16, 16) = -4.3659884291485854e-7 * var_x52 - 0.00082254686501890791 * var_x128 - 0.0074029217851701709 * var_x115 - 0.00038145775374624855 * var_x120 * var_chaste_interface__cleft_space_ion_concentrations__K_c + 0.00038145775374624855 * var_x117 * var_x122 * var_x123 * var_x38 * var_chaste_interface__cleft_space_ion_concentrations__K_c + 2.2208765355510512e-6 * var_x113 * var_x84 * var_x85 * NV_Ith_S(mParameters, 9) * NV_Ith_S(mParameters, 1); + IJth(rJacobian, 17, 16) = var_x120 * var_x297 - var_x124 * var_x297; + IJth(rJacobian, 22, 16) = -0.0012816980525873951 * var_x120 * var_chaste_interface__cleft_space_ion_concentrations__K_c + 0.0012816980525873951 * var_x117 * var_x122 * var_x123 * var_x38 * var_chaste_interface__cleft_space_ion_concentrations__K_c; + IJth(rJacobian, 0, 17) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x78 * (53.0789018209707 * var_x132 - 2.786 * var_x133 + var_x129 * var_x25 + var_x130 * var_x25 + var_x131 * var_x25)); + IJth(rJacobian, 17, 17) = -0.043659884291485852 * var_x132 - var_x25 * var_x298 - var_x25 * var_x299 - var_x25 * var_x300 + 0.0022916155659426776 * var_x24 * var_x25 * var_x27 * var_x31 * var_x47 * var_x48 * NV_Ith_S(mParameters, 6); + IJth(rJacobian, 22, 17) = 0.22004581682908866 * var_x132 - 0.011549742452351092 * var_x133 + var_x25 * var_x304 + var_x25 * var_x305 + var_x25 * var_x306; + IJth(rJacobian, 1, 18) = 0.021419999999999998 + 9 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + IJth(rJacobian, 18, 18) = -0.47599999999999998 - var_x302; + IJth(rJacobian, 1, 19) = 0.031359999999999999 + 6.2720000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + IJth(rJacobian, 19, 19) = -0.39200000000000002 - 78.400000000000006 * var_chaste_interface__intracellular_ion_concentrations__Ca_i; + IJth(rJacobian, 1, 20) = 0.0010559999999999999 + var_x152; + IJth(rJacobian, 20, 20) = -0.0066 - var_x302; + IJth(rJacobian, 21, 20) = -5; + IJth(rJacobian, 1, 21) = var_x152; + IJth(rJacobian, 20, 21) = -var_x302; + IJth(rJacobian, 21, 21) = -5.6660000000000004; + IJth(rJacobian, 0, 22) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x78 * (-53.0789018209707 * var_x136 - 0.10305599999999999 * var_x139 - var_x129 * var_x134 - var_x130 * var_x134 - var_x131 * var_x134 - 6 * var_x137 * var_x47 + 0.10305599999999999 * var_x117 * var_x38 * var_x42 * var_x44 + 6 * var_x135 * var_x29 * var_x31 * var_x47 * NV_Ith_S(mParameters, 6) + 2.786 * var_x135 * var_x27 * var_x31 * var_x47 * var_x48 * NV_Ith_S(mParameters, 6))); + IJth(rJacobian, 16, 22) = 0.00025430516916416572 * var_x139 - 0.00025430516916416572 * var_x295; + IJth(rJacobian, 17, 22) = 0.043659884291485852 * var_x136 + 0.00016953677944277714 * var_x295 - 0.00016953677944277714 * var_x139 + var_x134 * var_x298 + var_x134 * var_x299 + var_x134 * var_x300 + var_x137 * var_x301 - var_x136 * var_x301 - 0.0022916155659426776 * var_x135 * var_x49; + IJth(rJacobian, 22, 22) = -0.00085446536839159674 * var_x295 - 0.22004581682908866 * var_x136 - var_x134 * var_x304 - var_x134 * var_x305 - var_x134 * var_x306 - 0.024873817198171774 * var_x137 * var_x47 + 0.024873817198171774 * var_x135 * var_x29 * var_x31 * var_x47 * NV_Ith_S(mParameters, 6) + 0.00085446536839159674 * var_x117 * var_x138 * var_x42 * var_x44 * var_chaste_interface__cleft_space_ion_concentrations__K_c + 0.011549742452351092 * var_x135 * var_x27 * var_x31 * var_x47 * var_x48 * NV_Ith_S(mParameters, 6); + IJth(rJacobian, 1, 23) = var_x149; + IJth(rJacobian, 23, 23) = -14.98 - var_x307 + 14.880000000000001 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse; + IJth(rJacobian, 24, 23) = 0.011085915847820609; + IJth(rJacobian, 25, 23) = 0.47999999999999998 - 0.47999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__O_Calse; + IJth(rJacobian, 1, 24) = 0.0019727704553274693 * var_x153 + 0.00078910818213098765 * var_x141; + IJth(rJacobian, 23, 24) = 0.099999999999999992; + IJth(rJacobian, 24, 24) = -0.011085915847820609 - 0.011698444302491135 * var_x141 - 0.029246110756227836 * var_x153; + IJth(rJacobian, 23, 25) = 12.4 + 14.880000000000001 * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + IJth(rJacobian, 25, 25) = -0.40000000000000002 - 0.47999999999999998 * var_chaste_interface__Ca_handling_by_the_SR__Ca_rel; + IJth(rJacobian, 26, 26) = -var_x318; + IJth(rJacobian, 27, 26) = var_x318; + IJth(rJacobian, 1, 27) = -0.0017614021922566689 * var_x154 * var_x155 + 0.0017614021922566689 * var_x146 * var_x154 * var_chaste_interface__Ca_handling_by_the_SR__F2 * NV_Ith_S(mParameters, 0); + IJth(rJacobian, 23, 27) = var_x155 * var_x308 - var_x147 * var_x308 * var_chaste_interface__Ca_handling_by_the_SR__F2; + IJth(rJacobian, 27, 27) = -var_x320; + IJth(rJacobian, 28, 27) = var_x320; + IJth(rJacobian, 26, 28) = 0.00081499999999999997; + IJth(rJacobian, 28, 28) = -0.00081499999999999997; + } + + N_Vector Cellaslanidi_atrial_model_2009FromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -80.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 7.1e-05 + double var_chaste_interface__sodium_current_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.01309 + double var_chaste_interface__sodium_current_h1_gate__h1 = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.706 + double var_chaste_interface__sodium_current_h2_gate__h2 = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.61493 + double var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 3e-05 + double var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.99981 + double var_chaste_interface__delayed_rectifier_K_current_z_gate__z = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.02032 + double var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00016 + double var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.76898 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = NV_Ith_S(rY, 16); + // Units: millimolar; Initial value: 8.4 + double var_chaste_interface__intracellular_ion_concentrations__K_i = NV_Ith_S(rY, 17); + // Units: millimolar; Initial value: 100.0 + double var_chaste_interface__cleft_space_ion_concentrations__K_c = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 5.0 + double var_chaste_interface__Ca_handling_by_the_SR__Ca_rel = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 0.726776 + double var_chaste_interface__Ca_handling_by_the_SR__F2 = NV_Ith_S(rY, 27); + // Units: dimensionless; Initial value: 0.002262 + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_app = 50; // millivolt + const double var_Na_Ca_ion_exchanger_current__d_NaCa = 0.00029999999999999997; // per_millimolar_4 + const double var_Na_Ca_ion_exchanger_current__gamma = 0.45000000000000001; // dimensionless + const double var_environment__CT = 1; // dimensionless + const double var_environment__PM = 0; // dimensionless + const double var_Ca_handling_by_the_SR__i_rel = pow(var_chaste_interface__Ca_handling_by_the_SR__F2, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__Ca_handling_by_the_SR__Ca_rel) * NV_Ith_S(mParameters, 0) / pow((0.25 + var_chaste_interface__Ca_handling_by_the_SR__F2), 2); // picoA + const double var_inward_rectifier__KmK1 = 0.58999999999999997; // millimolar + const double var_inward_rectifier__shiftK1 = -3.6000000000000001; // millivolt + const double var_inward_rectifier__steepK1 = 1.393; // dimensionless + const double var_membrane__Cm_converted = 0.001 * NV_Ith_S(mParameters, 4); // uF + const double var_membrane__F = 96487; // coulomb_per_mole + const double var_membrane__R = 8314; // millijoule_per_mole_kelvin + const double var_membrane__T = 308; // kelvin + const double var_Ca_independent_transient_outward_K_current__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_ion_concentrations__K_c / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_L_type_Ca_channel__d_prime = 1 / (1 + exp(1.9166666666666667 - 0.083333333333333329 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (1.8 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.1000000000000001 * (-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)) : ((-var_L_type_Ca_channel__E_Ca_app + var_chaste_interface__membrane__V) * (var_chaste_interface__L_type_Ca_channel_d_L_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_L_gate__f_L + var_L_type_Ca_channel__d_prime) * NV_Ith_S(mParameters, 3)))); // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_Na_Ca_ion_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1) * exp(var_Na_Ca_ion_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_ion_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * NV_Ith_S(mParameters, 9) / (1 + (pow(NV_Ith_S(mParameters, 2), 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 1)) * var_Na_Ca_ion_exchanger_current__d_NaCa); // picoA + const double var_Na_Ca_ion_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_ion_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_delayed_rectifier_K_current__i_Kr = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 7) * var_chaste_interface__delayed_rectifier_K_current_pa_gate__p_a * var_chaste_interface__delayed_rectifier_K_current_pi_gate__p_i; // picoA + const double var_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_delayed_rectifier_K_current__i_Ks = (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 8) * var_chaste_interface__delayed_rectifier_K_current_z_gate__z; // picoA + const double var_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_inward_rectifier__i_K1 = (((var_environment__CT == 1) && (var_environment__PM == 0)) ? (2 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (((var_environment__PM == 1) && (var_environment__CT == 0)) ? (2.5 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))) : (1 * pow(var_chaste_interface__cleft_space_ion_concentrations__K_c, 3) * (-var_Ca_independent_transient_outward_K_current__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 6) / ((1 + exp((-var_Ca_independent_transient_outward_K_current__E_K - var_inward_rectifier__shiftK1 + var_chaste_interface__membrane__V) * var_inward_rectifier__steepK1 * var_membrane__F / (var_membrane__R * var_membrane__T))) * pow((var_chaste_interface__cleft_space_ion_concentrations__K_c + var_inward_rectifier__KmK1), 3))))); // picoA + const double var_inward_rectifier__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_inward_rectifier__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_sodium_current__i_Na = (((var_chaste_interface__membrane__V >= -2.6539450910485349e-6) && (var_chaste_interface__membrane__V <= 2.6539450910485349e-6)) ? (188398.77346612973 * (2.6539450910485349e-6 + var_chaste_interface__membrane__V) * (0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(9.9999999999999995e-8)) + 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) - 0.0096486999999999996 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(-9.9999999999999995e-8 - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * NV_Ith_S(mParameters, 5) / (-1 + exp(-9.9999999999999995e-8))) : (3635.606491085292 * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V - 1 * log(NV_Ith_S(mParameters, 2) / var_chaste_interface__intracellular_ion_concentrations__Na_i))) * (0.36499999999999999 * var_chaste_interface__sodium_current_h2_gate__h2 + 0.63500000000000001 * var_chaste_interface__sodium_current_h1_gate__h1) * NV_Ith_S(mParameters, 2) * var_chaste_interface__membrane__V * NV_Ith_S(mParameters, 5) / (-1 + exp(0.037679754693225945 * var_chaste_interface__membrane__V)))); // picoA + const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(10, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(10); +#endif + NV_Ith_S(dqs, 0) = var_Ca_handling_by_the_SR__i_rel; + NV_Ith_S(dqs, 1) = var_L_type_Ca_channel__i_Ca_L_converted; + NV_Ith_S(dqs, 2) = var_membrane__Cm_converted; + NV_Ith_S(dqs, 3) = var_sodium_current__i_Na_converted; + NV_Ith_S(dqs, 4) = var_inward_rectifier__i_K1_converted; + NV_Ith_S(dqs, 5) = var_delayed_rectifier_K_current__i_Kr_converted; + NV_Ith_S(dqs, 6) = var_delayed_rectifier_K_current__i_Ks_converted; + NV_Ith_S(dqs, 7) = var_Na_Ca_ion_exchanger_current__i_NaCa_converted; + NV_Ith_S(dqs, 8) = var_membrane__i_Stim_converted; + NV_Ith_S(dqs, 9) = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "aslanidi_atrial_model_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-80.0); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(7.1e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01309); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("sodium_current_h1_gate__h1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.706); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("sodium_current_h2_gate__h2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.61493); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("L_type_Ca_channel_d_L_gate__d_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3e-05); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("L_type_Ca_channel_f_L_gate__f_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99981); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("T_type_Ca_channel_d_T_gate__d_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00046); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("T_type_Ca_channel_f_T_gate__f_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.30752); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_r_gate__r"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6e-05); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_s1_gate__s1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.5753); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_s2_gate__s2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.39871); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("Ca_independent_transient_outward_K_current_s3_gate__s3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.57363); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("delayed_rectifier_K_current_z_gate__z"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.02032); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("delayed_rectifier_K_current_pa_gate__p_a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00016); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("delayed_rectifier_K_current_pi_gate__p_i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.76898); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.4); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(100.0); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("intracellular_Ca_buffering__O_C"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.029108); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("intracellular_Ca_buffering__O_TC"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.014071); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("intracellular_Ca_buffering__O_TMgC"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.214036); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("intracellular_Ca_buffering__O_TMgMg"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.693565); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("extracellular_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(5.0); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("Ca_handling_by_the_SR__Ca_rel"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.726776); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("Ca_handling_by_the_SR__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.730866); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("Ca_handling_by_the_SR__O_Calse"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.465921); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("Ca_handling_by_the_SR__F1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.288039); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("Ca_handling_by_the_SR__F2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002262); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("Ca_handling_by_the_SR__F3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.612697); + + // mParameters[0]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[1]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane__Cm"); + this->mParameterUnits.push_back("nanoF"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("nanolitre_per_second"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar_4"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("picoA"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellaslanidi_atrial_model_2009FromCellMLCvode) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004.cpp_python36 deleted file mode 100644 index d443c5ef..00000000 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004.cpp_python36 +++ /dev/null @@ -1,2173 +0,0 @@ -#ifdef CHASTE_CVODE -//! @file -//! -//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) -//! -//! Model: shannon_wang_puglisi_weber_bers_2004_model_updated -//! -//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen -//! (translator: chaste_codegen, model type: AnalyticCvode) -//! on (date omitted as unimportant) -//! -//! - -#include "dynamic_Shannon2004.hpp" -#include -#include -#include -#include -#include "Exception.hpp" -#include "OdeSystemInformation.hpp" -#include "RegularStimulus.hpp" -#include "HeartConfig.hpp" -#include "IsNan.hpp" -#include "MathsCustomFunctions.hpp" - -#if CHASTE_SUNDIALS_VERSION >= 60000 -#include "CvodeContextManager.hpp" -#endif - -#include "ModelFactory.hpp" - -AbstractCvodeCell* Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { - return new Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode(p_solver, p_stimulus); -} - -bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = ModelFactory::Register("dynamic_Shannon2004", "AnalyticCvode", (ModelFactory::TCreateMethod)Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::CreateMethod); - - - - boost::shared_ptr Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::UseCellMLDefaultStimulus() - { - // Use the default stimulus specified by CellML metadata - const double var_chaste_interface__cell__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 - const double var_chaste_interface__cell__stim_duration = 5; // millisecond - const double var_chaste_interface__cell__stim_period = 1000; // millisecond - const double var_chaste_interface__cell__stim_start = 100; // millisecond - boost::shared_ptr p_cellml_stim(new RegularStimulus( - -fabs(var_chaste_interface__cell__stim_amplitude_converted), - var_chaste_interface__cell__stim_duration, - var_chaste_interface__cell__stim_period, - var_chaste_interface__cell__stim_start - )); - mpIntracellularStimulus = p_cellml_stim; - return p_cellml_stim; - } - - double Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::GetIntracellularCalciumConcentration() - { - return NV_Ith_S(mStateVariables, 1); - } - - Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) - : AbstractCvodeCell( - pOdeSolver, - 45, - 0, - pIntracellularStimulus) - { - // Time units: millisecond - // - this->mpSystemInfo = OdeSystemInformation::Instance(); - Init(); - - // We have a default stimulus specified in the CellML file metadata - this->mHasDefaultStimulusFromCellML = true; - mUseAnalyticJacobian = true; - mHasAnalyticJacobian = true; - - NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_Jleak_SR__KSRleak) [per_millisecond] - NV_Ith_S(this->mParameters, 1) = 25; // (var_Jrel_SR__ks) [per_millisecond] - NV_Ith_S(this->mParameters, 2) = 0.00028600000000000001; // (var_Jpump_SR__V_max) [millimolar_per_millisecond] - NV_Ith_S(this->mParameters, 3) = 1; // (var_Na_buffer__conc_clamp) [dimensionless] - NV_Ith_S(this->mParameters, 4) = 15; // (var_model_parameters__Cli) [millimolar] - NV_Ith_S(this->mParameters, 5) = 135; // (var_model_parameters__Ki) [millimolar] - NV_Ith_S(this->mParameters, 6) = 1.8; // (var_model_parameters__Cao) [millimolar] - NV_Ith_S(this->mParameters, 7) = 150; // (var_model_parameters__Clo) [millimolar] - NV_Ith_S(this->mParameters, 8) = 5.4000000000000004; // (var_model_parameters__Ko) [millimolar] - NV_Ith_S(this->mParameters, 9) = 140; // (var_model_parameters__Nao) [millimolar] - NV_Ith_S(this->mParameters, 10) = 96486.699999999997; // (var_model_parameters__F) [coulomb_per_mole] - NV_Ith_S(this->mParameters, 11) = 8314.2999999999993; // (var_model_parameters__R) [joule_per_kilomole_kelvin] - NV_Ith_S(this->mParameters, 12) = 0.00054000000000000001; // (var_ICaL__PCa) [litre_per_farad_millisecond] - NV_Ith_S(this->mParameters, 13) = 0.0089999999999999993; // (var_IClb__G_ClBk) [milliS_per_microF] - NV_Ith_S(this->mParameters, 14) = 16; // (var_INa__G_INa) [milliS_per_microF] - NV_Ith_S(this->mParameters, 15) = 0; // (var_INa__perc_reduced_inact_for_IpNa) [dimensionless] - NV_Ith_S(this->mParameters, 16) = 0; // (var_INa__shift_INa_inact) [millivolt] - NV_Ith_S(this->mParameters, 17) = 0.02; // (var_Itof__G_tof) [milliS_per_microF] - NV_Ith_S(this->mParameters, 18) = 0.90000000000000002; // (var_IK1__G_K1_max) [milliS_per_microF] - NV_Ith_S(this->mParameters, 19) = 0.029999999999999999; // (var_IKr__G_IKr_const) [milliS_per_microF] - NV_Ith_S(this->mParameters, 20) = 0.070000000000000007; // (var_IKs__G_Ks_max) [milliS_per_microF] - NV_Ith_S(this->mParameters, 21) = 0.059999999999999998; // (var_Itos__G_tos) [milliS_per_microF] - NV_Ith_S(this->mParameters, 22) = 9; // (var_INaCa__V_max) [microA_per_microF] - NV_Ith_S(this->mParameters, 23) = 310; // (var_model_parameters__T) [kelvin] - } - - Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::~Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode() - { - } - - - void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::VerifyStateVariables() - { - - const double tol = 100*this->mAbsTol; - N_Vector rY = rGetStateVariables(); - std::string error_message = ""; - - for (unsigned i=0; i < 45; i++) - { - if(std::isnan(NV_Ith_S(rY, i))){ - error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; - } - if(std::isinf(NV_Ith_S(rY, i))){ - error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; - } - if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) - { - error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; - } - } - if (error_message != ""){ - EXCEPTION(DumpState(error_message)); - } - } - - double Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::GetIIonic(const std::vector* pStateVariables) - { - // For state variable interpolation (SVI) we read in interpolated state variables, - // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). - N_Vector rY; - bool made_new_cvode_vector = false; - if (!pStateVariables) - { - rY = rGetStateVariables(); - } - else - { - made_new_cvode_vector = true; - rY = MakeNVector(*pStateVariables); - } - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); - // Units: millivolt; Initial value: -85.721630473733 - double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); - // Units: dimensionless; Initial value: 0.98714602875678 - double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); - // Units: dimensionless; Initial value: 0.991826348770428 - double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); - // Units: dimensionless; Initial value: 0.0013702407736465 - double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); - // Units: dimensionless; Initial value: 0.00846906175020028 - double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); - // Units: dimensionless; Initial value: 0.00613557812033723 - double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); - // Units: dimensionless; Initial value: 0.00401072468238921 - double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); - // Units: dimensionless; Initial value: 0.31555225368514 - double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); - // Units: dimensionless; Initial value: 0.402577243036347 - double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); - // Units: dimensionless; Initial value: 0.00401068798369438 - double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); - // Units: dimensionless; Initial value: 0.994632857675454 - double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); - // Units: dimensionless; Initial value: 6.99526086177479e-06 - double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); - // Units: dimensionless; Initial value: 1.00067601563206 - double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); - // Units: dimensionless; Initial value: 0.0150193299768419 - double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); - // Units: dimensionless; Initial value: 0.0244048782575591 - double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); - // Units: millimolar; Initial value: 8.87161932058707 - double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); - // Units: millimolar; Initial value: 8.87031835089116 - double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); - // Units: millimolar; Initial value: 8.87200572571131 - double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); - // Units: millimolar; Initial value: 0.000104971310105451 - double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); - // Units: millimolar; Initial value: 0.000174045152623969 - - const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless - const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless - const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond - const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond - const double var_ICaL__Q10_CaL = 1.8; // dimensionless - const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless - const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless - const double var_ICaL__gamma_Ki = 0.75; // dimensionless - const double var_ICaL__gamma_Ko = 0.75; // dimensionless - const double var_ICaL__gamma_Nai = 0.75; // dimensionless - const double var_ICaL__gamma_Nao = 0.75; // dimensionless - const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless - const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless - const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless - const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless - const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF - const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless - const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless - const double var_ICap__H = 1.6000000000000001; // dimensionless - const double var_ICap__Km = 0.00050000000000000001; // millimolar - const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless - const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF - const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless - const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless - const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF - const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar - const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless - const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless - const double var_IKs__pCa_SL = 3 - log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless - const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF - const double var_IKs__pCa_jct = 3 - log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless - const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF - const double var_IKs__pKNa = 0.018329999999999999; // dimensionless - const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless - const double var_INa__Fx_Na_jct = 0.11; // dimensionless - const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless - const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless - const double var_INaCa__HNa = 3; // dimensionless - const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar - const double var_INaCa__K_mCao = 1.3; // millimolar - const double var_INaCa__K_mNai = 12.289999999999999; // millimolar - const double var_INaCa__K_mNao = 87.5; // millimolar - const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar - const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless - const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless - const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless - const double var_INaCa__eta = 0.34999999999999998; // dimensionless - const double var_INaCa__ksat = 0.27000000000000002; // dimensionless - const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless - const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless - const double var_INaK__H_NaK = 4; // dimensionless - const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF - const double var_INaK__Km_Ko = 1.5; // millimolar - const double var_INaK__Km_Nai = 11; // millimolar - const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless - const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless - const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless - const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless - const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless - const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF - const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless - const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF - const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF - const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless - const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); // coulomb_per_mole - const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF - const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 - const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF - const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF - const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF - const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 - const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt - const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF - const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF - const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF - const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 - const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 - const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF - const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 - const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF - const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF - const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 - const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // dimensionless - const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF - const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF - const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF - const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt - const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF - const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt - const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF - const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF - const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 - const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt - const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF - const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF - const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 - const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt - const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond - const double var_IK1_K1_gate__beta_K1 = (exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond - const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless - const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF - const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 - const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF - const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 - const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF - const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 - const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF - const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 - const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt - const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF - const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF - const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt - const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF - const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF - const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 - const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF - const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF - const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 - const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_ICl_Ca__i_Cl_Ca + HeartConfig::Instance()->GetCapacitance() * var_INaK__i_NaK + var_ICaL__i_CaL_converted + var_ICab__i_Cab_converted + var_ICap__i_Cap_converted + var_IClb__i_Clb_converted + var_IK1__i_K1_converted + var_IKr__i_Kr_converted + var_IKs__i_Ks_converted + var_INa__i_Na_converted + var_INaCa__i_NaCa_converted + var_INab__i_Nab_converted + var_Itof__i_tof_converted + var_Itos__i_tos_converted; // uA_per_cm2 - - const double i_ionic = var_chaste_interface__i_ionic; - if (made_new_cvode_vector) - { - DeleteVector(rY); - } - EXCEPT_IF_NOT(!std::isnan(i_ionic)); - return i_ionic; - } - - void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) - { - // Inputs: - // Time units: millisecond - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); - // Units: millivolt; Initial value: -85.721630473733 - double var_chaste_interface__Ca_buffer__Cai = NV_Ith_S(rY, 1); - // Units: millimolar; Initial value: 8.6504944644883e-05 - double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); - // Units: dimensionless; Initial value: 0.98714602875678 - double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); - // Units: dimensionless; Initial value: 0.991826348770428 - double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); - // Units: dimensionless; Initial value: 0.0013702407736465 - double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); - // Units: dimensionless; Initial value: 0.00846906175020028 - double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); - // Units: dimensionless; Initial value: 0.00613557812033723 - double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); - // Units: dimensionless; Initial value: 0.00401072468238921 - double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); - // Units: dimensionless; Initial value: 0.31555225368514 - double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); - // Units: dimensionless; Initial value: 0.402577243036347 - double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); - // Units: dimensionless; Initial value: 0.00401068798369438 - double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); - // Units: dimensionless; Initial value: 0.994632857675454 - double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); - // Units: dimensionless; Initial value: 6.99526086177479e-06 - double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); - // Units: dimensionless; Initial value: 1.00067601563206 - double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); - // Units: dimensionless; Initial value: 0.0150193299768419 - double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); - // Units: dimensionless; Initial value: 0.0244048782575591 - double var_chaste_interface__Jrel_SR__R = NV_Ith_S(rY, 16); - // Units: dimensionless; Initial value: 0.890917121306535 - double var_chaste_interface__Jrel_SR__I = NV_Ith_S(rY, 17); - // Units: dimensionless; Initial value: 8.71752603681652e-08 - double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); - // Units: dimensionless; Initial value: 7.1199533741995e-07 - double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); - // Units: millimolar; Initial value: 8.87161932058707 - double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); - // Units: millimolar; Initial value: 8.87031835089116 - double var_chaste_interface__Na_buffer__Na_SL_buf = NV_Ith_S(rY, 21); - // Units: millimolar; Initial value: 0.77606800956492 - double var_chaste_interface__Na_buffer__Na_jct_buf = NV_Ith_S(rY, 22); - // Units: millimolar; Initial value: 3.55668431730337 - double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); - // Units: millimolar; Initial value: 8.87200572571131 - double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); - // Units: millimolar; Initial value: 0.547125831028543 - double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); - // Units: millimolar; Initial value: 0.000104971310105451 - double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); - // Units: millimolar; Initial value: 0.000174045152623969 - double var_chaste_interface__Ca_buffer__Ca_SLB_SL = NV_Ith_S(rY, 27); - // Units: millimolar; Initial value: 0.00973710481246467 - double var_chaste_interface__Ca_buffer__Ca_SLB_jct = NV_Ith_S(rY, 28); - // Units: millimolar; Initial value: 0.00774564218017916 - double var_chaste_interface__Ca_buffer__Ca_SLHigh_SL = NV_Ith_S(rY, 29); - // Units: millimolar; Initial value: 0.113168405274355 - double var_chaste_interface__Ca_buffer__Ca_SLHigh_jct = NV_Ith_S(rY, 30); - // Units: millimolar; Initial value: 0.0772568134367606 - double var_chaste_interface__Ca_buffer__Ca_Calsequestrin = NV_Ith_S(rY, 31); - // Units: millimolar; Initial value: 1.18828527890062 - double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC = NV_Ith_S(rY, 32); - // Units: millimolar; Initial value: 0.00886665040283094 - double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = NV_Ith_S(rY, 33); - // Units: millimolar; Initial value: 0.117873278193472 - double var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = NV_Ith_S(rY, 34); - // Units: millimolar; Initial value: 0.0103906683506505 - double var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin = NV_Ith_S(rY, 35); - // Units: millimolar; Initial value: 0.000293073957804278 - double var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin = NV_Ith_S(rY, 36); - // Units: millimolar; Initial value: 0.00195899238146509 - double var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin = NV_Ith_S(rY, 37); - // Units: millimolar; Initial value: 0.137523520981802 - double var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB = NV_Ith_S(rY, 38); - // Units: millimolar; Initial value: 0.00215728901718264 - double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = NV_Ith_S(rY, 39); - // Units: millimolar; Initial value: 0.0 - double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = NV_Ith_S(rY, 40); - // Units: millimolar; Initial value: 0.0 - double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = NV_Ith_S(rY, 41); - // Units: millimolar; Initial value: 0.0 - double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = NV_Ith_S(rY, 42); - // Units: millimolar; Initial value: 0.0 - double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = NV_Ith_S(rY, 43); - // Units: millimolar; Initial value: 0.0 - double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = NV_Ith_S(rY, 44); - // Units: millimolar; Initial value: 0.0 - - // Mathematics - double d_dt_chaste_interface_var_cell__V; - const double var_Ca_buffer__Bmax_Calsequestrin = 0.14000000000000001; // millimolar - const double var_Ca_buffer__Bmax_SLB_SL = 0.037400000000000003; // millimolar - const double var_Ca_buffer__Bmax_SLB_jct = 0.0045999999999999999; // millimolar - const double var_Ca_buffer__Bmax_SLHigh_SL = 0.0134; // millimolar - const double var_Ca_buffer__Bmax_SLHigh_jct = 0.00165; // millimolar - const double var_Ca_buffer__koff_Calsequestrin = 65; // per_millisecond - const double var_Ca_buffer__koff_SLB = 1.3; // per_millisecond - const double var_Ca_buffer__koff_SLHigh = 0.029999999999999999; // per_millisecond - const double var_Ca_buffer__kon_Calsequestrin = 100; // per_millimolar_per_millisecond - const double var_Ca_buffer__kon_SL = 100; // per_millimolar_per_millisecond - const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless - const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless - const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond - const double var_ICaL__Q10_CaL = 1.8; // dimensionless - const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless - const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless - const double var_ICaL__gamma_Nai = 0.75; // dimensionless - const double var_ICaL__gamma_Nao = 0.75; // dimensionless - const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL) * var_chaste_interface__Ca_buffer__Ca_SL; // 1 / millisecond - const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct) * var_chaste_interface__Ca_buffer__Ca_jct; // 1 / millisecond - const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless - const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless - const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless - const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless - const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF - const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless - const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless - const double var_ICap__H = 1.6000000000000001; // dimensionless - const double var_ICap__Km = 0.00050000000000000001; // millimolar - const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless - const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF - const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless - const double var_INa__Fx_Na_jct = 0.11; // dimensionless - const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless - const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless - const double var_INaCa__HNa = 3; // dimensionless - const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar - const double var_INaCa__K_mCao = 1.3; // millimolar - const double var_INaCa__K_mNai = 12.289999999999999; // millimolar - const double var_INaCa__K_mNao = 87.5; // millimolar - const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar - const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless - const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless - const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless - const double var_INaCa__eta = 0.34999999999999998; // dimensionless - const double var_INaCa__ksat = 0.27000000000000002; // dimensionless - const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless - const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless - const double var_INaK__H_NaK = 4; // dimensionless - const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF - const double var_INaK__Km_Ko = 1.5; // millimolar - const double var_INaK__Km_Nai = 11; // millimolar - const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless - const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless - const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless - const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless - const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless - const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF - const double var_Jleak_SR__j_leak_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * NV_Ith_S(mParameters, 0); // millimolar_per_millisecond - const double var_Jpump_SR__H = 1.7869999999999999; // dimensionless - const double var_Jpump_SR__Kmf = 0.00024600000000000002; // millimolar - const double var_Jpump_SR__Kmr = 1.7; // millimolar - const double var_Jpump_SR__Q10_SRCaP = 2.6000000000000001; // dimensionless - const double var_Jrel_SR__EC50_SR = 0.45000000000000001; // millimolar - const double var_Jrel_SR__HSR = 2.5; // dimensionless - const double var_Jrel_SR__Max_SR = 15; // dimensionless - const double var_Jrel_SR__Min_SR = 1; // dimensionless - const double var_Jrel_SR__RI = 1 - var_chaste_interface__Jrel_SR__I - var_chaste_interface__Jrel_SR__O - var_chaste_interface__Jrel_SR__R; // dimensionless - const double var_Jrel_SR__kCaSR = -(-var_Jrel_SR__Min_SR + var_Jrel_SR__Max_SR) / (1 + pow((var_Jrel_SR__EC50_SR / var_chaste_interface__Ca_buffer__Ca_SR), var_Jrel_SR__HSR)) + var_Jrel_SR__Max_SR; // dimensionless - const double var_Jrel_SR__kiCa = 0.5; // per_millimolar_per_millisecond - const double var_Jrel_SR__kiSRCa = var_Jrel_SR__kCaSR * var_Jrel_SR__kiCa; // per_millimolar_per_millisecond - const double var_Jrel_SR__kim = 0.0050000000000000001; // per_millisecond - const double var_Jrel_SR__koCa = 10; // per_millimolar2_per_millisecond - const double var_Jrel_SR__koSRCa = var_Jrel_SR__koCa / var_Jrel_SR__kCaSR; // per_millimolar2_per_millisecond - const double var_Jrel_SR__kom = 0.059999999999999998; // per_millisecond - const double d_dt_chaste_interface_var_Jrel_SR__I = -var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_Jrel_SR__RI * var_Jrel_SR__koSRCa + var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond - const double d_dt_chaste_interface_var_Jrel_SR__O = var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond - const double d_dt_chaste_interface_var_Jrel_SR__R = var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + var_Jrel_SR__RI * var_Jrel_SR__kim - pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__kiSRCa; // 1 / millisecond - const double var_Jrel_SR__j_rel_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); // millimolar_per_millisecond - const double var_Na_buffer__Bmax_SL = 1.6499999999999999; // millimolar - const double var_Na_buffer__Bmax_jct = 7.5609999999999999; // millimolar - const double var_Na_buffer__koff = 0.001; // per_millisecond - const double var_Na_buffer__kon = 0.0001; // per_millimolar_per_millisecond - const double var_Na_buffer__dNa_SL_buf = -var_chaste_interface__Na_buffer__Na_SL_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_SL_buf + var_Na_buffer__Bmax_SL) * var_chaste_interface__Na_buffer__Na_SL * var_Na_buffer__kon; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_Na_buffer__Na_SL_buf = var_Na_buffer__dNa_SL_buf; // millimolar / millisecond - const double var_Na_buffer__dNa_jct_buf = -var_chaste_interface__Na_buffer__Na_jct_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_jct_buf + var_Na_buffer__Bmax_jct) * var_chaste_interface__Na_buffer__Na_jct * var_Na_buffer__kon; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_Na_buffer__Na_jct_buf = var_Na_buffer__dNa_jct_buf; // millimolar / millisecond - const double var_ICaL_d_gate__d_infinity = 1 / (1 + exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)); // dimensionless - const double var_ICaL_d_gate__tau_d = 28.571428571428569 * (1 - exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)) * var_ICaL_d_gate__d_infinity / (14.5 + var_chaste_interface__cell__V); // millisecond - const double d_dt_chaste_interface_var_ICaL_d_gate__d = (-var_chaste_interface__ICaL_d_gate__d + var_ICaL_d_gate__d_infinity) / var_ICaL_d_gate__tau_d; // 1 / millisecond - const double var_ICaL_f_gate__f_infinity = 1 / (1 + exp(9.7388888888888889 + 0.27777777777777779 * var_chaste_interface__cell__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V)); // dimensionless - const double var_ICaL_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2))); // millisecond - const double d_dt_chaste_interface_var_ICaL_f_gate__f = (-var_chaste_interface__ICaL_f_gate__f + var_ICaL_f_gate__f_infinity) / var_ICaL_f_gate__tau_f; // 1 / millisecond - const double var_IKr_Xr_gate__Xr_infinity = 1 / (1 + exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V)); // dimensionless - const double var_IKr_Xr_gate__tau_Xr = 1 / (0.00060999999999999997 * (10 + var_chaste_interface__cell__V) / (-1 + exp(1.45 + 0.14499999999999999 * var_chaste_interface__cell__V)) + 0.0013799999999999999 * (7 + var_chaste_interface__cell__V) / (1 - exp(-0.86099999999999999 - 0.123 * var_chaste_interface__cell__V))); // millisecond - const double d_dt_chaste_interface_var_IKr_Xr_gate__Xr = (-var_chaste_interface__IKr_Xr_gate__Xr + var_IKr_Xr_gate__Xr_infinity) / var_IKr_Xr_gate__tau_Xr; // 1 / millisecond - const double var_IKs_Xs_gate__Xs_infinity = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless - const double var_IKs_Xs_gate__tau_Xs = 1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))); // millisecond - const double d_dt_chaste_interface_var_IKs_Xs_gate__Xs = (-var_chaste_interface__IKs_Xs_gate__Xs + var_IKs_Xs_gate__Xs_infinity) / var_IKs_Xs_gate__tau_Xs; // 1 / millisecond - const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 16) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond - const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 16)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 16))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 16) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond - const double var_INa_h_gate__h_infinity = 0.01 * NV_Ith_S(mParameters, 15) + (1 - 0.01 * NV_Ith_S(mParameters, 15)) * var_INa_h_gate__alpha_h / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // dimensionless - const double var_INa_h_gate__tau_h = 1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // millisecond - const double d_dt_chaste_interface_var_INa_h_gate__h = (-var_chaste_interface__INa_h_gate__h + var_INa_h_gate__h_infinity) / var_INa_h_gate__tau_h; // 1 / millisecond - const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 16)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 16) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 16)))) : (0)); // per_millisecond - const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 16) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 16) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 16) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 16) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond - const double var_INa_j_gate__j_infinity = 0.01 * NV_Ith_S(mParameters, 15) + (1 - 0.01 * NV_Ith_S(mParameters, 15)) * var_INa_j_gate__alpha_j / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // dimensionless - const double var_INa_j_gate__tau_j = 1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // millisecond - const double d_dt_chaste_interface_var_INa_j_gate__j = (-var_chaste_interface__INa_j_gate__j + var_INa_j_gate__j_infinity) / var_INa_j_gate__tau_j; // 1 / millisecond - const double var_INa_m_gate__alpha_m = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__cell__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_millisecond - const double var_INa_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__cell__V); // per_millisecond - const double var_INa_m_gate__m_infinity = var_INa_m_gate__alpha_m / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // dimensionless - const double var_INa_m_gate__tau_m = 1 / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // millisecond - const double d_dt_chaste_interface_var_INa_m_gate__m = (-var_chaste_interface__INa_m_gate__m + var_INa_m_gate__m_infinity) / var_INa_m_gate__tau_m; // 1 / millisecond - const double var_Itof_X_gate__X_tof_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless - const double var_Itof_X_gate__tau_X_tof = 1.5 + 3.5 * exp(-0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2)); // millisecond - const double d_dt_chaste_interface_var_Itof_X_gate__X_tof = (-var_chaste_interface__Itof_X_gate__X_tof + var_Itof_X_gate__X_tof_infinity) / var_Itof_X_gate__tau_X_tof; // 1 / millisecond - const double var_Itof_Y_gate__Y_tof_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless - const double var_Itof_Y_gate__tau_Y_tof = 20 + 20 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond - const double d_dt_chaste_interface_var_Itof_Y_gate__Y_tof = (-var_chaste_interface__Itof_Y_gate__Y_tof + var_Itof_Y_gate__Y_tof_infinity) / var_Itof_Y_gate__tau_Y_tof; // 1 / millisecond - const double var_Itos_R_gate__R_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless - const double var_Itos_R_gate__tau_R_tos = 220 + 2800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond - const double d_dt_chaste_interface_var_Itos_R_gate__R_tos = (-var_chaste_interface__Itos_R_gate__R_tos + var_Itos_R_gate__R_tos_infinity) / var_Itos_R_gate__tau_R_tos; // 1 / millisecond - const double var_Itos_X_gate__X_tos_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless - const double var_Itos_X_gate__tau_X_tos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__cell__V)); // millisecond - const double d_dt_chaste_interface_var_Itos_X_gate__X_tos = (-var_chaste_interface__Itos_X_gate__X_tos + var_Itos_X_gate__X_tos_infinity) / var_Itos_X_gate__tau_X_tos; // 1 / millisecond - const double var_Itos_Y_gate__Y_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless - const double var_Itos_Y_gate__tau_Y_tos = 30 + 3000 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond - const double d_dt_chaste_interface_var_Itos_Y_gate__Y_tos = (-var_chaste_interface__Itos_Y_gate__Y_tos + var_Itos_Y_gate__Y_tos_infinity) / var_Itos_Y_gate__tau_Y_tos; // 1 / millisecond - const double var_cytosolic_Ca_buffer__Bmax_Calmodulin = 0.024; // millimolar - const double var_cytosolic_Ca_buffer__Bmax_Myosin_Ca = 0.14000000000000001; // millimolar - const double var_cytosolic_Ca_buffer__Bmax_Myosin_Mg = 0.14000000000000001; // millimolar - const double var_cytosolic_Ca_buffer__Bmax_SRB = 0.017100000000000001; // millimolar - const double var_cytosolic_Ca_buffer__Bmax_TroponinC = 0.070000000000000007; // millimolar - const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca = 0.14000000000000001; // millimolar - const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg = 0.14000000000000001; // millimolar - const double var_cytosolic_Ca_buffer__koff_Calmodulin = 0.23799999999999999; // per_millisecond - const double var_cytosolic_Ca_buffer__koff_Myosin_Ca = 0.00046000000000000001; // per_millisecond - const double var_cytosolic_Ca_buffer__koff_Myosin_Mg = 5.7000000000000003e-5; // per_millisecond - const double var_cytosolic_Ca_buffer__koff_SRB = 0.059999999999999998; // per_millisecond - const double var_cytosolic_Ca_buffer__koff_TroponinC = 0.019599999999999999; // per_millisecond - const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca = 3.1999999999999999e-5; // per_millisecond - const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg = 0.0033300000000000001; // per_millisecond - const double var_cytosolic_Ca_buffer__kon_Calmodulin = 34; // per_millimolar_per_millisecond - const double var_cytosolic_Ca_buffer__dCa_Calmodulin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin * var_cytosolic_Ca_buffer__koff_Calmodulin + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin + var_cytosolic_Ca_buffer__Bmax_Calmodulin) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Calmodulin; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin = var_cytosolic_Ca_buffer__dCa_Calmodulin; // millimolar / millisecond - const double var_cytosolic_Ca_buffer__kon_Myosin_Ca = 13.800000000000001; // per_millimolar_per_millisecond - const double var_cytosolic_Ca_buffer__dCa_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Myosin_Ca; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin = var_cytosolic_Ca_buffer__dCa_Myosin; // millimolar / millisecond - const double var_cytosolic_Ca_buffer__kon_Myosin_Mg = 0.015699999999999999; // per_millimolar_per_millisecond - const double var_cytosolic_Ca_buffer__kon_SRB = 100; // per_millimolar_per_millisecond - const double var_cytosolic_Ca_buffer__dCa_SRB = -var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB * var_cytosolic_Ca_buffer__koff_SRB + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB + var_cytosolic_Ca_buffer__Bmax_SRB) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_SRB; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB = var_cytosolic_Ca_buffer__dCa_SRB; // millimolar / millisecond - const double var_cytosolic_Ca_buffer__kon_TroponinC = 32.700000000000003; // per_millimolar_per_millisecond - const double var_cytosolic_Ca_buffer__dCa_TroponinC = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC * var_cytosolic_Ca_buffer__koff_TroponinC + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC + var_cytosolic_Ca_buffer__Bmax_TroponinC) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC = var_cytosolic_Ca_buffer__dCa_TroponinC; // millimolar / millisecond - const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca = 2.3700000000000001; // per_millimolar_per_millisecond - const double var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg; // millimolar / millisecond - const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg = 0.0030000000000000001; // per_millimolar_per_millisecond - const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol = 0.025000000000000001; // millimolar - const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL = 0.00076999999999999996; // millimolar - const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct = 2.0000000000000002e-5; // millimolar - const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol = 0.025000000000000001; // millimolar - const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL = 0.00076999999999999996; // millimolar - const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct = 2.0000000000000002e-5; // millimolar - const double var_indo_fluo_Ca_buffer_not_connected__Fluo3 = 0; // millimolar - const double var_indo_fluo_Ca_buffer_not_connected__Indo1 = 0; // millimolar - const double var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 = 0.11; // per_millisecond - const double var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 = 0.059999999999999998; // per_millisecond - const double var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3 = 100; // per_millimolar2_per_millisecond - const double var_indo_fluo_Ca_buffer_not_connected__kon_Indo1 = 100; // per_millimolar2_per_millisecond - const double var_ion_diffusion__J_Ca_SL_cytosol = 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Ca_SL - 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Cai; // millimole_per_millisecond - const double var_ion_diffusion__J_Ca_jct_SL = 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_jct - 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_SL; // millimole_per_millisecond - const double var_ion_diffusion__J_Na_SL_cytosol = 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Na_SL - 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Nai; // millimole_per_millisecond - const double var_ion_diffusion__J_Na_jct_SL = 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_jct - 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_SL; // millimole_per_millisecond - const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 - const double var_model_parameters__Mgi = 1; // millimolar - const double var_cytosolic_Ca_buffer__dMg_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Mg) * var_cytosolic_Ca_buffer__kon_Myosin_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin = var_cytosolic_Ca_buffer__dMg_Myosin; // millimolar / millisecond - const double var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg) * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar / millisecond - const double var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound = var_cytosolic_Ca_buffer__dCa_Calmodulin + var_cytosolic_Ca_buffer__dCa_Myosin + var_cytosolic_Ca_buffer__dCa_SRB + var_cytosolic_Ca_buffer__dCa_TroponinC + var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__dMg_Myosin + var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar_per_millisecond - const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless - const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); // coulomb_per_mole - const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF - const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF - const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 - const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF - const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 - const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF - const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // dimensionless - const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF - const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF - const double var_Jpump_SR__Q_SRCaP = pow(var_Jpump_SR__Q10_SRCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_model_parameters__cell_length = 100; // micrometre - const double var_model_parameters__cell_radius = 10.25; // micrometre - const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad - const double var_model_parameters__Vol_Cell = 3.1415926540000002e-15 * pow(var_model_parameters__cell_radius, 2) * var_model_parameters__cell_length; // liter - const double var_model_parameters__Vol_SL = 0.02 * var_model_parameters__Vol_Cell; // liter - const double var_model_parameters__Vol_SR = 0.035000000000000003 * var_model_parameters__Vol_Cell; // liter - const double var_model_parameters__Vol_cytosol = 0.65000000000000002 * var_model_parameters__Vol_Cell; // liter - const double var_Ca_buffer__dCa_SLB_SL = -var_chaste_interface__Ca_buffer__Ca_SLB_SL * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_SL + var_Ca_buffer__Bmax_SLB_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond - const double var_Ca_buffer__dCa_SLHigh_SL = -var_chaste_interface__Ca_buffer__Ca_SLHigh_SL * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_SL + var_Ca_buffer__Bmax_SLHigh_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond - const double var_Ca_buffer__dCa_SL_tot_bound = var_Ca_buffer__dCa_SLB_SL + var_Ca_buffer__dCa_SLHigh_SL; // millimolar_per_millisecond - const double var_Ca_buffer__dCalsequestrin = -var_chaste_interface__Ca_buffer__Ca_Calsequestrin * var_Ca_buffer__koff_Calsequestrin + (-var_chaste_interface__Ca_buffer__Ca_Calsequestrin + var_Ca_buffer__Bmax_Calsequestrin * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR) * var_chaste_interface__Ca_buffer__Ca_SR * var_Ca_buffer__kon_Calsequestrin; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin = var_Ca_buffer__dCalsequestrin; // millimolar / millisecond - const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL = var_Ca_buffer__dCa_SLB_SL; // millimolar / millisecond - const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL = var_Ca_buffer__dCa_SLHigh_SL; // millimolar / millisecond - const double d_dt_chaste_interface_var_Na_buffer__Nai = NV_Ith_S(mParameters, 3) * var_ion_diffusion__J_Na_SL_cytosol / var_model_parameters__Vol_cytosol; // millimolar / millisecond - const double var_Jpump_SR__j_pump_SR = (pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) - pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_Jpump_SR__Q_SRCaP * NV_Ith_S(mParameters, 2) * var_model_parameters__Vol_cytosol / ((1 + pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) + pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_model_parameters__Vol_SR); // millimolar_per_millisecond - const double d_dt_chaste_interface_var_Ca_buffer__Ca_SR = -var_Ca_buffer__dCalsequestrin - var_Jrel_SR__j_rel_SR - var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR + var_Jpump_SR__j_pump_SR; // millimolar / millisecond - const double d_dt_chaste_interface_var_Ca_buffer__Cai = -var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound + var_ion_diffusion__J_Ca_SL_cytosol / var_model_parameters__Vol_cytosol - var_Jpump_SR__j_pump_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_cytosol; // millimolar / millisecond - const double var_model_parameters__Vol_jct = 0.00051000000000000004 * var_model_parameters__Vol_Cell; // liter - const double var_Ca_buffer__dCa_SLB_jct = -var_chaste_interface__Ca_buffer__Ca_SLB_jct * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLB_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond - const double var_Ca_buffer__dCa_SLHigh_jct = -var_chaste_interface__Ca_buffer__Ca_SLHigh_jct * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLHigh_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond - const double var_Ca_buffer__dCa_jct_tot_bound = var_Ca_buffer__dCa_SLB_jct + var_Ca_buffer__dCa_SLHigh_jct; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct = var_Ca_buffer__dCa_SLB_jct; // millimolar / millisecond - const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct = var_Ca_buffer__dCa_SLHigh_jct; // millimolar / millisecond - const double var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; // millimolar - const double var_indo_fluo_Ca_buffer_not_connected__Indo1Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; // millimolar - const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol; // millimolar / millisecond - const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL; // millimolar / millisecond - const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct; // millimolar / millisecond - const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol; // millimolar / millisecond - const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL; // millimolar / millisecond - const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond - const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct; // millimolar / millisecond - const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt - const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF - const double var_Ca_buffer__i_Ca_SL_tot = -2 * var_INaCa__i_NaCa_SL + var_ICaL__i_CaL_Ca_SL + var_ICab__i_Cab_SL + var_ICap__i_Cap_SL; // microA_per_microF - const double d_dt_chaste_interface_var_Ca_buffer__Ca_SL = -var_Ca_buffer__dCa_SL_tot_bound + (-var_ion_diffusion__J_Ca_SL_cytosol + var_ion_diffusion__J_Ca_jct_SL) / var_model_parameters__Vol_SL - 0.5 * var_Ca_buffer__i_Ca_SL_tot * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_SL); // millimolar / millisecond - const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt - const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF - const double var_Ca_buffer__i_Ca_jct_tot = -2 * var_INaCa__i_NaCa_jct + var_ICaL__i_CaL_Ca_jct + var_ICab__i_Cab_jct + var_ICap__i_Cap_jct; // microA_per_microF - const double d_dt_chaste_interface_var_Ca_buffer__Ca_jct = -var_Ca_buffer__dCa_jct_tot_bound - var_ion_diffusion__J_Ca_jct_SL / var_model_parameters__Vol_jct + var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct + var_Jrel_SR__j_rel_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_jct - 0.5 * var_Ca_buffer__i_Ca_jct_tot * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_jct); // millimolar / millisecond - const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt - const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF - const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF - const double d_dt_chaste_interface_var_Na_buffer__Na_SL = (-var_Na_buffer__dNa_SL_buf + (-var_ion_diffusion__J_Na_SL_cytosol + var_ion_diffusion__J_Na_jct_SL) / var_model_parameters__Vol_SL - (3 * var_INaCa__i_NaCa_SL + 3 * var_INaK__i_NaK_SL + var_ICaL__i_CaL_Na_SL + var_INa__i_Na_SL + var_INab__i_Nab_SL) * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_SL)) * NV_Ith_S(mParameters, 3); // millimolar / millisecond - const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt - const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF - const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF - const double d_dt_chaste_interface_var_Na_buffer__Na_jct = (-var_Na_buffer__dNa_jct_buf - var_ion_diffusion__J_Na_jct_SL / var_model_parameters__Vol_jct - (3 * var_INaCa__i_NaCa_jct + 3 * var_INaK__i_NaK_jct + var_ICaL__i_CaL_Na_jct + var_INa__i_Na_jct + var_INab__i_Nab_jct) * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_jct)) * NV_Ith_S(mParameters, 3); // millimolar / millisecond - - if (mSetVoltageDerivativeToZero) - { - d_dt_chaste_interface_var_cell__V = 0.0; - } - else - { - const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond - const double var_ICaL__gamma_Ki = 0.75; // dimensionless - const double var_ICaL__gamma_Ko = 0.75; // dimensionless - const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless - const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless - const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF - const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar - const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless - const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless - const double var_IKs__pCa_SL = 3 - log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless - const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF - const double var_IKs__pCa_jct = 3 - log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless - const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF - const double var_IKs__pKNa = 0.018329999999999999; // dimensionless - const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless - const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 - const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF - const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF - const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF - const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF - const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF - const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt - const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF - const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF - const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF - const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF - const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF - const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF - const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt - const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF - const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF - const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt - const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond - const double var_IK1_K1_gate__beta_K1 = (exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond - const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless - const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF - const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF - const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF - const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF - const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF - const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF - d_dt_chaste_interface_var_cell__V = -var_ICaL__i_CaL - var_ICab__i_Cab - var_ICap__i_Cap - var_ICl_Ca__i_Cl_Ca - var_IClb__i_Clb - var_IK1__i_K1 - var_IKr__i_Kr - var_IKs__i_Ks - var_INa__i_Na - var_INaCa__i_NaCa - var_INaK__i_NaK - var_INab__i_Nab - var_Itof__i_tof - var_Itos__i_tos - var_cell__i_Stim; // millivolt / millisecond - } - - NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_cell__V; - NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_buffer__Cai; - NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_INa_h_gate__h; - NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_INa_j_gate__j; - NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_INa_m_gate__m; - NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_IKr_Xr_gate__Xr; - NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_IKs_Xs_gate__Xs; - NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_Itos_X_gate__X_tos; - NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_Itos_Y_gate__Y_tos; - NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_Itos_R_gate__R_tos; - NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_Itof_X_gate__X_tof; - NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_Itof_Y_gate__Y_tof; - NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_ICaL_d_gate__d; - NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_ICaL_f_gate__f; - NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL; - NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct; - NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_Jrel_SR__R; - NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_Jrel_SR__I; - NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_Jrel_SR__O; - NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_Na_buffer__Na_SL; - NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_Na_buffer__Na_jct; - NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_Na_buffer__Na_SL_buf; - NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_Na_buffer__Na_jct_buf; - NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Na_buffer__Nai; - NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Ca_buffer__Ca_SR; - NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Ca_buffer__Ca_SL; - NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Ca_buffer__Ca_jct; - NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL; - NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct; - NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL; - NV_Ith_S(rDY,30) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct; - NV_Ith_S(rDY,31) = d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin; - NV_Ith_S(rDY,32) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC; - NV_Ith_S(rDY,33) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg; - NV_Ith_S(rDY,34) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg; - NV_Ith_S(rDY,35) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin; - NV_Ith_S(rDY,36) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin; - NV_Ith_S(rDY,37) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin; - NV_Ith_S(rDY,38) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB; - NV_Ith_S(rDY,39) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; - NV_Ith_S(rDY,40) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; - NV_Ith_S(rDY,41) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; - NV_Ith_S(rDY,42) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; - NV_Ith_S(rDY,43) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; - NV_Ith_S(rDY,44) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; - } - - void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::EvaluateAnalyticJacobian(double var_chaste_interface__environment__time, N_Vector rY, N_Vector rDY, CHASTE_CVODE_DENSE_MATRIX rJacobian, N_Vector rTmp1, N_Vector rTmp2, N_Vector rTmp3) - { - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); - // Units: millivolt; Initial value: -85.721630473733 - double var_chaste_interface__Ca_buffer__Cai = NV_Ith_S(rY, 1); - // Units: millimolar; Initial value: 8.6504944644883e-05 - double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); - // Units: dimensionless; Initial value: 0.98714602875678 - double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); - // Units: dimensionless; Initial value: 0.991826348770428 - double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); - // Units: dimensionless; Initial value: 0.0013702407736465 - double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); - // Units: dimensionless; Initial value: 0.00846906175020028 - double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); - // Units: dimensionless; Initial value: 0.00613557812033723 - double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); - // Units: dimensionless; Initial value: 0.00401072468238921 - double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); - // Units: dimensionless; Initial value: 0.31555225368514 - double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); - // Units: dimensionless; Initial value: 0.402577243036347 - double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); - // Units: dimensionless; Initial value: 0.00401068798369438 - double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); - // Units: dimensionless; Initial value: 0.994632857675454 - double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); - // Units: dimensionless; Initial value: 6.99526086177479e-06 - double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); - // Units: dimensionless; Initial value: 1.00067601563206 - double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); - // Units: dimensionless; Initial value: 0.0150193299768419 - double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); - // Units: dimensionless; Initial value: 0.0244048782575591 - double var_chaste_interface__Jrel_SR__R = NV_Ith_S(rY, 16); - // Units: dimensionless; Initial value: 0.890917121306535 - double var_chaste_interface__Jrel_SR__I = NV_Ith_S(rY, 17); - // Units: dimensionless; Initial value: 8.71752603681652e-08 - double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); - // Units: dimensionless; Initial value: 7.1199533741995e-07 - double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); - // Units: millimolar; Initial value: 8.87161932058707 - double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); - // Units: millimolar; Initial value: 8.87031835089116 - double var_chaste_interface__Na_buffer__Na_SL_buf = NV_Ith_S(rY, 21); - // Units: millimolar; Initial value: 0.77606800956492 - double var_chaste_interface__Na_buffer__Na_jct_buf = NV_Ith_S(rY, 22); - // Units: millimolar; Initial value: 3.55668431730337 - double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); - // Units: millimolar; Initial value: 8.87200572571131 - double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); - // Units: millimolar; Initial value: 0.547125831028543 - double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); - // Units: millimolar; Initial value: 0.000104971310105451 - double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); - // Units: millimolar; Initial value: 0.000174045152623969 - double var_chaste_interface__Ca_buffer__Ca_SLB_SL = NV_Ith_S(rY, 27); - // Units: millimolar; Initial value: 0.00973710481246467 - double var_chaste_interface__Ca_buffer__Ca_SLB_jct = NV_Ith_S(rY, 28); - // Units: millimolar; Initial value: 0.00774564218017916 - double var_chaste_interface__Ca_buffer__Ca_SLHigh_SL = NV_Ith_S(rY, 29); - // Units: millimolar; Initial value: 0.113168405274355 - double var_chaste_interface__Ca_buffer__Ca_SLHigh_jct = NV_Ith_S(rY, 30); - // Units: millimolar; Initial value: 0.0772568134367606 - double var_chaste_interface__Ca_buffer__Ca_Calsequestrin = NV_Ith_S(rY, 31); - // Units: millimolar; Initial value: 1.18828527890062 - double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC = NV_Ith_S(rY, 32); - // Units: millimolar; Initial value: 0.00886665040283094 - double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = NV_Ith_S(rY, 33); - // Units: millimolar; Initial value: 0.117873278193472 - double var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = NV_Ith_S(rY, 34); - // Units: millimolar; Initial value: 0.0103906683506505 - double var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin = NV_Ith_S(rY, 35); - // Units: millimolar; Initial value: 0.000293073957804278 - double var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin = NV_Ith_S(rY, 36); - // Units: millimolar; Initial value: 0.00195899238146509 - double var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin = NV_Ith_S(rY, 37); - // Units: millimolar; Initial value: 0.137523520981802 - double var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB = NV_Ith_S(rY, 38); - // Units: millimolar; Initial value: 0.00215728901718264 - double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = NV_Ith_S(rY, 39); - // Units: millimolar; Initial value: 0.0 - double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = NV_Ith_S(rY, 40); - // Units: millimolar; Initial value: 0.0 - double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = NV_Ith_S(rY, 41); - // Units: millimolar; Initial value: 0.0 - double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = NV_Ith_S(rY, 42); - // Units: millimolar; Initial value: 0.0 - double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = NV_Ith_S(rY, 43); - // Units: millimolar; Initial value: 0.0 - double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = NV_Ith_S(rY, 44); - // Units: millimolar; Initial value: 0.0 - const double var_x0 = 1 / var_chaste_interface__Ca_buffer__Ca_jct; - const double var_x1 = 1 + 0.10000000000000001 * var_x0; - const double var_x2 = 1 / var_chaste_interface__Ca_buffer__Ca_SL; - const double var_x3 = 1 + 0.10000000000000001 * var_x2; - const double var_x4 = -var_chaste_interface__Itos_Y_gate__Y_tos; - const double var_x5 = (var_x4 - 0.5 * var_chaste_interface__Itos_R_gate__R_tos) * NV_Ith_S(mParameters, 21); - const double var_x6 = NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_Y_gate__Y_tof; - const double var_x7 = exp(-7.0000000000000009 - 1.6666666666666667 * log10(var_chaste_interface__Ca_buffer__Ca_jct)); - const double var_x8 = 1 + var_x7; - const double var_x9 = 0.057000000000000002 + 0.19 / var_x8; - const double var_x10 = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * NV_Ith_S(mParameters, 20); - const double var_x11 = var_x10 * var_x9; - const double var_x12 = exp(-7.0000000000000009 - 1.6666666666666667 * log10(var_chaste_interface__Ca_buffer__Ca_SL)); - const double var_x13 = 1 + var_x12; - const double var_x14 = 0.057000000000000002 + 0.19 / var_x13; - const double var_x15 = var_x10 * var_x14; - const double var_x16 = sqrt(NV_Ith_S(mParameters, 8)); - const double var_x17 = var_x16 * NV_Ith_S(mParameters, 19) * var_chaste_interface__IKr_Xr_gate__Xr; - const double var_x18 = exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V); - const double var_x19 = 1 + var_x18; - const double var_x20 = 0.43033148291193518 / var_x19; - const double var_x21 = pow(var_chaste_interface__INa_m_gate__m, 3); - const double var_x22 = var_x21 * NV_Ith_S(mParameters, 14) * var_chaste_interface__INa_j_gate__j; - const double var_x23 = var_x22 * var_chaste_interface__INa_h_gate__h; - const double var_x24 = 1 / NV_Ith_S(mParameters, 10); - const double var_x25 = var_x24 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23); - const double var_x26 = var_x25 * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)); - const double var_x27 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_x26); - const double var_x28 = 1 + var_x27; - const double var_x29 = 1 / var_x28; - const double var_x30 = exp(-2.4444678999999998 + 0.51429999999999998 * var_x26 - 0.51429999999999998 * var_chaste_interface__cell__V); - const double var_x31 = 1 + var_x30; - const double var_x32 = 1 / var_x31; - const double var_x33 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_x26); - const double var_x34 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_x26); - const double var_x35 = var_x33 + 0.49124000000000001 * var_x34; - const double var_x36 = var_x32 * var_x35; - const double var_x37 = var_x16 * NV_Ith_S(mParameters, 18) / (var_x36 + 1.02 * var_x29); - const double var_x38 = -var_x26 + var_chaste_interface__cell__V; - const double var_x39 = var_x27 / pow(var_x28, 2); - const double var_x40 = 0.34999999999999998 * var_chaste_interface__cell__V; - const double var_x41 = 1 / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); - const double var_x42 = var_x41 * NV_Ith_S(mParameters, 10); - const double var_x43 = exp(var_x40 * var_x42); - const double var_x44 = pow(var_chaste_interface__Na_buffer__Na_jct, 3); - const double var_x45 = var_x44 * NV_Ith_S(mParameters, 6); - const double var_x46 = var_x43 * var_x45; - const double var_x47 = 0.34999999999999998 * var_x42; - const double var_x48 = var_x42 * var_chaste_interface__cell__V; - const double var_x49 = exp(-0.65000000000000002 * var_x48); - const double var_x50 = pow(NV_Ith_S(mParameters, 9), 3); - const double var_x51 = var_x50 * var_chaste_interface__Ca_buffer__Ca_jct; - const double var_x52 = var_x49 * var_x51; - const double var_x53 = 0.65000000000000002 * var_x42; - const double var_x54 = (1 + 278.55153203342621 * var_chaste_interface__Ca_buffer__Ca_jct) * var_chaste_interface__Ca_buffer__Ca_jct; - const double var_x55 = 1 + 0.00053869674493876331 * var_x44; - const double var_x56 = 0.0035899999999999999 * var_x50; - const double var_x57 = 1 / (var_x45 + var_x51 + 669921.875 * var_x54 + 1.3 * var_x44 + var_x55 * var_x56); - const double var_x58 = 1 + 1.6777215999999998e-11 / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3); - const double var_x59 = 1 / var_x58; - const double var_x60 = 1 + 0.27000000000000002 * var_x49; - const double var_x61 = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23); - const double var_x62 = pow(1.5700000000000001, var_x61) * NV_Ith_S(mParameters, 22); - const double var_x63 = var_x62 / var_x60; - const double var_x64 = var_x59 * var_x63; - const double var_x65 = var_x57 * var_x64; - const double var_x66 = var_x65 * (var_x46 * var_x47 + var_x52 * var_x53); - const double var_x67 = pow(var_chaste_interface__Na_buffer__Na_SL, 3); - const double var_x68 = var_x67 * NV_Ith_S(mParameters, 6); - const double var_x69 = var_x43 * var_x68; - const double var_x70 = var_x50 * var_chaste_interface__Ca_buffer__Ca_SL; - const double var_x71 = var_x49 * var_x70; - const double var_x72 = (1 + 278.55153203342621 * var_chaste_interface__Ca_buffer__Ca_SL) * var_chaste_interface__Ca_buffer__Ca_SL; - const double var_x73 = 1 + 0.00053869674493876331 * var_x67; - const double var_x74 = 1 / (var_x68 + var_x70 + 669921.875 * var_x72 + 1.3 * var_x67 + var_x56 * var_x73); - const double var_x75 = 1 + 1.6777215999999998e-11 / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3); - const double var_x76 = 1 / var_x75; - const double var_x77 = var_x63 * var_x76; - const double var_x78 = var_x74 * var_x77; - const double var_x79 = var_x78 * (var_x47 * var_x69 + var_x53 * var_x71); - const double var_x80 = var_x16 * var_x38; - const double var_x81 = pow(1.49, (-124 + 0.40000000000000002 * NV_Ith_S(mParameters, 23))); - const double var_x82 = 1 / var_chaste_interface__Na_buffer__Na_jct; - const double var_x83 = var_x81 * pow(var_x82, 4); - const double var_x84 = 0.10000000000000001 * var_chaste_interface__cell__V; - const double var_x85 = exp(-var_x42 * var_x84); - const double var_x86 = exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); - const double var_x87 = exp(-var_x48); - const double var_x88 = 1 + 0.1245 * var_x85 + 0.036499999999999998 * var_x87 * (-0.14285714285714285 + 0.14285714285714285 * var_x86); - const double var_x89 = pow(1.6299999999999999, var_x61) * NV_Ith_S(mParameters, 8) / (1.5 + NV_Ith_S(mParameters, 8)); - const double var_x90 = var_x89 * (0.012450000000000001 * var_x42 * var_x85 + var_x42 * var_x87 * (-0.0052142857142857138 + 0.0052142857142857138 * var_x86)) / pow(var_x88, 2); - const double var_x91 = var_x90 / (1 + 14641 * var_x83); - const double var_x92 = 1 / var_chaste_interface__Na_buffer__Na_SL; - const double var_x93 = var_x81 * pow(var_x92, 4); - const double var_x94 = var_x90 / (1 + 14641 * var_x93); - const double var_x95 = -0.75 * NV_Ith_S(mParameters, 9); - const double var_x96 = exp(var_x48); - const double var_x97 = 0.75 * var_x96; - const double var_x98 = var_x95 + var_x97 * var_chaste_interface__Na_buffer__Na_jct; - const double var_x99 = -1 + var_x96; - const double var_x100 = 1 / var_x99; - const double var_x101 = pow(1.8, var_x61); - const double var_x102 = var_x101 * var_chaste_interface__ICaL_f_gate__f; - const double var_x103 = var_x102 * var_chaste_interface__ICaL_d_gate__d; - const double var_x104 = var_x100 * var_x103; - const double var_x105 = var_x104 * var_x98; - const double var_x106 = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; - const double var_x107 = var_x41 * pow(NV_Ith_S(mParameters, 10), 2); - const double var_x108 = var_x106 * var_x107; - const double var_x109 = 6.0749999999999998e-9 * var_x108; - const double var_x110 = var_x105 * var_x109; - const double var_x111 = var_x104 * var_x107; - const double var_x112 = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; - const double var_x113 = var_x95 + var_x97 * var_chaste_interface__Na_buffer__Na_SL; - const double var_x114 = var_x112 * var_x113; - const double var_x115 = 6.7499999999999994e-10 * var_x114; - const double var_x116 = var_x111 * var_x115; - const double var_x117 = -0.75 * NV_Ith_S(mParameters, 8) + var_x97 * NV_Ith_S(mParameters, 5); - const double var_x118 = var_x111 * var_x117; - const double var_x119 = 1 - 0.10000000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL - 0.90000000000000002 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct; - const double var_x120 = 1.215e-7 * var_x119; - const double var_x121 = var_x69 - var_x71; - const double var_x122 = var_x121 * var_x74; - const double var_x123 = var_x42 * var_x49 * var_x62 / pow(var_x60, 2); - const double var_x124 = var_x122 * var_x123 * var_x76; - const double var_x125 = var_x46 - var_x52; - const double var_x126 = var_x125 * var_x57; - const double var_x127 = var_x123 * var_x126 * var_x59; - const double var_x128 = exp(2 * var_x48); - const double var_x129 = -1 + var_x128; - const double var_x130 = NV_Ith_S(mParameters, 12) / var_x129; - const double var_x131 = var_x103 * var_x130; - const double var_x132 = var_x112 * var_x131; - const double var_x133 = -0.34100000000000003 * NV_Ith_S(mParameters, 6); - const double var_x134 = 0.34100000000000003 * var_x128; - const double var_x135 = var_x133 + var_x134 * var_chaste_interface__Ca_buffer__Ca_SL; - const double var_x136 = 0.18000000000000002 * var_x135; - const double var_x137 = var_x107 * var_x132 * var_x136; - const double var_x138 = var_x108 * var_x131; - const double var_x139 = var_x133 + var_x134 * var_chaste_interface__Ca_buffer__Ca_jct; - const double var_x140 = 1.6200000000000001 * var_x139; - const double var_x141 = var_x138 * var_x140; - const double var_x142 = var_x106 * var_x98; - const double var_x143 = pow(NV_Ith_S(mParameters, 10), 3) * var_chaste_interface__cell__V / (pow(NV_Ith_S(mParameters, 11), 2) * pow(NV_Ith_S(mParameters, 23), 2)); - const double var_x144 = var_x103 * var_x143; - const double var_x145 = var_x144 * var_x96 / pow(var_x99, 2); - const double var_x146 = 6.0749999999999998e-9 * var_x142 * var_x145; - const double var_x147 = var_x115 * var_x145; - const double var_x148 = var_x117 * var_x120; - const double var_x149 = var_x104 * var_x96; - const double var_x150 = 5.0624999999999998e-10 * var_x112 * var_x96; - const double var_x151 = var_x104 * var_x143 * var_x150 * var_chaste_interface__Na_buffer__Na_SL; - const double var_x152 = 4.5562499999999999e-9 * var_x149; - const double var_x153 = var_x106 * var_x143; - const double var_x154 = var_x152 * var_x153 * var_chaste_interface__Na_buffer__Na_jct; - const double var_x155 = var_x128 * var_x144 * NV_Ith_S(mParameters, 12) / pow(var_x129, 2); - const double var_x156 = 0.36000000000000004 * var_x112 * var_x135 * var_x155; - const double var_x157 = var_x106 * var_x139; - const double var_x158 = 3.2400000000000002 * var_x155 * var_x157; - const double var_x159 = 1.10484 * var_x128 * var_x131 * var_x153 * var_chaste_interface__Ca_buffer__Ca_jct; - const double var_x160 = var_x128 * var_x132; - const double var_x161 = 0.12276000000000002 * var_x143 * var_x160 * var_chaste_interface__Ca_buffer__Ca_SL; - const double var_x162 = -var_x25 * log(var_x82 * NV_Ith_S(mParameters, 9)) + var_chaste_interface__cell__V; - const double var_x163 = 0.11 * var_x162; - const double var_x164 = -var_x25 * log(var_x92 * NV_Ith_S(mParameters, 9)) + var_chaste_interface__cell__V; - const double var_x165 = 0.89000000000000001 * var_x164; - const double var_x166 = NV_Ith_S(mParameters, 14) * var_chaste_interface__INa_h_gate__h; - const double var_x167 = var_x166 * var_x21; - const double var_x168 = var_x166 * pow(var_chaste_interface__INa_m_gate__m, 2) * var_chaste_interface__INa_j_gate__j; - const double var_x169 = var_x162 * var_x168; - const double var_x170 = var_x164 * var_x168; - const double var_x171 = 1 / (0.018329999999999999 * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5)); - const double var_x172 = -var_x25 * log(var_x171 * (0.018329999999999999 * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8))) + var_chaste_interface__cell__V; - const double var_x173 = var_x172 * NV_Ith_S(mParameters, 20) * var_chaste_interface__IKs_Xs_gate__Xs; - const double var_x174 = var_x26 - var_chaste_interface__cell__V; - const double var_x175 = NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; - const double var_x176 = var_x100 * var_chaste_interface__cell__V; - const double var_x177 = var_x102 * var_x176; - const double var_x178 = var_x109 * var_x98; - const double var_x179 = var_x107 * var_x177; - const double var_x180 = var_x107 * var_chaste_interface__cell__V; - const double var_x181 = var_x136 * var_x180; - const double var_x182 = var_x102 * var_x130; - const double var_x183 = var_x112 * var_x182; - const double var_x184 = var_x108 * var_chaste_interface__cell__V; - const double var_x185 = var_x140 * var_x184; - const double var_x186 = var_x101 * var_chaste_interface__ICaL_d_gate__d; - const double var_x187 = var_x176 * var_x186; - const double var_x188 = var_x107 * var_x187; - const double var_x189 = var_x130 * var_x186; - const double var_x190 = var_x112 * var_x189; - const double var_x191 = var_x111 * var_chaste_interface__cell__V; - const double var_x192 = var_x118 * var_chaste_interface__cell__V; - const double var_x193 = var_x25 * var_x92; - const double var_x194 = 0.00026433000000000001 * var_x193; - const double var_x195 = pow(var_chaste_interface__Na_buffer__Na_SL, 2); - const double var_x196 = 3 * NV_Ith_S(mParameters, 6); - const double var_x197 = 5.8017639429904805e-6 * var_x50; - const double var_x198 = -3.9000000000000004 * var_x195 - var_x195 * var_x196 - var_x195 * var_x197; - const double var_x199 = 5.3588338192419823e-9 * var_x50; - const double var_x200 = var_x121 * var_x77 / pow((var_x72 + 1.9405247813411081e-6 * var_x67 + 1.4927113702623908e-6 * var_x68 + 1.4927113702623908e-6 * var_x70 + var_x199 * var_x73), 2); - const double var_x201 = 1.9830866390704556e-12 * var_x200; - const double var_x202 = 0.89000000000000001 * var_x23; - const double var_x203 = var_x193 * var_x202; - const double var_x204 = var_x43 * NV_Ith_S(mParameters, 6); - const double var_x205 = var_x195 * var_x204 * var_x78; - const double var_x206 = var_x89 / var_x88; - const double var_x207 = var_x206 * var_x92 * var_x93 / pow((6.8301345536507063e-5 + var_x93), 2); - const double var_x208 = var_x150 * var_x191; - const double var_x209 = var_x25 * var_x82; - const double var_x210 = 3.2670000000000004e-5 * var_x209; - const double var_x211 = pow(var_chaste_interface__Na_buffer__Na_jct, 2); - const double var_x212 = -3.9000000000000004 * var_x211 - var_x196 * var_x211 - var_x197 * var_x211; - const double var_x213 = var_x125 * var_x64 / pow((var_x54 + 1.9405247813411081e-6 * var_x44 + 1.4927113702623908e-6 * var_x45 + 1.4927113702623908e-6 * var_x51 + var_x199 * var_x55), 2); - const double var_x214 = 2.4510059584016866e-13 * var_x213; - const double var_x215 = 0.11 * var_x23; - const double var_x216 = var_x209 * var_x215; - const double var_x217 = var_x204 * var_x211 * var_x65; - const double var_x218 = var_x206 * var_x82 * var_x83 / pow((6.8301345536507063e-5 + var_x83), 2); - const double var_x219 = var_x152 * var_x184; - const double var_x220 = var_x171 * var_x25; - const double var_x221 = var_x25 * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) + var_chaste_interface__cell__V; - const double var_x222 = pow(2.3500000000000001, var_x61); - const double var_x223 = pow(var_x2, 1.6000000000000001); - const double var_x224 = 5.0104537825247566e-7 * var_x2 * var_x222 * var_x223 / pow((1 + 5.2281977629563632e-6 * var_x223), 2); - const double var_x225 = 0.00011182849999999999 * var_x2 * var_x25; - const double var_x226 = var_x49 * var_x50; - const double var_x227 = var_x226 * var_x78; - const double var_x228 = var_x10 * var_x172 / log(10); - const double var_x229 = var_x122 * var_x63 / (pow(var_x75, 2) * pow(var_chaste_interface__Ca_buffer__Ca_SL, 4)); - const double var_x230 = -669921.875 - var_x50; - const double var_x231 = var_x230 - 373215529.24791086 * var_chaste_interface__Ca_buffer__Ca_SL; - const double var_x232 = 0.061380000000000011 * var_x160 * var_x180; - const double var_x233 = pow(var_chaste_interface__Ca_buffer__Ca_jct, 2); - const double var_x234 = 1.38215e-5 * var_x0 * var_x25; - const double var_x235 = pow(var_x0, 1.6000000000000001); - const double var_x236 = 6.1926956862665531e-8 * var_x0 * var_x222 * var_x235 / pow((1 + 5.2281977629563632e-6 * var_x235), 2); - const double var_x237 = var_x226 * var_x65; - const double var_x238 = var_x230 - 373215529.24791086 * var_chaste_interface__Ca_buffer__Ca_jct; - const double var_x239 = var_x126 * var_x63 / (pow(var_x58, 2) * pow(var_chaste_interface__Ca_buffer__Ca_jct, 4)); - const double var_x240 = 0.55242000000000002 * var_x128 * var_x138 * var_chaste_interface__cell__V; - const double var_x241 = 34 * var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin; - const double var_x242 = 100 * var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB; - const double var_x243 = 32.700000000000003 * var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC; - const double var_x244 = 2.3700000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg; - const double var_x245 = 2.3700000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg; - const double var_x246 = 13.800000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin; - const double var_x247 = 13.800000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin; - const double var_x248 = pow(var_chaste_interface__Ca_buffer__Cai, 0.78699999999999992); - const double var_x249 = pow(var_chaste_interface__Ca_buffer__Ca_SR, 1.7869999999999999); - const double var_x250 = 0.38742512113256738 * var_x249; - const double var_x251 = pow(var_chaste_interface__Ca_buffer__Cai, 1.7869999999999999); - const double var_x252 = 2814485.1633595936 * var_x251; - const double var_x253 = pow(2.6000000000000001, var_x61) * NV_Ith_S(mParameters, 2); - const double var_x254 = var_x253 / (1 + var_x250 + var_x252); - const double var_x255 = var_x248 * var_x254; - const double var_x256 = var_x253 * (var_x252 - var_x250) / pow((3.5530476870814998e-7 + var_x251 + 1.3765399305573384e-7 * var_x249), 2); - const double var_x257 = var_x248 * var_x256; - const double var_x258 = pow(var_chaste_interface__Ca_buffer__Ca_SR, 0.78699999999999992); - const double var_x259 = var_x254 * var_x258; - const double var_x260 = var_x256 * var_x258; - const double var_x261 = 32.700000000000003 * var_chaste_interface__Ca_buffer__Cai; - const double var_x262 = 2.3700000000000001 * var_chaste_interface__Ca_buffer__Cai; - const double var_x263 = 34 * var_chaste_interface__Ca_buffer__Cai; - const double var_x264 = 13.800000000000001 * var_chaste_interface__Ca_buffer__Cai; - const double var_x265 = 100 * var_chaste_interface__Ca_buffer__Cai; - const double var_x266 = exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 16) - 0.14705882352941177 * var_chaste_interface__cell__V); - const double var_x267 = var_chaste_interface__cell__V < -40; - const double var_x268 = ((var_x267) ? (0.13500000000000001 * var_x266) : (0)); - const double var_x269 = var_x268; - const double var_x270 = exp(var_x40 - 0.34999999999999998 * NV_Ith_S(mParameters, 16)); - const double var_x271 = exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 16)); - const double var_x272 = exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 16) - 0.0900900900900901 * var_chaste_interface__cell__V); - const double var_x273 = 1 + var_x272; - const double var_x274 = ((var_x267) ? (310000 * var_x270 + 3.5600000000000001 * var_x271) : (7.6923076923076916 / var_x273)); - const double var_x275 = var_x274; - const double var_x276 = ((var_x267) ? (-0.019852941176470591 * var_x266) : (0)); - const double var_x277 = var_x268 + var_x274; - const double var_x278 = 0.01 * NV_Ith_S(mParameters, 15); - const double var_x279 = 1 - var_x278; - const double var_x280 = var_x279 / var_x277; - const double var_x281 = ((var_x267) ? (0.28123999999999999 * var_x271 + 108500 * var_x270) : (0.693000693000693 * var_x272 / pow(var_x273, 2))); - const double var_x282 = exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 16) - 0.13780000000000001 * var_chaste_interface__cell__V); - const double var_x283 = 1 + var_x282; - const double var_x284 = exp(0.01052 * NV_Ith_S(mParameters, 16) - 0.01052 * var_chaste_interface__cell__V); - const double var_x285 = var_x284 / var_x283; - const double var_x286 = -var_x84; - const double var_x287 = exp(-3.2000000000000002 + var_x286 + 0.10000000000000001 * NV_Ith_S(mParameters, 16)); - const double var_x288 = 1 + var_x287; - const double var_x289 = exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 16) - 2.5349999999999999e-7 * var_chaste_interface__cell__V); - const double var_x290 = var_x289 / var_x288; - const double var_x291 = ((var_x267) ? (0.1212 * var_x285) : (0.29999999999999999 * var_x290)); - const double var_x292 = var_x291; - const double var_x293 = 37.780000000000001 + var_chaste_interface__cell__V; - const double var_x294 = exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 16)); - const double var_x295 = exp(0.043909999999999998 * NV_Ith_S(mParameters, 16) - 0.043909999999999998 * var_chaste_interface__cell__V); - const double var_x296 = -127140 * var_x294 - 3.4740000000000003e-5 * var_x295; - const double var_x297 = exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 16)); - const double var_x298 = 1 + var_x297; - const double var_x299 = 1 / var_x298; - const double var_x300 = var_x296 * var_x299; - const double var_x301 = ((var_x267) ? (var_x293 * var_x300) : (0)); - const double var_x302 = var_x301; - const double var_x303 = ((var_x267) ? (var_x300 + var_x293 * var_x299 * (1.5254334000000001e-6 * var_x295 - 31073.016 * var_x294) - 0.311 * var_x293 * var_x296 * var_x297 / pow(var_x298, 2)) : (0)); - const double var_x304 = var_x291 + var_x301; - const double var_x305 = var_x279 / var_x304; - const double var_x306 = ((var_x267) ? (-0.001275024 * var_x285 + 0.016701360000000002 * var_x282 * var_x284 / pow(var_x283, 2)) : (-7.6049999999999996e-8 * var_x290 + 0.029999999999999999 * var_x287 * var_x289 / pow(var_x288, 2))); - const double var_x307 = exp(-0.090909090909090912 * var_chaste_interface__cell__V); - const double var_x308 = 0.080000000000000002 * var_x307; - const double var_x309 = 47.130000000000003 + var_chaste_interface__cell__V; - const double var_x310 = exp(-4.7130000000000001 + var_x286); - const double var_x311 = 1 - var_x310; - const double var_x312 = 1 / var_x311; - const double var_x313 = 0.32000000000000001 * var_x312; - const double var_x314 = var_x309 * var_x313; - const double var_x315 = var_x308 + var_x314; - const double var_x316 = 1 / var_x315; - const double var_x317 = 0.0072727272727272727 * var_x307; - const double var_x318 = 0.032000000000000001 * var_x309 * var_x310 / pow(var_x311, 2); - const double var_x319 = var_x309 * var_x312; - const double var_x320 = exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V); - const double var_x321 = 1 + var_x320; - const double var_x322 = exp(1.45 + 0.14499999999999999 * var_chaste_interface__cell__V); - const double var_x323 = -1 + var_x322; - const double var_x324 = 0.00060999999999999997 / var_x323; - const double var_x325 = exp(-0.86099999999999999 - 0.123 * var_chaste_interface__cell__V); - const double var_x326 = 1 - var_x325; - const double var_x327 = 0.0013799999999999999 / var_x326; - const double var_x328 = 7 + var_chaste_interface__cell__V; - const double var_x329 = 10 + var_chaste_interface__cell__V; - const double var_x330 = var_x324 * var_x329; - const double var_x331 = var_x327 * var_x328; - const double var_x332 = exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V); - const double var_x333 = 1 + var_x332; - const double var_x334 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V); - const double var_x335 = -1 + var_x334; - const double var_x336 = 0.00013100000000000001 / var_x335; - const double var_x337 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V); - const double var_x338 = 1 - var_x337; - const double var_x339 = 7.1899999999999999e-5 / var_x338; - const double var_x340 = 30 + var_chaste_interface__cell__V; - const double var_x341 = var_x336 * var_x340; - const double var_x342 = var_x339 * var_x340; - const double var_x343 = 0.066666666666666666 * var_chaste_interface__cell__V; - const double var_x344 = exp(0.20000000000000001 + var_x343); - const double var_x345 = 1 + var_x344; - const double var_x346 = 1 / var_x345; - const double var_x347 = 1 / (0.5 + 9 * var_x346); - const double var_x348 = exp(-0.20000000000000001 - var_x343); - const double var_x349 = 1 + var_x348; - const double var_x350 = 0.066666666666666666 * var_x348 / pow(var_x349, 2); - const double var_x351 = 1 / var_x349; - const double var_x352 = 0.10000000000000001 * var_chaste_interface__cell__V; - const double var_x353 = exp(6 + var_x352); - const double var_x354 = 1 + var_x353; - const double var_x355 = 1 / var_x354; - const double var_x356 = 1 / (30 + 3000 * var_x355); - const double var_x357 = exp(3.3500000000000001 + var_x352); - const double var_x358 = 1 + var_x357; - const double var_x359 = var_x357 / pow(var_x358, 2); - const double var_x360 = 0.10000000000000001 * var_x359; - const double var_x361 = 1 / var_x358; - const double var_x362 = var_x361; - const double var_x363 = var_x353 / pow(var_x354, 2); - const double var_x364 = 1 / (220 + 2800 * var_x355); - const double var_x365 = exp(-0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2)); - const double var_x366 = 1 / (1.5 + 3.5 * var_x365); - const double var_x367 = 1 / (20 + 20 * var_x361); - const double var_x368 = exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V); - const double var_x369 = 1 - var_x368; - const double var_x370 = 1 / var_x369; - const double var_x371 = 1 + var_x368; - const double var_x372 = 1 / var_x371; - const double var_x373 = -var_chaste_interface__ICaL_d_gate__d + var_x372; - const double var_x374 = var_x370 * var_x373; - const double var_x375 = 0.035000000000000003 * var_x371; - const double var_x376 = 14.5 + var_chaste_interface__cell__V; - const double var_x377 = var_x370 * var_x376; - const double var_x378 = 0.0058333333333333336 * var_x368; - const double var_x379 = var_x376 * var_x378; - const double var_x380 = 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2)); - const double var_x381 = exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V); - const double var_x382 = 1 + var_x381; - const double var_x383 = exp(9.7388888888888889 + 0.27777777777777779 * var_chaste_interface__cell__V); - const double var_x384 = 1 + var_x383; - const double var_x385 = 1 / var_chaste_interface__Ca_buffer__Ca_SR; - const double var_x386 = pow(var_x385, 2.5); - const double var_x387 = 1 + 0.13584112963311223 * var_x386; - const double var_x388 = 1 / var_x387; - const double var_x389 = 7 * var_x388; - const double var_x390 = -7.5 + var_x389; - const double var_x391 = var_x390 * var_chaste_interface__Ca_buffer__Ca_jct; - const double var_x392 = 1 / (15 - 14 * var_x388); - const double var_x393 = 10 * var_x233 * var_x392; - const double var_x394 = -var_x393; - const double var_x395 = var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R; - const double var_x396 = var_x385 * var_x386 / pow(var_x387, 2); - const double var_x397 = 2.3772197685794643 * var_x396; - const double var_x398 = 0.21130842387373014 * var_x233 * var_x396 / pow((1 - 0.93333333333333335 * var_x388), 2); - const double var_x399 = var_x398 * var_chaste_interface__Jrel_SR__R; - const double var_x400 = 20 * var_x392; - const double var_x401 = var_x395 * var_x400; - const double var_x402 = 7.5 - var_x389; - const double var_x403 = var_x397 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O; - const double var_x404 = 1 - var_chaste_interface__Jrel_SR__I - var_chaste_interface__Jrel_SR__O - var_chaste_interface__Jrel_SR__R; - const double var_x405 = M_PI * var_x24; - const double var_x406 = 62.109246076532294 * var_x405; - const double var_x407 = var_x406 * NV_Ith_S(mParameters, 3); - const double var_x408 = var_x405 * NV_Ith_S(mParameters, 3); - const double var_x409 = var_x22 * var_x408; - const double var_x410 = 55.277229008113743 * var_x164; - const double var_x411 = var_x167 * var_x408; - const double var_x412 = var_x100 * var_x102; - const double var_x413 = M_PI * var_x48; - const double var_x414 = var_x413 * NV_Ith_S(mParameters, 3); - const double var_x415 = 4.1923741101659298e-8 * var_x414; - const double var_x416 = var_x114 * var_x415; - const double var_x417 = var_x100 * var_x186; - const double var_x418 = 0.0001 * var_chaste_interface__Na_buffer__Na_SL_buf; - const double var_x419 = 5.9492599172113663e-12 * var_x200; - const double var_x420 = 0.0001 * var_chaste_interface__Na_buffer__Na_SL; - const double var_x421 = 2435.6567088836191 * var_x405; - const double var_x422 = var_x421 * NV_Ith_S(mParameters, 3); - const double var_x423 = 267.92223797719811 * var_x162; - const double var_x424 = 1.4796614506467986e-5 * var_x414; - const double var_x425 = var_x142 * var_x424; - const double var_x426 = 0.0001 * var_chaste_interface__Na_buffer__Na_jct_buf; - const double var_x427 = 7.3530178752050587e-13 * var_x213; - const double var_x428 = 0.0001 * var_chaste_interface__Na_buffer__Na_jct; - const double var_x429 = 0.076376893524206985 * NV_Ith_S(mParameters, 3); - const double var_x430 = 100 * var_chaste_interface__Ca_buffer__Ca_Calsequestrin; - const double var_x431 = 18.571428571428569 * NV_Ith_S(mParameters, 0); - const double var_x432 = var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); - const double var_x433 = 100 * var_chaste_interface__Ca_buffer__Ca_SR; - const double var_x434 = 31.054623038266147 * var_x405; - const double var_x435 = 5.5898321468879066 * var_x135 * var_x413; - const double var_x436 = 3.9661732781409111e-12 * var_x200; - const double var_x437 = 100 * var_chaste_interface__Ca_buffer__Ca_SLB_SL; - const double var_x438 = 100 * var_chaste_interface__Ca_buffer__Ca_SLHigh_SL; - const double var_x439 = 100 * var_chaste_interface__Ca_buffer__Ca_SL; - const double var_x440 = 1217.8283544418096 * var_x405; - const double var_x441 = 1972.8819341957317 * var_x413; - const double var_x442 = var_x157 * var_x441; - const double var_x443 = 4.9020119168033731e-13 * var_x213; - const double var_x444 = 1274.5098039215686 * NV_Ith_S(mParameters, 0); - const double var_x445 = 68.627450980392155 * var_x432; - const double var_x446 = 100 * var_chaste_interface__Ca_buffer__Ca_SLB_jct; - const double var_x447 = 100 * var_chaste_interface__Ca_buffer__Ca_SLHigh_jct; - const double var_x448 = 100 * var_chaste_interface__Ca_buffer__Ca_jct; - const double var_x449 = -var_x439; - const double var_x450 = -var_x448; - const double var_x451 = -var_x262; - const double var_x452 = -var_x264; - const double var_x453 = 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; - const double var_x454 = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol - 0.030769230769230767 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL - 0.00078461538461538469 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; - const double var_x455 = 0.078461538461538471 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; - const double var_x456 = 3.0769230769230771 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; - const double var_x457 = var_x453 + var_x455 + var_x456; - const double var_x458 = 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; - const double var_x459 = 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; - const double var_x460 = 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; - const double var_x461 = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol - 0.030769230769230767 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL - 0.00078461538461538469 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; - const double var_x462 = 0.078461538461538471 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; - const double var_x463 = 3.0769230769230771 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; - const double var_x464 = var_x460 + var_x462 + var_x463; - const double var_x465 = 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; - const double var_x466 = 100 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; - - // Matrix entries - IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (-0.00054830000000000005 + var_x146 + var_x147 + var_x156 + var_x158 - var_x110 - var_x116 - var_x137 - var_x141 - var_x151 - var_x154 - var_x159 - var_x161 - NV_Ith_S(mParameters, 13) - 0.11 * var_x11 - 0.11 * var_x66 - 0.89000000000000001 * var_x15 - 0.89000000000000001 * var_x79 - 0.15619500000000003 * var_x124 - 1 * var_x23 - 0.01205875 / var_x1 - 0.019305000000000003 * var_x127 - 0.097566250000000007 / var_x3 - 0.21009999999999998 * var_x91 - 1.6999 * var_x94 + var_x145 * var_x148 + var_x5 * var_chaste_interface__Itos_X_gate__X_tos - var_x118 * var_x120 - var_x17 * var_x20 - var_x6 * var_chaste_interface__Itof_X_gate__X_tof - 0.4389381125701739 * var_x29 * var_x37 + 0.10468673984798647 * var_x37 * var_x38 * var_x39 + 0.019211226915711394 * var_x17 * var_x18 * var_x38 / pow(var_x19, 2) - 9.1125000000000004e-8 * var_x119 * var_x143 * var_x149 * NV_Ith_S(mParameters, 5) - 0.42189361069797565 * var_x29 * var_x80 * (0.24326999999999999 * var_x39 - var_x32 * (0.061749999999999999 * var_x33 + 0.039456396800000001 * var_x34) - 0.51429999999999998 * var_x30 * var_x35 / pow(var_x31, 2)) * NV_Ith_S(mParameters, 18) / pow((var_x29 + 0.98039215686274506 * var_x36), 2)); - IJth(rJacobian, 2, 0) = (var_x269 + var_x275) * (var_x276 * var_x280 + var_x268 * var_x279 * (-var_x276 - var_x281) / pow(var_x277, 2)) + (var_x276 + var_x281) * (var_x278 - var_chaste_interface__INa_h_gate__h + var_x268 * var_x280); - IJth(rJacobian, 3, 0) = (var_x292 + var_x302) * (var_x303 * var_x305 + var_x279 * var_x301 * (-var_x303 - var_x306) / pow(var_x304, 2)) + (var_x303 + var_x306) * (var_x278 - var_chaste_interface__INa_j_gate__j + var_x301 * var_x305); - IJth(rJacobian, 4, 0) = var_x315 * (var_x313 * var_x316 - var_x316 * var_x318 + 3.125 * var_x319 * (var_x317 + var_x318 - var_x313) / pow((var_x319 + 0.25 * var_x307), 2)) + (-var_chaste_interface__INa_m_gate__m + var_x314 * var_x316) * (var_x313 - var_x317 - var_x318); - IJth(rJacobian, 5, 0) = (-var_chaste_interface__IKr_Xr_gate__Xr + 1 / var_x321) * (var_x324 + var_x327 - 0.00016973999999999998 * var_x325 * var_x328 / pow(var_x326, 2) - 8.8449999999999995e-5 * var_x322 * var_x329 / pow(var_x323, 2)) + 0.13333333333333333 * var_x320 * (var_x330 + var_x331) / pow(var_x321, 2); - IJth(rJacobian, 6, 0) = (-var_chaste_interface__IKs_Xs_gate__Xs + 1 / var_x333) * (var_x336 + var_x339 - 8.9997000000000013e-6 * var_x334 * var_x340 / pow(var_x335, 2) - 1.0641199999999999e-5 * var_x337 * var_x340 / pow(var_x338, 2)) + 0.059880239520958084 * var_x332 * (var_x341 + var_x342) / pow(var_x333, 2); - IJth(rJacobian, 7, 0) = var_x347 * var_x350 + 0.0074074074074074077 * var_x344 * (var_x351 - var_chaste_interface__Itos_X_gate__X_tos) / (pow(var_x345, 2) * pow((0.055555555555555552 + var_x346), 2)); - IJth(rJacobian, 8, 0) = -var_x356 * var_x360 + 3.3333333333333335e-5 * var_x363 * (var_x362 + var_x4) / pow((0.01 + var_x355), 2); - IJth(rJacobian, 9, 0) = -var_x360 * var_x364 + 3.5714285714285717e-5 * var_x363 * (var_x362 - var_chaste_interface__Itos_R_gate__R_tos) / pow((0.07857142857142857 + var_x355), 2); - IJth(rJacobian, 10, 0) = var_x350 * var_x366 + 0.00063492063492063492 * var_x365 * (var_x351 - var_chaste_interface__Itof_X_gate__X_tof) * var_chaste_interface__cell__V / pow((0.42857142857142855 + var_x365), 2); - IJth(rJacobian, 11, 0) = -var_x360 * var_x367 + 0.0050000000000000001 * var_x359 * (var_x362 - var_chaste_interface__Itof_Y_gate__Y_tof) / pow((1 + var_x361), 2); - IJth(rJacobian, 12, 0) = var_x374 * var_x375 - var_x374 * var_x379 + var_x372 * var_x377 * var_x378 - var_x371 * var_x373 * var_x379 / pow(var_x369, 2); - IJth(rJacobian, 13, 0) = (0.02 + var_x380) * (0.029999999999999999 * var_x381 / pow(var_x382, 2) - 0.27777777777777779 * var_x383 / pow(var_x384, 2)) + var_x380 * (-0.032935010000000001 - 0.0022713799999999999 * var_chaste_interface__cell__V) * (-var_chaste_interface__ICaL_f_gate__f + 1 / var_x384 + 0.59999999999999998 / var_x382); - IJth(rJacobian, 19, 0) = -var_x407 * (0.00026433000000000001 + var_x116 + var_x151 + var_x202 - var_x147 + 2.6699999999999999 * var_x79 + 5.0996999999999995 * var_x94 + 0.46858500000000003 * var_x124); - IJth(rJacobian, 20, 0) = -var_x422 * (3.2670000000000004e-5 + var_x110 + var_x154 + var_x215 - var_x146 + 0.33000000000000002 * var_x66 + 0.63029999999999997 * var_x91 + 0.057915000000000008 * var_x127); - IJth(rJacobian, 25, 0) = -var_x434 * (0.00022365699999999999 + var_x137 + var_x161 - var_x156 - 1.78 * var_x79 - 0.31239000000000006 * var_x124); - IJth(rJacobian, 26, 0) = -var_x440 * (2.7642999999999999e-5 + var_x141 + var_x159 - var_x158 - 0.22 * var_x66 - 0.038610000000000005 * var_x127); - IJth(rJacobian, 1, 1) = -7.2523935948689155 + var_x241 + var_x242 + var_x243 + var_x244 + var_x245 + var_x246 + var_x247 + 6.3492962168146398e-7 * var_x257 - 5029484.9869235931 * var_x255; - IJth(rJacobian, 24, 1) = 93404721.185723871 * var_x255 - 1.1791550116941473e-5 * var_x257; - IJth(rJacobian, 25, 1) = 5.6417918332397381; - IJth(rJacobian, 32, 1) = 2.2890000000000006 - var_x243; - IJth(rJacobian, 33, 1) = 0.33180000000000004 - var_x244 - var_x245; - IJth(rJacobian, 35, 1) = 0.81600000000000006 - var_x241; - IJth(rJacobian, 36, 1) = 1.9320000000000004 - var_x246 - var_x247; - IJth(rJacobian, 38, 1) = 1.71 - var_x242; - IJth(rJacobian, 39, 1) = var_x454 * (2.5 - var_x453); - IJth(rJacobian, 42, 1) = var_x461 * (2.5 - var_x460); - IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x163 * var_x22 - var_x165 * var_x22); - IJth(rJacobian, 2, 2) = -var_x269 - var_x275; - IJth(rJacobian, 19, 2) = -var_x409 * var_x410; - IJth(rJacobian, 20, 2) = -var_x409 * var_x423; - IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x163 * var_x167 - var_x165 * var_x167); - IJth(rJacobian, 3, 3) = -var_x292 - var_x302; - IJth(rJacobian, 19, 3) = -var_x410 * var_x411; - IJth(rJacobian, 20, 3) = -var_x411 * var_x423; - IJth(rJacobian, 0, 4) = mSetVoltageDerivativeToZero ? 0.0 : (-0.33000000000000002 * var_x169 - 2.6699999999999999 * var_x170); - IJth(rJacobian, 4, 4) = -var_x308 - var_x314; - IJth(rJacobian, 19, 4) = -165.83168702434122 * var_x170 * var_x408; - IJth(rJacobian, 20, 4) = -803.76671393159438 * var_x169 * var_x408; - IJth(rJacobian, 0, 5) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x20 * var_x80 * NV_Ith_S(mParameters, 19)); - IJth(rJacobian, 5, 5) = -var_x330 - var_x331; - IJth(rJacobian, 0, 6) = mSetVoltageDerivativeToZero ? 0.0 : (-0.22 * var_x173 * var_x9 - 1.78 * var_x14 * var_x173); - IJth(rJacobian, 6, 6) = -var_x341 - var_x342; - IJth(rJacobian, 0, 7) = mSetVoltageDerivativeToZero ? 0.0 : (var_x38 * var_x5); - IJth(rJacobian, 7, 7) = -var_x347; - IJth(rJacobian, 0, 8) = mSetVoltageDerivativeToZero ? 0.0 : (var_x174 * var_x175); - IJth(rJacobian, 8, 8) = -var_x356; - IJth(rJacobian, 0, 9) = mSetVoltageDerivativeToZero ? 0.0 : (var_x175 * (0.5 * var_x26 - 0.5 * var_chaste_interface__cell__V)); - IJth(rJacobian, 9, 9) = -var_x364; - IJth(rJacobian, 0, 10) = mSetVoltageDerivativeToZero ? 0.0 : (var_x174 * var_x6); - IJth(rJacobian, 10, 10) = -var_x366; - IJth(rJacobian, 0, 11) = mSetVoltageDerivativeToZero ? 0.0 : (var_x174 * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof); - IJth(rJacobian, 11, 11) = -var_x367; - IJth(rJacobian, 0, 12) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x115 * var_x179 - var_x148 * var_x179 - var_x177 * var_x178 - var_x181 * var_x183 - var_x182 * var_x185); - IJth(rJacobian, 12, 12) = -var_x375 * var_x377; - IJth(rJacobian, 19, 12) = -var_x412 * var_x416; - IJth(rJacobian, 20, 12) = -var_x412 * var_x425; - IJth(rJacobian, 25, 12) = -var_x183 * var_x435; - IJth(rJacobian, 26, 12) = -var_x182 * var_x442; - IJth(rJacobian, 0, 13) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x115 * var_x188 - var_x148 * var_x188 - var_x178 * var_x187 - var_x181 * var_x190 - var_x185 * var_x189); - IJth(rJacobian, 13, 13) = -0.02 - var_x380; - IJth(rJacobian, 19, 13) = -var_x416 * var_x417; - IJth(rJacobian, 20, 13) = -var_x417 * var_x425; - IJth(rJacobian, 25, 13) = -var_x190 * var_x435; - IJth(rJacobian, 26, 13) = -var_x189 * var_x442; - IJth(rJacobian, 0, 14) = mSetVoltageDerivativeToZero ? 0.0 : (1.2150000000000001e-8 * var_x192 + var_x131 * var_x181 + 6.7499999999999994e-10 * var_x113 * var_x191); - IJth(rJacobian, 14, 14) = -0.011900000000000001 - 1.7 * var_chaste_interface__Ca_buffer__Ca_SL; - IJth(rJacobian, 19, 14) = var_x104 * var_x113 * var_x415; - IJth(rJacobian, 25, 14) = var_x131 * var_x435; - IJth(rJacobian, 0, 15) = mSetVoltageDerivativeToZero ? 0.0 : (1.0935000000000001e-7 * var_x192 + 6.0749999999999998e-9 * var_x105 * var_x180 + var_x131 * var_x140 * var_x180); - IJth(rJacobian, 15, 15) = -0.011900000000000001 - 1.7 * var_chaste_interface__Ca_buffer__Ca_jct; - IJth(rJacobian, 20, 15) = var_x105 * var_x424; - IJth(rJacobian, 26, 15) = var_x131 * var_x139 * var_x441; - IJth(rJacobian, 16, 16) = -0.0050000000000000001 + var_x391 + var_x394; - IJth(rJacobian, 17, 16) = var_x394; - IJth(rJacobian, 18, 16) = var_x393; - IJth(rJacobian, 16, 17) = -0.0050000000000000001; - IJth(rJacobian, 17, 17) = -0.065000000000000002 + var_x394; - IJth(rJacobian, 18, 17) = 0.0050000000000000001; - IJth(rJacobian, 16, 18) = 0.055; - IJth(rJacobian, 17, 18) = var_x394 + var_x402 * var_chaste_interface__Ca_buffer__Ca_jct; - IJth(rJacobian, 18, 18) = -0.059999999999999998 + var_x391; - IJth(rJacobian, 24, 18) = (-var_chaste_interface__Ca_buffer__Ca_SR + var_chaste_interface__Ca_buffer__Ca_jct) * NV_Ith_S(mParameters, 1); - IJth(rJacobian, 26, 18) = (68.627450980392155 * var_chaste_interface__Ca_buffer__Ca_SR - 68.627450980392155 * var_chaste_interface__Ca_buffer__Ca_jct) * NV_Ith_S(mParameters, 1); - IJth(rJacobian, 0, 19) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x194 - var_x203 - var_x208 - 2.6699999999999999 * var_x205 - 0.00046442182911003347 * var_x207 - var_x198 * var_x201); - IJth(rJacobian, 19, 19) = (-2.5101556644976917 + var_x418 - var_x406 * (var_x194 + var_x203 + var_x208 + 8.0099999999999998 * var_x205 + 0.0013932654873301004 * var_x207 + var_x198 * var_x419)) * NV_Ith_S(mParameters, 3); - IJth(rJacobian, 20, 19) = 1.0879068612142859 * NV_Ith_S(mParameters, 3); - IJth(rJacobian, 21, 19) = 0.000165 - var_x418; - IJth(rJacobian, 23, 19) = var_x429; - IJth(rJacobian, 25, 19) = -var_x434 * (-5.3399999999999999 * var_x205 - var_x198 * var_x436); - IJth(rJacobian, 0, 20) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x210 - var_x216 - var_x219 - 0.33000000000000002 * var_x217 - 5.7400450788880541e-5 * var_x218 - var_x212 * var_x214); - IJth(rJacobian, 19, 20) = 0.02774162496096429 * NV_Ith_S(mParameters, 3); - IJth(rJacobian, 20, 20) = (-1.0886629612142857 + var_x426 - var_x421 * (var_x210 + var_x216 + var_x219 + 0.98999999999999999 * var_x217 + 0.00017220135236664162 * var_x218 + var_x212 * var_x427)) * NV_Ith_S(mParameters, 3); - IJth(rJacobian, 22, 20) = 0.0007561 - var_x426; - IJth(rJacobian, 26, 20) = -var_x440 * (-0.66000000000000003 * var_x217 - var_x212 * var_x443); - IJth(rJacobian, 19, 21) = (0.001 + var_x420) * NV_Ith_S(mParameters, 3); - IJth(rJacobian, 21, 21) = -0.001 - var_x420; - IJth(rJacobian, 20, 22) = (0.001 + var_x428) * NV_Ith_S(mParameters, 3); - IJth(rJacobian, 22, 22) = -0.001 - var_x428; - IJth(rJacobian, 0, 23) = mSetVoltageDerivativeToZero ? 0.0 : (-0.0020162999999999999 * var_x11 * var_x220 - 0.0163137 * var_x15 * var_x220); - IJth(rJacobian, 19, 23) = 2.4822490395367272 * NV_Ith_S(mParameters, 3); - IJth(rJacobian, 23, 23) = -var_x429; - IJth(rJacobian, 1, 24) = 0.69232869146389786 * var_x259 + 8.7400597733819945e-14 * var_x260; - IJth(rJacobian, 16, 24) = -var_x399 + var_x395 * var_x397; - IJth(rJacobian, 17, 24) = -var_x403 + var_x398 * var_x404; - IJth(rJacobian, 18, 24) = var_x399 + var_x403; - IJth(rJacobian, 24, 24) = -260 + var_x430 - var_x431 - var_x432 - 1.6231539579137989e-12 * var_x260 - 12.857532841472388 * var_x259; - IJth(rJacobian, 26, 24) = var_x444 + var_x445; - IJth(rJacobian, 31, 24) = 260 - var_x430; - IJth(rJacobian, 0, 25) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x224 - var_x225 - var_x232 + 0.89000000000000001 * var_x227 - 4.4795166719999994e-11 * var_x229 - var_x201 * var_x231 - 0.0097566250000000014 * var_x221 / (pow(var_x3, 2) * pow(var_chaste_interface__Ca_buffer__Ca_SL, 2)) - 0.28183333333333332 * var_x12 * var_x2 * var_x228 / pow(var_x13, 2)); - IJth(rJacobian, 1, 25) = 0.17359359486891501; - IJth(rJacobian, 14, 25) = 1.7 - 1.7 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL; - IJth(rJacobian, 19, 25) = -var_x407 * (1.3438550016e-10 * var_x229 - 2.6699999999999999 * var_x227 + var_x231 * var_x419); - IJth(rJacobian, 25, 25) = -171.99023312516786 + var_x437 + var_x438 - var_x434 * (var_x224 + var_x225 + var_x232 + 1.78 * var_x227 - 8.9590333439999989e-11 * var_x229 - var_x231 * var_x436); - IJth(rJacobian, 26, 25) = 48.958482036396518; - IJth(rJacobian, 27, 25) = 121.55000000000001 - var_x437; - IJth(rJacobian, 29, 25) = 43.550000000000004 - var_x438; - IJth(rJacobian, 40, 25) = var_x454 * (2.5024999999999999 - var_x458); - IJth(rJacobian, 43, 25) = var_x461 * (2.5024999999999999 - var_x465); - IJth(rJacobian, 0, 26) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x234 - var_x236 - var_x240 + 0.11 * var_x237 - 5.5364812799999996e-12 * var_x239 - var_x214 * var_x238 - 0.0012058750000000001 * var_x221 / (pow(var_x1, 2) * var_x233) - 0.034833333333333334 * var_x0 * var_x228 * var_x7 / pow(var_x8, 2)); - IJth(rJacobian, 15, 26) = 1.7 - 1.7 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct; - IJth(rJacobian, 16, 26) = -var_x401 + var_x390 * var_chaste_interface__Jrel_SR__R; - IJth(rJacobian, 17, 26) = var_x402 * var_chaste_interface__Jrel_SR__O + var_x400 * var_x404 * var_chaste_interface__Ca_buffer__Ca_jct; - IJth(rJacobian, 18, 26) = var_x401 + var_x390 * var_chaste_interface__Jrel_SR__O; - IJth(rJacobian, 20, 26) = -var_x422 * (1.6609443839999999e-11 * var_x239 - 0.33000000000000002 * var_x237 + var_x238 * var_x427); - IJth(rJacobian, 24, 26) = var_x431 + var_x432; - IJth(rJacobian, 25, 26) = 1.2484412919281114; - IJth(rJacobian, 26, 26) = -128.61534478149457 + var_x446 + var_x447 - var_x444 - var_x445 - var_x440 * (var_x234 + var_x236 + var_x240 + 0.22 * var_x237 - 1.1072962559999999e-11 * var_x239 - var_x238 * var_x443); - IJth(rJacobian, 28, 26) = 58.627450980392155 - var_x446; - IJth(rJacobian, 30, 26) = 21.029411764705884 - var_x447; - IJth(rJacobian, 41, 26) = var_x454 * (2.5490196078431375 - var_x459); - IJth(rJacobian, 44, 26) = var_x461 * (2.5490196078431375 - var_x466); - IJth(rJacobian, 25, 27) = 1.3 + var_x439; - IJth(rJacobian, 27, 27) = -1.3 + var_x449; - IJth(rJacobian, 26, 28) = 1.3 + var_x448; - IJth(rJacobian, 28, 28) = -1.3 + var_x450; - IJth(rJacobian, 25, 29) = 0.029999999999999999 + var_x439; - IJth(rJacobian, 29, 29) = -0.029999999999999999 + var_x449; - IJth(rJacobian, 26, 30) = 0.029999999999999999 + var_x448; - IJth(rJacobian, 30, 30) = -0.029999999999999999 + var_x450; - IJth(rJacobian, 24, 31) = 65 + var_x433; - IJth(rJacobian, 31, 31) = -65 - var_x433; - IJth(rJacobian, 1, 32) = 0.019599999999999999 + var_x261; - IJth(rJacobian, 32, 32) = -0.019599999999999999 - var_x261; - IJth(rJacobian, 1, 33) = 0.003032 + var_x262; - IJth(rJacobian, 33, 33) = -3.1999999999999999e-5 + var_x451; - IJth(rJacobian, 34, 33) = -0.0030000000000000001; - IJth(rJacobian, 1, 34) = 0.0063300000000000006 + var_x262; - IJth(rJacobian, 33, 34) = var_x451; - IJth(rJacobian, 34, 34) = -0.0063300000000000006; - IJth(rJacobian, 1, 35) = 0.23799999999999999 + var_x263; - IJth(rJacobian, 35, 35) = -0.23799999999999999 - var_x263; - IJth(rJacobian, 1, 36) = 0.016159999999999997 + var_x264; - IJth(rJacobian, 36, 36) = -0.00046000000000000001 + var_x452; - IJth(rJacobian, 37, 36) = -0.015699999999999999; - IJth(rJacobian, 1, 37) = 0.015757 + var_x264; - IJth(rJacobian, 36, 37) = var_x452; - IJth(rJacobian, 37, 37) = -0.015757; - IJth(rJacobian, 1, 38) = 0.059999999999999998 + var_x265; - IJth(rJacobian, 38, 38) = -0.059999999999999998 - var_x265; - IJth(rJacobian, 39, 39) = -0.059999999999999998 + var_x457 * var_chaste_interface__Ca_buffer__Cai + (-2.5 + var_x453) * var_chaste_interface__Ca_buffer__Cai; - IJth(rJacobian, 40, 39) = (-2.5024999999999999 + var_x458) * var_chaste_interface__Ca_buffer__Ca_SL; - IJth(rJacobian, 41, 39) = (-2.5490196078431375 + var_x459) * var_chaste_interface__Ca_buffer__Ca_jct; - IJth(rJacobian, 39, 40) = (-0.076923076923076927 + 3.0769230769230771 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol) * var_chaste_interface__Ca_buffer__Cai; - IJth(rJacobian, 40, 40) = -0.059999999999999998 + var_x457 * var_chaste_interface__Ca_buffer__Ca_SL + (-0.076999999999999999 + var_x456) * var_chaste_interface__Ca_buffer__Ca_SL; - IJth(rJacobian, 41, 40) = (-0.078431372549019607 + 3.0769230769230771 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct) * var_chaste_interface__Ca_buffer__Ca_jct; - IJth(rJacobian, 39, 41) = (-0.0019615384615384616 + 0.078461538461538471 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol) * var_chaste_interface__Ca_buffer__Cai; - IJth(rJacobian, 40, 41) = (-0.0019635 + 0.078461538461538471 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL) * var_chaste_interface__Ca_buffer__Ca_SL; - IJth(rJacobian, 41, 41) = -0.059999999999999998 + var_x457 * var_chaste_interface__Ca_buffer__Ca_jct + (-0.002 + var_x455) * var_chaste_interface__Ca_buffer__Ca_jct; - IJth(rJacobian, 42, 42) = -0.11 + var_x464 * var_chaste_interface__Ca_buffer__Cai + (-2.5 + var_x460) * var_chaste_interface__Ca_buffer__Cai; - IJth(rJacobian, 43, 42) = (-2.5024999999999999 + var_x465) * var_chaste_interface__Ca_buffer__Ca_SL; - IJth(rJacobian, 44, 42) = (-2.5490196078431375 + var_x466) * var_chaste_interface__Ca_buffer__Ca_jct; - IJth(rJacobian, 42, 43) = (-0.076923076923076927 + 3.0769230769230771 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol) * var_chaste_interface__Ca_buffer__Cai; - IJth(rJacobian, 43, 43) = -0.11 + var_x464 * var_chaste_interface__Ca_buffer__Ca_SL + (-0.076999999999999999 + var_x463) * var_chaste_interface__Ca_buffer__Ca_SL; - IJth(rJacobian, 44, 43) = (-0.078431372549019607 + 3.0769230769230771 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct) * var_chaste_interface__Ca_buffer__Ca_jct; - IJth(rJacobian, 42, 44) = (-0.0019615384615384616 + 0.078461538461538471 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol) * var_chaste_interface__Ca_buffer__Cai; - IJth(rJacobian, 43, 44) = (-0.0019635 + 0.078461538461538471 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL) * var_chaste_interface__Ca_buffer__Ca_SL; - IJth(rJacobian, 44, 44) = -0.11 + var_x464 * var_chaste_interface__Ca_buffer__Ca_jct + (-0.002 + var_x462) * var_chaste_interface__Ca_buffer__Ca_jct; - } - - N_Vector Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) - { - // Inputs: - // Time units: millisecond - double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); - // Units: millivolt; Initial value: -85.721630473733 - double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); - // Units: dimensionless; Initial value: 0.98714602875678 - double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); - // Units: dimensionless; Initial value: 0.991826348770428 - double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); - // Units: dimensionless; Initial value: 0.0013702407736465 - double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); - // Units: dimensionless; Initial value: 0.00846906175020028 - double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); - // Units: dimensionless; Initial value: 0.00613557812033723 - double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); - // Units: dimensionless; Initial value: 0.00401072468238921 - double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); - // Units: dimensionless; Initial value: 0.31555225368514 - double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); - // Units: dimensionless; Initial value: 0.402577243036347 - double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); - // Units: dimensionless; Initial value: 0.00401068798369438 - double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); - // Units: dimensionless; Initial value: 0.994632857675454 - double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); - // Units: dimensionless; Initial value: 6.99526086177479e-06 - double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); - // Units: dimensionless; Initial value: 1.00067601563206 - double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); - // Units: dimensionless; Initial value: 0.0150193299768419 - double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); - // Units: dimensionless; Initial value: 0.0244048782575591 - double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); - // Units: dimensionless; Initial value: 7.1199533741995e-07 - double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); - // Units: millimolar; Initial value: 8.87161932058707 - double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); - // Units: millimolar; Initial value: 8.87031835089116 - double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); - // Units: millimolar; Initial value: 8.87200572571131 - double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); - // Units: millimolar; Initial value: 0.547125831028543 - double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); - // Units: millimolar; Initial value: 0.000104971310105451 - double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); - // Units: millimolar; Initial value: 0.000174045152623969 - - // Mathematics - const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless - const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless - const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond - const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond - const double var_ICaL__Q10_CaL = 1.8; // dimensionless - const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless - const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless - const double var_ICaL__gamma_Ki = 0.75; // dimensionless - const double var_ICaL__gamma_Ko = 0.75; // dimensionless - const double var_ICaL__gamma_Nai = 0.75; // dimensionless - const double var_ICaL__gamma_Nao = 0.75; // dimensionless - const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless - const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless - const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless - const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless - const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF - const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless - const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless - const double var_ICap__H = 1.6000000000000001; // dimensionless - const double var_ICap__Km = 0.00050000000000000001; // millimolar - const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless - const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF - const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless - const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless - const double var_IKs__pCa_SL = 3 - log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless - const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF - const double var_IKs__pCa_jct = 3 - log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless - const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF - const double var_IKs__pKNa = 0.018329999999999999; // dimensionless - const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless - const double var_INa__Fx_Na_jct = 0.11; // dimensionless - const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless - const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless - const double var_INaCa__HNa = 3; // dimensionless - const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar - const double var_INaCa__K_mCao = 1.3; // millimolar - const double var_INaCa__K_mNai = 12.289999999999999; // millimolar - const double var_INaCa__K_mNao = 87.5; // millimolar - const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar - const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless - const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless - const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless - const double var_INaCa__eta = 0.34999999999999998; // dimensionless - const double var_INaCa__ksat = 0.27000000000000002; // dimensionless - const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless - const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless - const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless - const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF - const double var_Jrel_SR__j_rel_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); // millimolar_per_millisecond - const double var_ICaL_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2))); // millisecond - const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless - const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 16) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond - const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 16)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 16))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 16) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond - const double var_INa_h_gate__tau_h = 1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // millisecond - const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 16)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 16) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 16)))) : (0)); // per_millisecond - const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 16) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 16) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 16) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 16) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond - const double var_INa_j_gate__tau_j = 1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // millisecond - const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 - const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 - const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF - const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF - const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); // coulomb_per_mole - const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF - const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF - const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 - const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF - const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF - const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF - const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 - const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt - const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF - const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF - const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF - const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 - const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless - const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 - const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF - const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 - const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF - const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF - const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 - const double var_model_parameters__cell_length = 100; // micrometre - const double var_model_parameters__cell_radius = 10.25; // micrometre - const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad - const double var_model_parameters__Cm_converted = 1000000 * var_model_parameters__Cm; // uF - const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt - const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF - const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt - const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF - const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF - const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 - const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt - const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF - const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 - const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt - const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond - const double var_IK1_K1_gate__beta_K1 = (exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond - const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless - const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF - const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 - const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF - const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 - const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF - const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 - const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF - const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 - const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt - const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF - const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF - const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt - const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF - const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF - const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 - const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF - const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF - const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 - -#if CHASTE_SUNDIALS_VERSION >= 60000 - N_Vector dqs = N_VNew_Serial(23, CvodeContextManager::Instance()->GetSundialsContext()); -#else - N_Vector dqs = N_VNew_Serial(23); -#endif - NV_Ith_S(dqs, 0) = var_Jrel_SR__j_rel_SR; - NV_Ith_S(dqs, 1) = var_reversal_potentials__E_Cl; - NV_Ith_S(dqs, 2) = var_ICaL__i_CaL_converted; - NV_Ith_S(dqs, 3) = var_ICaL_fCa_gate__fCa_SL; - NV_Ith_S(dqs, 4) = var_ICaL_f_gate__tau_f; - NV_Ith_S(dqs, 5) = var_ICab__i_Cab_converted; - NV_Ith_S(dqs, 6) = var_IClb__i_Clb_converted; - NV_Ith_S(dqs, 7) = var_INab__i_Nab_converted; - NV_Ith_S(dqs, 8) = var_ICap__i_Cap_converted; - NV_Ith_S(dqs, 9) = var_model_parameters__Cm_converted; - NV_Ith_S(dqs, 10) = var_INa__i_Na_converted; - NV_Ith_S(dqs, 11) = var_INa_h_gate__tau_h; - NV_Ith_S(dqs, 12) = var_INa_j_gate__tau_j; - NV_Ith_S(dqs, 13) = var_Itof__i_tof_converted; - NV_Ith_S(dqs, 14) = var_IK1__i_K1_converted; - NV_Ith_S(dqs, 15) = var_IK1__G_K1; - NV_Ith_S(dqs, 16) = var_IKr__i_Kr_converted; - NV_Ith_S(dqs, 17) = var_IKs__i_Ks_converted; - NV_Ith_S(dqs, 18) = var_Itos__i_tos_converted; - NV_Ith_S(dqs, 19) = var_INaCa__i_NaCa_converted; - NV_Ith_S(dqs, 20) = var_cell__i_Stim_converted; - NV_Ith_S(dqs, 21) = var_reversal_potentials__E_K; - NV_Ith_S(dqs, 22) = var_chaste_interface__environment__time; - return dqs; - } - -template<> -void OdeSystemInformation::Initialise(void) -{ - this->mSystemName = "shannon_wang_puglisi_weber_bers_2004_model_updated"; - this->mFreeVariableName = "time"; - this->mFreeVariableUnits = "millisecond"; - - // NV_Ith_S(rY, 0): - this->mVariableNames.push_back("membrane_voltage"); - this->mVariableUnits.push_back("millivolt"); - this->mInitialConditions.push_back(-85.721630473733); - - // NV_Ith_S(rY, 1): - this->mVariableNames.push_back("cytosolic_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(8.6504944644883e-05); - - // NV_Ith_S(rY, 2): - this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.98714602875678); - - // NV_Ith_S(rY, 3): - this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.991826348770428); - - // NV_Ith_S(rY, 4): - this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0013702407736465); - - // NV_Ith_S(rY, 5): - this->mVariableNames.push_back("IKr_Xr_gate__Xr"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.00846906175020028); - - // NV_Ith_S(rY, 6): - this->mVariableNames.push_back("IKs_Xs_gate__Xs"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.00613557812033723); - - // NV_Ith_S(rY, 7): - this->mVariableNames.push_back("Itos_X_gate__X_tos"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.00401072468238921); - - // NV_Ith_S(rY, 8): - this->mVariableNames.push_back("Itos_Y_gate__Y_tos"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.31555225368514); - - // NV_Ith_S(rY, 9): - this->mVariableNames.push_back("Itos_R_gate__R_tos"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.402577243036347); - - // NV_Ith_S(rY, 10): - this->mVariableNames.push_back("Itof_X_gate__X_tof"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.00401068798369438); - - // NV_Ith_S(rY, 11): - this->mVariableNames.push_back("Itof_Y_gate__Y_tof"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.994632857675454); - - // NV_Ith_S(rY, 12): - this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(6.99526086177479e-06); - - // NV_Ith_S(rY, 13): - this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(1.00067601563206); - - // NV_Ith_S(rY, 14): - this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_SL"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0150193299768419); - - // NV_Ith_S(rY, 15): - this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_jct"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0244048782575591); - - // NV_Ith_S(rY, 16): - this->mVariableNames.push_back("Jrel_SR__R"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.890917121306535); - - // NV_Ith_S(rY, 17): - this->mVariableNames.push_back("Jrel_SR__I"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(8.71752603681652e-08); - - // NV_Ith_S(rY, 18): - this->mVariableNames.push_back("Jrel_SR__O"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(7.1199533741995e-07); - - // NV_Ith_S(rY, 19): - this->mVariableNames.push_back("submembrane_space_sodium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(8.87161932058707); - - // NV_Ith_S(rY, 20): - this->mVariableNames.push_back("dyadic_space_sodium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(8.87031835089116); - - // NV_Ith_S(rY, 21): - this->mVariableNames.push_back("Na_buffer__Na_SL_buf"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.77606800956492); - - // NV_Ith_S(rY, 22): - this->mVariableNames.push_back("Na_buffer__Na_jct_buf"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(3.55668431730337); - - // NV_Ith_S(rY, 23): - this->mVariableNames.push_back("cytosolic_sodium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(8.87200572571131); - - // NV_Ith_S(rY, 24): - this->mVariableNames.push_back("JSR_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.547125831028543); - - // NV_Ith_S(rY, 25): - this->mVariableNames.push_back("submembrane_space_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.000104971310105451); - - // NV_Ith_S(rY, 26): - this->mVariableNames.push_back("dyadic_space_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.000174045152623969); - - // NV_Ith_S(rY, 27): - this->mVariableNames.push_back("Ca_buffer__Ca_SLB_SL"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.00973710481246467); - - // NV_Ith_S(rY, 28): - this->mVariableNames.push_back("Ca_buffer__Ca_SLB_jct"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.00774564218017916); - - // NV_Ith_S(rY, 29): - this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_SL"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.113168405274355); - - // NV_Ith_S(rY, 30): - this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_jct"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.0772568134367606); - - // NV_Ith_S(rY, 31): - this->mVariableNames.push_back("Ca_buffer__Ca_Calsequestrin"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(1.18828527890062); - - // NV_Ith_S(rY, 32): - this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.00886665040283094); - - // NV_Ith_S(rY, 33): - this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.117873278193472); - - // NV_Ith_S(rY, 34): - this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.0103906683506505); - - // NV_Ith_S(rY, 35): - this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Calmodulin"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.000293073957804278); - - // NV_Ith_S(rY, 36): - this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Myosin"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.00195899238146509); - - // NV_Ith_S(rY, 37): - this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_Myosin"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.137523520981802); - - // NV_Ith_S(rY, 38): - this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_SRB"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.00215728901718264); - - // NV_Ith_S(rY, 39): - this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.0); - - // NV_Ith_S(rY, 40): - this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.0); - - // NV_Ith_S(rY, 41): - this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.0); - - // NV_Ith_S(rY, 42): - this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.0); - - // NV_Ith_S(rY, 43): - this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.0); - - // NV_Ith_S(rY, 44): - this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.0); - - // mParameters[0]: - this->mParameterNames.push_back("SR_leak_current_max"); - this->mParameterUnits.push_back("per_millisecond"); - - // mParameters[1]: - this->mParameterNames.push_back("SR_release_current_max"); - this->mParameterUnits.push_back("per_millisecond"); - - // mParameters[2]: - this->mParameterNames.push_back("SR_uptake_current_max"); - this->mParameterUnits.push_back("millimolar_per_millisecond"); - - // mParameters[3]: - this->mParameterNames.push_back("concentration_clamp_onoff"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[4]: - this->mParameterNames.push_back("cytosolic_chloride_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[5]: - this->mParameterNames.push_back("cytosolic_potassium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[6]: - this->mParameterNames.push_back("extracellular_calcium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[7]: - this->mParameterNames.push_back("extracellular_chloride_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[8]: - this->mParameterNames.push_back("extracellular_potassium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[9]: - this->mParameterNames.push_back("extracellular_sodium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[10]: - this->mParameterNames.push_back("faraday_constant"); - this->mParameterUnits.push_back("coulomb_per_mole"); - - // mParameters[11]: - this->mParameterNames.push_back("gas_constant"); - this->mParameterUnits.push_back("joule_per_kilomole_kelvin"); - - // mParameters[12]: - this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); - this->mParameterUnits.push_back("litre_per_farad_millisecond"); - - // mParameters[13]: - this->mParameterNames.push_back("membrane_background_chloride_current_conductance"); - this->mParameterUnits.push_back("milliS_per_microF"); - - // mParameters[14]: - this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_microF"); - - // mParameters[15]: - this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[16]: - this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); - this->mParameterUnits.push_back("millivolt"); - - // mParameters[17]: - this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance"); - this->mParameterUnits.push_back("milliS_per_microF"); - - // mParameters[18]: - this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); - this->mParameterUnits.push_back("milliS_per_microF"); - - // mParameters[19]: - this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_microF"); - - // mParameters[20]: - this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_microF"); - - // mParameters[21]: - this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance"); - this->mParameterUnits.push_back("milliS_per_microF"); - - // mParameters[22]: - this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); - this->mParameterUnits.push_back("microA_per_microF"); - - // mParameters[23]: - this->mParameterNames.push_back("temperature"); - this->mParameterUnits.push_back("kelvin"); - - // Derived Quantity index [0]: - this->mDerivedQuantityNames.push_back("SR_release_current"); - this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); - - // Derived Quantity index [1]: - this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); - this->mDerivedQuantityUnits.push_back("millivolt"); - - // Derived Quantity index [2]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [3]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate"); - this->mDerivedQuantityUnits.push_back("dimensionless"); - - // Derived Quantity index [4]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - // Derived Quantity index [5]: - this->mDerivedQuantityNames.push_back("membrane_background_calcium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [6]: - this->mDerivedQuantityNames.push_back("membrane_background_chloride_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [7]: - this->mDerivedQuantityNames.push_back("membrane_background_sodium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [8]: - this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [9]: - this->mDerivedQuantityNames.push_back("membrane_capacitance"); - this->mDerivedQuantityUnits.push_back("uF"); - - // Derived Quantity index [10]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [11]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - // Derived Quantity index [12]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - // Derived Quantity index [13]: - this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [14]: - this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [15]: - this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); - this->mDerivedQuantityUnits.push_back("milliS_per_microF"); - - // Derived Quantity index [16]: - this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [17]: - this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [18]: - this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [19]: - this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [20]: - this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [21]: - this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); - this->mDerivedQuantityUnits.push_back("millivolt"); - - // Derived Quantity index [22]: - this->mDerivedQuantityNames.push_back("time"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - this->mInitialised = true; -} - -// Serialization for Boost >= 1.36 -#include "SerializationExportWrapperForCpp.hpp" -CHASTE_CLASS_EXPORT(Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode) -extern "C" -{ - AbstractCardiacCellInterface* MakeCardiacCell( - boost::shared_ptr pSolver, - boost::shared_ptr pStimulus) - { - return new Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode(pSolver, pStimulus); - } - -} -#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_11.cpp similarity index 93% rename from chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_11.cpp index cfaf824b..acb8827a 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_11.cpp @@ -220,34 +220,34 @@ const double var_x0 = 1 / NV_Ith_S(mParameters, 0); const double var_x1 = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * NV_Ith_S(mParameters, 1); const double var_x2 = var_x0 * (-40 + var_chaste_interface__membrane__V); - const double var_x3 = (var_chaste_interface__membrane__V >= -50.000000999999997) && (var_chaste_interface__membrane__V <= -49.999999000000003); - const double var_x4 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x5 = -5 + var_x4; - const double var_x6 = exp(var_x5); + const double var_x3 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x4 = 5 + var_x3; + const double var_x5 = (var_x4 >= -9.9999999999999995e-8) && (var_x4 <= 9.9999999999999995e-8); + const double var_x6 = exp(-var_x4); const double var_x7 = -1 + var_x6; const double var_x8 = 1 / var_x7; const double var_x9 = exp(-4.166666666666667 - 0.055555555555555552 * var_chaste_interface__membrane__V); const double var_x10 = exp(-3.75 - 0.050000000000000003 * var_chaste_interface__membrane__V); const double var_x11 = exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V); const double var_x12 = 1 + var_x11; - const double var_x13 = (var_chaste_interface__membrane__V >= -65.000000999999997) && (var_chaste_interface__membrane__V <= -64.999999000000003); - const double var_x14 = -6.5 + var_x4; - const double var_x15 = exp(var_x14); + const double var_x13 = 6.5 + var_x3; + const double var_x14 = (var_x13 >= -9.9999999999999995e-8) && (var_x13 <= 9.9999999999999995e-8); + const double var_x15 = exp(-var_x13); const double var_x16 = -1 + var_x15; const double var_x17 = 1 / var_x16; const double var_x18 = exp(0.9375 + 0.012500000000000001 * var_chaste_interface__membrane__V); // Matrix entries IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (var_x0 * (-NV_Ith_S(mParameters, 2) - var_x1 * var_chaste_interface__sodium_channel_h_gate__h - pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * NV_Ith_S(mParameters, 3))); - IJth(rJacobian, 1, 0) = (1 - var_chaste_interface__sodium_channel_m_gate__m) * ((var_x3) ? (0.050000000000000003) : (-0.10000000000000001 * var_x8 + 0.10000000000000001 * var_x5 * var_x6 / pow(var_x7, 2))) + 0.22222222222222221 * var_x9 * var_chaste_interface__sodium_channel_m_gate__m; - IJth(rJacobian, 2, 0) = -0.050000000000000003 * var_x10 * (0.070000000000000007 - 0.070000000000000007 * var_chaste_interface__sodium_channel_h_gate__h) - 0.10000000000000001 * var_x11 * var_chaste_interface__sodium_channel_h_gate__h / pow(var_x12, 2); - IJth(rJacobian, 3, 0) = (1 - var_chaste_interface__potassium_channel_n_gate__n) * ((var_x13) ? (0.0050000000000000001) : (-0.01 * var_x17 + 0.01 * var_x14 * var_x15 / pow(var_x16, 2))) - 0.0015625000000000001 * var_x18 * var_chaste_interface__potassium_channel_n_gate__n; + IJth(rJacobian, 1, 0) = (1 - var_chaste_interface__sodium_channel_m_gate__m) * ((var_x5) ? (0.050000000000000003) : (-0.10000000000000001 * var_x8 - 0.10000000000000001 * var_x4 * var_x6 / pow(var_x7, 2))) + 0.22222222222222221 * var_x9 * var_chaste_interface__sodium_channel_m_gate__m; + IJth(rJacobian, 2, 0) = -0.0035000000000000005 * var_x10 * (1 - var_chaste_interface__sodium_channel_h_gate__h) - 0.10000000000000001 * var_x11 * var_chaste_interface__sodium_channel_h_gate__h / pow(var_x12, 2); + IJth(rJacobian, 3, 0) = (1 - var_chaste_interface__potassium_channel_n_gate__n) * ((var_x14) ? (0.0050000000000000001) : (-0.01 * var_x17 - 0.01 * var_x13 * var_x15 / pow(var_x16, 2))) - 0.0015625000000000001 * var_x18 * var_chaste_interface__potassium_channel_n_gate__n; IJth(rJacobian, 0, 1) = mSetVoltageDerivativeToZero ? 0.0 : (-3 * var_x2 * pow(var_chaste_interface__sodium_channel_m_gate__m, 2) * NV_Ith_S(mParameters, 1) * var_chaste_interface__sodium_channel_h_gate__h); - IJth(rJacobian, 1, 1) = -((var_x3) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (var_x5 * var_x8)) - 4 * var_x9; + IJth(rJacobian, 1, 1) = -((var_x5) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (-var_x4 * var_x8)) - 4 * var_x9; IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x1 * var_x2); IJth(rJacobian, 2, 2) = -1 / var_x12 - 0.070000000000000007 * var_x10; IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-4 * var_x0 * pow(var_chaste_interface__potassium_channel_n_gate__n, 3) * (87 + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3)); - IJth(rJacobian, 3, 3) = -((var_x13) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (0.099999999999999992 * var_x14 * var_x17)) - 0.125 * var_x18; + IJth(rJacobian, 3, 3) = -((var_x14) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-0.099999999999999992 * var_x13 * var_x17)) - 0.125 * var_x18; } N_Vector Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp new file mode 100644 index 00000000..5137ee40 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp @@ -0,0 +1,359 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: hodgkin_huxley_squid_axon_model_1952_modified +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: AnalyticCvode) +//! on (date omitted as unimportant) +//! +//! + +#include "hodgkin_huxley_squid_axon_model_1952_modified.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + + + + boost::shared_ptr Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude = -20; // microA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 0.5; // millisecond + const double var_chaste_interface__membrane__stim_period = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start = 10; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode::Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 4, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + mUseAnalyticJacobian = true; + mHasAnalyticJacobian = true; + + NV_Ith_S(this->mParameters, 0) = 1; // (var_membrane__Cm) [microF_per_cm2] + NV_Ith_S(this->mParameters, 1) = 120; // (var_sodium_channel__g_Na) [milliS_per_cm2] + NV_Ith_S(this->mParameters, 2) = 0.29999999999999999; // (var_leakage_current__g_L) [milliS_per_cm2] + NV_Ith_S(this->mParameters, 3) = 36; // (var_potassium_channel__g_K) [milliS_per_cm2] + } + + Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode::~Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode() + { + } + + + void Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 4; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -75.0 + double var_chaste_interface__sodium_channel_m_gate__m = NV_Ith_S(rY, 1); + // Units: dimensionless; Initial value: 0.05 + double var_chaste_interface__sodium_channel_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.6 + double var_chaste_interface__potassium_channel_n_gate__n = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.325 + + const double var_membrane__E_R = -75; // millivolt + const double var_leakage_current__E_L = 10.613 + var_membrane__E_R; // millivolt + const double var_leakage_current__i_L = (-var_leakage_current__E_L + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 2); // microA_per_cm2 + const double var_potassium_channel__E_K = -12 + var_membrane__E_R; // millivolt + const double var_potassium_channel__i_K = pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (-var_potassium_channel__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); // microA_per_cm2 + const double var_sodium_channel__E_Na = 115 + var_membrane__E_R; // millivolt + const double var_sodium_channel__i_Na = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * (-var_sodium_channel__E_Na + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 1) * var_chaste_interface__sodium_channel_h_gate__h; // microA_per_cm2 + const double var_chaste_interface__i_ionic = var_leakage_current__i_L + var_potassium_channel__i_K + var_sodium_channel__i_Na; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -75.0 + double var_chaste_interface__sodium_channel_m_gate__m = NV_Ith_S(rY, 1); + // Units: dimensionless; Initial value: 0.05 + double var_chaste_interface__sodium_channel_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.6 + double var_chaste_interface__potassium_channel_n_gate__n = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.325 + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_potassium_channel_n_gate__B = -0.10000000000000001; // per_millivolt + const double var_potassium_channel_n_gate__A = -0.01 / var_potassium_channel_n_gate__B; // per_millisecond + const double var_potassium_channel_n_gate__beta_n = 0.125 * exp(0.9375 + 0.012500000000000001 * var_chaste_interface__membrane__V); // per_millisecond + const double var_potassium_channel_n_gate__v0 = -65; // millivolt + const double var_potassium_channel_n_gate__U = (-var_potassium_channel_n_gate__v0 + var_chaste_interface__membrane__V) * var_potassium_channel_n_gate__B; // dimensionless + const double var_potassium_channel_n_gate__alpha_n = (((var_potassium_channel_n_gate__U >= -9.9999999999999995e-8) && (var_potassium_channel_n_gate__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_potassium_channel_n_gate__U) * var_potassium_channel_n_gate__A) : (var_potassium_channel_n_gate__A * var_potassium_channel_n_gate__U / (-1 + exp(var_potassium_channel_n_gate__U)))); // per_millisecond + const double d_dt_chaste_interface_var_potassium_channel_n_gate__n = (1 - var_chaste_interface__potassium_channel_n_gate__n) * var_potassium_channel_n_gate__alpha_n - var_potassium_channel_n_gate__beta_n * var_chaste_interface__potassium_channel_n_gate__n; // 1 / millisecond + const double var_sodium_channel_h_gate__alpha_h = 0.070000000000000007 * exp(-3.75 - 0.050000000000000003 * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_h_gate__beta_h = 1 / (1 + exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double d_dt_chaste_interface_var_sodium_channel_h_gate__h = (1 - var_chaste_interface__sodium_channel_h_gate__h) * var_sodium_channel_h_gate__alpha_h - var_sodium_channel_h_gate__beta_h * var_chaste_interface__sodium_channel_h_gate__h; // 1 / millisecond + const double var_sodium_channel_m_gate__B = -0.10000000000000001; // per_millivolt + const double var_sodium_channel_m_gate__A = -0.10000000000000001 / var_sodium_channel_m_gate__B; // per_millisecond + const double var_sodium_channel_m_gate__beta_m = 4 * exp(-4.166666666666667 - 0.055555555555555552 * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_m_gate__v0 = -50; // millivolt + const double var_sodium_channel_m_gate__U = (-var_sodium_channel_m_gate__v0 + var_chaste_interface__membrane__V) * var_sodium_channel_m_gate__B; // dimensionless + const double var_sodium_channel_m_gate__alpha_m = (((var_sodium_channel_m_gate__U >= -9.9999999999999995e-8) && (var_sodium_channel_m_gate__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_sodium_channel_m_gate__U) * var_sodium_channel_m_gate__A) : (var_sodium_channel_m_gate__A * var_sodium_channel_m_gate__U / (-1 + exp(var_sodium_channel_m_gate__U)))); // per_millisecond + const double d_dt_chaste_interface_var_sodium_channel_m_gate__m = (1 - var_chaste_interface__sodium_channel_m_gate__m) * var_sodium_channel_m_gate__alpha_m - var_sodium_channel_m_gate__beta_m * var_chaste_interface__sodium_channel_m_gate__m; // 1 / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_membrane__E_R = -75; // millivolt + const double var_leakage_current__E_L = 10.613 + var_membrane__E_R; // millivolt + const double var_leakage_current__i_L = (-var_leakage_current__E_L + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 2); // microA_per_cm2 + const double var_membrane__i_Stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // microA_per_cm2 + const double var_potassium_channel__E_K = -12 + var_membrane__E_R; // millivolt + const double var_potassium_channel__i_K = pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (-var_potassium_channel__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); // microA_per_cm2 + const double var_sodium_channel__E_Na = 115 + var_membrane__E_R; // millivolt + const double var_sodium_channel__i_Na = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * (-var_sodium_channel__E_Na + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 1) * var_chaste_interface__sodium_channel_h_gate__h; // microA_per_cm2 + d_dt_chaste_interface_var_membrane__V = (-var_leakage_current__i_L - var_membrane__i_Stim - var_potassium_channel__i_K - var_sodium_channel__i_Na) / NV_Ith_S(mParameters, 0); // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_sodium_channel_m_gate__m; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_sodium_channel_h_gate__h; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_potassium_channel_n_gate__n; + } + + void Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode::EvaluateAnalyticJacobian(double var_chaste_interface__environment__time, N_Vector rY, N_Vector rDY, CHASTE_CVODE_DENSE_MATRIX rJacobian, N_Vector rTmp1, N_Vector rTmp2, N_Vector rTmp3) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -75.0 + double var_chaste_interface__sodium_channel_m_gate__m = NV_Ith_S(rY, 1); + // Units: dimensionless; Initial value: 0.05 + double var_chaste_interface__sodium_channel_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.6 + double var_chaste_interface__potassium_channel_n_gate__n = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.325 + const double var_x0 = 1 / NV_Ith_S(mParameters, 0); + const double var_x1 = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * NV_Ith_S(mParameters, 1); + const double var_x2 = var_x0 * (-40 + var_chaste_interface__membrane__V); + const double var_x3 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x4 = 5 + var_x3; + const double var_x5 = (var_x4 >= -9.9999999999999995e-8) && (var_x4 <= 9.9999999999999995e-8); + const double var_x6 = exp(-var_x4); + const double var_x7 = -1 + var_x6; + const double var_x8 = 1 / var_x7; + const double var_x9 = exp(-4.166666666666667 - 0.055555555555555552 * var_chaste_interface__membrane__V); + const double var_x10 = exp(-3.75 - 0.050000000000000003 * var_chaste_interface__membrane__V); + const double var_x11 = exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x12 = 1 + var_x11; + const double var_x13 = 6.5 + var_x3; + const double var_x14 = (var_x13 >= -9.9999999999999995e-8) && (var_x13 <= 9.9999999999999995e-8); + const double var_x15 = exp(-var_x13); + const double var_x16 = -1 + var_x15; + const double var_x17 = 1 / var_x16; + const double var_x18 = exp(0.9375 + 0.012500000000000001 * var_chaste_interface__membrane__V); + + // Matrix entries + IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (var_x0 * (-NV_Ith_S(mParameters, 2) - var_x1 * var_chaste_interface__sodium_channel_h_gate__h - pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * NV_Ith_S(mParameters, 3))); + IJth(rJacobian, 1, 0) = (1 - var_chaste_interface__sodium_channel_m_gate__m) * ((var_x5) ? (0.050000000000000003) : (-0.10000000000000001 * var_x8 - 0.10000000000000001 * var_x4 * var_x6 / pow(var_x7, 2))) + 0.22222222222222221 * var_x9 * var_chaste_interface__sodium_channel_m_gate__m; + IJth(rJacobian, 2, 0) = -0.0035000000000000005 * var_x10 * (1 - var_chaste_interface__sodium_channel_h_gate__h) - 0.10000000000000001 * var_x11 * var_chaste_interface__sodium_channel_h_gate__h / pow(var_x12, 2); + IJth(rJacobian, 3, 0) = (1 - var_chaste_interface__potassium_channel_n_gate__n) * ((var_x14) ? (0.0050000000000000001) : (-0.01 * var_x17 - 0.01 * var_x13 * var_x15 / pow(var_x16, 2))) - 0.0015625000000000001 * var_x18 * var_chaste_interface__potassium_channel_n_gate__n; + IJth(rJacobian, 0, 1) = mSetVoltageDerivativeToZero ? 0.0 : (-3 * var_x2 * pow(var_chaste_interface__sodium_channel_m_gate__m, 2) * NV_Ith_S(mParameters, 1) * var_chaste_interface__sodium_channel_h_gate__h); + IJth(rJacobian, 1, 1) = -((var_x5) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (-1 * var_x4 * var_x8)) - 4 * var_x9; + IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x1 * var_x2); + IJth(rJacobian, 2, 2) = -1 / var_x12 - 0.070000000000000007 * var_x10; + IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-4 * var_x0 * pow(var_chaste_interface__potassium_channel_n_gate__n, 3) * (87 + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3)); + IJth(rJacobian, 3, 3) = -((var_x14) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-0.099999999999999992 * var_x13 * var_x17)) - 0.125 * var_x18; + } + + N_Vector Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -75.0 + double var_chaste_interface__sodium_channel_m_gate__m = NV_Ith_S(rY, 1); + // Units: dimensionless; Initial value: 0.05 + double var_chaste_interface__sodium_channel_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.6 + double var_chaste_interface__potassium_channel_n_gate__n = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.325 + + // Mathematics + const double var_membrane__E_R = -75; // millivolt + const double var_leakage_current__E_L = 10.613 + var_membrane__E_R; // millivolt + const double var_leakage_current__i_L = (-var_leakage_current__E_L + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 2); // microA_per_cm2 + const double var_membrane__i_Stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // microA_per_cm2 + const double var_potassium_channel__E_K = -12 + var_membrane__E_R; // millivolt + const double var_potassium_channel__i_K = pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (-var_potassium_channel__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 3); // microA_per_cm2 + const double var_sodium_channel__E_Na = 115 + var_membrane__E_R; // millivolt + const double var_sodium_channel__i_Na = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * (-var_sodium_channel__E_Na + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 1) * var_chaste_interface__sodium_channel_h_gate__h; // microA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(5, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(5); +#endif + NV_Ith_S(dqs, 0) = var_sodium_channel__i_Na; + NV_Ith_S(dqs, 1) = var_leakage_current__i_L; + NV_Ith_S(dqs, 2) = var_potassium_channel__i_K; + NV_Ith_S(dqs, 3) = var_membrane__i_Stim; + NV_Ith_S(dqs, 4) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "hodgkin_huxley_squid_axon_model_1952_modified"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-75.0); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("sodium_channel_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("sodium_channel_h_gate__h"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.6); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("potassium_channel_n_gate__n"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.325); + + // mParameters[0]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[1]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[2]: + this->mParameterNames.push_back("membrane_leakage_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_leakage_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_potassium_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLCvode) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994.cpp_python36 deleted file mode 100644 index edbd808c..00000000 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994.cpp_python36 +++ /dev/null @@ -1,2828 +0,0 @@ -//! @file -//! -//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) -//! -//! Model: demir_model_1994 -//! -//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen -//! (translator: chaste_codegen, model type: GeneralizedRushLarsenFirstOrder) -//! on (date omitted as unimportant) -//! -//! - -#include "dynamic_demir_model_1994.hpp" -#include -#include -#include -#include -#include "Exception.hpp" -#include "OdeSystemInformation.hpp" -#include "RegularStimulus.hpp" -#include "HeartConfig.hpp" -#include "IsNan.hpp" -#include "MathsCustomFunctions.hpp" - - - - - double Dynamicdemir_model_1994FromCellMLGRL1::GetIntracellularCalciumConcentration() - { - return mStateVariables[1]; - } - Dynamicdemir_model_1994FromCellMLGRL1::Dynamicdemir_model_1994FromCellMLGRL1(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) - : AbstractGeneralizedRushLarsenCardiacCell( - 27, - 0, - pIntracellularStimulus) - { - // Time units: millisecond - // - this->mpSystemInfo = OdeSystemInformation::Instance(); - Init(); - - this->mParameters[0] = 0.021149999999999999; // (var_L_type_Ca_channel__g_Ca_L) [microS] - this->mParameters[1] = 5.5000000000000002e-5; // (var_membrane__Cm) [microF] - this->mParameters[2] = 0.0069300000000000004; // (var_delayed_rectifying_potassium_current__g_K_max) [microS] - this->mParameters[3] = 0.0034399999999999999; // (var_sodium_current__P_Na) [mul_per_second] - this->mParameters[4] = 0.0128821; // (var_hyperpolarisation_activated_current__g_f_K) [microS] - this->mParameters[5] = 0.0067478; // (var_hyperpolarisation_activated_current__g_f_Na) [microS] - } - - Dynamicdemir_model_1994FromCellMLGRL1::~Dynamicdemir_model_1994FromCellMLGRL1() - { - } - - - void Dynamicdemir_model_1994FromCellMLGRL1::VerifyStateVariables() - { - std::vector& rY = rGetStateVariables(); - std::string error_message = ""; - - for (unsigned i=0; i < 27; i++) - { - if(std::isnan(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; - } - if(std::isinf(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; - } - if(this->is_concentration[i] && rY[i] < 0) - { - error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] < 0) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] > 1) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; - } - } - if (error_message != ""){ - EXCEPTION(DumpState(error_message)); - } - } - - double Dynamicdemir_model_1994FromCellMLGRL1::GetIIonic(const std::vector* pStateVariables) - { - // For state variable interpolation (SVI) we read in interpolated state variables, - // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). - if (!pStateVariables) pStateVariables = &rGetStateVariables(); - const std::vector& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.250113 - double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; - // Units: dimensionless; Initial value: 0.001386897 - double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; - // Units: dimensionless; Initial value: 0.002065463 - double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; - // Units: dimensionless; Initial value: 0.002572773 - double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; - // Units: dimensionless; Initial value: 0.98651 - double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; - // Units: dimensionless; Initial value: 0.02012114 - double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; - // Units: dimensionless; Initial value: 0.1945111 - double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; - // Units: dimensionless; Initial value: 0.02302278 - double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; - // Units: dimensionless; Initial value: 0.3777728 - double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; - // Units: dimensionless; Initial value: 0.09227776 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; - // Units: millimolar; Initial value: 140.7347 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; - // Units: millimolar; Initial value: 2.00474 - double var_chaste_interface__cleft_space_equations__K_c = rY[20]; - // Units: millimolar; Initial value: 5.389014 - - const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt - const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt - const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS - const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA - const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar - const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS - const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA - const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS - const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS - const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS - const double var_membrane__F = 96485.341499999995; // coulomb_per_mole - const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA - const double var_L_type_Ca_channel__i_Ca_L_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / mParameters[1]; // uA_per_cm2 - const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA - const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA - const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA - const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA - const double var_hyperpolarisation_activated_current__i_f_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_hyperpolarisation_activated_current__i_f / mParameters[1]; // uA_per_cm2 - const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt - const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA - const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt - const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA - const double var_delayed_rectifying_potassium_current__i_K_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifying_potassium_current__i_K / mParameters[1]; // uA_per_cm2 - const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA - const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt - const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA - const double var_linear_background_current__i_B = var_linear_background_current__i_B_Ca + var_linear_background_current__i_B_K + var_linear_background_current__i_B_Na; // nanoA - const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA - const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless - const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless - const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA - const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA - const double var_sodium_current__i_Na_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / mParameters[1]; // uA_per_cm2 - const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar - const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar - const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA - const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA - const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_delayed_rectifying_potassium_current__i_K_converted + var_hyperpolarisation_activated_current__i_f_converted + var_sodium_current__i_Na_converted) * mParameters[1] + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_calcium_pump_current__i_Ca_P + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_linear_background_current__i_B + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_pump__i_NaCa + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK) / mParameters[1]; // uA_per_cm2 - - const double i_ionic = var_chaste_interface__i_ionic; - EXCEPT_IF_NOT(!std::isnan(i_ionic)); - return i_ionic; - } - - void Dynamicdemir_model_1994FromCellMLGRL1::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) - { - std::vector& rY = rGetStateVariables(); - unsigned v_index = GetVoltageIndex(); - const double delta = 1e-8; - - double d_dt_chaste_interface_var_membrane__V; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.250113 - double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; - // Units: dimensionless; Initial value: 0.001386897 - double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; - // Units: dimensionless; Initial value: 0.002065463 - double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; - // Units: dimensionless; Initial value: 0.002572773 - double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; - // Units: dimensionless; Initial value: 0.98651 - double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; - // Units: dimensionless; Initial value: 0.02012114 - double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; - // Units: dimensionless; Initial value: 0.1945111 - double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; - // Units: dimensionless; Initial value: 0.02302278 - double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; - // Units: dimensionless; Initial value: 0.3777728 - double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; - // Units: dimensionless; Initial value: 0.09227776 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; - // Units: millimolar; Initial value: 140.7347 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; - // Units: millimolar; Initial value: 2.00474 - double var_chaste_interface__cleft_space_equations__K_c = rY[20]; - // Units: millimolar; Initial value: 5.389014 - - - // Mathematics - const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt - const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt - const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS - const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA - const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar - const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS - const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA - const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS - const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS - const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS - const double var_membrane__F = 96485.341499999995; // coulomb_per_mole - const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA - const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA - const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA - const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA - const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA - const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt - const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA - const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt - const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA - const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA - const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt - const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA - const double var_linear_background_current__i_B = var_linear_background_current__i_B_Ca + var_linear_background_current__i_B_K + var_linear_background_current__i_B_Na; // nanoA - const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA - const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless - const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless - const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA - const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA - const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar - const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar - const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA - const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA - const double var_membrane__V_orig_deriv = (-var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f - var_linear_background_current__i_B - var_sodium_calcium_pump__i_NaCa - var_sodium_current__i_Na - var_sodium_potassium_pump__i_NaK) / mParameters[1]; // millivolt / second - d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond - - double evalF = d_dt_chaste_interface_var_membrane__V; - mEvalF[0] = d_dt_chaste_interface_var_membrane__V; - double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); - if (fabs(partialF) < delta) - { - rY[v_index] += evalF*mDt; - } - else - { - rY[v_index] += (evalF/partialF)*(exp(partialF*mDt)-1.0); - } - } - - void Dynamicdemir_model_1994FromCellMLGRL1::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) - { - std::vector& rY = rGetStateVariables(); - const double delta = 1e-8; - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.250113 - double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; - // Units: dimensionless; Initial value: 0.001386897 - double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; - // Units: dimensionless; Initial value: 0.002065463 - double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; - // Units: dimensionless; Initial value: 0.002572773 - double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; - // Units: dimensionless; Initial value: 0.98651 - double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; - // Units: dimensionless; Initial value: 0.02012114 - double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; - // Units: dimensionless; Initial value: 0.1945111 - double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; - // Units: dimensionless; Initial value: 0.02302278 - double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; - // Units: dimensionless; Initial value: 0.3777728 - double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; - // Units: dimensionless; Initial value: 0.09227776 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; - // Units: millimolar; Initial value: 140.7347 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; - // Units: dimensionless; Initial value: 0.1411678 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; - // Units: dimensionless; Initial value: 0.07331396 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; - // Units: dimensionless; Initial value: 0.7618549 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; - // Units: dimensionless; Initial value: 0.2097049 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; - // Units: millimolar; Initial value: 2.00474 - double var_chaste_interface__cleft_space_equations__K_c = rY[20]; - // Units: millimolar; Initial value: 5.389014 - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; - // Units: millimolar; Initial value: 16.95311 - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; - // Units: millimolar; Initial value: 16.85024 - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; - // Units: dimensionless; Initial value: 0.9528726 - double var_chaste_interface__SR_Ca_uptake_and_release__F1 = rY[24]; - // Units: dimensionless; Initial value: 0.1133251 - double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; - // Units: dimensionless; Initial value: 0.0007594214 - double var_chaste_interface__SR_Ca_uptake_and_release__F3 = rY[26]; - // Units: dimensionless; Initial value: 0.8859153 - - - // Mathematics - const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt - const double var_SR_Ca_uptake_and_release__alpha_rel = 0.5; // nanoA_per_millimolar - const double var_SR_Ca_uptake_and_release__alpha_up = 0.080000000000000002; // nanoA - const double var_SR_Ca_uptake_and_release__beta_up = 0.071999999999999995; // nanoA - const double var_SR_Ca_uptake_and_release__i_rel = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel * var_SR_Ca_uptake_and_release__alpha_rel / pow((0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2), 2); // nanoA - const double var_SR_Ca_uptake_and_release__k_SRCa = 22; // millimolar - const double var_SR_Ca_uptake_and_release__k_cyca = 5.0000000000000002e-5; // millimolar - const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar - const double var_SR_Ca_uptake_and_release__k_xcs = 0.90000000000000002; // dimensionless - const double var_SR_Ca_uptake_and_release__K1 = var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs / var_SR_Ca_uptake_and_release__k_SRCa; // dimensionless - const double var_SR_Ca_uptake_and_release__phi_Calse = -641 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse + 770 * (1 - var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; // per_second - const double var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv = var_SR_Ca_uptake_and_release__phi_Calse; // 1 / second - const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse = 0.001 * var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv; // 1 / millisecond - const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt - const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS - const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA - const double var_cleft_space_equations__Ca_b = 2; // millimolar - const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar - const double var_cleft_space_equations__Na_b = 140; // millimolar - const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre - const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre - const double var_cleft_space_equations__tau_p = 0.01; // second - const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS - const double var_SR_Ca_uptake_and_release__K2 = var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 + var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs + var_SR_Ca_uptake_and_release__k_cyca + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // millimolar - const double var_SR_Ca_uptake_and_release__i_up = (var_SR_Ca_uptake_and_release__alpha_up * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 * var_SR_Ca_uptake_and_release__beta_up) / var_SR_Ca_uptake_and_release__K2; // nanoA - const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second - const double var_SR_Ca_uptake_and_release__F3_orig_deriv = -0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 + var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second - const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3 = 0.001 * var_SR_Ca_uptake_and_release__F3_orig_deriv; // 1 / millisecond - const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA - const double var_intracellular_concentrations_and_buffer_equations__Mg_i = 2.5; // millimolar - const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre - const double var_SR_Ca_uptake_and_release__V_rel = 0.0012960000000000001 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre - const double var_SR_Ca_uptake_and_release__V_up = 0.01166 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre - const double var_intracellular_concentrations_and_buffer_equations__phi_C = -307 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second - const double var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_C; // 1 / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv; // 1 / millisecond - const double var_intracellular_concentrations_and_buffer_equations__F_C = 0.089999999999999997 * var_intracellular_concentrations_and_buffer_equations__phi_C; // millimolar_per_second - const double var_intracellular_concentrations_and_buffer_equations__phi_TC = -252 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 50500 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second - const double var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TC; // 1 / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv; // 1 / millisecond - const double var_intracellular_concentrations_and_buffer_equations__F_TC = 0.031 * var_intracellular_concentrations_and_buffer_equations__phi_TC; // millimolar_per_second - const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -4.25 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second - const double var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // 1 / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv; // 1 / millisecond - const double var_intracellular_concentrations_and_buffer_equations__F_TMgC = 0.062 * var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // millimolar_per_second - const double var_intracellular_concentrations_and_buffer_equations__phi_B = var_intracellular_concentrations_and_buffer_equations__F_C + var_intracellular_concentrations_and_buffer_equations__F_TC + var_intracellular_concentrations_and_buffer_equations__F_TMgC; // millimolar_per_second - const double var_intracellular_concentrations_and_buffer_equations__phi_TMgM = -429 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop + 1290 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_intracellular_concentrations_and_buffer_equations__Mg_i; // per_second - const double var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgM; // 1 / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv; // 1 / millisecond - const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS - const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS - const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS - const double var_membrane__F = 96485.341499999995; // coulomb_per_mole - const double var_SR_Ca_uptake_and_release__i_tr = 31.162355874104083 * (-var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel + var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) * var_SR_Ca_uptake_and_release__V_up * var_membrane__F; // nanoA - const double var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv = -11.48 * var_SR_Ca_uptake_and_release__phi_Calse + 0.5 * (-var_SR_Ca_uptake_and_release__i_rel + var_SR_Ca_uptake_and_release__i_tr) / (var_SR_Ca_uptake_and_release__V_rel * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel = 0.001 * var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv; // millimolar / millisecond - const double var_SR_Ca_uptake_and_release__Ca_up_orig_deriv = 0.5 * (-var_SR_Ca_uptake_and_release__i_tr + var_SR_Ca_uptake_and_release__i_up) / (var_SR_Ca_uptake_and_release__V_up * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up = 0.001 * var_SR_Ca_uptake_and_release__Ca_up_orig_deriv; // millimolar / millisecond - const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_channel_d_gate__alpha_d_L = -28.390000000000001 * (35 + var_chaste_interface__membrane__V) / (-1 + exp(-14 - 0.40000000000000002 * var_chaste_interface__membrane__V)) - 84.900000000000006 * var_chaste_interface__membrane__V / (-1 + exp(-0.20799999999999999 * var_chaste_interface__membrane__V)); // per_second - const double var_L_type_Ca_channel_d_gate__beta_d_L = 11.43 * (-5 + var_chaste_interface__membrane__V) / (-1 + exp(-2 + 0.40000000000000002 * var_chaste_interface__membrane__V)); // per_second - const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA - const double var_L_type_Ca_channel_d_gate__tau_d_L = 1 / (var_L_type_Ca_channel_d_gate__alpha_d_L + var_L_type_Ca_channel_d_gate__beta_d_L); // second - const double var_L_type_Ca_channel_d_gate__d_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_d_gate__d_L + var_L_type_Ca_channel_d_gate__d_L_infinity) / var_L_type_Ca_channel_d_gate__tau_d_L; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L = 0.001 * var_L_type_Ca_channel_d_gate__d_L_orig_deriv; // 1 / millisecond - const double var_L_type_Ca_channel_f_gate__alpha_f_L = 3.75 * (28 + var_chaste_interface__membrane__V) / (-1 + exp(7 + 0.25 * var_chaste_interface__membrane__V)); // per_second - const double var_L_type_Ca_channel_f_gate__beta_f_L = 30 / (1 + exp(-7 - 0.25 * var_chaste_interface__membrane__V)); // per_second - const double var_L_type_Ca_channel_f_gate__f_L_infinity = 1 / (1 + exp(6 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel_f_gate__tau_f_L = 1 / (var_L_type_Ca_channel_f_gate__alpha_f_L + var_L_type_Ca_channel_f_gate__beta_f_L); // second - const double var_L_type_Ca_channel_f_gate__f_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_f_gate__f_L + var_L_type_Ca_channel_f_gate__f_L_infinity) / var_L_type_Ca_channel_f_gate__tau_f_L; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L = 0.001 * var_L_type_Ca_channel_f_gate__f_L_orig_deriv; // 1 / millisecond - const double var_SR_Ca_uptake_and_release__r_act = 240 * exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second - const double var_SR_Ca_uptake_and_release__F1_orig_deriv = 0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 - var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act; // 1 / second - const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1 = 0.001 * var_SR_Ca_uptake_and_release__F1_orig_deriv; // 1 / millisecond - const double var_SR_Ca_uptake_and_release__F2_orig_deriv = var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act - var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second - const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2 = 0.001 * var_SR_Ca_uptake_and_release__F2_orig_deriv; // 1 / millisecond - const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA - const double var_T_type_Ca_channel_d_gate__alpha_d_T = 1068 * exp(0.87666666666666671 + 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second - const double var_T_type_Ca_channel_d_gate__beta_d_T = 1068 * exp(-0.87666666666666671 - 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second - const double var_T_type_Ca_channel_d_gate__d_T_infinity = 1 / (1 + exp(-4.3833333333333337 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless - const double var_T_type_Ca_channel_d_gate__tau_d_T = 1 / (var_T_type_Ca_channel_d_gate__alpha_d_T + var_T_type_Ca_channel_d_gate__beta_d_T); // second - const double var_T_type_Ca_channel_d_gate__d_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_d_gate__d_T + var_T_type_Ca_channel_d_gate__d_T_infinity) / var_T_type_Ca_channel_d_gate__tau_d_T; // 1 / second - const double d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T = 0.001 * var_T_type_Ca_channel_d_gate__d_T_orig_deriv; // 1 / millisecond - const double var_T_type_Ca_channel_f_gate__alpha_f_T = 15.300000000000001 * exp(-0.74069627851140463 - 0.012004801920768308 * var_chaste_interface__membrane__V); // per_second - const double var_T_type_Ca_channel_f_gate__beta_f_T = 15 * exp(4.0117035110533159 + 0.065019505851755519 * var_chaste_interface__membrane__V); // per_second - const double var_T_type_Ca_channel_f_gate__f_T_infinity = 1 / (1 + exp(11.017857142857144 + 0.17857142857142858 * var_chaste_interface__membrane__V)); // dimensionless - const double var_T_type_Ca_channel_f_gate__tau_f_T = 1 / (var_T_type_Ca_channel_f_gate__alpha_f_T + var_T_type_Ca_channel_f_gate__beta_f_T); // second - const double var_T_type_Ca_channel_f_gate__f_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_f_gate__f_T + var_T_type_Ca_channel_f_gate__f_T_infinity) / var_T_type_Ca_channel_f_gate__tau_f_T; // 1 / second - const double d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T = 0.001 * var_T_type_Ca_channel_f_gate__f_T_orig_deriv; // 1 / millisecond - const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity = 1 / (1 + exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V)); // dimensionless - const double var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a = 1 / (17 * exp(0.039800000000000002 * var_chaste_interface__membrane__V) + 2.1099999999999999 * exp(-0.050999999999999997 * var_chaste_interface__membrane__V)); // second - const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv = (-var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a + var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity) / var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a; // 1 / second - const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a = 0.001 * var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv; // 1 / millisecond - const double var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i = 100 * exp(-0.0183 * var_chaste_interface__membrane__V); // per_second - const double var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i = 656 * exp(0.0094199999999999996 * var_chaste_interface__membrane__V); // per_second - const double var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv = (1 - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i) * var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i * var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i; // 1 / second - const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i = 0.001 * var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv; // 1 / millisecond - const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA - const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA - const double var_hyperpolarisation_activated_current_y_gate__tau_y = 1 / (1.6483000000000001 * exp(-2.2219482120838472 - 0.041101520756267988 * var_chaste_interface__membrane__V) + 14.01055 / (0.69999999999999996 + exp(-10.909090909090908 - 0.18181818181818182 * var_chaste_interface__membrane__V))); // second - const double var_hyperpolarisation_activated_current_y_gate__y_infinity = 1 / (1 + exp(8.0222222222222221 + 0.1111111111111111 * var_chaste_interface__membrane__V)); // dimensionless - const double var_hyperpolarisation_activated_current_y_gate__y_orig_deriv = (-var_chaste_interface__hyperpolarisation_activated_current_y_gate__y + var_hyperpolarisation_activated_current_y_gate__y_infinity) / var_hyperpolarisation_activated_current_y_gate__tau_y; // 1 / second - const double d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y = 0.001 * var_hyperpolarisation_activated_current_y_gate__y_orig_deriv; // 1 / millisecond - const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt - const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA - const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt - const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA - const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA - const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt - const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA - const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA - const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless - const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless - const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA - const double var_cleft_space_equations__Ca_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Ca_c + var_cleft_space_equations__Ca_b) / var_cleft_space_equations__tau_p + 0.5 * (-2 * var_sodium_calcium_pump__i_NaCa + var_L_type_Ca_channel__i_Ca_L + var_T_type_Ca_channel__i_Ca_T + var_calcium_pump_current__i_Ca_P + var_linear_background_current__i_B_Ca) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_cleft_space_equations__Ca_c = 0.001 * var_cleft_space_equations__Ca_c_orig_deriv; // millimolar / millisecond - const double var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv = -var_intracellular_concentrations_and_buffer_equations__phi_B + 0.5 * (-var_L_type_Ca_channel__i_Ca_L - var_SR_Ca_uptake_and_release__i_up - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_linear_background_current__i_B_Ca + 2 * var_sodium_calcium_pump__i_NaCa + var_SR_Ca_uptake_and_release__i_rel) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv; // millimolar / millisecond - const double var_sodium_current_h_gate__alpha_h1 = 165 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); // per_second - const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V)); // per_second - const double var_sodium_current_h_gate__h1_infinity = var_sodium_current_h_gate__alpha_h1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // dimensionless - const double var_sodium_current_h_gate__h2_infinity = var_sodium_current_h_gate__h1_infinity; // dimensionless - const double var_sodium_current_h_gate__tau_h1 = 1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // second - const double var_sodium_current_h_gate__h1_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h1 + var_sodium_current_h_gate__h1_infinity) / var_sodium_current_h_gate__tau_h1; // 1 / second - const double d_dt_chaste_interface_var_sodium_current_h_gate__h1 = 0.001 * var_sodium_current_h_gate__h1_orig_deriv; // 1 / millisecond - const double var_sodium_current_h_gate__tau_h2 = 20 * var_sodium_current_h_gate__tau_h1; // second - const double var_sodium_current_h_gate__h2_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h2 + var_sodium_current_h_gate__h2_infinity) / var_sodium_current_h_gate__tau_h2; // 1 / second - const double d_dt_chaste_interface_var_sodium_current_h_gate__h2 = 0.001 * var_sodium_current_h_gate__h2_orig_deriv; // 1 / millisecond - const double var_sodium_current_m_gate__alpha_m = -824 * (51.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V)); // per_second - const double var_sodium_current_m_gate__beta_m = 32960 * exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V); // per_second - const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA - const double var_sodium_current_m_gate__m_infinity = var_sodium_current_m_gate__alpha_m / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // dimensionless - const double var_sodium_current_m_gate__tau_m = 1.5e-5 + 1 / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // second - const double var_sodium_current_m_gate__m_orig_deriv = (-var_chaste_interface__sodium_current_m_gate__m + var_sodium_current_m_gate__m_infinity) / var_sodium_current_m_gate__tau_m; // 1 / second - const double d_dt_chaste_interface_var_sodium_current_m_gate__m = 0.001 * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond - const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar - const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar - const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA - const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA - const double var_cleft_space_equations__K_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__K_c + var_cleft_space_equations__K_b) / var_cleft_space_equations__tau_p + (-2 * var_sodium_potassium_pump__i_NaK + var_delayed_rectifying_potassium_current__i_K + var_hyperpolarisation_activated_current__i_f_K + var_linear_background_current__i_B_K) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_cleft_space_equations__K_c = 0.001 * var_cleft_space_equations__K_c_orig_deriv; // millimolar / millisecond - const double var_cleft_space_equations__Na_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Na_c + var_cleft_space_equations__Na_b) / var_cleft_space_equations__tau_p + (3 * var_sodium_calcium_pump__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_hyperpolarisation_activated_current__i_f_Na + var_linear_background_current__i_B_Na + var_sodium_current__i_Na) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_cleft_space_equations__Na_c = 0.001 * var_cleft_space_equations__Na_c_orig_deriv; // millimolar / millisecond - const double var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv = (-var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f_K - var_linear_background_current__i_B_K + 2 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv; // millimolar / millisecond - const double var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv = (-var_hyperpolarisation_activated_current__i_f_Na - var_linear_background_current__i_B_Na - var_sodium_current__i_Na - 3 * var_sodium_calcium_pump__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv; // millimolar / millisecond - - mEvalF[1] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i; - mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[2] = d_dt_chaste_interface_var_sodium_current_m_gate__m; - mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[3] = d_dt_chaste_interface_var_sodium_current_h_gate__h1; - mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[4] = d_dt_chaste_interface_var_sodium_current_h_gate__h2; - mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[5] = d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L; - mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[6] = d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L; - mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[7] = d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T; - mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[8] = d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T; - mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[9] = d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a; - mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[10] = d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i; - mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[11] = d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y; - mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[12] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i; - mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[13] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i; - mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[14] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod; - mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[15] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop; - mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[16] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop; - mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[17] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop; - mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[18] = d_dt_chaste_interface_var_cleft_space_equations__Na_c; - mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[19] = d_dt_chaste_interface_var_cleft_space_equations__Ca_c; - mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[20] = d_dt_chaste_interface_var_cleft_space_equations__K_c; - mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[21] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up; - mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[22] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel; - mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[23] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse; - mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[24] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1; - mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[25] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2; - mPartialF[25] = EvaluatePartialDerivative25(var_chaste_interface__environment__time_converted, rY, delta); - mEvalF[26] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3; - mPartialF[26] = EvaluatePartialDerivative26(var_chaste_interface__environment__time_converted, rY, delta); - - { - if (fabs(mPartialF[1]) < delta){ - rY[1] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i; - } - else - { - rY[1] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i/mPartialF[1])*(exp(mPartialF[1]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[2]) < delta){ - rY[2] += mDt*d_dt_chaste_interface_var_sodium_current_m_gate__m; - } - else - { - rY[2] += (d_dt_chaste_interface_var_sodium_current_m_gate__m/mPartialF[2])*(exp(mPartialF[2]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[3]) < delta){ - rY[3] += mDt*d_dt_chaste_interface_var_sodium_current_h_gate__h1; - } - else - { - rY[3] += (d_dt_chaste_interface_var_sodium_current_h_gate__h1/mPartialF[3])*(exp(mPartialF[3]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[4]) < delta){ - rY[4] += mDt*d_dt_chaste_interface_var_sodium_current_h_gate__h2; - } - else - { - rY[4] += (d_dt_chaste_interface_var_sodium_current_h_gate__h2/mPartialF[4])*(exp(mPartialF[4]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[5]) < delta){ - rY[5] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L; - } - else - { - rY[5] += (d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L/mPartialF[5])*(exp(mPartialF[5]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[6]) < delta){ - rY[6] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L; - } - else - { - rY[6] += (d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L/mPartialF[6])*(exp(mPartialF[6]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[7]) < delta){ - rY[7] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T; - } - else - { - rY[7] += (d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T/mPartialF[7])*(exp(mPartialF[7]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[8]) < delta){ - rY[8] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T; - } - else - { - rY[8] += (d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T/mPartialF[8])*(exp(mPartialF[8]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[9]) < delta){ - rY[9] += mDt*d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a; - } - else - { - rY[9] += (d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a/mPartialF[9])*(exp(mPartialF[9]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[10]) < delta){ - rY[10] += mDt*d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i; - } - else - { - rY[10] += (d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i/mPartialF[10])*(exp(mPartialF[10]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[11]) < delta){ - rY[11] += mDt*d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y; - } - else - { - rY[11] += (d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y/mPartialF[11])*(exp(mPartialF[11]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[12]) < delta){ - rY[12] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i; - } - else - { - rY[12] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i/mPartialF[12])*(exp(mPartialF[12]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[13]) < delta){ - rY[13] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i; - } - else - { - rY[13] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i/mPartialF[13])*(exp(mPartialF[13]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[14]) < delta){ - rY[14] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod; - } - else - { - rY[14] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod/mPartialF[14])*(exp(mPartialF[14]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[15]) < delta){ - rY[15] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop; - } - else - { - rY[15] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop/mPartialF[15])*(exp(mPartialF[15]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[16]) < delta){ - rY[16] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop; - } - else - { - rY[16] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop/mPartialF[16])*(exp(mPartialF[16]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[17]) < delta){ - rY[17] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop; - } - else - { - rY[17] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop/mPartialF[17])*(exp(mPartialF[17]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[18]) < delta){ - rY[18] += mDt*d_dt_chaste_interface_var_cleft_space_equations__Na_c; - } - else - { - rY[18] += (d_dt_chaste_interface_var_cleft_space_equations__Na_c/mPartialF[18])*(exp(mPartialF[18]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[19]) < delta){ - rY[19] += mDt*d_dt_chaste_interface_var_cleft_space_equations__Ca_c; - } - else - { - rY[19] += (d_dt_chaste_interface_var_cleft_space_equations__Ca_c/mPartialF[19])*(exp(mPartialF[19]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[20]) < delta){ - rY[20] += mDt*d_dt_chaste_interface_var_cleft_space_equations__K_c; - } - else - { - rY[20] += (d_dt_chaste_interface_var_cleft_space_equations__K_c/mPartialF[20])*(exp(mPartialF[20]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[21]) < delta){ - rY[21] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up; - } - else - { - rY[21] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up/mPartialF[21])*(exp(mPartialF[21]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[22]) < delta){ - rY[22] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel; - } - else - { - rY[22] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel/mPartialF[22])*(exp(mPartialF[22]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[23]) < delta){ - rY[23] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse; - } - else - { - rY[23] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse/mPartialF[23])*(exp(mPartialF[23]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[24]) < delta){ - rY[24] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1; - } - else - { - rY[24] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1/mPartialF[24])*(exp(mPartialF[24]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[25]) < delta){ - rY[25] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2; - } - else - { - rY[25] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2/mPartialF[25])*(exp(mPartialF[25]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[26]) < delta){ - rY[26] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3; - } - else - { - rY[26] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3/mPartialF[26])*(exp(mPartialF[26]*mDt)-1.0); - } - - } - - } - - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - double d_dt_chaste_interface_var_membrane__V; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.250113 - double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; - // Units: dimensionless; Initial value: 0.001386897 - double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; - // Units: dimensionless; Initial value: 0.002065463 - double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; - // Units: dimensionless; Initial value: 0.002572773 - double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; - // Units: dimensionless; Initial value: 0.98651 - double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; - // Units: dimensionless; Initial value: 0.02012114 - double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; - // Units: dimensionless; Initial value: 0.1945111 - double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; - // Units: dimensionless; Initial value: 0.02302278 - double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; - // Units: dimensionless; Initial value: 0.3777728 - double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; - // Units: dimensionless; Initial value: 0.09227776 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; - // Units: millimolar; Initial value: 140.7347 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; - // Units: millimolar; Initial value: 2.00474 - double var_chaste_interface__cleft_space_equations__K_c = rY[20]; - // Units: millimolar; Initial value: 5.389014 - - - // Mathematics - const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt - const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt - const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS - const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA - const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar - const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS - const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA - const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS - const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS - const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS - const double var_membrane__F = 96485.341499999995; // coulomb_per_mole - const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA - const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA - const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA - const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA - const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA - const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt - const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA - const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt - const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA - const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA - const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt - const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA - const double var_linear_background_current__i_B = var_linear_background_current__i_B_Ca + var_linear_background_current__i_B_K + var_linear_background_current__i_B_Na; // nanoA - const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA - const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless - const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless - const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA - const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA - const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar - const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar - const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA - const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA - const double var_membrane__V_orig_deriv = (-var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f - var_linear_background_current__i_B - var_sodium_calcium_pump__i_NaCa - var_sodium_current__i_Na - var_sodium_potassium_pump__i_NaK) / mParameters[1]; // millivolt / second - d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond - - return d_dt_chaste_interface_var_membrane__V; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.250113 - double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; - // Units: dimensionless; Initial value: 0.001386897 - double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; - // Units: dimensionless; Initial value: 0.002065463 - double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; - // Units: dimensionless; Initial value: 0.002572773 - double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; - // Units: dimensionless; Initial value: 0.98651 - double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; - // Units: dimensionless; Initial value: 0.02012114 - double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; - // Units: dimensionless; Initial value: 0.1945111 - double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; - // Units: dimensionless; Initial value: 0.02302278 - double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; - // Units: dimensionless; Initial value: 0.3777728 - double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; - // Units: dimensionless; Initial value: 0.09227776 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; - // Units: millimolar; Initial value: 2.00474 - double var_chaste_interface__cleft_space_equations__K_c = rY[20]; - // Units: millimolar; Initial value: 5.389014 - - - const double var_x0 = -0.16666666666666666 * var_chaste_interface__membrane__V; - const double var_x1 = exp(-2.3500000000000001 + var_x0); - const double var_x2 = 1 + var_x1; - const double var_x3 = 1 / var_x2; - const double var_x4 = var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L; - const double var_x5 = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2); - const double var_x6 = var_x5 * mParameters[4]; - const double var_x7 = var_x5 * mParameters[5]; - const double var_x8 = var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; - const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); - const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); - const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; - const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; - const double var_x14 = 1 / var_x13; - const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; - const double var_x16 = exp(-var_x15); - const double var_x17 = var_x10 * var_x16; - const double var_x18 = exp(var_x15); - const double var_x19 = var_x12 * var_x18; - const double var_x20 = var_x14 * (0.018714999999999999 * var_x17 + 0.018714999999999999 * var_x19); - const double var_x21 = mParameters[2] * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; - const double var_x22 = var_x21 * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a; - const double var_x23 = (46.399999999999999 - var_chaste_interface__membrane__V) * mParameters[0]; - const double var_x24 = var_x1 / pow(var_x2, 2); - const double var_x25 = 0.015833333333333335 * var_x24; - const double var_x26 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); - const double var_x27 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; - const double var_x28 = pow(var_x27, (-2)); - const double var_x29 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); - const double var_x30 = 1 + 0.18315018315018314 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; - const double var_x31 = pow(var_x30, (-3)); - const double var_x32 = var_x11 * var_x26 * var_x28 * var_x29 * var_x31 / pow((1 + 0.66666666666666663 * var_x26), 2); - const double var_x33 = 0.037433890822745473 * var_chaste_interface__membrane__V; - const double var_x34 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; - const double var_x35 = var_x34 * var_chaste_interface__cleft_space_equations__Na_c; - const double var_x36 = exp(var_x33 - 1 * log(var_x35)); - const double var_x37 = -1 + var_x36; - const double var_x38 = var_x37 * var_chaste_interface__cleft_space_equations__Na_c; - const double var_x39 = exp(var_x33); - const double var_x40 = -1 + var_x39; - const double var_x41 = 1 / var_x40; - const double var_x42 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); - const double var_x43 = var_x41 * var_x42 * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; - const double var_x44 = 3611.8217397063127 * var_x43; - const double var_x45 = var_x43 * var_chaste_interface__membrane__V; - const double var_x46 = var_x36 * var_x45; - const double var_x47 = var_x46 * var_chaste_interface__cleft_space_equations__Na_c; - const double var_x48 = var_x38 * var_chaste_interface__sodium_current_h_gate__h2; - const double var_x49 = var_x48 * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1; - const double var_x50 = var_x39 * var_x42 * var_x49 / pow(var_x40, 2); - const double var_x51 = 1 / mParameters[1]; - const double var_x52 = 0.001 * var_x51; - - partialF = var_x52 * (-0.00026580000000000001 - var_x6 - var_x7 + 135.20454067538472 * var_x50 - 0.02521 * var_x8 - 1.2480000000000001e-5 * var_x20 - 135.20454067538472 * var_x47 - 2.7046577588354044 * var_x22 - 2.3940879178437715e-5 * var_x32 + var_x23 * var_x25 + (-var_x4 - 0.095000000000000001 * var_x3) * mParameters[0] - var_x38 * var_x44); - } - else - { - const double y_save = rY[0]; - rY[0] += delta; - const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[0])/delta; - rY[0] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; - // Units: dimensionless; Initial value: 0.002572773 - double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; - // Units: dimensionless; Initial value: 0.98651 - double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; - // Units: dimensionless; Initial value: 0.02012114 - double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; - // Units: dimensionless; Initial value: 0.1945111 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; - // Units: dimensionless; Initial value: 0.1411678 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; - // Units: dimensionless; Initial value: 0.07331396 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; - // Units: dimensionless; Initial value: 0.7618549 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; - // Units: dimensionless; Initial value: 0.2097049 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; - // Units: millimolar; Initial value: 2.00474 - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; - // Units: millimolar; Initial value: 16.95311 - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; - // Units: millimolar; Initial value: 16.85024 - double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; - // Units: dimensionless; Initial value: 0.0007594214 - - - // Mathematics - const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt - const double var_SR_Ca_uptake_and_release__alpha_rel = 0.5; // nanoA_per_millimolar - const double var_SR_Ca_uptake_and_release__alpha_up = 0.080000000000000002; // nanoA - const double var_SR_Ca_uptake_and_release__beta_up = 0.071999999999999995; // nanoA - const double var_SR_Ca_uptake_and_release__i_rel = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel * var_SR_Ca_uptake_and_release__alpha_rel / pow((0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2), 2); // nanoA - const double var_SR_Ca_uptake_and_release__k_SRCa = 22; // millimolar - const double var_SR_Ca_uptake_and_release__k_cyca = 5.0000000000000002e-5; // millimolar - const double var_SR_Ca_uptake_and_release__k_xcs = 0.90000000000000002; // dimensionless - const double var_SR_Ca_uptake_and_release__K1 = var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs / var_SR_Ca_uptake_and_release__k_SRCa; // dimensionless - const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt - const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS - const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA - const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre - const double var_SR_Ca_uptake_and_release__K2 = var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 + var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs + var_SR_Ca_uptake_and_release__k_cyca + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // millimolar - const double var_SR_Ca_uptake_and_release__i_up = (var_SR_Ca_uptake_and_release__alpha_up * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 * var_SR_Ca_uptake_and_release__beta_up) / var_SR_Ca_uptake_and_release__K2; // nanoA - const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA - const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre - const double var_intracellular_concentrations_and_buffer_equations__phi_C = -307 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second - const double var_intracellular_concentrations_and_buffer_equations__F_C = 0.089999999999999997 * var_intracellular_concentrations_and_buffer_equations__phi_C; // millimolar_per_second - const double var_intracellular_concentrations_and_buffer_equations__phi_TC = -252 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 50500 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second - const double var_intracellular_concentrations_and_buffer_equations__F_TC = 0.031 * var_intracellular_concentrations_and_buffer_equations__phi_TC; // millimolar_per_second - const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -4.25 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second - const double var_intracellular_concentrations_and_buffer_equations__F_TMgC = 0.062 * var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // millimolar_per_second - const double var_intracellular_concentrations_and_buffer_equations__phi_B = var_intracellular_concentrations_and_buffer_equations__F_C + var_intracellular_concentrations_and_buffer_equations__F_TC + var_intracellular_concentrations_and_buffer_equations__F_TMgC; // millimolar_per_second - const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS - const double var_membrane__F = 96485.341499999995; // coulomb_per_mole - const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA - const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA - const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt - const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA - const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA - const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless - const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless - const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA - const double var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv = -var_intracellular_concentrations_and_buffer_equations__phi_B + 0.5 * (-var_L_type_Ca_channel__i_Ca_L - var_SR_Ca_uptake_and_release__i_up - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_linear_background_current__i_B_Ca + 2 * var_sodium_calcium_pump__i_NaCa + var_SR_Ca_uptake_and_release__i_rel) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; - // Units: dimensionless; Initial value: 0.1411678 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; - // Units: dimensionless; Initial value: 0.07331396 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; - // Units: dimensionless; Initial value: 0.7618549 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; - // Units: dimensionless; Initial value: 0.2097049 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; - // Units: millimolar; Initial value: 2.00474 - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; - // Units: millimolar; Initial value: 16.95311 - - - const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); - const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); - const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; - const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; - const double var_x14 = 1 / var_x13; - const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; - const double var_x16 = exp(-var_x15); - const double var_x17 = var_x10 * var_x16; - const double var_x18 = exp(var_x15); - const double var_x19 = var_x12 * var_x18; - const double var_x53 = 0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - const double var_x54 = 1 / var_x53; - const double var_x55 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - const double var_x56 = var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / pow(var_x53, 2); - const double var_x58 = var_x16 * var_x9; - const double var_x59 = (var_x19 - var_x17) / pow(var_x13, 2); - const double var_x100 = 9.5000000000000005e-5 + 2.0454545454545457e-6 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - const double var_x101 = 1 / var_x100; - const double var_x102 = (0.080000000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - 1.4727272727272728e-7 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) / pow(var_x100, 2); - const double var_x103 = 7.9543493648916639e-12 * var_x59; - const double var_x104 = 7.9543493648916641e-8 * var_x14; - - partialF = -21.173500000000001 + 9.1430401954624137e-5 * var_x56 + 11.609999999999999 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 1.5654999999999999 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 0.0031868386878572369 * var_x102 + 7.9980000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 7.9980000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop - 9.1430401954624137e-5 * var_x54 - 0.00025494709502857897 * var_x101 - 1.5494105166262771e-6 * var_x55 - var_x103 * var_x9 - var_x104 * var_x58; - } - else - { - const double y_save = rY[1]; - rY[1] += delta; - const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[1])/delta; - rY[1] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.250113 - - - // Mathematics - const double var_sodium_current_m_gate__alpha_m = -824 * (51.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V)); // per_second - const double var_sodium_current_m_gate__beta_m = 32960 * exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V); // per_second - const double var_sodium_current_m_gate__m_infinity = var_sodium_current_m_gate__alpha_m / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // dimensionless - const double var_sodium_current_m_gate__tau_m = 1.5e-5 + 1 / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // second - const double var_sodium_current_m_gate__m_orig_deriv = (-var_chaste_interface__sodium_current_m_gate__m + var_sodium_current_m_gate__m_infinity) / var_sodium_current_m_gate__tau_m; // 1 / second - const double d_dt_chaste_interface_var_sodium_current_m_gate__m = 0.001 * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_sodium_current_m_gate__m; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - - - const double var_x116 = exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V); - const double var_x117 = 51.899999999999999 + var_chaste_interface__membrane__V; - const double var_x118 = -1 + var_x116; - const double var_x119 = 1 / var_x118; - const double var_x120 = 824 * var_x119; - const double var_x121 = var_x117 * var_x120; - const double var_x122 = 1 / (-var_x121 + 32960 * var_x116); - const double var_x126 = 1.5e-5 + var_x122; - const double var_x127 = 0.001 / var_x126; - - partialF = -var_x127; - } - else - { - const double y_save = rY[2]; - rY[2] += delta; - const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[2])/delta; - rY[2] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; - // Units: dimensionless; Initial value: 0.001386897 - - - // Mathematics - const double var_sodium_current_h_gate__alpha_h1 = 165 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); // per_second - const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V)); // per_second - const double var_sodium_current_h_gate__h1_infinity = var_sodium_current_h_gate__alpha_h1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // dimensionless - const double var_sodium_current_h_gate__tau_h1 = 1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // second - const double var_sodium_current_h_gate__h1_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h1 + var_sodium_current_h_gate__h1_infinity) / var_sodium_current_h_gate__tau_h1; // 1 / second - const double d_dt_chaste_interface_var_sodium_current_h_gate__h1 = 0.001 * var_sodium_current_h_gate__h1_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_sodium_current_h_gate__h1; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - - - const double var_x128 = exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); - const double var_x129 = 1 / (1 + 320 * var_x128); - const double var_x136 = 0.16500000000000001 * var_x128; - - partialF = -var_x136 - 12.359999999999999 * var_x129; - } - else - { - const double y_save = rY[3]; - rY[3] += delta; - const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[3])/delta; - rY[3] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; - // Units: dimensionless; Initial value: 0.002065463 - - - // Mathematics - const double var_sodium_current_h_gate__alpha_h1 = 165 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); // per_second - const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V)); // per_second - const double var_sodium_current_h_gate__h1_infinity = var_sodium_current_h_gate__alpha_h1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // dimensionless - const double var_sodium_current_h_gate__h2_infinity = var_sodium_current_h_gate__h1_infinity; // dimensionless - const double var_sodium_current_h_gate__tau_h1 = 1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // second - const double var_sodium_current_h_gate__tau_h2 = 20 * var_sodium_current_h_gate__tau_h1; // second - const double var_sodium_current_h_gate__h2_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h2 + var_sodium_current_h_gate__h2_infinity) / var_sodium_current_h_gate__tau_h2; // 1 / second - const double d_dt_chaste_interface_var_sodium_current_h_gate__h2 = 0.001 * var_sodium_current_h_gate__h2_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_sodium_current_h_gate__h2; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - - - const double var_x128 = exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); - const double var_x129 = 1 / (1 + 320 * var_x128); - - partialF = -0.61799999999999999 * var_x129 - 0.0082500000000000004 * var_x128; - } - else - { - const double y_save = rY[4]; - rY[4] += delta; - const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[4])/delta; - rY[4] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; - // Units: dimensionless; Initial value: 0.002572773 - - - // Mathematics - const double var_L_type_Ca_channel_d_gate__alpha_d_L = -28.390000000000001 * (35 + var_chaste_interface__membrane__V) / (-1 + exp(-14 - 0.40000000000000002 * var_chaste_interface__membrane__V)) - 84.900000000000006 * var_chaste_interface__membrane__V / (-1 + exp(-0.20799999999999999 * var_chaste_interface__membrane__V)); // per_second - const double var_L_type_Ca_channel_d_gate__beta_d_L = 11.43 * (-5 + var_chaste_interface__membrane__V) / (-1 + exp(-2 + 0.40000000000000002 * var_chaste_interface__membrane__V)); // per_second - const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel_d_gate__tau_d_L = 1 / (var_L_type_Ca_channel_d_gate__alpha_d_L + var_L_type_Ca_channel_d_gate__beta_d_L); // second - const double var_L_type_Ca_channel_d_gate__d_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_d_gate__d_L + var_L_type_Ca_channel_d_gate__d_L_infinity) / var_L_type_Ca_channel_d_gate__tau_d_L; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L = 0.001 * var_L_type_Ca_channel_d_gate__d_L_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - - - const double var_x138 = exp(-2 + 0.40000000000000002 * var_chaste_interface__membrane__V); - const double var_x139 = -1 + var_x138; - const double var_x140 = 1 / var_x139; - const double var_x142 = exp(-14 - 0.40000000000000002 * var_chaste_interface__membrane__V); - const double var_x143 = -1 + var_x142; - const double var_x144 = 1 / var_x143; - const double var_x146 = exp(-0.20799999999999999 * var_chaste_interface__membrane__V); - const double var_x147 = -1 + var_x146; - const double var_x148 = 1 / var_x147; - const double var_x150 = 35 + var_chaste_interface__membrane__V; - const double var_x151 = -5 + var_chaste_interface__membrane__V; - - partialF = 0.028390000000000002 * var_x144 * var_x150 + 0.084900000000000003 * var_x148 * var_chaste_interface__membrane__V - 0.011429999999999999 * var_x140 * var_x151; - } - else - { - const double y_save = rY[5]; - rY[5] += delta; - const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[5])/delta; - rY[5] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; - // Units: dimensionless; Initial value: 0.98651 - - - // Mathematics - const double var_L_type_Ca_channel_f_gate__alpha_f_L = 3.75 * (28 + var_chaste_interface__membrane__V) / (-1 + exp(7 + 0.25 * var_chaste_interface__membrane__V)); // per_second - const double var_L_type_Ca_channel_f_gate__beta_f_L = 30 / (1 + exp(-7 - 0.25 * var_chaste_interface__membrane__V)); // per_second - const double var_L_type_Ca_channel_f_gate__f_L_infinity = 1 / (1 + exp(6 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel_f_gate__tau_f_L = 1 / (var_L_type_Ca_channel_f_gate__alpha_f_L + var_L_type_Ca_channel_f_gate__beta_f_L); // second - const double var_L_type_Ca_channel_f_gate__f_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_f_gate__f_L + var_L_type_Ca_channel_f_gate__f_L_infinity) / var_L_type_Ca_channel_f_gate__tau_f_L; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L = 0.001 * var_L_type_Ca_channel_f_gate__f_L_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - - - const double var_x154 = 0.25 * var_chaste_interface__membrane__V; - const double var_x155 = exp(7 + var_x154); - const double var_x156 = -1 + var_x155; - const double var_x157 = 1 / var_x156; - const double var_x159 = exp(-7 - var_x154); - const double var_x160 = 1 + var_x159; - const double var_x161 = 28 + var_chaste_interface__membrane__V; - const double var_x162 = 1 / var_x160; - - partialF = -0.029999999999999999 * var_x162 - 0.0037499999999999999 * var_x157 * var_x161; - } - else - { - const double y_save = rY[6]; - rY[6] += delta; - const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[6])/delta; - rY[6] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; - // Units: dimensionless; Initial value: 0.02012114 - - - // Mathematics - const double var_T_type_Ca_channel_d_gate__alpha_d_T = 1068 * exp(0.87666666666666671 + 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second - const double var_T_type_Ca_channel_d_gate__beta_d_T = 1068 * exp(-0.87666666666666671 - 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second - const double var_T_type_Ca_channel_d_gate__d_T_infinity = 1 / (1 + exp(-4.3833333333333337 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless - const double var_T_type_Ca_channel_d_gate__tau_d_T = 1 / (var_T_type_Ca_channel_d_gate__alpha_d_T + var_T_type_Ca_channel_d_gate__beta_d_T); // second - const double var_T_type_Ca_channel_d_gate__d_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_d_gate__d_T + var_T_type_Ca_channel_d_gate__d_T_infinity) / var_T_type_Ca_channel_d_gate__tau_d_T; // 1 / second - const double d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T = 0.001 * var_T_type_Ca_channel_d_gate__d_T_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - - - const double var_x165 = 0.033333333333333333 * var_chaste_interface__membrane__V; - const double var_x166 = exp(0.87666666666666671 + var_x165); - const double var_x167 = exp(-0.87666666666666671 - var_x165); - - partialF = -1.0680000000000001 * var_x166 - 1.0680000000000001 * var_x167; - } - else - { - const double y_save = rY[7]; - rY[7] += delta; - const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[7])/delta; - rY[7] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; - // Units: dimensionless; Initial value: 0.1945111 - - - // Mathematics - const double var_T_type_Ca_channel_f_gate__alpha_f_T = 15.300000000000001 * exp(-0.74069627851140463 - 0.012004801920768308 * var_chaste_interface__membrane__V); // per_second - const double var_T_type_Ca_channel_f_gate__beta_f_T = 15 * exp(4.0117035110533159 + 0.065019505851755519 * var_chaste_interface__membrane__V); // per_second - const double var_T_type_Ca_channel_f_gate__f_T_infinity = 1 / (1 + exp(11.017857142857144 + 0.17857142857142858 * var_chaste_interface__membrane__V)); // dimensionless - const double var_T_type_Ca_channel_f_gate__tau_f_T = 1 / (var_T_type_Ca_channel_f_gate__alpha_f_T + var_T_type_Ca_channel_f_gate__beta_f_T); // second - const double var_T_type_Ca_channel_f_gate__f_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_f_gate__f_T + var_T_type_Ca_channel_f_gate__f_T_infinity) / var_T_type_Ca_channel_f_gate__tau_f_T; // 1 / second - const double d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T = 0.001 * var_T_type_Ca_channel_f_gate__f_T_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - - - const double var_x170 = exp(4.0117035110533159 + 0.065019505851755519 * var_chaste_interface__membrane__V); - const double var_x171 = exp(-0.74069627851140463 - 0.012004801920768308 * var_chaste_interface__membrane__V); - - partialF = -0.015300000000000001 * var_x171 - 0.014999999999999999 * var_x170; - } - else - { - const double y_save = rY[8]; - rY[8] += delta; - const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[8])/delta; - rY[8] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; - // Units: dimensionless; Initial value: 0.02302278 - - - // Mathematics - const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity = 1 / (1 + exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V)); // dimensionless - const double var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a = 1 / (17 * exp(0.039800000000000002 * var_chaste_interface__membrane__V) + 2.1099999999999999 * exp(-0.050999999999999997 * var_chaste_interface__membrane__V)); // second - const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv = (-var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a + var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity) / var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a; // 1 / second - const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a = 0.001 * var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - - - const double var_x172 = exp(0.039800000000000002 * var_chaste_interface__membrane__V); - const double var_x173 = exp(-0.050999999999999997 * var_chaste_interface__membrane__V); - - partialF = -0.0021099999999999999 * var_x173 - 0.017000000000000001 * var_x172; - } - else - { - const double y_save = rY[9]; - rY[9] += delta; - const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[9])/delta; - rY[9] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; - // Units: dimensionless; Initial value: 0.3777728 - - - // Mathematics - const double var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i = 100 * exp(-0.0183 * var_chaste_interface__membrane__V); // per_second - const double var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i = 656 * exp(0.0094199999999999996 * var_chaste_interface__membrane__V); // per_second - const double var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv = (1 - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i) * var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i * var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i; // 1 / second - const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i = 0.001 * var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - - - const double var_x176 = exp(-0.0183 * var_chaste_interface__membrane__V); - const double var_x177 = exp(0.0094199999999999996 * var_chaste_interface__membrane__V); - - partialF = -0.65600000000000003 * var_x177 - 0.10000000000000001 * var_x176; - } - else - { - const double y_save = rY[10]; - rY[10] += delta; - const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[10])/delta; - rY[10] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; - // Units: dimensionless; Initial value: 0.09227776 - - - // Mathematics - const double var_hyperpolarisation_activated_current_y_gate__tau_y = 1 / (1.6483000000000001 * exp(-2.2219482120838472 - 0.041101520756267988 * var_chaste_interface__membrane__V) + 14.01055 / (0.69999999999999996 + exp(-10.909090909090908 - 0.18181818181818182 * var_chaste_interface__membrane__V))); // second - const double var_hyperpolarisation_activated_current_y_gate__y_infinity = 1 / (1 + exp(8.0222222222222221 + 0.1111111111111111 * var_chaste_interface__membrane__V)); // dimensionless - const double var_hyperpolarisation_activated_current_y_gate__y_orig_deriv = (-var_chaste_interface__hyperpolarisation_activated_current_y_gate__y + var_hyperpolarisation_activated_current_y_gate__y_infinity) / var_hyperpolarisation_activated_current_y_gate__tau_y; // 1 / second - const double d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y = 0.001 * var_hyperpolarisation_activated_current_y_gate__y_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - - - const double var_x180 = exp(-2.2219482120838472 - 0.041101520756267988 * var_chaste_interface__membrane__V); - const double var_x181 = exp(-10.909090909090908 - 0.18181818181818182 * var_chaste_interface__membrane__V); - const double var_x182 = 0.69999999999999996 + var_x181; - const double var_x183 = 1 / var_x182; - - partialF = -0.0016483000000000001 * var_x180 - 0.01401055 * var_x183; - } - else - { - const double y_save = rY[11]; - rY[11] += delta; - const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[11])/delta; - rY[11] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.250113 - double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; - // Units: dimensionless; Initial value: 0.001386897 - double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; - // Units: dimensionless; Initial value: 0.002065463 - double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; - // Units: dimensionless; Initial value: 0.09227776 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; - // Units: millimolar; Initial value: 2.00474 - double var_chaste_interface__cleft_space_equations__K_c = rY[20]; - // Units: millimolar; Initial value: 5.389014 - - - // Mathematics - const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre - const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre - const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS - const double var_membrane__F = 96485.341499999995; // coulomb_per_mole - const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA - const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt - const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA - const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA - const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless - const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless - const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA - const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA - const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar - const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar - const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA - const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA - const double var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv = (-var_hyperpolarisation_activated_current__i_f_Na - var_linear_background_current__i_B_Na - var_sodium_current__i_Na - 3 * var_sodium_calcium_pump__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.250113 - double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; - // Units: dimensionless; Initial value: 0.001386897 - double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; - // Units: dimensionless; Initial value: 0.002065463 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; - // Units: millimolar; Initial value: 2.00474 - double var_chaste_interface__cleft_space_equations__K_c = rY[20]; - // Units: millimolar; Initial value: 5.389014 - - - const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); - const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); - const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; - const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; - const double var_x14 = 1 / var_x13; - const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; - const double var_x16 = exp(-var_x15); - const double var_x17 = var_x10 * var_x16; - const double var_x18 = exp(var_x15); - const double var_x19 = var_x12 * var_x18; - const double var_x26 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); - const double var_x27 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; - const double var_x28 = pow(var_x27, (-2)); - const double var_x29 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); - const double var_x30 = 1 + 0.18315018315018314 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; - const double var_x31 = pow(var_x30, (-3)); - const double var_x33 = 0.037433890822745473 * var_chaste_interface__membrane__V; - const double var_x34 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; - const double var_x35 = var_x34 * var_chaste_interface__cleft_space_equations__Na_c; - const double var_x36 = exp(var_x33 - 1 * log(var_x35)); - const double var_x39 = exp(var_x33); - const double var_x40 = -1 + var_x39; - const double var_x41 = 1 / var_x40; - const double var_x42 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); - const double var_x43 = var_x41 * var_x42 * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; - const double var_x45 = var_x43 * var_chaste_interface__membrane__V; - const double var_x46 = var_x36 * var_x45; - const double var_x59 = (var_x19 - var_x17) / pow(var_x13, 2); - const double var_x78 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 2); - const double var_x79 = var_x78 * var_chaste_interface__cleft_space_equations__Ca_c; - const double var_x82 = var_x18 * var_x79; - const double var_x83 = 1 / (1.5 + var_x26); - const double var_x84 = var_x28 * var_x29 * var_x83; - const double var_x85 = var_x11 * var_x84 / pow(var_x30, 4); - const double var_x86 = var_x31 * var_x78 * var_x84; - const double var_x190 = 7.158914428402498e-11 * var_x59; - const double var_x191 = 7.1589144284024978e-7 * var_x14; - const double var_x192 = 23.020586507479816 * var_x46; - - partialF = 2.2637191644542304e-5 * var_x85 - 0.00012359906637920097 * var_x86 - 2.7242382709912566e-5 * var_x34 + var_x190 * var_x79 - var_x191 * var_x82 - var_x192 * var_x35; - } - else - { - const double y_save = rY[12]; - rY[12] += delta; - const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[12])/delta; - rY[12] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; - // Units: dimensionless; Initial value: 0.02302278 - double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; - // Units: dimensionless; Initial value: 0.3777728 - double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; - // Units: dimensionless; Initial value: 0.09227776 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; - // Units: millimolar; Initial value: 140.7347 - double var_chaste_interface__cleft_space_equations__K_c = rY[20]; - // Units: millimolar; Initial value: 5.389014 - - - // Mathematics - const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar - const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre - const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS - const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre - const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS - const double var_membrane__F = 96485.341499999995; // coulomb_per_mole - const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA - const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt - const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA - const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA - const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar - const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar - const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA - const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA - const double var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv = (-var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f_K - var_linear_background_current__i_B_K + 2 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; - // Units: dimensionless; Initial value: 0.02302278 - double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; - // Units: dimensionless; Initial value: 0.3777728 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; - // Units: millimolar; Initial value: 140.7347 - - - const double var_x21 = mParameters[2] * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; - const double var_x22 = var_x21 * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a; - const double var_x71 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i; - const double var_x196 = 0.46050826103455306 * var_x22; - - partialF = -1.1816383500424576e-5 * var_x71 - var_x196 * var_x71; - } - else - { - const double y_save = rY[13]; - rY[13] += delta; - const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[13])/delta; - rY[13] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; - // Units: dimensionless; Initial value: 0.1411678 - - - // Mathematics - const double var_intracellular_concentrations_and_buffer_equations__phi_C = -307 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second - const double var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_C; // 1 / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - - - const double var_x198 = -129 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - - partialF = -0.307 + var_x198; - } - else - { - const double y_save = rY[14]; - rY[14] += delta; - const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[14])/delta; - rY[14] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; - // Units: dimensionless; Initial value: 0.07331396 - - - // Mathematics - const double var_intracellular_concentrations_and_buffer_equations__phi_TC = -252 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 50500 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second - const double var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TC; // 1 / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - - - - partialF = -0.252 - 50.5 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - } - else - { - const double y_save = rY[15]; - rY[15] += delta; - const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[15])/delta; - rY[15] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; - // Units: dimensionless; Initial value: 0.7618549 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; - // Units: dimensionless; Initial value: 0.2097049 - - - // Mathematics - const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -4.25 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second - const double var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // 1 / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - - - const double var_x198 = -129 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - - partialF = -0.0042500000000000003 + var_x198; - } - else - { - const double y_save = rY[16]; - rY[16] += delta; - const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[16])/delta; - rY[16] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; - // Units: dimensionless; Initial value: 0.7618549 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; - // Units: dimensionless; Initial value: 0.2097049 - - - // Mathematics - const double var_intracellular_concentrations_and_buffer_equations__Mg_i = 2.5; // millimolar - const double var_intracellular_concentrations_and_buffer_equations__phi_TMgM = -429 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop + 1290 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_intracellular_concentrations_and_buffer_equations__Mg_i; // per_second - const double var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgM; // 1 / second - const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - - - - partialF = -3.6539999999999999; - } - else - { - const double y_save = rY[17]; - rY[17] += delta; - const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[17])/delta; - rY[17] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.250113 - double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; - // Units: dimensionless; Initial value: 0.001386897 - double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; - // Units: dimensionless; Initial value: 0.002065463 - double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; - // Units: dimensionless; Initial value: 0.09227776 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; - // Units: millimolar; Initial value: 2.00474 - double var_chaste_interface__cleft_space_equations__K_c = rY[20]; - // Units: millimolar; Initial value: 5.389014 - - - // Mathematics - const double var_cleft_space_equations__Na_b = 140; // millimolar - const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre - const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre - const double var_cleft_space_equations__tau_p = 0.01; // second - const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS - const double var_membrane__F = 96485.341499999995; // coulomb_per_mole - const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA - const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt - const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA - const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA - const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless - const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless - const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA - const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA - const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar - const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar - const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA - const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA - const double var_cleft_space_equations__Na_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Na_c + var_cleft_space_equations__Na_b) / var_cleft_space_equations__tau_p + (3 * var_sodium_calcium_pump__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_hyperpolarisation_activated_current__i_f_Na + var_linear_background_current__i_B_Na + var_sodium_current__i_Na) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_cleft_space_equations__Na_c = 0.001 * var_cleft_space_equations__Na_c_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_cleft_space_equations__Na_c; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.250113 - double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; - // Units: dimensionless; Initial value: 0.001386897 - double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; - // Units: dimensionless; Initial value: 0.002065463 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; - // Units: millimolar; Initial value: 2.00474 - - - const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); - const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); - const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; - const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; - const double var_x14 = 1 / var_x13; - const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; - const double var_x16 = exp(-var_x15); - const double var_x17 = var_x10 * var_x16; - const double var_x18 = exp(var_x15); - const double var_x19 = var_x12 * var_x18; - const double var_x33 = 0.037433890822745473 * var_chaste_interface__membrane__V; - const double var_x34 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; - const double var_x35 = var_x34 * var_chaste_interface__cleft_space_equations__Na_c; - const double var_x36 = exp(var_x33 - 1 * log(var_x35)); - const double var_x37 = -1 + var_x36; - const double var_x39 = exp(var_x33); - const double var_x40 = -1 + var_x39; - const double var_x41 = 1 / var_x40; - const double var_x42 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); - const double var_x43 = var_x41 * var_x42 * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; - const double var_x45 = var_x43 * var_chaste_interface__membrane__V; - const double var_x46 = var_x36 * var_x45; - const double var_x59 = (var_x19 - var_x17) / pow(var_x13, 2); - const double var_x89 = 1 / var_chaste_interface__cleft_space_equations__Na_c; - const double var_x90 = pow(var_chaste_interface__cleft_space_equations__Na_c, 2) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - const double var_x91 = var_x16 * var_x90; - const double var_x193 = var_x37 * var_x45; - const double var_x204 = 2.447717065593501e-6 * var_x14; - const double var_x205 = 2.4477170655935014e-10 * var_x59; - const double var_x206 = 78.710093573368496 * var_x46; - - partialF = -0.099999999999999992 - var_x206 + 78.710093573368496 * var_x193 - 9.3144911471392233e-5 * var_x89 - var_x204 * var_x91 - var_x205 * var_x90; - } - else - { - const double y_save = rY[18]; - rY[18] += delta; - const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[18])/delta; - rY[18] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; - // Units: dimensionless; Initial value: 0.002572773 - double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; - // Units: dimensionless; Initial value: 0.98651 - double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; - // Units: dimensionless; Initial value: 0.02012114 - double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; - // Units: dimensionless; Initial value: 0.1945111 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; - // Units: millimolar; Initial value: 2.00474 - - - // Mathematics - const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt - const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt - const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS - const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA - const double var_cleft_space_equations__Ca_b = 2; // millimolar - const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre - const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre - const double var_cleft_space_equations__tau_p = 0.01; // second - const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA - const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS - const double var_membrane__F = 96485.341499999995; // coulomb_per_mole - const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA - const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA - const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt - const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA - const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA - const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless - const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless - const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA - const double var_cleft_space_equations__Ca_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Ca_c + var_cleft_space_equations__Ca_b) / var_cleft_space_equations__tau_p + 0.5 * (-2 * var_sodium_calcium_pump__i_NaCa + var_L_type_Ca_channel__i_Ca_L + var_T_type_Ca_channel__i_Ca_T + var_calcium_pump_current__i_Ca_P + var_linear_background_current__i_B_Ca) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_cleft_space_equations__Ca_c = 0.001 * var_cleft_space_equations__Ca_c_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_cleft_space_equations__Ca_c; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; - // Units: millimolar; Initial value: 2.00474 - - - const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); - const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); - const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; - const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; - const double var_x14 = 1 / var_x13; - const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; - const double var_x16 = exp(-var_x15); - const double var_x17 = var_x10 * var_x16; - const double var_x18 = exp(var_x15); - const double var_x19 = var_x12 * var_x18; - const double var_x59 = (var_x19 - var_x17) / pow(var_x13, 2); - const double var_x92 = 1 / var_chaste_interface__cleft_space_equations__Ca_c; - const double var_x93 = var_x11 * var_x18; - const double var_x209 = 2.7196856284372237e-11 * var_x59; - const double var_x210 = 2.7196856284372236e-7 * var_x14; - - partialF = -0.099999999999999992 - 5.2976168399354324e-6 * var_x92 + var_x11 * var_x209 - var_x210 * var_x93; - } - else - { - const double y_save = rY[19]; - rY[19] += delta; - const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[19])/delta; - rY[19] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; - // Units: dimensionless; Initial value: 0.02302278 - double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; - // Units: dimensionless; Initial value: 0.3777728 - double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; - // Units: dimensionless; Initial value: 0.09227776 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; - // Units: millimolar; Initial value: 140.7347 - double var_chaste_interface__cleft_space_equations__K_c = rY[20]; - // Units: millimolar; Initial value: 5.389014 - - - // Mathematics - const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar - const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre - const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre - const double var_cleft_space_equations__tau_p = 0.01; // second - const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS - const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS - const double var_membrane__F = 96485.341499999995; // coulomb_per_mole - const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA - const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt - const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA - const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA - const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar - const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar - const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA - const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA - const double var_cleft_space_equations__K_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__K_c + var_cleft_space_equations__K_b) / var_cleft_space_equations__tau_p + (-2 * var_sodium_potassium_pump__i_NaK + var_delayed_rectifying_potassium_current__i_K + var_hyperpolarisation_activated_current__i_f_K + var_linear_background_current__i_B_K) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_cleft_space_equations__K_c = 0.001 * var_cleft_space_equations__K_c_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_cleft_space_equations__K_c; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; - // Units: dimensionless; Initial value: 0.02302278 - double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; - // Units: dimensionless; Initial value: 0.3777728 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__cleft_space_equations__K_c = rY[20]; - // Units: millimolar; Initial value: 5.389014 - - - const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); - const double var_x21 = mParameters[2] * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; - const double var_x22 = var_x21 * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a; - const double var_x26 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); - const double var_x27 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; - const double var_x28 = pow(var_x27, (-2)); - const double var_x29 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); - const double var_x30 = 1 + 0.18315018315018314 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; - const double var_x31 = pow(var_x30, (-3)); - const double var_x83 = 1 / (1.5 + var_x26); - const double var_x94 = 1 / var_chaste_interface__cleft_space_equations__K_c; - const double var_x95 = var_x11 * var_x31 * var_x83; - const double var_x97 = var_x29 / pow(var_x27, 3); - const double var_x98 = var_x28 * var_chaste_interface__cleft_space_equations__K_c; - const double var_x213 = 1.5745319219196114 * var_x22; - const double var_x214 = 0.00018782211067427598 * var_x95; - - partialF = -0.099999999999999992 - 4.040160535071638e-5 * var_x94 + var_x214 * var_x97 - var_x213 * var_x94 - var_x214 * var_x98; - } - else - { - const double y_save = rY[20]; - rY[20] += delta; - const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[20])/delta; - rY[20] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; - // Units: millimolar; Initial value: 16.95311 - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; - // Units: millimolar; Initial value: 16.85024 - - - // Mathematics - const double var_SR_Ca_uptake_and_release__alpha_up = 0.080000000000000002; // nanoA - const double var_SR_Ca_uptake_and_release__beta_up = 0.071999999999999995; // nanoA - const double var_SR_Ca_uptake_and_release__k_SRCa = 22; // millimolar - const double var_SR_Ca_uptake_and_release__k_cyca = 5.0000000000000002e-5; // millimolar - const double var_SR_Ca_uptake_and_release__k_xcs = 0.90000000000000002; // dimensionless - const double var_SR_Ca_uptake_and_release__K1 = var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs / var_SR_Ca_uptake_and_release__k_SRCa; // dimensionless - const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre - const double var_SR_Ca_uptake_and_release__K2 = var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 + var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs + var_SR_Ca_uptake_and_release__k_cyca + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // millimolar - const double var_SR_Ca_uptake_and_release__i_up = (var_SR_Ca_uptake_and_release__alpha_up * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 * var_SR_Ca_uptake_and_release__beta_up) / var_SR_Ca_uptake_and_release__K2; // nanoA - const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre - const double var_SR_Ca_uptake_and_release__V_up = 0.01166 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre - const double var_membrane__F = 96485.341499999995; // coulomb_per_mole - const double var_SR_Ca_uptake_and_release__i_tr = 31.162355874104083 * (-var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel + var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) * var_SR_Ca_uptake_and_release__V_up * var_membrane__F; // nanoA - const double var_SR_Ca_uptake_and_release__Ca_up_orig_deriv = 0.5 * (-var_SR_Ca_uptake_and_release__i_tr + var_SR_Ca_uptake_and_release__i_up) / (var_SR_Ca_uptake_and_release__V_up * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up = 0.001 * var_SR_Ca_uptake_and_release__Ca_up_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; - // Units: millimolar; Initial value: 16.95311 - - - const double var_x100 = 9.5000000000000005e-5 + 2.0454545454545457e-6 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - const double var_x101 = 1 / var_x100; - const double var_x102 = (0.080000000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - 1.4727272727272728e-7 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) / pow(var_x100, 2); - - partialF = -0.015581177937052042 - 4.0251665946738841e-8 * var_x101 - 5.5905091592692838e-7 * var_x102; - } - else - { - const double y_save = rY[21]; - rY[21] += delta; - const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[21])/delta; - rY[21] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; - // Units: millimolar; Initial value: 16.95311 - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; - // Units: millimolar; Initial value: 16.85024 - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; - // Units: dimensionless; Initial value: 0.9528726 - double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; - // Units: dimensionless; Initial value: 0.0007594214 - - - // Mathematics - const double var_SR_Ca_uptake_and_release__alpha_rel = 0.5; // nanoA_per_millimolar - const double var_SR_Ca_uptake_and_release__i_rel = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel * var_SR_Ca_uptake_and_release__alpha_rel / pow((0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2), 2); // nanoA - const double var_SR_Ca_uptake_and_release__phi_Calse = -641 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse + 770 * (1 - var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; // per_second - const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre - const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre - const double var_SR_Ca_uptake_and_release__V_rel = 0.0012960000000000001 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre - const double var_SR_Ca_uptake_and_release__V_up = 0.01166 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre - const double var_membrane__F = 96485.341499999995; // coulomb_per_mole - const double var_SR_Ca_uptake_and_release__i_tr = 31.162355874104083 * (-var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel + var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) * var_SR_Ca_uptake_and_release__V_up * var_membrane__F; // nanoA - const double var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv = -11.48 * var_SR_Ca_uptake_and_release__phi_Calse + 0.5 * (-var_SR_Ca_uptake_and_release__i_rel + var_SR_Ca_uptake_and_release__i_tr) / (var_SR_Ca_uptake_and_release__V_rel * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel = 0.001 * var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; - // Units: dimensionless; Initial value: 0.9528726 - double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; - // Units: dimensionless; Initial value: 0.0007594214 - - - const double var_x109 = 0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2; - const double var_x110 = pow(var_x109, (-2)); - const double var_x111 = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2); - const double var_x112 = var_x110 * var_x111; - - partialF = -8.979782511378108 + 8.8396000000000008 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse - 1.2294902345128229 * var_x112; - } - else - { - const double y_save = rY[22]; - rY[22] += delta; - const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[22])/delta; - rY[22] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; - // Units: millimolar; Initial value: 16.85024 - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; - // Units: dimensionless; Initial value: 0.9528726 - - - // Mathematics - const double var_SR_Ca_uptake_and_release__phi_Calse = -641 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse + 770 * (1 - var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; // per_second - const double var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv = var_SR_Ca_uptake_and_release__phi_Calse; // 1 / second - const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse = 0.001 * var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; - // Units: millimolar; Initial value: 16.85024 - - - - partialF = -0.64100000000000001 - 0.77000000000000002 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; - } - else - { - const double y_save = rY[23]; - rY[23] += delta; - const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[23])/delta; - rY[23] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__SR_Ca_uptake_and_release__F1 = rY[24]; - // Units: dimensionless; Initial value: 0.1133251 - double var_chaste_interface__SR_Ca_uptake_and_release__F3 = rY[26]; - // Units: dimensionless; Initial value: 0.8859153 - - - // Mathematics - const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar - const double var_SR_Ca_uptake_and_release__r_act = 240 * exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second - const double var_SR_Ca_uptake_and_release__F1_orig_deriv = 0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 - var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act; // 1 / second - const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1 = 0.001 * var_SR_Ca_uptake_and_release__F1_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - - - const double var_x216 = exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V); - const double var_x218 = 0.0040000000000000001 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - const double var_x219 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4); - const double var_x221 = pow(var_x218, (-4)); - const double var_x224 = 0.23999999999999999 * var_x216; - const double var_x225 = 0.23999999999999999 * var_x219 * var_x221; - const double var_x226 = -var_x225; - - partialF = var_x226 - var_x224; - } - else - { - const double y_save = rY[24]; - rY[24] += delta; - const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[24])/delta; - rY[24] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__SR_Ca_uptake_and_release__F1 = rY[24]; - // Units: dimensionless; Initial value: 0.1133251 - double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; - // Units: dimensionless; Initial value: 0.0007594214 - - - // Mathematics - const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar - const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second - const double var_SR_Ca_uptake_and_release__r_act = 240 * exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second - const double var_SR_Ca_uptake_and_release__F2_orig_deriv = var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act - var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second - const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2 = 0.001 * var_SR_Ca_uptake_and_release__F2_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - - - const double var_x218 = 0.0040000000000000001 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; - const double var_x219 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4); - const double var_x221 = pow(var_x218, (-4)); - const double var_x225 = 0.23999999999999999 * var_x219 * var_x221; - const double var_x226 = -var_x225; - - partialF = -0.040000000000000001 + var_x226; - } - else - { - const double y_save = rY[25]; - rY[25] += delta; - const double temp = EvaluateYDerivative25(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[25])/delta; - rY[25] = y_save; - } - return partialF; - } - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; - // Units: millimolar; Initial value: 0.0003787018 - double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; - // Units: dimensionless; Initial value: 0.0007594214 - double var_chaste_interface__SR_Ca_uptake_and_release__F3 = rY[26]; - // Units: dimensionless; Initial value: 0.8859153 - - - // Mathematics - const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar - const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second - const double var_SR_Ca_uptake_and_release__F3_orig_deriv = -0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 + var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second - const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3 = 0.001 * var_SR_Ca_uptake_and_release__F3_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3; - } - - double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - - - - partialF = -0.00095999999999999992; - } - else - { - const double y_save = rY[26]; - rY[26] += delta; - const double temp = EvaluateYDerivative26(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[26])/delta; - rY[26] = y_save; - } - return partialF; - } - - std::vector Dynamicdemir_model_1994FromCellMLGRL1::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) - { - // Inputs: - // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -49.54105 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.250113 - double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; - // Units: dimensionless; Initial value: 0.001386897 - double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; - // Units: dimensionless; Initial value: 0.002065463 - double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; - // Units: dimensionless; Initial value: 0.002572773 - double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; - // Units: dimensionless; Initial value: 0.98651 - double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; - // Units: dimensionless; Initial value: 0.02302278 - double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; - // Units: dimensionless; Initial value: 0.3777728 - double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; - // Units: dimensionless; Initial value: 0.09227776 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; - // Units: millimolar; Initial value: 9.701621 - double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; - // Units: millimolar; Initial value: 140.7347 - double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; - // Units: millimolar; Initial value: 139.9988 - double var_chaste_interface__cleft_space_equations__K_c = rY[20]; - // Units: millimolar; Initial value: 5.389014 - - // Mathematics - const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt - const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar - const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS - const double var_membrane__F = 96485.341499999995; // coulomb_per_mole - const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA - const double var_L_type_Ca_channel__i_Ca_L_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / mParameters[1]; // uA_per_cm2 - const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA - const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA - const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA - const double var_hyperpolarisation_activated_current__i_f_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_hyperpolarisation_activated_current__i_f / mParameters[1]; // uA_per_cm2 - const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt - const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA - const double var_delayed_rectifying_potassium_current__i_K_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifying_potassium_current__i_K / mParameters[1]; // uA_per_cm2 - const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt - const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA - const double var_sodium_current__i_Na_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / mParameters[1]; // uA_per_cm2 - - std::vector dqs(7); - dqs[0] = var_L_type_Ca_channel__i_Ca_L_converted; - dqs[1] = var_delayed_rectifying_potassium_current__i_K_converted; - dqs[2] = var_sodium_current__i_Na_converted; - dqs[3] = var_hyperpolarisation_activated_current__i_f_converted; - dqs[4] = var_hyperpolarisation_activated_current__i_f_K; - dqs[5] = var_hyperpolarisation_activated_current__i_f_Na; - dqs[6] = var_chaste_interface__environment__time_converted; - return dqs; - } - -template<> -void OdeSystemInformation::Initialise(void) -{ - this->mSystemName = "demir_model_1994"; - this->mFreeVariableName = "time"; - this->mFreeVariableUnits = "millisecond"; - - // rY[0]: - this->mVariableNames.push_back("membrane_voltage"); - this->mVariableUnits.push_back("millivolt"); - this->mInitialConditions.push_back(-49.54105); - - // rY[1]: - this->mVariableNames.push_back("cytosolic_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.0003787018); - - // rY[2]: - this->mVariableNames.push_back("sodium_current_m_gate__m"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.250113); - - // rY[3]: - this->mVariableNames.push_back("sodium_current_h_gate__h1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.001386897); - - // rY[4]: - this->mVariableNames.push_back("sodium_current_h_gate__h2"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.002065463); - - // rY[5]: - this->mVariableNames.push_back("L_type_Ca_channel_d_gate__d_L"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.002572773); - - // rY[6]: - this->mVariableNames.push_back("L_type_Ca_channel_f_gate__f_L"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.98651); - - // rY[7]: - this->mVariableNames.push_back("T_type_Ca_channel_d_gate__d_T"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.02012114); - - // rY[8]: - this->mVariableNames.push_back("T_type_Ca_channel_f_gate__f_T"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.1945111); - - // rY[9]: - this->mVariableNames.push_back("delayed_rectifying_potassium_current_P_a_gate__P_a"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.02302278); - - // rY[10]: - this->mVariableNames.push_back("delayed_rectifying_potassium_current_P_i_gate__P_i"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.3777728); - - // rY[11]: - this->mVariableNames.push_back("hyperpolarisation_activated_current_y_gate__y"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.09227776); - - // rY[12]: - this->mVariableNames.push_back("cytosolic_sodium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(9.701621); - - // rY[13]: - this->mVariableNames.push_back("cytosolic_potassium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(140.7347); - - // rY[14]: - this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Ca_Calmod"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.1411678); - - // rY[15]: - this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Ca_Trop"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.07331396); - - // rY[16]: - this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.7618549); - - // rY[17]: - this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.2097049); - - // rY[18]: - this->mVariableNames.push_back("extracellular_sodium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(139.9988); - - // rY[19]: - this->mVariableNames.push_back("extracellular_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(2.00474); - - // rY[20]: - this->mVariableNames.push_back("extracellular_potassium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(5.389014); - - // rY[21]: - this->mVariableNames.push_back("SR_Ca_uptake_and_release__Ca_up"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(16.95311); - - // rY[22]: - this->mVariableNames.push_back("SR_Ca_uptake_and_release__Ca_rel"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(16.85024); - - // rY[23]: - this->mVariableNames.push_back("SR_Ca_uptake_and_release__Ca_Calse"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9528726); - - // rY[24]: - this->mVariableNames.push_back("SR_Ca_uptake_and_release__F1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.1133251); - - // rY[25]: - this->mVariableNames.push_back("SR_Ca_uptake_and_release__F2"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0007594214); - - // rY[26]: - this->mVariableNames.push_back("SR_Ca_uptake_and_release__F3"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.8859153); - - // mParameters[0]: - this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); - this->mParameterUnits.push_back("microS"); - - // mParameters[1]: - this->mParameterNames.push_back("membrane_capacitance"); - this->mParameterUnits.push_back("microF"); - - // mParameters[2]: - this->mParameterNames.push_back("membrane_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("microS"); - - // mParameters[3]: - this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); - this->mParameterUnits.push_back("mul_per_second"); - - // mParameters[4]: - this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component_conductance"); - this->mParameterUnits.push_back("microS"); - - // mParameters[5]: - this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component_conductance"); - this->mParameterUnits.push_back("microS"); - - // Derived Quantity index [0]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [1]: - this->mDerivedQuantityNames.push_back("membrane_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [2]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [3]: - this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [4]: - this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component"); - this->mDerivedQuantityUnits.push_back("nanoA"); - - // Derived Quantity index [5]: - this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component"); - this->mDerivedQuantityUnits.push_back("nanoA"); - - // Derived Quantity index [6]: - this->mDerivedQuantityNames.push_back("time"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - this->mInitialised = true; -} - -// Serialization for Boost >= 1.36 -#include "SerializationExportWrapperForCpp.hpp" -CHASTE_CLASS_EXPORT(Dynamicdemir_model_1994FromCellMLGRL1) -extern "C" -{ - AbstractCardiacCellInterface* MakeCardiacCell( - boost::shared_ptr pSolver, - boost::shared_ptr pStimulus) - { - return new Dynamicdemir_model_1994FromCellMLGRL1(pSolver, pStimulus); - } - -} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp similarity index 96% rename from chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp index aaa4c931..1b14389f 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp @@ -331,15 +331,15 @@ // Units: millivolt; Initial value: -75.0 - const double var_x3 = (var_chaste_interface__membrane__V >= -50.000000999999997) && (var_chaste_interface__membrane__V <= -49.999999000000003); - const double var_x4 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x5 = -5 + var_x4; - const double var_x6 = exp(var_x5); + const double var_x3 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x4 = 5 + var_x3; + const double var_x5 = (var_x4 >= -9.9999999999999995e-8) && (var_x4 <= 9.9999999999999995e-8); + const double var_x6 = exp(-var_x4); const double var_x7 = -1 + var_x6; const double var_x8 = 1 / var_x7; const double var_x9 = exp(-4.166666666666667 - 0.055555555555555552 * var_chaste_interface__membrane__V); - partialF = -((var_x3) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (var_x5 * var_x8)) - 4 * var_x9; + partialF = -((var_x5) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (-1 * var_x4 * var_x8)) - 4 * var_x9; } else { @@ -423,15 +423,15 @@ // Units: millivolt; Initial value: -75.0 - const double var_x4 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x13 = (var_chaste_interface__membrane__V >= -65.000000999999997) && (var_chaste_interface__membrane__V <= -64.999999000000003); - const double var_x14 = -6.5 + var_x4; - const double var_x15 = exp(var_x14); + const double var_x3 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x13 = 6.5 + var_x3; + const double var_x14 = (var_x13 >= -9.9999999999999995e-8) && (var_x13 <= 9.9999999999999995e-8); + const double var_x15 = exp(-var_x13); const double var_x16 = -1 + var_x15; const double var_x17 = 1 / var_x16; const double var_x18 = exp(0.9375 + 0.012500000000000001 * var_chaste_interface__membrane__V); - partialF = -((var_x13) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (0.099999999999999992 * var_x14 * var_x17)) - 0.125 * var_x18; + partialF = -((var_x14) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-0.099999999999999992 * var_x13 * var_x17)) - 0.125 * var_x18; } else { diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977--sympy_1_11.cpp similarity index 92% rename from chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977--sympy_1_11.cpp index 33860204..762528c5 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977--sympy_1_11.cpp @@ -165,7 +165,7 @@ class Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 4 * (-1 + exp(3.3999999999999999 + 0.040000000000000001 * var_chaste_interface__membrane__V)) / (exp(2.1200000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V) + exp(4.2400000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V)) + (((var_chaste_interface__membrane__V >= -23.000002500000001) && (var_chaste_interface__membrane__V <= -22.999997499999999)) ? (7.3000000000000007 + 0.10000000000000001 * var_chaste_interface__membrane__V) : (5 * (-0.92000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-0.92000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V)))); + return 4 * (-1 + exp(3.3999999999999999 + 0.040000000000000001 * var_chaste_interface__membrane__V)) / (exp(2.1200000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V) + exp(4.2400000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V)) + (((0.92000000000000004 + 0.040000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (0.92000000000000004 + 0.040000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (7.3000000000000007 + 0.10000000000000001 * var_chaste_interface__membrane__V) : (-5 * (0.92000000000000004 + 0.040000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-0.92000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V)))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -264,7 +264,7 @@ class Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables : public Abstra for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return (((var_chaste_interface__membrane__V >= -47.000000999999997) && (var_chaste_interface__membrane__V <= -46.999999000000003)) ? (33.5 + 0.5 * var_chaste_interface__membrane__V) : (10 * (-4.7000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-4.7000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + return (((4.7000000000000002 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (4.7000000000000002 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (33.5 + 0.5 * var_chaste_interface__membrane__V) : (-10 * (4.7000000000000002 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-4.7000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -735,22 +735,25 @@ std::shared_ptr Cell const double var_x2 = exp(2.1200000000000001 + var_x1); const double var_x3 = exp(4.2400000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V); const double var_x4 = var_x2 + var_x3; - const double var_x5 = exp(3.3999999999999999 + var_x1); - const double var_x6 = -0.16 * var_x5 / var_x4 - 4 * (-1 + var_x5) * (-0.040000000000000001 * var_x2 - 0.080000000000000002 * var_x3) / pow(var_x4, 2); - const double var_x7 = mParameters[0] * var_chaste_interface__slow_inward_current_f_gate__f; - const double var_x8 = var_x7 * var_chaste_interface__slow_inward_current_d_gate__d; - const double var_x9 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); - const double var_x10 = var_x9 * mParameters[2] * var_chaste_interface__sodium_current_j_gate__j; - const double var_x11 = exp(3.0800000000000001 + var_x1); - const double var_x12 = mParameters[6] / exp(1.4000000000000001 + var_x1); - const double var_x13 = var_x12 * (-1 + var_x11); - const double var_x14 = 0.040000000000000001 * var_chaste_interface__time_dependent_outward_current_x1_gate__x1; - const double var_x15 = -3.0000000000000001e-5 - var_x8 + var_x13 * var_x14 - var_x10 * var_chaste_interface__sodium_current_h_gate__h - var_x11 * var_x12 * var_x14; - const double var_x16 = -0.92000000000000004 - var_x1; - const double var_x17 = exp(var_x16); - const double var_x18 = -1 + var_x17; + const double var_x5 = 1 / var_x4; + const double var_x6 = exp(3.3999999999999999 + var_x1); + const double var_x7 = pow(var_x4, (-2)); + const double var_x8 = -1 + var_x6; + const double var_x9 = -0.040000000000000001 * var_x2 - 0.080000000000000002 * var_x3; + const double var_x10 = mParameters[0] * var_chaste_interface__slow_inward_current_f_gate__f; + const double var_x11 = var_x10 * var_chaste_interface__slow_inward_current_d_gate__d; + const double var_x12 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x13 = var_x12 * mParameters[2] * var_chaste_interface__sodium_current_j_gate__j; + const double var_x14 = exp(3.0800000000000001 + var_x1); + const double var_x15 = 1 / exp(1.4000000000000001 + var_x1); + const double var_x16 = var_x15 * mParameters[6]; + const double var_x17 = -1 + var_x14; + const double var_x18 = 3.0000000000000001e-5 + var_x11 + var_x13 * var_chaste_interface__sodium_current_h_gate__h + 0.040000000000000001 * var_x14 * var_x16 * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 - 0.040000000000000001 * var_x15 * var_x17 * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1; + const double var_x19 = 0.92000000000000004 + var_x1; + const double var_x20 = exp(-var_x19); + const double var_x21 = -1 + var_x20; - partialF = (((var_chaste_interface__membrane__V >= -23.000002500000001) && (var_chaste_interface__membrane__V <= -22.999997499999999)) ? (var_x0 * (var_x15 + (-0.10000000000000001 + var_x6) * mParameters[5])) : (var_x0 * (var_x15 + (var_x6 + 0.20000000000000001 / var_x18 - 0.20000000000000001 * var_x16 * var_x17 / pow(var_x18, 2)) * mParameters[5]))); + partialF = (((var_x19 >= -9.9999999999999995e-8) && (var_x19 <= 9.9999999999999995e-8)) ? (var_x0 * (-var_x18 - (0.10000000000000001 + 0.16 * var_x5 * var_x6 + 4 * var_x7 * var_x8 * var_x9) * mParameters[5])) : (var_x0 * (-var_x18 - (-0.20000000000000001 / var_x21 + 0.16 * var_x5 * var_x6 + 4 * var_x7 * var_x8 * var_x9 - 0.20000000000000001 * var_x19 * var_x20 / pow(var_x21, 2)) * mParameters[5]))); } else { @@ -797,11 +800,11 @@ std::shared_ptr Cell - const double var_x7 = mParameters[0] * var_chaste_interface__slow_inward_current_f_gate__f; - const double var_x8 = var_x7 * var_chaste_interface__slow_inward_current_d_gate__d; - const double var_x19 = var_x8 / var_chaste_interface__slow_inward_current__Cai; + const double var_x10 = mParameters[0] * var_chaste_interface__slow_inward_current_f_gate__f; + const double var_x11 = var_x10 * var_chaste_interface__slow_inward_current_d_gate__d; + const double var_x22 = var_x11 / var_chaste_interface__slow_inward_current__Cai; - partialF = -0.070000000000000007 - 0.13028700000000001 * var_x19; + partialF = -0.070000000000000007 - 0.13028700000000001 * var_x22; } else { @@ -853,16 +856,16 @@ std::shared_ptr Cell // LCOV_EXCL_STOP const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - const double var_x26 = _lt_0_row[12]; - const double var_x28 = (var_chaste_interface__membrane__V >= -47.000000999999997) && (var_chaste_interface__membrane__V <= -46.999999000000003); - const double var_x29 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x30 = -4.7000000000000002 + var_x29; - const double var_x31 = exp(var_x30); - const double var_x32 = -1 + var_x31; - const double var_x33 = 1 / var_x32; - const double var_x35 = -40 * var_x26; + const double var_x29 = _lt_0_row[12]; + const double var_x30 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x31 = 4.7000000000000002 + var_x30; + const double var_x32 = (var_x31 >= -9.9999999999999995e-8) && (var_x31 <= 9.9999999999999995e-8); + const double var_x33 = exp(-var_x31); + const double var_x34 = -1 + var_x33; + const double var_x35 = 1 / var_x34; + const double var_x37 = 40 * var_x29; - partialF = ((var_x28) ? (-33.5 + var_x35 - 0.5 * var_chaste_interface__membrane__V) : (var_x35 - 10 * var_x30 * var_x33)); + partialF = ((var_x32) ? (-33.5 - var_x37 - 0.5 * var_chaste_interface__membrane__V) : (-var_x37 + 10 * var_x31 * var_x35)); } else { @@ -902,15 +905,15 @@ std::shared_ptr Cell - const double var_x36 = 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V; - const double var_x37 = exp(-19.25 + var_x36); - const double var_x38 = 0.126 * var_x37; - const double var_x39 = exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V); - const double var_x40 = 1 + var_x39; - const double var_x41 = 1 / var_x40; - const double var_x42 = 1.7 * var_x41; + const double var_x38 = 0.25 * var_chaste_interface__membrane__V - 0.25 * mParameters[4]; + const double var_x39 = exp(-19.25 - var_x38); + const double var_x40 = 0.126 * var_x39; + const double var_x41 = exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V); + const double var_x42 = 1 + var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = var_x40 + 1.7 * var_x43; - partialF = -var_x38 - var_x42; + partialF = -var_x44; } else { @@ -950,19 +953,20 @@ std::shared_ptr Cell - const double var_x29 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x36 = 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V; - const double var_x49 = exp(-3.2000000000000002 + var_x29 + 0.10000000000000001 * mParameters[4]); - const double var_x50 = 1 + var_x49; - const double var_x51 = 1 / var_x50; - const double var_x52 = 0.29999999999999999 * var_x51; + const double var_x30 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x38 = 0.25 * var_chaste_interface__membrane__V - 0.25 * mParameters[4]; + const double var_x50 = exp(-3.2000000000000002 - var_x30 + 0.10000000000000001 * mParameters[4]); + const double var_x51 = 1 + var_x50; + const double var_x52 = 1 / var_x51; const double var_x53 = exp(-15.600000000000001 + 0.20000000000000001 * mParameters[4] - 0.20000000000000001 * var_chaste_interface__membrane__V); const double var_x54 = 1 + var_x53; - const double var_x55 = exp(-19.5 + var_x36); - const double var_x56 = var_x55 / var_x54; - const double var_x57 = 0.055 * var_x56; + const double var_x55 = 1 / var_x54; + const double var_x56 = exp(-19.5 - var_x38); + const double var_x57 = var_x55 * var_x56; + const double var_x58 = 0.055 * var_x57; + const double var_x59 = var_x58 + 0.29999999999999999 * var_x52; - partialF = -var_x52 - var_x57; + partialF = -var_x59; } else { @@ -1075,16 +1079,16 @@ std::shared_ptr Cell // LCOV_EXCL_STOP const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - const double var_x72 = exp(-6 - 0.20000000000000001 * var_chaste_interface__membrane__V); - const double var_x73 = 1 + var_x72; - const double var_x74 = _lt_0_row[10]; - const double var_x75 = var_x74 / var_x73; - const double var_x77 = exp(4.197901049475262 + 0.14992503748125938 * var_chaste_interface__membrane__V); + const double var_x73 = exp(4.197901049475262 + 0.14992503748125938 * var_chaste_interface__membrane__V); + const double var_x74 = 1 + var_x73; + const double var_x75 = _lt_0_row[8]; + const double var_x76 = var_x75 / var_x74; + const double var_x77 = exp(-6 - 0.20000000000000001 * var_chaste_interface__membrane__V); const double var_x78 = 1 + var_x77; - const double var_x79 = _lt_0_row[8]; - const double var_x80 = var_x79 / var_x78; + const double var_x79 = 1 / var_x78; + const double var_x80 = _lt_0_row[10]; - partialF = -0.012 * var_x80 - 0.0064999999999999997 * var_x75; + partialF = -0.012 * var_x76 - 0.0064999999999999997 * var_x79 * var_x80; } else { diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977--sympy_1_13.cpp new file mode 100644 index 00000000..c075da28 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977--sympy_1_13.cpp @@ -0,0 +1,1347 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: beeler_reuter_model_1977 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenFirstOrderOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "beeler_reuter_model_1977.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + +class Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<17; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= -9.9999999999999995e-8) && (0.92000000000000004 + 0.040000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (7.3000000000000007 + 0.10000000000000001 * var_chaste_interface__membrane__V) : (-5 * (0.92000000000000004 + 0.040000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-0.92000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V)))); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][2] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return 1 / (1 + exp(0.35997120230381568 - 0.071994240460763137 * var_chaste_interface__membrane__V)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][3] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return exp(0.050000000000000003 - 0.01 * var_chaste_interface__membrane__V); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][4] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return 1 / (1 + exp(2.2000000000000002 + 0.050000000000000003 * var_chaste_interface__membrane__V)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][5] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return exp(-0.74576271186440679 - 0.016949152542372881 * var_chaste_interface__membrane__V); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][6] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return 1 / (1 + exp(4.197901049475262 + 0.14992503748125938 * var_chaste_interface__membrane__V)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][7] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return exp(-0.224 - 0.0080000000000000002 * var_chaste_interface__membrane__V); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][8] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return 1 / (1 + exp(-6 - 0.20000000000000001 * var_chaste_interface__membrane__V)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][9] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return exp(-0.59999999999999998 - 0.02 * var_chaste_interface__membrane__V); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][10] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return (((4.7000000000000002 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (4.7000000000000002 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (33.5 + 0.5 * var_chaste_interface__membrane__V) : (-10 * (4.7000000000000002 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-4.7000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[11] < 2){ + double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[11] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[11] >= 2){ + EXCEPTION("Lookup table 11 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[17]; + + // Lookup tables + double (*_lookup_table_0)[17]; + int _lookup_table_0_num_misshit_piecewise[17] = {0}; + +}; + +std::shared_ptr Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::mpInstance; + + + boost::shared_ptr Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__stimulus_protocol__IstimAmplitude_converted = 50.000000000000007; // uA_per_cm2 + const double var_chaste_interface__stimulus_protocol__IstimPeriod = 1000; // ms + const double var_chaste_interface__stimulus_protocol__IstimPulseDuration = 1; // ms + const double var_chaste_interface__stimulus_protocol__IstimStart = 10; // ms + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__stimulus_protocol__IstimAmplitude_converted), + var_chaste_interface__stimulus_protocol__IstimPulseDuration, + var_chaste_interface__stimulus_protocol__IstimPeriod, + var_chaste_interface__stimulus_protocol__IstimStart + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::Cellbeeler_reuter_model_1977FromCellMLGRL1Opt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 8, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 0.00089999999999999998; // (var_slow_inward_current__g_s) [mS_per_mm2] + this->mParameters[1] = 0.01; // (var_membrane__C) [uF_per_mm2] + this->mParameters[2] = 0.040000000000000001; // (var_sodium_current__g_Na) [mS_per_mm2] + this->mParameters[3] = 0; // (var_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[4] = 0; // (var_sodium_current__shift_INa_inact) [mV] + this->mParameters[5] = 0.0035000000000000001; // (var_time_independent_outward_current__G_K1) [uA_per_mm2] + this->mParameters[6] = 0.0080000000000000002; // (var_time_dependent_outward_current__G_Kr) [uA_per_mm2] + this->mParameters[7] = 50; // (var_sodium_current__E_Na) [mV] + } + + Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::~Cellbeeler_reuter_model_1977FromCellMLGRL1Opt() + { + } + + AbstractLookupTableCollection* Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::GetLookupTableCollection() + { + return Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance(); + } + + void Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 8; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_slow_inward_current__i_s_converted = 100.00000000000001 * (-7.6990712032745758 + 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai) + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_cm2 + const double var_sodium_current__i_Na_converted = 100.00000000000001 * (3.0000000000000001e-5 + pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j) * (-mParameters[7] + var_chaste_interface__membrane__V); // uA_per_cm2 + const double var_time_dependent_outward_current__i_x1_converted = 100.00000000000001 * _lt_0_row[0] * (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1; // uA_per_cm2 + const double var_time_independent_outward_current__i_K1_converted = 100.00000000000001 * (_lt_0_row[2]) * mParameters[5]; // uA_per_cm2 + const double var_chaste_interface__i_ionic = var_slow_inward_current__i_s_converted + var_sodium_current__i_Na_converted + var_time_dependent_outward_current__i_x1_converted + var_time_independent_outward_current__i_K1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + std::vector& rY = rGetStateVariables(); + unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_slow_inward_current__i_s = (-7.6990712032745758 + 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai) + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 + d_dt_chaste_interface_var_membrane__V = (-var_slow_inward_current__i_s - 0.0099999999999999985 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) - (3.0000000000000001e-5 + pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j) * (-mParameters[7] + var_chaste_interface__membrane__V) - (_lt_0_row[2]) * mParameters[5] - _lt_0_row[0] * (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1) / mParameters[1]; // mV / ms + + double evalF = d_dt_chaste_interface_var_membrane__V; + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + std::vector& rY = rGetStateVariables(); + const double delta = 1e-8; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_slow_inward_current_d_gate__d = 0.095000000000000001 * _lt_0_row[3] * (1 - var_chaste_interface__slow_inward_current_d_gate__d) * _lt_0_row[4] - 0.070000000000000007 * _lt_0_row[5] * var_chaste_interface__slow_inward_current_d_gate__d * _lt_0_row[6]; // 1 / ms + const double d_dt_chaste_interface_var_slow_inward_current_f_gate__f = 0.012 * _lt_0_row[7] * (1 - var_chaste_interface__slow_inward_current_f_gate__f) * _lt_0_row[8] - 0.0064999999999999997 * _lt_0_row[9] * var_chaste_interface__slow_inward_current_f_gate__f * _lt_0_row[10]; // 1 / ms + const double var_slow_inward_current__i_s = (-7.6990712032745758 + 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai) + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 + const double d_dt_chaste_interface_var_slow_inward_current__Cai = 7.0000000000000007e-6 - 0.070000000000000007 * var_chaste_interface__slow_inward_current__Cai - 0.01 * var_slow_inward_current__i_s; // concentration_units / ms + const double var_sodium_current_h_gate__alpha_h = 0.126 * exp(-19.25 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V); // per_ms + const double var_sodium_current_h_gate__beta_h = 1.7 / (1 + exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V)); // per_ms + const double d_dt_chaste_interface_var_sodium_current_h_gate__h = (1 * var_sodium_current_h_gate__alpha_h + 1 * var_sodium_current_h_gate__beta_h) * (-var_chaste_interface__sodium_current_h_gate__h + 0.01 * mParameters[3] + (1 - 0.01 * mParameters[3]) * var_sodium_current_h_gate__alpha_h / (var_sodium_current_h_gate__alpha_h + var_sodium_current_h_gate__beta_h)); // 1 / ms + const double var_sodium_current_j_gate__alpha_j = 0.055 * exp(-19.5 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V) / (1 + exp(-15.600000000000001 + 0.20000000000000001 * mParameters[4] - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__beta_j = 0.29999999999999999 / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[4] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double d_dt_chaste_interface_var_sodium_current_j_gate__j = (1 * var_sodium_current_j_gate__alpha_j + 1 * var_sodium_current_j_gate__beta_j) * (-var_chaste_interface__sodium_current_j_gate__j + 0.01 * mParameters[3] + (1 - 0.01 * mParameters[3]) * var_sodium_current_j_gate__alpha_j / (var_sodium_current_j_gate__alpha_j + var_sodium_current_j_gate__beta_j)); // 1 / ms + const double d_dt_chaste_interface_var_sodium_current_m_gate__m = (1 - var_chaste_interface__sodium_current_m_gate__m) * _lt_0_row[11] - 40 * var_chaste_interface__sodium_current_m_gate__m * _lt_0_row[12]; // 1 / ms + const double d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1 = 0.00050000000000000001 * _lt_0_row[13] * (1 - var_chaste_interface__time_dependent_outward_current_x1_gate__x1) * _lt_0_row[14] - 0.0012999999999999999 * _lt_0_row[15] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 * _lt_0_row[16]; // 1 / ms + + mEvalF[1] = d_dt_chaste_interface_var_slow_inward_current__Cai; + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time, rY, delta); + mEvalF[2] = d_dt_chaste_interface_var_sodium_current_m_gate__m; + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time, rY, delta); + mEvalF[3] = d_dt_chaste_interface_var_sodium_current_h_gate__h; + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time, rY, delta); + mEvalF[4] = d_dt_chaste_interface_var_sodium_current_j_gate__j; + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time, rY, delta); + mEvalF[5] = d_dt_chaste_interface_var_slow_inward_current_d_gate__d; + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time, rY, delta); + mEvalF[6] = d_dt_chaste_interface_var_slow_inward_current_f_gate__f; + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time, rY, delta); + mEvalF[7] = d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1; + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time, rY, delta); + + { + if (fabs(mPartialF[1]) < delta){ + rY[1] += mDt*d_dt_chaste_interface_var_slow_inward_current__Cai; + } + else + { + rY[1] += (d_dt_chaste_interface_var_slow_inward_current__Cai/mPartialF[1])*(exp(mPartialF[1]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[2]) < delta){ + rY[2] += mDt*d_dt_chaste_interface_var_sodium_current_m_gate__m; + } + else + { + rY[2] += (d_dt_chaste_interface_var_sodium_current_m_gate__m/mPartialF[2])*(exp(mPartialF[2]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[3]) < delta){ + rY[3] += mDt*d_dt_chaste_interface_var_sodium_current_h_gate__h; + } + else + { + rY[3] += (d_dt_chaste_interface_var_sodium_current_h_gate__h/mPartialF[3])*(exp(mPartialF[3]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[4]) < delta){ + rY[4] += mDt*d_dt_chaste_interface_var_sodium_current_j_gate__j; + } + else + { + rY[4] += (d_dt_chaste_interface_var_sodium_current_j_gate__j/mPartialF[4])*(exp(mPartialF[4]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[5]) < delta){ + rY[5] += mDt*d_dt_chaste_interface_var_slow_inward_current_d_gate__d; + } + else + { + rY[5] += (d_dt_chaste_interface_var_slow_inward_current_d_gate__d/mPartialF[5])*(exp(mPartialF[5]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[6]) < delta){ + rY[6] += mDt*d_dt_chaste_interface_var_slow_inward_current_f_gate__f; + } + else + { + rY[6] += (d_dt_chaste_interface_var_slow_inward_current_f_gate__f/mPartialF[6])*(exp(mPartialF[6]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[7]) < delta){ + rY[7] += mDt*d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1; + } + else + { + rY[7] += (d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1/mPartialF[7])*(exp(mPartialF[7]*mDt)-1.0); + } + + } + + } + + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative0(double var_chaste_interface__environment__time, std::vector& rY) + { + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_slow_inward_current__i_s = (-7.6990712032745758 + 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai) + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 + d_dt_chaste_interface_var_membrane__V = (-var_slow_inward_current__i_s - 0.0099999999999999985 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) - (3.0000000000000001e-5 + pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j) * (-mParameters[7] + var_chaste_interface__membrane__V) - (_lt_0_row[2]) * mParameters[5] - _lt_0_row[0] * (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1) / mParameters[1]; // mV / ms + + return d_dt_chaste_interface_var_membrane__V; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative0(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + + + const double var_x0 = 1 / mParameters[1]; + const double var_x1 = 0.040000000000000001 * var_chaste_interface__membrane__V; + const double var_x2 = exp(2.1200000000000001 + var_x1); + const double var_x3 = exp(4.2400000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V); + const double var_x4 = var_x2 + var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = exp(3.3999999999999999 + var_x1); + const double var_x7 = pow(var_x4, (-2)); + const double var_x8 = -1 + var_x6; + const double var_x9 = -0.040000000000000001 * var_x2 - 0.080000000000000002 * var_x3; + const double var_x10 = mParameters[0] * var_chaste_interface__slow_inward_current_f_gate__f; + const double var_x11 = var_x10 * var_chaste_interface__slow_inward_current_d_gate__d; + const double var_x12 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x13 = var_x12 * mParameters[2] * var_chaste_interface__sodium_current_j_gate__j; + const double var_x14 = exp(3.0800000000000001 + var_x1); + const double var_x15 = 1 / exp(1.4000000000000001 + var_x1); + const double var_x16 = var_x15 * mParameters[6]; + const double var_x17 = -1 + var_x14; + const double var_x18 = 3.0000000000000001e-5 + var_x11 + var_x13 * var_chaste_interface__sodium_current_h_gate__h + 0.040000000000000001 * var_x14 * var_x16 * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 - 0.040000000000000001 * var_x15 * var_x17 * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1; + const double var_x19 = 0.92000000000000004 + var_x1; + const double var_x20 = exp(-var_x19); + const double var_x21 = -1 + var_x20; + + partialF = (((var_x19 >= -9.9999999999999995e-8) && (var_x19 <= 9.9999999999999995e-8)) ? (var_x0 * (-var_x18 - (0.10000000000000001 + 0.16 * var_x5 * var_x6 + 4 * var_x7 * var_x8 * var_x9) * mParameters[5])) : (var_x0 * (-var_x18 - (-0.20000000000000001 / var_x21 + 0.16 * var_x5 * var_x6 + 4 * var_x7 * var_x8 * var_x9 - 0.20000000000000001 * var_x19 * var_x20 / pow(var_x21, 2)) * mParameters[5]))); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative1(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + + + + // Mathematics + const double var_slow_inward_current__i_s = (-7.6990712032745758 + 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai) + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 + const double d_dt_chaste_interface_var_slow_inward_current__Cai = 7.0000000000000007e-6 - 0.070000000000000007 * var_chaste_interface__slow_inward_current__Cai - 0.01 * var_slow_inward_current__i_s; // concentration_units / ms + + return d_dt_chaste_interface_var_slow_inward_current__Cai; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative1(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + + + + const double var_x10 = mParameters[0] * var_chaste_interface__slow_inward_current_f_gate__f; + const double var_x11 = var_x10 * var_chaste_interface__slow_inward_current_d_gate__d; + const double var_x22 = var_x11 / var_chaste_interface__slow_inward_current__Cai; + + partialF = -0.070000000000000007 - 0.13028700000000001 * var_x22; + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative2(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_sodium_current_m_gate__m = (1 - var_chaste_interface__sodium_current_m_gate__m) * _lt_0_row[11] - 40 * var_chaste_interface__sodium_current_m_gate__m * _lt_0_row[12]; // 1 / ms + + return d_dt_chaste_interface_var_sodium_current_m_gate__m; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative2(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x29 = _lt_0_row[12]; + const double var_x30 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x31 = 4.7000000000000002 + var_x30; + const double var_x32 = (var_x31 >= -9.9999999999999995e-8) && (var_x31 <= 9.9999999999999995e-8); + const double var_x33 = exp(-var_x31); + const double var_x34 = -1 + var_x33; + const double var_x35 = 1 / var_x34; + const double var_x37 = 40 * var_x29; + + partialF = ((var_x32) ? (-33.5 - var_x37 - 0.5 * var_chaste_interface__membrane__V) : (-var_x37 + 10 * var_x31 * var_x35)); + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative3(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + + + + // Mathematics + const double var_sodium_current_h_gate__alpha_h = 0.126 * exp(-19.25 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V); // per_ms + const double var_sodium_current_h_gate__beta_h = 1.7 / (1 + exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V)); // per_ms + const double d_dt_chaste_interface_var_sodium_current_h_gate__h = (1 * var_sodium_current_h_gate__alpha_h + 1 * var_sodium_current_h_gate__beta_h) * (-var_chaste_interface__sodium_current_h_gate__h + 0.01 * mParameters[3] + (1 - 0.01 * mParameters[3]) * var_sodium_current_h_gate__alpha_h / (var_sodium_current_h_gate__alpha_h + var_sodium_current_h_gate__beta_h)); // 1 / ms + + return d_dt_chaste_interface_var_sodium_current_h_gate__h; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative3(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + + + + const double var_x38 = 0.25 * var_chaste_interface__membrane__V - 0.25 * mParameters[4]; + const double var_x39 = exp(-19.25 - var_x38); + const double var_x40 = 0.126 * var_x39; + const double var_x41 = exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V); + const double var_x42 = 1 + var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = var_x40 + 1.7 * var_x43; + + partialF = -var_x44; + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative4(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + + + + // Mathematics + const double var_sodium_current_j_gate__alpha_j = 0.055 * exp(-19.5 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V) / (1 + exp(-15.600000000000001 + 0.20000000000000001 * mParameters[4] - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__beta_j = 0.29999999999999999 / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[4] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double d_dt_chaste_interface_var_sodium_current_j_gate__j = (1 * var_sodium_current_j_gate__alpha_j + 1 * var_sodium_current_j_gate__beta_j) * (-var_chaste_interface__sodium_current_j_gate__j + 0.01 * mParameters[3] + (1 - 0.01 * mParameters[3]) * var_sodium_current_j_gate__alpha_j / (var_sodium_current_j_gate__alpha_j + var_sodium_current_j_gate__beta_j)); // 1 / ms + + return d_dt_chaste_interface_var_sodium_current_j_gate__j; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative4(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + + + + const double var_x30 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x38 = 0.25 * var_chaste_interface__membrane__V - 0.25 * mParameters[4]; + const double var_x50 = exp(-3.2000000000000002 - var_x30 + 0.10000000000000001 * mParameters[4]); + const double var_x51 = 1 + var_x50; + const double var_x52 = 1 / var_x51; + const double var_x53 = exp(-15.600000000000001 + 0.20000000000000001 * mParameters[4] - 0.20000000000000001 * var_chaste_interface__membrane__V); + const double var_x54 = 1 + var_x53; + const double var_x55 = 1 / var_x54; + const double var_x56 = exp(-19.5 - var_x38); + const double var_x57 = var_x55 * var_x56; + const double var_x58 = 0.055 * var_x57; + const double var_x59 = var_x58 + 0.29999999999999999 * var_x52; + + partialF = -var_x59; + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative5(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_slow_inward_current_d_gate__d = 0.095000000000000001 * _lt_0_row[3] * (1 - var_chaste_interface__slow_inward_current_d_gate__d) * _lt_0_row[4] - 0.070000000000000007 * _lt_0_row[5] * var_chaste_interface__slow_inward_current_d_gate__d * _lt_0_row[6]; // 1 / ms + + return d_dt_chaste_interface_var_slow_inward_current_d_gate__d; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative5(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x63 = exp(2.2000000000000002 + 0.050000000000000003 * var_chaste_interface__membrane__V); + const double var_x64 = 1 + var_x63; + const double var_x65 = _lt_0_row[6]; + const double var_x66 = var_x65 / var_x64; + const double var_x68 = exp(0.35997120230381568 - 0.071994240460763137 * var_chaste_interface__membrane__V); + const double var_x69 = 1 + var_x68; + const double var_x70 = _lt_0_row[4]; + const double var_x71 = var_x70 / var_x69; + + partialF = -0.070000000000000007 * var_x66 - 0.095000000000000001 * var_x71; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative6(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_slow_inward_current_f_gate__f = 0.012 * _lt_0_row[7] * (1 - var_chaste_interface__slow_inward_current_f_gate__f) * _lt_0_row[8] - 0.0064999999999999997 * _lt_0_row[9] * var_chaste_interface__slow_inward_current_f_gate__f * _lt_0_row[10]; // 1 / ms + + return d_dt_chaste_interface_var_slow_inward_current_f_gate__f; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative6(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x73 = exp(4.197901049475262 + 0.14992503748125938 * var_chaste_interface__membrane__V); + const double var_x74 = 1 + var_x73; + const double var_x75 = _lt_0_row[8]; + const double var_x76 = var_x75 / var_x74; + const double var_x77 = exp(-6 - 0.20000000000000001 * var_chaste_interface__membrane__V); + const double var_x78 = 1 + var_x77; + const double var_x79 = 1 / var_x78; + const double var_x80 = _lt_0_row[10]; + + partialF = -0.012 * var_x76 - 0.0064999999999999997 * var_x79 * var_x80; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative7(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1 = 0.00050000000000000001 * _lt_0_row[13] * (1 - var_chaste_interface__time_dependent_outward_current_x1_gate__x1) * _lt_0_row[14] - 0.0012999999999999999 * _lt_0_row[15] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 * _lt_0_row[16]; // 1 / ms + + return d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative7(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x81 = exp(-0.80000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V); + const double var_x82 = 1 + var_x81; + const double var_x83 = _lt_0_row[16]; + const double var_x84 = var_x83 / var_x82; + const double var_x86 = exp(2.8571428571428572 + 0.057142857142857141 * var_chaste_interface__membrane__V); + const double var_x87 = 1 + var_x86; + const double var_x88 = _lt_0_row[14]; + const double var_x89 = var_x88 / var_x87; + + partialF = -0.00050000000000000001 * var_x89 - 0.0012999999999999999 * var_x84; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + + std::vector Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_slow_inward_current__E_s = 7.6990712032745758 - 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai); // mV + const double var_slow_inward_current__i_s = (-var_slow_inward_current__E_s + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 + const double var_slow_inward_current__i_s_converted = 100.00000000000001 * var_slow_inward_current__i_s; // uA_per_cm2 + const double var_sodium_current__g_Nac = 3.0000000000000001e-5; // mS_per_mm2 + const double var_sodium_current_h_gate__alpha_h = 0.126 * exp(-19.25 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V); // per_ms + const double var_sodium_current_h_gate__beta_h = 1.7 / (1 + exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_h_gate__tau_h = 1 / (var_sodium_current_h_gate__alpha_h + var_sodium_current_h_gate__beta_h); // ms + const double var_sodium_current_j_gate__alpha_j = 0.055 * exp(-19.5 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V) / (1 + exp(-15.600000000000001 + 0.20000000000000001 * mParameters[4] - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__beta_j = 0.29999999999999999 / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[4] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__tau_j = 1 / (var_sodium_current_j_gate__alpha_j + var_sodium_current_j_gate__beta_j); // ms + const double var_sodium_current__i_Na = (-mParameters[7] + var_chaste_interface__membrane__V) * (pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j + var_sodium_current__g_Nac); // uA_per_mm2 + const double var_sodium_current__i_Na_converted = 100.00000000000001 * var_sodium_current__i_Na; // uA_per_cm2 + const double var_stimulus_protocol__Istim_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_time_dependent_outward_current__i_x1 = _lt_0_row[0] * (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1; // uA_per_mm2 + const double var_time_dependent_outward_current__i_x1_converted = 100.00000000000001 * var_time_dependent_outward_current__i_x1; // uA_per_cm2 + const double var_time_independent_outward_current__B = -0.040000000000000001; // per_mV + const double var_time_independent_outward_current__A = -0.20000000000000001 / var_time_independent_outward_current__B; // dimensionless + const double var_time_independent_outward_current__v0 = -23; // mV + const double var_time_independent_outward_current__U = (-var_time_independent_outward_current__v0 + var_chaste_interface__membrane__V) * var_time_independent_outward_current__B; // dimensionless + const double var_time_independent_outward_current__temp_current = (((var_time_independent_outward_current__U >= -9.9999999999999995e-8) && (var_time_independent_outward_current__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_time_independent_outward_current__U) * var_time_independent_outward_current__A) : (var_time_independent_outward_current__A * var_time_independent_outward_current__U / (-1 + exp(var_time_independent_outward_current__U)))); // dimensionless + const double var_time_independent_outward_current__i_K1 = (4 * (-1 + exp(3.3999999999999999 + 0.040000000000000001 * var_chaste_interface__membrane__V)) / (exp(2.1200000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V) + exp(4.2400000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V)) + var_time_independent_outward_current__temp_current) * mParameters[5]; // uA_per_mm2 + const double var_time_independent_outward_current__i_K1_converted = 100.00000000000001 * var_time_independent_outward_current__i_K1; // uA_per_cm2 + + std::vector dqs(8); + dqs[0] = var_slow_inward_current__i_s_converted; + dqs[1] = var_sodium_current__i_Na_converted; + dqs[2] = var_sodium_current_h_gate__tau_h; + dqs[3] = var_sodium_current_j_gate__tau_j; + dqs[4] = var_time_independent_outward_current__i_K1_converted; + dqs[5] = var_time_dependent_outward_current__i_x1_converted; + dqs[6] = var_stimulus_protocol__Istim_converted; + dqs[7] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "beeler_reuter_model_1977"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "ms"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-84.624); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("concentration_units"); + this->mInitialConditions.push_back(0.0001); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.011); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.988); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.975); + + // rY[5]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.003); + + // rY[6]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.994); + + // rY[7]: + this->mVariableNames.push_back("time_dependent_outward_current_x1_gate__x1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0001); + + // mParameters[0]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("mS_per_mm2"); + + // mParameters[1]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("uF_per_mm2"); + + // mParameters[2]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_mm2"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("mV"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("uA_per_mm2"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("uA_per_mm2"); + + // mParameters[7]: + this->mParameterNames.push_back("sodium_reversal_potential"); + this->mParameterUnits.push_back("mV"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("ms"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellbeeler_reuter_model_1977FromCellMLGRL1Opt) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977--sympy_1_14.cpp new file mode 100644 index 00000000..5dd9ff90 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/beeler_reuter_model_1977--sympy_1_14.cpp @@ -0,0 +1,1345 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: beeler_reuter_model_1977 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenFirstOrderOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "beeler_reuter_model_1977.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + +class Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<17; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= -9.9999999999999995e-8) && (0.92000000000000004 + 0.040000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (7.3000000000000007 + 0.10000000000000001 * var_chaste_interface__membrane__V) : (-5 * (0.92000000000000004 + 0.040000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-0.92000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V)))); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][2] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return 1 / (1 + exp(0.35997120230381568 - 0.071994240460763137 * var_chaste_interface__membrane__V)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][3] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return exp(0.050000000000000003 - 0.01 * var_chaste_interface__membrane__V); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][4] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return 1 / (1 + exp(2.2000000000000002 + 0.050000000000000003 * var_chaste_interface__membrane__V)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][5] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return exp(-0.74576271186440679 - 0.016949152542372881 * var_chaste_interface__membrane__V); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][6] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return 1 / (1 + exp(4.197901049475262 + 0.14992503748125938 * var_chaste_interface__membrane__V)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][7] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return exp(-0.224 - 0.0080000000000000002 * var_chaste_interface__membrane__V); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][8] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return 1 / (1 + exp(-6 - 0.20000000000000001 * var_chaste_interface__membrane__V)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][9] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return exp(-0.59999999999999998 - 0.02 * var_chaste_interface__membrane__V); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][10] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return (((4.7000000000000002 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (4.7000000000000002 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (33.5 + 0.5 * var_chaste_interface__membrane__V) : (-10 * (4.7000000000000002 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-4.7000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[11] < 2){ + double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[11] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[11] >= 2){ + EXCEPTION("Lookup table 11 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[17]; + + // Lookup tables + double (*_lookup_table_0)[17]; + int _lookup_table_0_num_misshit_piecewise[17] = {0}; + +}; + +std::shared_ptr Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::mpInstance; + + + boost::shared_ptr Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__stimulus_protocol__IstimAmplitude_converted = 50.000000000000007; // uA_per_cm2 + const double var_chaste_interface__stimulus_protocol__IstimPeriod = 1000; // ms + const double var_chaste_interface__stimulus_protocol__IstimPulseDuration = 1; // ms + const double var_chaste_interface__stimulus_protocol__IstimStart = 10; // ms + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__stimulus_protocol__IstimAmplitude_converted), + var_chaste_interface__stimulus_protocol__IstimPulseDuration, + var_chaste_interface__stimulus_protocol__IstimPeriod, + var_chaste_interface__stimulus_protocol__IstimStart + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::Cellbeeler_reuter_model_1977FromCellMLGRL1Opt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 8, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 0.00089999999999999998; // (var_slow_inward_current__g_s) [mS_per_mm2] + this->mParameters[1] = 0.01; // (var_membrane__C) [uF_per_mm2] + this->mParameters[2] = 0.040000000000000001; // (var_sodium_current__g_Na) [mS_per_mm2] + this->mParameters[3] = 0; // (var_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[4] = 0; // (var_sodium_current__shift_INa_inact) [mV] + this->mParameters[5] = 0.0035000000000000001; // (var_time_independent_outward_current__G_K1) [uA_per_mm2] + this->mParameters[6] = 0.0080000000000000002; // (var_time_dependent_outward_current__G_Kr) [uA_per_mm2] + this->mParameters[7] = 50; // (var_sodium_current__E_Na) [mV] + } + + Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::~Cellbeeler_reuter_model_1977FromCellMLGRL1Opt() + { + } + + AbstractLookupTableCollection* Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::GetLookupTableCollection() + { + return Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance(); + } + + void Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 8; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_slow_inward_current__i_s_converted = 100.00000000000001 * (-7.6990712032745758 + 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai) + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_cm2 + const double var_sodium_current__i_Na_converted = 100.00000000000001 * (3.0000000000000001e-5 + pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j) * (-mParameters[7] + var_chaste_interface__membrane__V); // uA_per_cm2 + const double var_time_dependent_outward_current__i_x1_converted = 100.00000000000001 * _lt_0_row[0] * (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1; // uA_per_cm2 + const double var_time_independent_outward_current__i_K1_converted = 100.00000000000001 * (_lt_0_row[2]) * mParameters[5]; // uA_per_cm2 + const double var_chaste_interface__i_ionic = var_slow_inward_current__i_s_converted + var_sodium_current__i_Na_converted + var_time_dependent_outward_current__i_x1_converted + var_time_independent_outward_current__i_K1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + std::vector& rY = rGetStateVariables(); + unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_slow_inward_current__i_s = (-7.6990712032745758 + 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai) + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 + d_dt_chaste_interface_var_membrane__V = (-var_slow_inward_current__i_s - 0.0099999999999999985 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) - (3.0000000000000001e-5 + pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j) * (-mParameters[7] + var_chaste_interface__membrane__V) - (_lt_0_row[2]) * mParameters[5] - _lt_0_row[0] * (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1) / mParameters[1]; // mV / ms + + double evalF = d_dt_chaste_interface_var_membrane__V; + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + std::vector& rY = rGetStateVariables(); + const double delta = 1e-8; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_slow_inward_current_d_gate__d = 0.095000000000000001 * _lt_0_row[3] * (1 - var_chaste_interface__slow_inward_current_d_gate__d) * _lt_0_row[4] - 0.070000000000000007 * _lt_0_row[5] * var_chaste_interface__slow_inward_current_d_gate__d * _lt_0_row[6]; // 1 / ms + const double d_dt_chaste_interface_var_slow_inward_current_f_gate__f = 0.012 * _lt_0_row[7] * (1 - var_chaste_interface__slow_inward_current_f_gate__f) * _lt_0_row[8] - 0.0064999999999999997 * _lt_0_row[9] * var_chaste_interface__slow_inward_current_f_gate__f * _lt_0_row[10]; // 1 / ms + const double var_slow_inward_current__i_s = (-7.6990712032745758 + 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai) + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 + const double d_dt_chaste_interface_var_slow_inward_current__Cai = 7.0000000000000007e-6 - 0.070000000000000007 * var_chaste_interface__slow_inward_current__Cai - 0.01 * var_slow_inward_current__i_s; // concentration_units / ms + const double var_sodium_current_h_gate__alpha_h = 0.126 * exp(-19.25 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V); // per_ms + const double var_sodium_current_h_gate__beta_h = 1.7 / (1 + exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V)); // per_ms + const double d_dt_chaste_interface_var_sodium_current_h_gate__h = (1 * var_sodium_current_h_gate__alpha_h + 1 * var_sodium_current_h_gate__beta_h) * (-var_chaste_interface__sodium_current_h_gate__h + 0.01 * mParameters[3] + (1 - 0.01 * mParameters[3]) * var_sodium_current_h_gate__alpha_h / (var_sodium_current_h_gate__alpha_h + var_sodium_current_h_gate__beta_h)); // 1 / ms + const double var_sodium_current_j_gate__alpha_j = 0.055 * exp(-19.5 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V) / (1 + exp(-15.600000000000001 + 0.20000000000000001 * mParameters[4] - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__beta_j = 0.29999999999999999 / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[4] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double d_dt_chaste_interface_var_sodium_current_j_gate__j = (1 * var_sodium_current_j_gate__alpha_j + 1 * var_sodium_current_j_gate__beta_j) * (-var_chaste_interface__sodium_current_j_gate__j + 0.01 * mParameters[3] + (1 - 0.01 * mParameters[3]) * var_sodium_current_j_gate__alpha_j / (var_sodium_current_j_gate__alpha_j + var_sodium_current_j_gate__beta_j)); // 1 / ms + const double d_dt_chaste_interface_var_sodium_current_m_gate__m = (1 - var_chaste_interface__sodium_current_m_gate__m) * _lt_0_row[11] - 40 * var_chaste_interface__sodium_current_m_gate__m * _lt_0_row[12]; // 1 / ms + const double d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1 = 0.00050000000000000001 * _lt_0_row[13] * (1 - var_chaste_interface__time_dependent_outward_current_x1_gate__x1) * _lt_0_row[14] - 0.0012999999999999999 * _lt_0_row[15] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 * _lt_0_row[16]; // 1 / ms + + mEvalF[1] = d_dt_chaste_interface_var_slow_inward_current__Cai; + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time, rY, delta); + mEvalF[2] = d_dt_chaste_interface_var_sodium_current_m_gate__m; + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time, rY, delta); + mEvalF[3] = d_dt_chaste_interface_var_sodium_current_h_gate__h; + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time, rY, delta); + mEvalF[4] = d_dt_chaste_interface_var_sodium_current_j_gate__j; + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time, rY, delta); + mEvalF[5] = d_dt_chaste_interface_var_slow_inward_current_d_gate__d; + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time, rY, delta); + mEvalF[6] = d_dt_chaste_interface_var_slow_inward_current_f_gate__f; + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time, rY, delta); + mEvalF[7] = d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1; + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time, rY, delta); + + { + if (fabs(mPartialF[1]) < delta){ + rY[1] += mDt*d_dt_chaste_interface_var_slow_inward_current__Cai; + } + else + { + rY[1] += (d_dt_chaste_interface_var_slow_inward_current__Cai/mPartialF[1])*(exp(mPartialF[1]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[2]) < delta){ + rY[2] += mDt*d_dt_chaste_interface_var_sodium_current_m_gate__m; + } + else + { + rY[2] += (d_dt_chaste_interface_var_sodium_current_m_gate__m/mPartialF[2])*(exp(mPartialF[2]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[3]) < delta){ + rY[3] += mDt*d_dt_chaste_interface_var_sodium_current_h_gate__h; + } + else + { + rY[3] += (d_dt_chaste_interface_var_sodium_current_h_gate__h/mPartialF[3])*(exp(mPartialF[3]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[4]) < delta){ + rY[4] += mDt*d_dt_chaste_interface_var_sodium_current_j_gate__j; + } + else + { + rY[4] += (d_dt_chaste_interface_var_sodium_current_j_gate__j/mPartialF[4])*(exp(mPartialF[4]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[5]) < delta){ + rY[5] += mDt*d_dt_chaste_interface_var_slow_inward_current_d_gate__d; + } + else + { + rY[5] += (d_dt_chaste_interface_var_slow_inward_current_d_gate__d/mPartialF[5])*(exp(mPartialF[5]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[6]) < delta){ + rY[6] += mDt*d_dt_chaste_interface_var_slow_inward_current_f_gate__f; + } + else + { + rY[6] += (d_dt_chaste_interface_var_slow_inward_current_f_gate__f/mPartialF[6])*(exp(mPartialF[6]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[7]) < delta){ + rY[7] += mDt*d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1; + } + else + { + rY[7] += (d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1/mPartialF[7])*(exp(mPartialF[7]*mDt)-1.0); + } + + } + + } + + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative0(double var_chaste_interface__environment__time, std::vector& rY) + { + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_slow_inward_current__i_s = (-7.6990712032745758 + 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai) + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 + d_dt_chaste_interface_var_membrane__V = (-var_slow_inward_current__i_s - 0.0099999999999999985 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) - (3.0000000000000001e-5 + pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j) * (-mParameters[7] + var_chaste_interface__membrane__V) - (_lt_0_row[2]) * mParameters[5] - _lt_0_row[0] * (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1) / mParameters[1]; // mV / ms + + return d_dt_chaste_interface_var_membrane__V; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative0(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + + + const double var_x0 = 1 / mParameters[1]; + const double var_x1 = 0.040000000000000001 * var_chaste_interface__membrane__V; + const double var_x2 = exp(2.1200000000000001 + var_x1); + const double var_x3 = exp(4.2400000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V); + const double var_x4 = var_x2 + var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = exp(3.3999999999999999 + var_x1); + const double var_x7 = pow(var_x4, (-2)); + const double var_x8 = -1 + var_x6; + const double var_x9 = -0.040000000000000001 * var_x2 - 0.080000000000000002 * var_x3; + const double var_x10 = mParameters[0] * var_chaste_interface__slow_inward_current_f_gate__f; + const double var_x11 = var_x10 * var_chaste_interface__slow_inward_current_d_gate__d; + const double var_x12 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x13 = var_x12 * mParameters[2] * var_chaste_interface__sodium_current_j_gate__j; + const double var_x14 = exp(3.0800000000000001 + var_x1); + const double var_x15 = 1 / exp(1.4000000000000001 + var_x1); + const double var_x16 = var_x15 * mParameters[6]; + const double var_x17 = -1 + var_x14; + const double var_x18 = 3.0000000000000001e-5 + var_x11 + var_x13 * var_chaste_interface__sodium_current_h_gate__h + 0.040000000000000001 * var_x14 * var_x16 * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 - 0.040000000000000001 * var_x15 * var_x17 * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1; + const double var_x19 = 0.92000000000000004 + var_x1; + const double var_x20 = exp(-var_x19); + const double var_x21 = -1 + var_x20; + + partialF = (((var_x19 >= -9.9999999999999995e-8) && (var_x19 <= 9.9999999999999995e-8)) ? (var_x0 * (-var_x18 - (0.10000000000000001 + 0.16 * var_x5 * var_x6 + 4 * var_x7 * var_x8 * var_x9) * mParameters[5])) : (var_x0 * (-var_x18 - (-0.20000000000000001 / var_x21 + 0.16 * var_x5 * var_x6 + 4 * var_x7 * var_x8 * var_x9 - 0.20000000000000001 * var_x19 * var_x20 / pow(var_x21, 2)) * mParameters[5]))); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative1(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + + + + // Mathematics + const double var_slow_inward_current__i_s = (-7.6990712032745758 + 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai) + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 + const double d_dt_chaste_interface_var_slow_inward_current__Cai = 7.0000000000000007e-6 - 0.070000000000000007 * var_chaste_interface__slow_inward_current__Cai - 0.01 * var_slow_inward_current__i_s; // concentration_units / ms + + return d_dt_chaste_interface_var_slow_inward_current__Cai; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative1(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + + + + const double var_x10 = mParameters[0] * var_chaste_interface__slow_inward_current_f_gate__f; + const double var_x11 = var_x10 * var_chaste_interface__slow_inward_current_d_gate__d; + const double var_x22 = var_x11 / var_chaste_interface__slow_inward_current__Cai; + + partialF = -0.070000000000000007 - 0.13028700000000001 * var_x22; + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative2(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_sodium_current_m_gate__m = (1 - var_chaste_interface__sodium_current_m_gate__m) * _lt_0_row[11] - 40 * var_chaste_interface__sodium_current_m_gate__m * _lt_0_row[12]; // 1 / ms + + return d_dt_chaste_interface_var_sodium_current_m_gate__m; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative2(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x29 = _lt_0_row[12]; + const double var_x30 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x31 = 4.7000000000000002 + var_x30; + const double var_x32 = (var_x31 >= -9.9999999999999995e-8) && (var_x31 <= 9.9999999999999995e-8); + const double var_x33 = exp(-var_x31); + const double var_x34 = -1 + var_x33; + const double var_x35 = 1 / var_x34; + const double var_x37 = 40 * var_x29; + + partialF = ((var_x32) ? (-33.5 - var_x37 - 0.5 * var_chaste_interface__membrane__V) : (-var_x37 + 10 * var_x31 * var_x35)); + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative3(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + + + + // Mathematics + const double var_sodium_current_h_gate__alpha_h = 0.126 * exp(-19.25 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V); // per_ms + const double var_sodium_current_h_gate__beta_h = 1.7 / (1 + exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V)); // per_ms + const double d_dt_chaste_interface_var_sodium_current_h_gate__h = (1 * var_sodium_current_h_gate__alpha_h + 1 * var_sodium_current_h_gate__beta_h) * (-var_chaste_interface__sodium_current_h_gate__h + 0.01 * mParameters[3] + (1 - 0.01 * mParameters[3]) * var_sodium_current_h_gate__alpha_h / (var_sodium_current_h_gate__alpha_h + var_sodium_current_h_gate__beta_h)); // 1 / ms + + return d_dt_chaste_interface_var_sodium_current_h_gate__h; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative3(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + + + + const double var_x38 = 0.25 * var_chaste_interface__membrane__V - 0.25 * mParameters[4]; + const double var_x39 = exp(-19.25 - var_x38); + const double var_x40 = 0.126 * var_x39; + const double var_x41 = exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V); + const double var_x42 = 1 + var_x41; + const double var_x43 = var_x40 + 1.7 / var_x42; + + partialF = -var_x43; + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative4(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + + + + // Mathematics + const double var_sodium_current_j_gate__alpha_j = 0.055 * exp(-19.5 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V) / (1 + exp(-15.600000000000001 + 0.20000000000000001 * mParameters[4] - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__beta_j = 0.29999999999999999 / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[4] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double d_dt_chaste_interface_var_sodium_current_j_gate__j = (1 * var_sodium_current_j_gate__alpha_j + 1 * var_sodium_current_j_gate__beta_j) * (-var_chaste_interface__sodium_current_j_gate__j + 0.01 * mParameters[3] + (1 - 0.01 * mParameters[3]) * var_sodium_current_j_gate__alpha_j / (var_sodium_current_j_gate__alpha_j + var_sodium_current_j_gate__beta_j)); // 1 / ms + + return d_dt_chaste_interface_var_sodium_current_j_gate__j; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative4(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + + + + const double var_x30 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x38 = 0.25 * var_chaste_interface__membrane__V - 0.25 * mParameters[4]; + const double var_x49 = exp(-3.2000000000000002 - var_x30 + 0.10000000000000001 * mParameters[4]); + const double var_x50 = 1 + var_x49; + const double var_x51 = exp(-15.600000000000001 + 0.20000000000000001 * mParameters[4] - 0.20000000000000001 * var_chaste_interface__membrane__V); + const double var_x52 = 1 + var_x51; + const double var_x53 = 1 / var_x52; + const double var_x54 = exp(-19.5 - var_x38); + const double var_x55 = var_x53 * var_x54; + const double var_x56 = 0.055 * var_x55; + const double var_x57 = var_x56 + 0.29999999999999999 / var_x50; + + partialF = -var_x57; + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative5(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_slow_inward_current_d_gate__d = 0.095000000000000001 * _lt_0_row[3] * (1 - var_chaste_interface__slow_inward_current_d_gate__d) * _lt_0_row[4] - 0.070000000000000007 * _lt_0_row[5] * var_chaste_interface__slow_inward_current_d_gate__d * _lt_0_row[6]; // 1 / ms + + return d_dt_chaste_interface_var_slow_inward_current_d_gate__d; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative5(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x61 = exp(2.2000000000000002 + 0.050000000000000003 * var_chaste_interface__membrane__V); + const double var_x62 = 1 + var_x61; + const double var_x63 = _lt_0_row[6]; + const double var_x64 = var_x63 / var_x62; + const double var_x66 = exp(0.35997120230381568 - 0.071994240460763137 * var_chaste_interface__membrane__V); + const double var_x67 = 1 + var_x66; + const double var_x68 = _lt_0_row[4]; + const double var_x69 = var_x68 / var_x67; + + partialF = -0.070000000000000007 * var_x64 - 0.095000000000000001 * var_x69; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative6(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_slow_inward_current_f_gate__f = 0.012 * _lt_0_row[7] * (1 - var_chaste_interface__slow_inward_current_f_gate__f) * _lt_0_row[8] - 0.0064999999999999997 * _lt_0_row[9] * var_chaste_interface__slow_inward_current_f_gate__f * _lt_0_row[10]; // 1 / ms + + return d_dt_chaste_interface_var_slow_inward_current_f_gate__f; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative6(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x71 = exp(4.197901049475262 + 0.14992503748125938 * var_chaste_interface__membrane__V); + const double var_x72 = 1 + var_x71; + const double var_x73 = _lt_0_row[8]; + const double var_x74 = var_x73 / var_x72; + const double var_x75 = exp(-6 - 0.20000000000000001 * var_chaste_interface__membrane__V); + const double var_x76 = 1 + var_x75; + const double var_x77 = 1 / var_x76; + const double var_x78 = _lt_0_row[10]; + + partialF = -0.012 * var_x74 - 0.0064999999999999997 * var_x77 * var_x78; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluateYDerivative7(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1 = 0.00050000000000000001 * _lt_0_row[13] * (1 - var_chaste_interface__time_dependent_outward_current_x1_gate__x1) * _lt_0_row[14] - 0.0012999999999999999 * _lt_0_row[15] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 * _lt_0_row[16]; // 1 / ms + + return d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1; + } + + double Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::EvaluatePartialDerivative7(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x79 = exp(-0.80000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V); + const double var_x80 = 1 + var_x79; + const double var_x81 = _lt_0_row[16]; + const double var_x82 = var_x81 / var_x80; + const double var_x84 = exp(2.8571428571428572 + 0.057142857142857141 * var_chaste_interface__membrane__V); + const double var_x85 = 1 + var_x84; + const double var_x86 = _lt_0_row[14]; + const double var_x87 = var_x86 / var_x85; + + partialF = -0.00050000000000000001 * var_x87 - 0.0012999999999999999 * var_x82; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + + std::vector Cellbeeler_reuter_model_1977FromCellMLGRL1Opt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_slow_inward_current__E_s = 7.6990712032745758 - 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai); // mV + const double var_slow_inward_current__i_s = (-var_slow_inward_current__E_s + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 + const double var_slow_inward_current__i_s_converted = 100.00000000000001 * var_slow_inward_current__i_s; // uA_per_cm2 + const double var_sodium_current__g_Nac = 3.0000000000000001e-5; // mS_per_mm2 + const double var_sodium_current_h_gate__alpha_h = 0.126 * exp(-19.25 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V); // per_ms + const double var_sodium_current_h_gate__beta_h = 1.7 / (1 + exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_h_gate__tau_h = 1 / (var_sodium_current_h_gate__alpha_h + var_sodium_current_h_gate__beta_h); // ms + const double var_sodium_current_j_gate__alpha_j = 0.055 * exp(-19.5 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V) / (1 + exp(-15.600000000000001 + 0.20000000000000001 * mParameters[4] - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__beta_j = 0.29999999999999999 / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[4] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__tau_j = 1 / (var_sodium_current_j_gate__alpha_j + var_sodium_current_j_gate__beta_j); // ms + const double var_sodium_current__i_Na = (-mParameters[7] + var_chaste_interface__membrane__V) * (pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j + var_sodium_current__g_Nac); // uA_per_mm2 + const double var_sodium_current__i_Na_converted = 100.00000000000001 * var_sodium_current__i_Na; // uA_per_cm2 + const double var_stimulus_protocol__Istim_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_time_dependent_outward_current__i_x1 = _lt_0_row[0] * (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1; // uA_per_mm2 + const double var_time_dependent_outward_current__i_x1_converted = 100.00000000000001 * var_time_dependent_outward_current__i_x1; // uA_per_cm2 + const double var_time_independent_outward_current__B = -0.040000000000000001; // per_mV + const double var_time_independent_outward_current__A = -0.20000000000000001 / var_time_independent_outward_current__B; // dimensionless + const double var_time_independent_outward_current__v0 = -23; // mV + const double var_time_independent_outward_current__U = (-var_time_independent_outward_current__v0 + var_chaste_interface__membrane__V) * var_time_independent_outward_current__B; // dimensionless + const double var_time_independent_outward_current__temp_current = (((var_time_independent_outward_current__U >= -9.9999999999999995e-8) && (var_time_independent_outward_current__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_time_independent_outward_current__U) * var_time_independent_outward_current__A) : (var_time_independent_outward_current__A * var_time_independent_outward_current__U / (-1 + exp(var_time_independent_outward_current__U)))); // dimensionless + const double var_time_independent_outward_current__i_K1 = (4 * (-1 + exp(3.3999999999999999 + 0.040000000000000001 * var_chaste_interface__membrane__V)) / (exp(2.1200000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V) + exp(4.2400000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V)) + var_time_independent_outward_current__temp_current) * mParameters[5]; // uA_per_mm2 + const double var_time_independent_outward_current__i_K1_converted = 100.00000000000001 * var_time_independent_outward_current__i_K1; // uA_per_cm2 + + std::vector dqs(8); + dqs[0] = var_slow_inward_current__i_s_converted; + dqs[1] = var_sodium_current__i_Na_converted; + dqs[2] = var_sodium_current_h_gate__tau_h; + dqs[3] = var_sodium_current_j_gate__tau_j; + dqs[4] = var_time_independent_outward_current__i_K1_converted; + dqs[5] = var_time_dependent_outward_current__i_x1_converted; + dqs[6] = var_stimulus_protocol__Istim_converted; + dqs[7] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "beeler_reuter_model_1977"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "ms"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-84.624); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("concentration_units"); + this->mInitialConditions.push_back(0.0001); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.011); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.988); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.975); + + // rY[5]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.003); + + // rY[6]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.994); + + // rY[7]: + this->mVariableNames.push_back("time_dependent_outward_current_x1_gate__x1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0001); + + // mParameters[0]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("mS_per_mm2"); + + // mParameters[1]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("uF_per_mm2"); + + // mParameters[2]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_mm2"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("mV"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("uA_per_mm2"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("uA_per_mm2"); + + // mParameters[7]: + this->mParameterNames.push_back("sodium_reversal_potential"); + this->mParameterUnits.push_back("mV"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("ms"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellbeeler_reuter_model_1977FromCellMLGRL1Opt) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003.cpp_python36 deleted file mode 100644 index bbd10221..00000000 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003.cpp_python36 +++ /dev/null @@ -1,5085 +0,0 @@ -//! @file -//! -//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) -//! -//! Model: matsuoka_model_2003 -//! -//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen -//! (translator: chaste_codegen, model type: GeneralizedRushLarsenFirstOrderOpt) -//! on (date omitted as unimportant) -//! -//! - -#include "dynamic_matsuoka_model_2003.hpp" -#include -#include -#include -#include -#include "Exception.hpp" -#include "OdeSystemInformation.hpp" -#include "RegularStimulus.hpp" -#include "HeartConfig.hpp" -#include "IsNan.hpp" -#include "MathsCustomFunctions.hpp" - -#include "ModelFactory.hpp" - -AbstractGeneralizedRushLarsenCardiacCell* Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { - return new Dynamicmatsuoka_model_2003FromCellMLGRL1Opt(p_solver, p_stimulus); -} - -bool Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::registered = ModelFactory::Register("dynamic_matsuoka_model_2003", "GeneralizedRushLarsenFirstOrderOpt", (ModelFactory::TCreateMethod)Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::CreateMethod); - -class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public AbstractLookupTableCollection -{ -public: - static Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables* Instance() - { - if (mpInstance.get() == NULL) - { - mpInstance.reset(new Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables); - } - return mpInstance.get(); - } - - void FreeMemory() - { - - if (_lookup_table_0) - { - delete[] _lookup_table_0; - _lookup_table_0 = NULL; - } - - mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); - } - - // Row lookup methods - // using linear-interpolation - - double* _lookup_0_row(unsigned i, double _factor_) - { - for (unsigned j=0; j<41; j++) - { - const double y1 = _lookup_table_0[i][j]; - const double y2 = _lookup_table_0[i+1][j]; - _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; - } - return _lookup_table_0_row; - } - - - const double * IndexTable0(double var_chaste_interface__membrane__Vm) - { - const double _offset_0 = var_chaste_interface__membrane__Vm - mTableMins[0]; - const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; - const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); - const double _factor_0 = _offset_0_over_table_step - _table_index_0; - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); - return _lt_0_row; - } - - -// LCOV_EXCL_START - bool CheckIndex0(double& var_chaste_interface__membrane__Vm) - { - bool _oob_0 = false; - if (var_chaste_interface__membrane__Vm>mTableMaxs[0] || var_chaste_interface__membrane__Vm= 2){ - EXCEPTION("Lookup table 0 at ["<= 2){ - EXCEPTION("Lookup table 1 at ["<= 2){ - EXCEPTION("Lookup table 2 at ["<= 2){ - EXCEPTION("Lookup table 3 at ["<= 2){ - EXCEPTION("Lookup table 7 at ["< mpInstance; - - // Row lookup methods memory - double _lookup_table_0_row[41]; - - // Lookup tables - double (*_lookup_table_0)[41]; - int _lookup_table_0_num_misshit_piecewise[41] = {0}; - -}; - -std::shared_ptr Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::mpInstance; - - - boost::shared_ptr Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::UseCellMLDefaultStimulus() - { - // Use the default stimulus specified by CellML metadata - const double var_chaste_interface__membrane__stim_amplitude_converted = -4000 * HeartConfig::Instance()->GetCapacitance() / mParameters[9]; // uA_per_cm2 - const double var_chaste_interface__membrane__stim_duration = 2; // millisecond - const double var_chaste_interface__membrane__stim_period = 400; // millisecond - const double var_chaste_interface__membrane__stim_start = 100; // millisecond - boost::shared_ptr p_cellml_stim(new RegularStimulus( - -fabs(var_chaste_interface__membrane__stim_amplitude_converted), - var_chaste_interface__membrane__stim_duration, - var_chaste_interface__membrane__stim_period, - var_chaste_interface__membrane__stim_start - )); - mpIntracellularStimulus = p_cellml_stim; - return p_cellml_stim; - } - - Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::Dynamicmatsuoka_model_2003FromCellMLGRL1Opt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) - : AbstractGeneralizedRushLarsenCardiacCell( - 37, - 0, - pIntracellularStimulus) - { - // Time units: millisecond - // - this->mpSystemInfo = OdeSystemInformation::Instance(); - Init(); - - // We have a default stimulus specified in the CellML file metadata - this->mHasDefaultStimulusFromCellML = true; - - this->mParameters[0] = 459; // (var_SR_L_current__P_SR_L) [picoA_per_millimolar] - this->mParameters[1] = 62000; // (var_RyR_channel__P_RyR) [picoA_per_millimolar] - this->mParameters[2] = 1; // (var_RyR_channel__K_m_Ca_cyt) [millimolar] - this->mParameters[3] = 162500; // (var_SR_calcium_pump__i_max) [picoA] - this->mParameters[4] = 1; // (var_internal_ion_concentrations__conc_clamp) [dimensionless] - this->mParameters[5] = 1.8; // (var_external_ion_concentrations__Cao) [millimolar] - this->mParameters[6] = 5.4000000000000004; // (var_external_ion_concentrations__Ko) [millimolar] - this->mParameters[7] = 140; // (var_external_ion_concentrations__Nao) [millimolar] - this->mParameters[8] = 8712; // (var_L_type_Ca_channel__P_CaL) [picoA_per_millimolar] - this->mParameters[9] = 132; // (var_membrane__Cm) [picoF] - this->mParameters[10] = 2860; // (var_sodium_current__P_Na) [picoA_per_millimolar] - this->mParameters[11] = 1.1459999999999999; // (var_time_independent_potassium_current__P_K1_0) [nanoS_per_picoF] - this->mParameters[12] = 0.0086400000000000001; // (var_rapid_time_dependent_potassium_current__P_Kr) [nanoS_per_picoF] - this->mParameters[13] = 5.04; // (var_slow_time_dependent_potassium_current__P_Ks_K) [picoA_per_millimolar] - this->mParameters[14] = 6.8099999999999996; // (var_sodium_calcium_exchanger__P_NaCa) [picoA_per_picoF] - this->mParameters[15] = 0.033000000000000002; // (var_transient_outward_current__P_to_K) [picoA_per_millimolar] - } - - Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::~Dynamicmatsuoka_model_2003FromCellMLGRL1Opt() - { - } - - AbstractLookupTableCollection* Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::GetLookupTableCollection() - { - return Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance(); - } - - void Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::VerifyStateVariables() - { - std::vector& rY = rGetStateVariables(); - std::string error_message = ""; - - for (unsigned i=0; i < 37; i++) - { - if(std::isnan(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; - } - if(std::isinf(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; - } - if(this->is_concentration[i] && rY[i] < 0) - { - error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] < 0) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] > 1) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; - } - } - if (error_message != ""){ - EXCEPTION(DumpState(error_message)); - } - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::GetIIonic(const std::vector* pStateVariables) - { - // For state variable interpolation (SVI) we read in interpolated state variables, - // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). - if (!pStateVariables) pStateVariables = &rGetStateVariables(); - const std::vector& rY = *pStateVariables; - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; - // Units: dimensionless; Initial value: 1.779648367445368e-05 - double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; - // Units: dimensionless; Initial value: 0.5861887862983165 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; - // Units: dimensionless; Initial value: 1.6882718240109127e-05 - double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; - // Units: dimensionless; Initial value: 0.8585352091865849 - double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; - // Units: dimensionless; Initial value: 0.6080573900752752 - double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; - // Units: dimensionless; Initial value: 0.0018339931180983765 - double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; - // Units: dimensionless; Initial value: 0.20443083454225305 - double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; - // Units: dimensionless; Initial value: 0.967887666264921 - double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; - // Units: dimensionless; Initial value: 0.09738789658609195 - double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; - // Units: dimensionless; Initial value: 0.09745345578743213 - double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; - // Units: dimensionless; Initial value: 0.0007956883250874798 - double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; - // Units: dimensionless; Initial value: 0.9999125083105881 - double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; - // Units: dimensionless; Initial value: 0.9891789193465331 - double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; - // Units: dimensionless; Initial value: 0.5910747147428818 - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless - const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar - const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar - const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar - const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt - const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless - const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless - const double var_membrane__i_tot = 0.38500000000000001 * var_constant_field_equations__CF_Na + 0.040000000000000001 * var_constant_field_equations__CF_Ca + 0.15400000000000003 * var_constant_field_equations__CF_K + 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) / (1 + 90.050628437051003 * pow((1 / (mParameters[7] * _lt_0_row[4])), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))) + 0.37 * var_chaste_interface__sodium_potassium_pump_y_gate__y / ((1 + 0.094 / var_chaste_interface__ATP_production__ATPi) * (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))))) * mParameters[9] + 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K + 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na + mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca + (var_chaste_interface__sodium_calcium_exchanger_y_gate__y * _lt_0_row[5] / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)) - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3))) * mParameters[9] * mParameters[14] + 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca + 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na + 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K + 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na + 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2 + 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)) + pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13] + pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2 + var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 + 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y + ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K / (_lt_0_row[7]))); // picoA - const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot / mParameters[9]; // uA_per_cm2 - - const double i_ionic = var_chaste_interface__i_ionic; - EXCEPT_IF_NOT(!std::isnan(i_ionic)); - return i_ionic; - } - - void Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) - { - std::vector& rY = rGetStateVariables(); - unsigned v_index = GetVoltageIndex(); - const double delta = 1e-8; - - double d_dt_chaste_interface_var_membrane__Vm; - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; - // Units: dimensionless; Initial value: 1.779648367445368e-05 - double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; - // Units: dimensionless; Initial value: 0.5861887862983165 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; - // Units: dimensionless; Initial value: 1.6882718240109127e-05 - double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; - // Units: dimensionless; Initial value: 0.8585352091865849 - double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; - // Units: dimensionless; Initial value: 0.6080573900752752 - double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; - // Units: dimensionless; Initial value: 0.0018339931180983765 - double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; - // Units: dimensionless; Initial value: 0.20443083454225305 - double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; - // Units: dimensionless; Initial value: 0.967887666264921 - double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; - // Units: dimensionless; Initial value: 0.09738789658609195 - double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; - // Units: dimensionless; Initial value: 0.09745345578743213 - double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; - // Units: dimensionless; Initial value: 0.0007956883250874798 - double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; - // Units: dimensionless; Initial value: 0.9999125083105881 - double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; - // Units: dimensionless; Initial value: 0.9891789193465331 - double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; - // Units: dimensionless; Initial value: 0.5910747147428818 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless - const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar - const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA - const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA - const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA - const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar - const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA - const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K / (_lt_0_row[7]))); // picoA - const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA - const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA - const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar - const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA - const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA - const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA - const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA - const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA - const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA - const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond - const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond - const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless - const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless - const double var_sodium_calcium_exchanger__i_NaCa = (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA - const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA - const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA - const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar - const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond - const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless - const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA - const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt - const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA - const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA - const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless - const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless - const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA - const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA - const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA - d_dt_chaste_interface_var_membrane__Vm = (-var_L_type_Ca_channel__i_CaL_Ca - var_L_type_Ca_channel__i_CaL_K - var_L_type_Ca_channel__i_CaL_Na - var_T_type_Ca_channel__i_Ca_T - var_background_Cab_current__i_Cab - var_background_KATP_current__i_KATP - var_background_Kpl_current__i_Kpl - var_background_NSC_current__i_bNSC_K - var_background_NSC_current__i_bNSC_Na - var_background_lCa_current__i_lCa_K - var_background_lCa_current__i_lCa_Na - var_membrane__i_ext - var_rapid_time_dependent_potassium_current__i_Kr - var_slow_time_dependent_potassium_current__i_Ks_K - var_slow_time_dependent_potassium_current__i_Ks_Na - var_sodium_calcium_exchanger__i_NaCa - var_sodium_current__i_Na_K - var_sodium_current__i_Na_Na - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to_K - var_transient_outward_current__i_to_Na) / mParameters[9]; // millivolt / millisecond - - double evalF = d_dt_chaste_interface_var_membrane__Vm; - mEvalF[0] = d_dt_chaste_interface_var_membrane__Vm; - double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time, rY, delta, true); - if (fabs(partialF) < delta) - { - rY[v_index] += evalF*mDt; - } - else - { - rY[v_index] += (evalF/partialF)*(exp(partialF*mDt)-1.0); - } - } - - void Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) - { - std::vector& rY = rGetStateVariables(); - const double delta = 1e-8; - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; - // Units: dimensionless; Initial value: 1.779648367445368e-05 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; - // Units: dimensionless; Initial value: 0.3556412697995689 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; - // Units: dimensionless; Initial value: 0.40285968661346977 - double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; - // Units: dimensionless; Initial value: 0.5861887862983165 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; - // Units: dimensionless; Initial value: 0.9968480629364956 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; - // Units: dimensionless; Initial value: 0.000877325391245903 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; - // Units: dimensionless; Initial value: 0.4250747299372254 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; - // Units: dimensionless; Initial value: 1.6882718240109127e-05 - double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; - // Units: dimensionless; Initial value: 0.8585352091865849 - double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; - // Units: dimensionless; Initial value: 0.6080573900752752 - double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; - // Units: dimensionless; Initial value: 0.0018339931180983765 - double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; - // Units: dimensionless; Initial value: 0.20443083454225305 - double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; - // Units: dimensionless; Initial value: 0.967887666264921 - double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; - // Units: dimensionless; Initial value: 0.09738789658609195 - double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; - // Units: dimensionless; Initial value: 0.09745345578743213 - double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; - // Units: dimensionless; Initial value: 0.0007956883250874798 - double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; - // Units: dimensionless; Initial value: 0.9999125083105881 - double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; - // Units: dimensionless; Initial value: 0.9891789193465331 - double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; - // Units: dimensionless; Initial value: 0.5910747147428818 - double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; - // Units: dimensionless; Initial value: 0.46108441538480216 - double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; - // Units: dimensionless; Initial value: 0.00034314360001543243 - double var_chaste_interface__RyR_channel__p_close_RyR = rY[30]; - // Units: dimensionless; Initial value: 0.19135178123107768 - double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; - // Units: millimolar; Initial value: 9.455741736977666 - double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; - // Units: millimolar; Initial value: 2.611712901567567 - double var_chaste_interface__NL_model__pCa = rY[33]; - // Units: dimensionless; Initial value: 0.02490898775497523 - double var_chaste_interface__NL_model__pCaCB = rY[34]; - // Units: dimensionless; Initial value: 0.001990153835322864 - double var_chaste_interface__NL_model__pCB = rY[35]; - // Units: dimensionless; Initial value: 0.00042941813853474524 - double var_chaste_interface__NL_model__X = rY[36]; - // Units: micrometre; Initial value: 0.9573749975411884 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar - const double var_L_type_Ca_channel_Ca_dependent_gate__p_CCa = 1 - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; // dimensionless - const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless - const double var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL = 1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // dimensionless - const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond - const double var_NL_model__Q_a = -0.0038999999999999998 * var_chaste_interface__NL_model__pCaCB + 0.0038999999999999998 * var_chaste_interface__NL_model__pCa * exp(-0.86212130841993795); // per_millisecond - const double var_NL_model__Q_d2 = 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCaCB; // per_millisecond - const double var_SR_T_current__i_SR_T = 386 * var_chaste_interface__Ca_concentrations_in_SR__Caup - 386 * var_Ca_concentrations_in_SR__Carel; // picoA - const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond - const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_NL_model__Q_b = -0.029999999999999999 * var_chaste_interface__NL_model__pCa + 39 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB) * var_internal_ion_concentrations__Cai; // per_millisecond - const double d_dt_chaste_interface_var_NL_model__pCa = -var_NL_model__Q_a + var_NL_model__Q_b; // 1 / millisecond - const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond - const double d_dt_chaste_interface_var_NL_model__pCB = -0.12 * var_chaste_interface__NL_model__pCB - 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCB + var_NL_model__Q_r; // 1 / millisecond - const double d_dt_chaste_interface_var_NL_model__pCaCB = -var_NL_model__Q_d2 - var_NL_model__Q_r + var_NL_model__Q_a; // 1 / millisecond - const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA - const double var_SR_L_current__i_SR_L = (-var_internal_ion_concentrations__Cai + var_chaste_interface__Ca_concentrations_in_SR__Caup) * mParameters[0]; // picoA - const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless - const double var_SR_calcium_pump__i_SR_U = (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA - const double d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y = (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * (0.01 - 0.01 * var_SR_calcium_pump__p_E2Ca + var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) - (1 - 0.98999999999999999 * var_SR_calcium_pump__p_E1Ca) * var_chaste_interface__SR_calcium_pump_y_gate__y; // 1 / millisecond - const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless - const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total = 3.2387883511406234e-5 * var_SR_T_current__i_SR_T - 3.2387883511406234e-5 * var_RyR_channel__i_RyR; // millimolar / millisecond - const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup = -1.2955153404562494e-5 * var_SR_L_current__i_SR_L - 1.2955153404562494e-5 * var_SR_T_current__i_SR_T - 1.2955153404562494e-5 * var_SR_calcium_pump__i_SR_U; // millimolar / millisecond - const double d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y = (1 - var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y) / (_lt_0_row[8]) - var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y / (_lt_0_row[9]); // 1 / millisecond - const double var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI = _lt_0_row[10]; // per_millisecond - const double var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP = _lt_0_row[11]; // per_millisecond - const double var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI = _lt_0_row[12]; // per_millisecond - const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = 0.0040000000000000001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL - (0.001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; // 1 / millisecond - const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP = _lt_0_row[13]; // per_millisecond - const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = 0.001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL - (0.0040000000000000001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // 1 / millisecond - const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI = 0.040000000000000001 / (1 + 0.25 * var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI / (var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI * var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP)); // per_millisecond - const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = (0.040000000000000001 - var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - (var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // 1 / millisecond - const double d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1 = (1 - var_chaste_interface__T_type_Ca_channel_y1_gate__y1) / (_lt_0_row[14]) - var_chaste_interface__T_type_Ca_channel_y1_gate__y1 / (_lt_0_row[15]); // 1 / millisecond - const double d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2 = (1 - var_chaste_interface__T_type_Ca_channel_y2_gate__y2) / (_lt_0_row[16]) - var_chaste_interface__T_type_Ca_channel_y2_gate__y2 / (_lt_0_row[17]); // 1 / millisecond - const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar - const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA - const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA - const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar - const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C = 0.34999999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + 0.0041999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - (0.14299999999999999 + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C; // 1 / millisecond - const double var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca = 6.9539999999999997 * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // per_millisecond - const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U = 0.14299999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C + 2.0019999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa - (0.34999999999999998 + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond - const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa = 0.00029999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - 2.3519999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond - const double var_RyR_channel__k1 = 280000 * pow(var_internal_ion_concentrations__Cai, 2) / pow(mParameters[2], 2) - 150 * var_L_type_Ca_channel__p_open_CaL * var_L_type_Ca_channel_Ca_dependent_gate__iCaL; // per_millisecond - const double d_dt_chaste_interface_var_RyR_channel__p_close_RyR = -(0.00084900000000000004 + var_RyR_channel__k1) * var_chaste_interface__RyR_channel__p_close_RyR + 0.000377 * pow(var_Ca_concentrations_in_SR__Carel, 2) * (1 - var_chaste_interface__RyR_channel__p_close_RyR - var_chaste_interface__RyR_channel__p_open_RyR); // 1 / millisecond - const double d_dt_chaste_interface_var_RyR_channel__p_open_RyR = var_RyR_channel__k1 * var_chaste_interface__RyR_channel__p_close_RyR - 0.080000000000000002 * var_chaste_interface__RyR_channel__p_open_RyR / (1 + 0.35999999999999999 / var_Ca_concentrations_in_SR__Carel); // 1 / millisecond - const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA - const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA - const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar - const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA - const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K / (_lt_0_row[7]))); // picoA - const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA - const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA - const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar - const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA - const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA - const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA - const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA - const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1 = -(_lt_0_row[18]) * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 + (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) / (_lt_0_row[19]); // 1 / millisecond - const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2 = -(_lt_0_row[20]) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2) / (_lt_0_row[21]); // 1 / millisecond - const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3 = (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3) / (_lt_0_row[22]) - var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 / (_lt_0_row[23]); // 1 / millisecond - const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1 = (1 - var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1) / (_lt_0_row[24]) - var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 / (_lt_0_row[25]); // 1 / millisecond - const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2 = -0.004444 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 + 3.7000000000000002 * (1 - var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_internal_ion_concentrations__Cai; // 1 / millisecond - const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA - const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA - const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond - const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond - const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless - const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless - const double d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y = (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * (1 / (1 + 1.3799999999999999 * (1 + 1.4927113702623908e-6 * pow(mParameters[7], 3)) / mParameters[5]) + var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) - (1 / (1 + 0.0013799999999999999 * (1 + 0.0014927113702623907 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)) / var_internal_ion_concentrations__Cai) + var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na) * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; // 1 / millisecond - const double var_sodium_calcium_exchanger__i_NaCa = (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA - const double d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total = 0.070000000000000007 * var_NL_model__Q_d2 + 0.070000000000000007 * var_NL_model__Q_r + 6.4775767022812476e-7 * var_RyR_channel__i_RyR + 6.4775767022812476e-7 * var_SR_L_current__i_SR_L + 6.4775767022812476e-7 * var_SR_calcium_pump__i_SR_U + 1.2955153404562495e-6 * var_sodium_calcium_exchanger__i_NaCa - 0.070000000000000007 * var_NL_model__Q_b - 6.4775767022812476e-7 * var_L_type_Ca_channel__i_CaL_Ca - 6.4775767022812476e-7 * var_T_type_Ca_channel__i_Ca_T - 6.4775767022812476e-7 * var_background_Cab_current__i_Cab; // millimolar / millisecond - const double d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y = (1 - var_chaste_interface__sodium_current_ultra_slow_gate__y) / (_lt_0_row[28]) - var_chaste_interface__sodium_current_ultra_slow_gate__y / (_lt_0_row[29]); // 1 / millisecond - const double var_sodium_current_voltage_dependent_gate__k_AI_RI = _lt_0_row[30]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_AP_RP = _lt_0_row[32]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_RI_AI = _lt_0_row[33]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_RP_AP = _lt_0_row[34]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_RP_RI = 0.01 / (1 + 8.7499999999999999e-5 * var_sodium_current_voltage_dependent_gate__k_AP_RP * var_sodium_current_voltage_dependent_gate__k_RI_AI / (var_sodium_current_voltage_dependent_gate__k_AI_RI * var_sodium_current_voltage_dependent_gate__k_AP_AI * var_sodium_current_voltage_dependent_gate__k_RP_AP)); // per_millisecond - const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA - const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA - const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na = 8.7499999999999999e-5 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na + var_sodium_current_voltage_dependent_gate__k_RP_AP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na - (var_sodium_current_voltage_dependent_gate__k_AP_AI + var_sodium_current_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // 1 / millisecond - const double var_sodium_current_voltage_dependent_gate__p_RI_Na = 1 - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // dimensionless - const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na = var_sodium_current_voltage_dependent_gate__k_AP_AI * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + var_sodium_current_voltage_dependent_gate__k_RI_AI * var_sodium_current_voltage_dependent_gate__p_RI_Na - (8.7499999999999999e-5 + var_sodium_current_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na; // 1 / millisecond - const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na = (0.01 - var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_sodium_current_voltage_dependent_gate__p_RI_Na + var_sodium_current_voltage_dependent_gate__k_AP_RP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - (var_sodium_current_voltage_dependent_gate__k_RP_AP + var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // 1 / millisecond - const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar - const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond - const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless - const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless - const double d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y = (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * (0.040000000000000001 * var_sodium_potassium_pump__p_E2Na + 0.16500000000000001 / (1 + 0.21928759810465578 * pow((1 / mParameters[6]), 1.1200000000000001) * (1 + 0.011104864200909382 * pow(var_sodium_potassium_pump__Nao_Eff, 1.0600000000000001)))) - (0.01 / (1 + 49.999265664512095 * pow((1 / var_chaste_interface__internal_ion_concentrations__Ki), 1.1200000000000001) * (1 + 0.22703754152993499 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 1.0600000000000001))) + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na) * var_chaste_interface__sodium_potassium_pump_y_gate__y; // 1 / millisecond - const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA - const double d_dt_chaste_interface_var_ATP_production__ATPi = 0.014999999999999999 + 3.2387883511406238e-7 * var_SR_calcium_pump__i_SR_U - 0.0030000000000000001 * var_chaste_interface__ATP_production__ATPi - 0.028000000000000004 * var_chaste_interface__NL_model__pCaCB - 1.2955153404562495e-6 * var_sodium_potassium_pump__i_NaK; // millimolar / millisecond - const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt - const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA - const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA - const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless - const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless - const double d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y = (1 - var_chaste_interface__time_independent_potassium_current_y_gate__y) / (7 * exp(-0.32333333333333331 + 0.0033333333333333335 * var_chaste_interface__membrane__Vm - 0.0033333333333333335 * var_time_independent_potassium_current__E_K) + 8000 * exp(-11.411764705882353 + 0.11764705882352941 * var_chaste_interface__membrane__Vm - 0.11764705882352941 * var_time_independent_potassium_current__E_K)) - pow(var_time_independent_potassium_current__fO, 4) * var_chaste_interface__time_independent_potassium_current_y_gate__y / (0.00013999999999999999 * exp(10.659340659340661 + 0.10989010989010989 * var_time_independent_potassium_current__E_K - 0.10989010989010989 * var_chaste_interface__membrane__Vm) + 0.20000000000000001 * exp(0.19400000000000001 + 0.002 * var_time_independent_potassium_current__E_K - 0.002 * var_chaste_interface__membrane__Vm)); // 1 / millisecond - const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA - const double d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1 = (1 - var_chaste_interface__transient_outward_current_y1_gate__y1) / (_lt_0_row[35]) - var_chaste_interface__transient_outward_current_y1_gate__y1 / (_lt_0_row[36]); // 1 / millisecond - const double d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2 = 0.0038 * (1 - var_chaste_interface__transient_outward_current_y2_gate__y2) * _lt_0_row[38] / (_lt_0_row[37]) - 0.0038 * var_chaste_interface__transient_outward_current_y2_gate__y2 * _lt_0_row[40] / (_lt_0_row[39]); // 1 / millisecond - const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA - const double d_dt_chaste_interface_var_internal_ion_concentrations__Ki = -1.2955153404562495e-6 * (-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_K + var_background_KATP_current__i_KATP + var_background_Kpl_current__i_Kpl + var_background_NSC_current__i_bNSC_K + var_background_lCa_current__i_lCa_K + var_membrane__i_ext + var_rapid_time_dependent_potassium_current__i_Kr + var_slow_time_dependent_potassium_current__i_Ks_K + var_sodium_current__i_Na_K + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to_K) * mParameters[4]; // millimolar / millisecond - const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA - const double d_dt_chaste_interface_var_internal_ion_concentrations__Nai = -1.2955153404562495e-6 * (3 * var_sodium_calcium_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_Na + var_background_NSC_current__i_bNSC_Na + var_background_lCa_current__i_lCa_Na + var_slow_time_dependent_potassium_current__i_Ks_Na + var_sodium_current__i_Na_Na + var_transient_outward_current__i_to_Na) * mParameters[4]; // millimolar / millisecond - - mEvalF[1] = d_dt_chaste_interface_var_internal_ion_concentrations__Nai; - mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time, rY, delta); - mEvalF[2] = d_dt_chaste_interface_var_internal_ion_concentrations__Ki; - mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time, rY, delta); - mEvalF[3] = d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total; - mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time, rY, delta); - mEvalF[4] = d_dt_chaste_interface_var_ATP_production__ATPi; - mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time, rY, delta); - mEvalF[5] = d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na; - mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time, rY, delta); - mEvalF[6] = d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na; - mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time, rY, delta); - mEvalF[7] = d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na; - mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time, rY, delta); - mEvalF[8] = d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y; - mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time, rY, delta); - mEvalF[9] = d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time, rY, delta); - mEvalF[10] = d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; - mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time, rY, delta); - mEvalF[11] = d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; - mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time, rY, delta); - mEvalF[12] = d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U; - mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time, rY, delta); - mEvalF[13] = d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa; - mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time, rY, delta); - mEvalF[14] = d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C; - mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time, rY, delta); - mEvalF[15] = d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y; - mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time, rY, delta); - mEvalF[16] = d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1; - mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time, rY, delta); - mEvalF[17] = d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2; - mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time, rY, delta); - mEvalF[18] = d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y; - mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time, rY, delta); - mEvalF[19] = d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1; - mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time, rY, delta); - mEvalF[20] = d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2; - mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time, rY, delta); - mEvalF[21] = d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3; - mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time, rY, delta); - mEvalF[22] = d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1; - mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time, rY, delta); - mEvalF[23] = d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2; - mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time, rY, delta); - mEvalF[24] = d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1; - mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time, rY, delta); - mEvalF[25] = d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2; - mPartialF[25] = EvaluatePartialDerivative25(var_chaste_interface__environment__time, rY, delta); - mEvalF[26] = d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y; - mPartialF[26] = EvaluatePartialDerivative26(var_chaste_interface__environment__time, rY, delta); - mEvalF[27] = d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y; - mPartialF[27] = EvaluatePartialDerivative27(var_chaste_interface__environment__time, rY, delta); - mEvalF[28] = d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y; - mPartialF[28] = EvaluatePartialDerivative28(var_chaste_interface__environment__time, rY, delta); - mEvalF[29] = d_dt_chaste_interface_var_RyR_channel__p_open_RyR; - mPartialF[29] = EvaluatePartialDerivative29(var_chaste_interface__environment__time, rY, delta); - mEvalF[30] = d_dt_chaste_interface_var_RyR_channel__p_close_RyR; - mPartialF[30] = EvaluatePartialDerivative30(var_chaste_interface__environment__time, rY, delta); - mEvalF[31] = d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total; - mPartialF[31] = EvaluatePartialDerivative31(var_chaste_interface__environment__time, rY, delta); - mEvalF[32] = d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup; - mPartialF[32] = EvaluatePartialDerivative32(var_chaste_interface__environment__time, rY, delta); - mEvalF[33] = d_dt_chaste_interface_var_NL_model__pCa; - mPartialF[33] = EvaluatePartialDerivative33(var_chaste_interface__environment__time, rY, delta); - mEvalF[34] = d_dt_chaste_interface_var_NL_model__pCaCB; - mPartialF[34] = EvaluatePartialDerivative34(var_chaste_interface__environment__time, rY, delta); - mEvalF[35] = d_dt_chaste_interface_var_NL_model__pCB; - mPartialF[35] = EvaluatePartialDerivative35(var_chaste_interface__environment__time, rY, delta); - mEvalF[36] = d_dt_chaste_interface_var_NL_model__X; - mPartialF[36] = EvaluatePartialDerivative36(var_chaste_interface__environment__time, rY, delta); - - { - if (fabs(mPartialF[1]) < delta){ - rY[1] += mDt*d_dt_chaste_interface_var_internal_ion_concentrations__Nai; - } - else - { - rY[1] += (d_dt_chaste_interface_var_internal_ion_concentrations__Nai/mPartialF[1])*(exp(mPartialF[1]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[2]) < delta){ - rY[2] += mDt*d_dt_chaste_interface_var_internal_ion_concentrations__Ki; - } - else - { - rY[2] += (d_dt_chaste_interface_var_internal_ion_concentrations__Ki/mPartialF[2])*(exp(mPartialF[2]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[3]) < delta){ - rY[3] += mDt*d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total; - } - else - { - rY[3] += (d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total/mPartialF[3])*(exp(mPartialF[3]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[4]) < delta){ - rY[4] += mDt*d_dt_chaste_interface_var_ATP_production__ATPi; - } - else - { - rY[4] += (d_dt_chaste_interface_var_ATP_production__ATPi/mPartialF[4])*(exp(mPartialF[4]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[5]) < delta){ - rY[5] += mDt*d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na; - } - else - { - rY[5] += (d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na/mPartialF[5])*(exp(mPartialF[5]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[6]) < delta){ - rY[6] += mDt*d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na; - } - else - { - rY[6] += (d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na/mPartialF[6])*(exp(mPartialF[6]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[7]) < delta){ - rY[7] += mDt*d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na; - } - else - { - rY[7] += (d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na/mPartialF[7])*(exp(mPartialF[7]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[8]) < delta){ - rY[8] += mDt*d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y; - } - else - { - rY[8] += (d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y/mPartialF[8])*(exp(mPartialF[8]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[9]) < delta){ - rY[9] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - } - else - { - rY[9] += (d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL/mPartialF[9])*(exp(mPartialF[9]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[10]) < delta){ - rY[10] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; - } - else - { - rY[10] += (d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL/mPartialF[10])*(exp(mPartialF[10]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[11]) < delta){ - rY[11] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; - } - else - { - rY[11] += (d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL/mPartialF[11])*(exp(mPartialF[11]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[12]) < delta){ - rY[12] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U; - } - else - { - rY[12] += (d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U/mPartialF[12])*(exp(mPartialF[12]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[13]) < delta){ - rY[13] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa; - } - else - { - rY[13] += (d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa/mPartialF[13])*(exp(mPartialF[13]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[14]) < delta){ - rY[14] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C; - } - else - { - rY[14] += (d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C/mPartialF[14])*(exp(mPartialF[14]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[15]) < delta){ - rY[15] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y; - } - else - { - rY[15] += (d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y/mPartialF[15])*(exp(mPartialF[15]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[16]) < delta){ - rY[16] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1; - } - else - { - rY[16] += (d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1/mPartialF[16])*(exp(mPartialF[16]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[17]) < delta){ - rY[17] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2; - } - else - { - rY[17] += (d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2/mPartialF[17])*(exp(mPartialF[17]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[18]) < delta){ - rY[18] += mDt*d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y; - } - else - { - rY[18] += (d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y/mPartialF[18])*(exp(mPartialF[18]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[19]) < delta){ - rY[19] += mDt*d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1; - } - else - { - rY[19] += (d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1/mPartialF[19])*(exp(mPartialF[19]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[20]) < delta){ - rY[20] += mDt*d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2; - } - else - { - rY[20] += (d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2/mPartialF[20])*(exp(mPartialF[20]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[21]) < delta){ - rY[21] += mDt*d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3; - } - else - { - rY[21] += (d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3/mPartialF[21])*(exp(mPartialF[21]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[22]) < delta){ - rY[22] += mDt*d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1; - } - else - { - rY[22] += (d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1/mPartialF[22])*(exp(mPartialF[22]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[23]) < delta){ - rY[23] += mDt*d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2; - } - else - { - rY[23] += (d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2/mPartialF[23])*(exp(mPartialF[23]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[24]) < delta){ - rY[24] += mDt*d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1; - } - else - { - rY[24] += (d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1/mPartialF[24])*(exp(mPartialF[24]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[25]) < delta){ - rY[25] += mDt*d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2; - } - else - { - rY[25] += (d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2/mPartialF[25])*(exp(mPartialF[25]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[26]) < delta){ - rY[26] += mDt*d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y; - } - else - { - rY[26] += (d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y/mPartialF[26])*(exp(mPartialF[26]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[27]) < delta){ - rY[27] += mDt*d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y; - } - else - { - rY[27] += (d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y/mPartialF[27])*(exp(mPartialF[27]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[28]) < delta){ - rY[28] += mDt*d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y; - } - else - { - rY[28] += (d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y/mPartialF[28])*(exp(mPartialF[28]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[29]) < delta){ - rY[29] += mDt*d_dt_chaste_interface_var_RyR_channel__p_open_RyR; - } - else - { - rY[29] += (d_dt_chaste_interface_var_RyR_channel__p_open_RyR/mPartialF[29])*(exp(mPartialF[29]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[30]) < delta){ - rY[30] += mDt*d_dt_chaste_interface_var_RyR_channel__p_close_RyR; - } - else - { - rY[30] += (d_dt_chaste_interface_var_RyR_channel__p_close_RyR/mPartialF[30])*(exp(mPartialF[30]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[31]) < delta){ - rY[31] += mDt*d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total; - } - else - { - rY[31] += (d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total/mPartialF[31])*(exp(mPartialF[31]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[32]) < delta){ - rY[32] += mDt*d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup; - } - else - { - rY[32] += (d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup/mPartialF[32])*(exp(mPartialF[32]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[33]) < delta){ - rY[33] += mDt*d_dt_chaste_interface_var_NL_model__pCa; - } - else - { - rY[33] += (d_dt_chaste_interface_var_NL_model__pCa/mPartialF[33])*(exp(mPartialF[33]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[34]) < delta){ - rY[34] += mDt*d_dt_chaste_interface_var_NL_model__pCaCB; - } - else - { - rY[34] += (d_dt_chaste_interface_var_NL_model__pCaCB/mPartialF[34])*(exp(mPartialF[34]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[35]) < delta){ - rY[35] += mDt*d_dt_chaste_interface_var_NL_model__pCB; - } - else - { - rY[35] += (d_dt_chaste_interface_var_NL_model__pCB/mPartialF[35])*(exp(mPartialF[35]*mDt)-1.0); - } - - } - { - if (fabs(mPartialF[36]) < delta){ - rY[36] += mDt*d_dt_chaste_interface_var_NL_model__X; - } - else - { - rY[36] += (d_dt_chaste_interface_var_NL_model__X/mPartialF[36])*(exp(mPartialF[36]*mDt)-1.0); - } - - } - - } - - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative0(double var_chaste_interface__environment__time, std::vector& rY) - { - double d_dt_chaste_interface_var_membrane__Vm; - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; - // Units: dimensionless; Initial value: 1.779648367445368e-05 - double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; - // Units: dimensionless; Initial value: 0.5861887862983165 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; - // Units: dimensionless; Initial value: 1.6882718240109127e-05 - double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; - // Units: dimensionless; Initial value: 0.8585352091865849 - double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; - // Units: dimensionless; Initial value: 0.6080573900752752 - double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; - // Units: dimensionless; Initial value: 0.0018339931180983765 - double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; - // Units: dimensionless; Initial value: 0.20443083454225305 - double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; - // Units: dimensionless; Initial value: 0.967887666264921 - double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; - // Units: dimensionless; Initial value: 0.09738789658609195 - double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; - // Units: dimensionless; Initial value: 0.09745345578743213 - double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; - // Units: dimensionless; Initial value: 0.0007956883250874798 - double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; - // Units: dimensionless; Initial value: 0.9999125083105881 - double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; - // Units: dimensionless; Initial value: 0.9891789193465331 - double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; - // Units: dimensionless; Initial value: 0.5910747147428818 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless - const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar - const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA - const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA - const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA - const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar - const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA - const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K / (_lt_0_row[7]))); // picoA - const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA - const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA - const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar - const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA - const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA - const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA - const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA - const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA - const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA - const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond - const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond - const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless - const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless - const double var_sodium_calcium_exchanger__i_NaCa = (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA - const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA - const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA - const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar - const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond - const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless - const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA - const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt - const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA - const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA - const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless - const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless - const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA - const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA - const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA - d_dt_chaste_interface_var_membrane__Vm = (-var_L_type_Ca_channel__i_CaL_Ca - var_L_type_Ca_channel__i_CaL_K - var_L_type_Ca_channel__i_CaL_Na - var_T_type_Ca_channel__i_Ca_T - var_background_Cab_current__i_Cab - var_background_KATP_current__i_KATP - var_background_Kpl_current__i_Kpl - var_background_NSC_current__i_bNSC_K - var_background_NSC_current__i_bNSC_Na - var_background_lCa_current__i_lCa_K - var_background_lCa_current__i_lCa_Na - var_membrane__i_ext - var_rapid_time_dependent_potassium_current__i_Kr - var_slow_time_dependent_potassium_current__i_Ks_K - var_slow_time_dependent_potassium_current__i_Ks_Na - var_sodium_calcium_exchanger__i_NaCa - var_sodium_current__i_Na_K - var_sodium_current__i_Na_Na - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to_K - var_transient_outward_current__i_to_Na) / mParameters[9]; // millivolt / millisecond - - return d_dt_chaste_interface_var_membrane__Vm; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative0(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; - // Units: dimensionless; Initial value: 1.779648367445368e-05 - double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; - // Units: dimensionless; Initial value: 0.5861887862983165 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; - // Units: dimensionless; Initial value: 1.6882718240109127e-05 - double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; - // Units: dimensionless; Initial value: 0.8585352091865849 - double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; - // Units: dimensionless; Initial value: 0.6080573900752752 - double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; - // Units: dimensionless; Initial value: 0.0018339931180983765 - double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; - // Units: dimensionless; Initial value: 0.20443083454225305 - double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; - // Units: dimensionless; Initial value: 0.967887666264921 - double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; - // Units: dimensionless; Initial value: 0.09738789658609195 - double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; - // Units: dimensionless; Initial value: 0.09745345578743213 - double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; - // Units: dimensionless; Initial value: 0.0007956883250874798 - double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; - // Units: dimensionless; Initial value: 0.9999125083105881 - double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; - // Units: dimensionless; Initial value: 0.9891789193465331 - double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; - // Units: dimensionless; Initial value: 0.5910747147428818 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - const double var_x0 = 1 / mParameters[9]; - const double var_x1 = var_chaste_interface__membrane__Vm == 0; - const double var_x2 = 0.037435192301797954 * var_chaste_interface__membrane__Vm; - const double var_x3 = exp(-var_x2); - const double var_x4 = var_x3 * mParameters[6]; - const double var_x5 = -var_x4 + var_chaste_interface__internal_ion_concentrations__Ki; - const double var_x6 = 1 - var_x3; - const double var_x7 = 1 / var_x6; - const double var_x8 = 0.037435192301797954 * var_x7; - const double var_x9 = 0.0014013936226725929 * var_chaste_interface__membrane__Vm; - const double var_x10 = var_x7 * var_x9; - const double var_x11 = var_x3 * var_x9 / pow(var_x6, 2); - const double var_x12 = ((var_x1) ? (0) : (var_x10 * var_x4 + var_x5 * var_x8 - var_x11 * var_x5)); - const double var_x13 = pow(mParameters[6], 0.16); - const double var_x14 = 0.0010924717003124302 * var_x13; - const double var_x15 = var_chaste_interface__membrane__Vm == (-3); - const double var_x16 = var_x2 * var_x7; - const double var_x17 = ((var_x1) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (var_x16 * var_x5)); - const double var_x18 = var_x13 * var_x17; - const double var_x19 = -0.076923076923076927 * var_chaste_interface__membrane__Vm; - const double var_x20 = exp(-0.23076923076923078 + var_x19); - const double var_x21 = 1 - var_x20; - const double var_x22 = 8.3986538766456042e-5 / var_x21; - const double var_x23 = 3 + var_chaste_interface__membrane__Vm; - const double var_x24 = var_x13 * var_x22 * var_x23; - const double var_x25 = ((var_x15) ? (var_x12 * var_x14) : (var_x12 * var_x24 + var_x18 * var_x22 - 6.4605029820350801e-6 * var_x18 * var_x20 * var_x23 / pow(var_x21, 2))); - const double var_x26 = var_x3 * mParameters[7]; - const double var_x27 = -var_x26 + var_chaste_interface__internal_ion_concentrations__Nai; - const double var_x28 = ((var_x1) ? (0) : (var_x10 * var_x26 + var_x27 * var_x8 - var_x11 * var_x27)); - const double var_x29 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; - const double var_x30 = exp(-var_x29); - const double var_x31 = 1 - var_x30; - const double var_x32 = 1 / var_x31; - const double var_x33 = var_x30 * mParameters[5]; - const double var_x34 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x35 = -0.026190000000000001 + 0.5 * var_x34 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x36 = var_x35 - var_x33; - const double var_x37 = var_x32 * var_x36; - const double var_x38 = 0.0056055744906903715 * var_chaste_interface__membrane__Vm; - const double var_x39 = ((var_x1) ? (0) : (0.074870384603595908 * var_x37 + var_x32 * var_x33 * var_x38 - var_x30 * var_x36 * var_x38 / pow(var_x31, 2))); - const double var_x40 = -0.052380000000000003 + var_x34 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x41 = 1 + 1.3823999999999997e-8 / pow(var_x40, 3); - const double var_x42 = 1 / var_x41; - const double var_x43 = 0.11 * var_x42; - const double var_x44 = pow(var_chaste_interface__ATP_production__ATPi, 2); - const double var_x45 = pow(mParameters[6], 0.23999999999999999); - const double var_x46 = var_x45 / (1 + 99.999999999999986 * var_x44); - const double var_x47 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); - const double var_x48 = 1 / var_x47; - const double var_x49 = -17.978260869565219 + 362.31884057971018 * var_x34 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x50 = var_x48 * var_x49; - const double var_x51 = _lt_0_row[5]; - const double var_x52 = var_x51 / (1 + 669.921875 * var_x50); - const double var_x53 = var_x52 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; - const double var_x54 = pow(mParameters[7], 3); - const double var_x55 = _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / var_x54); - const double var_x56 = var_x55 * (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y); - const double var_x57 = -0.011979261536575346 * var_x53 - 0.025455930765222609 * var_x56; - const double var_x58 = mParameters[9] * mParameters[14]; - const double var_x59 = 612 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2; - const double var_x60 = var_x59 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1; - const double var_x61 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); - const double var_x62 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; - const double var_x63 = var_x61 * var_x62; - const double var_x64 = 0.2016 * var_x63; - const double var_x65 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); - const double var_x66 = 0.00297 * var_x65; - const double var_x67 = var_x66 * var_chaste_interface__transient_outward_current_y2_gate__y2; - const double var_x68 = var_x63 * mParameters[13]; - const double var_x69 = var_x12 * var_x68; - const double var_x70 = var_x65 * mParameters[15]; - const double var_x71 = var_x70 * var_chaste_interface__transient_outward_current_y2_gate__y2; - const double var_x72 = var_x12 * var_x71; - const double var_x73 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; - const double var_x74 = var_x73 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; - const double var_x75 = var_x28 * var_x74; - const double var_x76 = 0.10000000000000001 * var_x74; - const double var_x77 = 1 - var_chaste_interface__sodium_potassium_pump_y_gate__y; - const double var_x78 = _lt_0_row[4]; - const double var_x79 = pow((1 / (var_x78 * mParameters[7])), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001)); - const double var_x80 = var_x79 / pow((0.011104864200909382 + var_x79), 2); - const double var_x81 = var_x77 * var_x80 * mParameters[9]; - const double var_x82 = 0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1; - const double var_x83 = 0.71370912277944121 * var_x82; - const double var_x84 = pow(mParameters[6], 0.20000000000000001); - const double var_x85 = var_x84 * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; - const double var_x86 = pow(mParameters[6], 0.40000000000000002); - const double var_x87 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; - const double var_x88 = log(var_x87 * mParameters[6]); - const double var_x89 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x88); - const double var_x90 = 1 + var_x89; - const double var_x91 = pow(var_x90, 4); - const double var_x92 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x88); - const double var_x93 = 1 + var_x92; - const double var_x94 = pow(var_x93, (-4)); - const double var_x95 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x88); - const double var_x96 = 1 + var_x95; - const double var_x97 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x88); - const double var_x98 = var_x97 / var_x96; - const double var_x99 = exp(0.47999999999999998 + 1.282215932351298 * var_x88 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); - const double var_x100 = var_x99 / var_x93; - const double var_x101 = var_x100 * var_x90; - const double var_x102 = var_x101 + 0.25 * var_x98; - const double var_x103 = pow(var_x102, (-4)); - const double var_x104 = pow(var_x99, 4); - const double var_x105 = var_x103 * var_x104 * var_x94; - const double var_x106 = var_x105 * var_x91; - const double var_x107 = var_x106; - const double var_x108 = pow(var_x96, (-2)); - const double var_x109 = pow(var_x99, 2); - const double var_x110 = pow(var_x97, 2); - const double var_x111 = var_x103 * var_x108 * var_x109 * var_x110; - const double var_x112 = pow(var_x93, (-2)); - const double var_x113 = pow(var_x90, 2); - const double var_x114 = var_x112 * var_x113; - const double var_x115 = var_x111 * var_x114; - const double var_x116 = pow(var_x90, 3); - const double var_x117 = pow(var_x93, (-3)); - const double var_x118 = pow(var_x99, 3); - const double var_x119 = var_x116 * var_x117 * var_x118 * var_x98; - const double var_x120 = 1 / (0.75 * var_x98 + 3 * var_x101); - const double var_x121 = var_x120 / pow(var_x102, 3); - const double var_x122 = var_x119 * var_x121; - const double var_x123 = var_x86 * (var_x107 + 0.125 * var_x115 + 2 * var_x122) * mParameters[11]; - const double var_x124 = 0.50938071193859957 * var_x123; - const double var_x125 = mParameters[9] * var_chaste_interface__time_independent_potassium_current_y_gate__y; - const double var_x126 = var_x39 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - const double var_x127 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; - const double var_x128 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); - const double var_x129 = 1 / (1 + 2.7439999999999993 * var_x128); - const double var_x130 = var_x129 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; - const double var_x131 = var_x127 * var_x130; - const double var_x132 = var_x126 * var_x131; - const double var_x133 = var_x130 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - const double var_x134 = var_x127 * var_x133; - const double var_x135 = 0.00036499999999999998 * var_x134; - const double var_x136 = 1.8499999999999999e-5 * var_x134; - const double var_x137 = 0.192 * var_x106; - const double var_x138 = pow(var_x102, (-5)); - const double var_x139 = var_x108 * var_x95 * var_x97; - const double var_x140 = var_x100 * var_x89; - const double var_x141 = 0.12 * var_x92; - const double var_x142 = var_x112 * var_x90; - const double var_x143 = var_x142 * var_x99; - const double var_x144 = var_x138 * (0.014999999999999999 * var_x139 + 0.192 * var_x101 - 0.25600000000000001 * var_x140 - 0.035000000000000003 * var_x98 + var_x141 * var_x143); - const double var_x145 = var_x104 * var_x91; - const double var_x146 = var_x145 * var_x94; - const double var_x147 = var_x144 * var_x146; - const double var_x148 = var_x105 * var_x116 * var_x89; - const double var_x149 = 0.25600000000000001 * var_x148; - const double var_x150 = var_x103 * var_x145 / pow(var_x93, 5); - const double var_x151 = var_x141 * var_x150; - const double var_x152 = var_x109 * var_x110 * var_x114; - const double var_x153 = 0.125 * var_x108 * var_x152; - const double var_x154 = var_x111 * var_x142 * var_x89; - const double var_x155 = var_x143 * var_x92; - const double var_x156 = var_x119 * (0.01125 * var_x139 + 0.089999999999999997 * var_x155 + 0.14400000000000002 * var_x101 - 0.192 * var_x140 - 0.026250000000000002 * var_x98); - const double var_x157 = 0.22222222222222221 * var_x138; - const double var_x158 = var_x103 * var_x152 * var_x95 / pow(var_x96, 3); - const double var_x159 = var_x113 * var_x117; - const double var_x160 = var_x111 * var_x159; - const double var_x161 = 2 * var_x103 * var_x120; - const double var_x162 = var_x118 * var_x121; - const double var_x163 = var_x162 * var_x98; - const double var_x164 = var_x159 * var_x89; - const double var_x165 = var_x116 * var_x162; - const double var_x166 = var_x117 * var_x165; - const double var_x167 = var_x92 * var_x94; - const double var_x168 = var_x147 + var_x149 - var_x137 - var_x151 + 0.016 * var_x154 - 0.0032499999999999994 * var_x115 - 0.0037499999999999999 * var_x158 - 0.218 * var_x122 + var_x144 * var_x153 + var_x156 * var_x157 + var_x156 * var_x161 + 0.38400000000000001 * var_x163 * var_x164 - 0.0074999999999999997 * var_x160 * var_x92 - 0.029999999999999999 * var_x139 * var_x166 - 0.17999999999999999 * var_x116 * var_x163 * var_x167; - const double var_x169 = -26.712831923985377 * var_x88 + var_chaste_interface__membrane__Vm; - const double var_x170 = var_x125 * var_x169 * var_x86 * mParameters[11]; - const double var_x171 = 0.50938071193859957 * var_x170; - - partialF = var_x0 * (-var_x132 - var_x25 - var_x69 - var_x72 - var_x75 - 0.38500000000000001 * var_x28 - 0.040000000000000001 * var_x39 - 0.0003035235018269044 * var_x81 - 44.047040000000003 * var_x46 - 0.15400000000000003 * var_x12 + var_x57 * var_x58 - var_x12 * var_x135 - var_x12 * var_x43 - var_x12 * var_x76 - var_x124 * var_x125 - var_x136 * var_x28 - var_x168 * var_x171 - var_x28 * var_x43 - var_x28 * var_x64 - var_x28 * var_x67 - var_x39 * var_x60 - var_x83 * var_x85); - } - else - { - const double y_save = rY[0]; - rY[0] += delta; - const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[0])/delta; - rY[0] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative1(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; - // Units: dimensionless; Initial value: 1.779648367445368e-05 - double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; - // Units: dimensionless; Initial value: 0.5861887862983165 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; - // Units: dimensionless; Initial value: 0.09738789658609195 - double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; - // Units: dimensionless; Initial value: 0.09745345578743213 - double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; - // Units: dimensionless; Initial value: 0.0007956883250874798 - double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; - // Units: dimensionless; Initial value: 0.9999125083105881 - double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; - // Units: dimensionless; Initial value: 0.9891789193465331 - double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; - // Units: dimensionless; Initial value: 0.5910747147428818 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless - const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar - const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA - const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA - const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA - const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA - const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond - const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond - const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless - const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless - const double var_sodium_calcium_exchanger__i_NaCa = (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA - const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA - const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar - const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond - const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless - const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA - const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA - const double d_dt_chaste_interface_var_internal_ion_concentrations__Nai = -1.2955153404562495e-6 * (3 * var_sodium_calcium_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_Na + var_background_NSC_current__i_bNSC_Na + var_background_lCa_current__i_lCa_Na + var_slow_time_dependent_potassium_current__i_Ks_Na + var_sodium_current__i_Na_Na + var_transient_outward_current__i_to_Na) * mParameters[4]; // millimolar / millisecond - - return d_dt_chaste_interface_var_internal_ion_concentrations__Nai; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative1(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; - // Units: dimensionless; Initial value: 1.779648367445368e-05 - double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; - // Units: dimensionless; Initial value: 0.5861887862983165 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; - // Units: dimensionless; Initial value: 0.09738789658609195 - double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; - // Units: dimensionless; Initial value: 0.09745345578743213 - double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; - // Units: dimensionless; Initial value: 0.0007956883250874798 - double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; - // Units: dimensionless; Initial value: 0.9999125083105881 - double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; - // Units: dimensionless; Initial value: 0.9891789193465331 - double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; - // Units: dimensionless; Initial value: 0.5910747147428818 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - const double var_x1 = var_chaste_interface__membrane__Vm == 0; - const double var_x2 = 0.037435192301797954 * var_chaste_interface__membrane__Vm; - const double var_x3 = exp(-var_x2); - const double var_x6 = 1 - var_x3; - const double var_x7 = 1 / var_x6; - const double var_x16 = var_x2 * var_x7; - const double var_x34 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x40 = -0.052380000000000003 + var_x34 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x41 = 1 + 1.3823999999999997e-8 / pow(var_x40, 3); - const double var_x42 = 1 / var_x41; - const double var_x47 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); - const double var_x48 = 1 / var_x47; - const double var_x49 = -17.978260869565219 + 362.31884057971018 * var_x34 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x50 = var_x48 * var_x49; - const double var_x51 = _lt_0_row[5]; - const double var_x58 = mParameters[9] * mParameters[14]; - const double var_x61 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); - const double var_x62 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; - const double var_x63 = var_x61 * var_x62; - const double var_x65 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); - const double var_x73 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; - const double var_x74 = var_x73 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; - const double var_x127 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; - const double var_x128 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); - const double var_x129 = 1 / (1 + 2.7439999999999993 * var_x128); - const double var_x130 = var_x129 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; - const double var_x133 = var_x130 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - const double var_x134 = var_x127 * var_x133; - const double var_x172 = ((var_x1) ? (0) : (var_x16)); - const double var_x173 = var_x172 * var_x74; - const double var_x174 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; - const double var_x175 = pow(var_x174, 1.0600000000000001); - const double var_x176 = var_x175 * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001)); - const double var_x177 = 1 / var_chaste_interface__ATP_production__ATPi; - const double var_x178 = 1 + 0.094 * var_x177; - const double var_x179 = 1 / var_x178; - const double var_x180 = var_x179 / pow((0.22703754152993499 + var_x176), 2); - const double var_x181 = var_x174 * var_x176 * var_x180; - const double var_x182 = mParameters[9] * var_chaste_interface__sodium_potassium_pump_y_gate__y; - const double var_x183 = var_x181 * var_x182; - const double var_x184 = var_x51 / pow((0.0014927113702623907 + var_x50), 2); - const double var_x185 = var_x184 * var_x49 / pow(var_chaste_interface__internal_ion_concentrations__Nai, 4); - const double var_x187 = var_x58 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; - const double var_x266 = 1.4250668745018745e-7 * var_x42; - const double var_x267 = 3.8476805611550606e-9 * var_x65; - const double var_x268 = var_x267 * var_chaste_interface__transient_outward_current_y2_gate__y2; - const double var_x269 = 2.6117589263597991e-7 * var_x63; - const double var_x271 = 2.3967033798440612e-11 * var_x134; - const double var_x272 = var_x185 * var_x187; - - partialF = (-7.2675557857281787e-6 * var_x183 - 4.9877340607565601e-7 * var_x172 - 1.7404474311435562e-8 * var_x272 - 1.2955153404562495e-6 * var_x173 - var_x172 * var_x266 - var_x172 * var_x268 - var_x172 * var_x269 - var_x172 * var_x271) * mParameters[4]; - } - else - { - const double y_save = rY[1]; - rY[1] += delta; - const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[1])/delta; - rY[1] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative2(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; - // Units: dimensionless; Initial value: 1.779648367445368e-05 - double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; - // Units: dimensionless; Initial value: 0.5861887862983165 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; - // Units: dimensionless; Initial value: 0.6080573900752752 - double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; - // Units: dimensionless; Initial value: 0.0018339931180983765 - double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; - // Units: dimensionless; Initial value: 0.20443083454225305 - double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; - // Units: dimensionless; Initial value: 0.967887666264921 - double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; - // Units: dimensionless; Initial value: 0.09738789658609195 - double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; - // Units: dimensionless; Initial value: 0.09745345578743213 - double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; - // Units: dimensionless; Initial value: 0.0007956883250874798 - double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; - // Units: dimensionless; Initial value: 0.9999125083105881 - double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; - // Units: dimensionless; Initial value: 0.5910747147428818 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless - const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar - const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA - const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K / (_lt_0_row[7]))); // picoA - const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA - const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA - const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA - const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA - const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA - const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar - const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond - const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless - const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA - const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt - const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA - const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA - const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless - const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless - const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA - const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA - const double d_dt_chaste_interface_var_internal_ion_concentrations__Ki = -1.2955153404562495e-6 * (-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_K + var_background_KATP_current__i_KATP + var_background_Kpl_current__i_Kpl + var_background_NSC_current__i_bNSC_K + var_background_lCa_current__i_lCa_K + var_membrane__i_ext + var_rapid_time_dependent_potassium_current__i_Kr + var_slow_time_dependent_potassium_current__i_Ks_K + var_sodium_current__i_Na_K + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to_K) * mParameters[4]; // millimolar / millisecond - - return d_dt_chaste_interface_var_internal_ion_concentrations__Ki; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative2(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; - // Units: dimensionless; Initial value: 1.779648367445368e-05 - double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; - // Units: dimensionless; Initial value: 0.5861887862983165 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; - // Units: dimensionless; Initial value: 0.6080573900752752 - double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; - // Units: dimensionless; Initial value: 0.0018339931180983765 - double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; - // Units: dimensionless; Initial value: 0.20443083454225305 - double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; - // Units: dimensionless; Initial value: 0.967887666264921 - double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; - // Units: dimensionless; Initial value: 0.09738789658609195 - double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; - // Units: dimensionless; Initial value: 0.09745345578743213 - double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; - // Units: dimensionless; Initial value: 0.0007956883250874798 - double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; - // Units: dimensionless; Initial value: 0.9999125083105881 - double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; - // Units: dimensionless; Initial value: 0.5910747147428818 - - - - const double var_x1 = var_chaste_interface__membrane__Vm == 0; - const double var_x2 = 0.037435192301797954 * var_chaste_interface__membrane__Vm; - const double var_x3 = exp(-var_x2); - const double var_x6 = 1 - var_x3; - const double var_x7 = 1 / var_x6; - const double var_x13 = pow(mParameters[6], 0.16); - const double var_x14 = 0.0010924717003124302 * var_x13; - const double var_x15 = var_chaste_interface__membrane__Vm == (-3); - const double var_x16 = var_x2 * var_x7; - const double var_x19 = -0.076923076923076927 * var_chaste_interface__membrane__Vm; - const double var_x20 = exp(-0.23076923076923078 + var_x19); - const double var_x21 = 1 - var_x20; - const double var_x22 = 8.3986538766456042e-5 / var_x21; - const double var_x23 = 3 + var_chaste_interface__membrane__Vm; - const double var_x24 = var_x13 * var_x22 * var_x23; - const double var_x34 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x40 = -0.052380000000000003 + var_x34 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x41 = 1 + 1.3823999999999997e-8 / pow(var_x40, 3); - const double var_x42 = 1 / var_x41; - const double var_x44 = pow(var_chaste_interface__ATP_production__ATPi, 2); - const double var_x45 = pow(mParameters[6], 0.23999999999999999); - const double var_x46 = var_x45 / (1 + 99.999999999999986 * var_x44); - const double var_x61 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); - const double var_x62 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; - const double var_x63 = var_x61 * var_x62; - const double var_x65 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); - const double var_x68 = var_x63 * mParameters[13]; - const double var_x70 = var_x65 * mParameters[15]; - const double var_x71 = var_x70 * var_chaste_interface__transient_outward_current_y2_gate__y2; - const double var_x73 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; - const double var_x74 = var_x73 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; - const double var_x82 = 0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1; - const double var_x84 = pow(mParameters[6], 0.20000000000000001); - const double var_x85 = var_x84 * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; - const double var_x86 = pow(mParameters[6], 0.40000000000000002); - const double var_x87 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; - const double var_x88 = log(var_x87 * mParameters[6]); - const double var_x89 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x88); - const double var_x90 = 1 + var_x89; - const double var_x91 = pow(var_x90, 4); - const double var_x92 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x88); - const double var_x93 = 1 + var_x92; - const double var_x94 = pow(var_x93, (-4)); - const double var_x95 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x88); - const double var_x96 = 1 + var_x95; - const double var_x97 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x88); - const double var_x98 = var_x97 / var_x96; - const double var_x99 = exp(0.47999999999999998 + 1.282215932351298 * var_x88 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); - const double var_x100 = var_x99 / var_x93; - const double var_x101 = var_x100 * var_x90; - const double var_x102 = var_x101 + 0.25 * var_x98; - const double var_x103 = pow(var_x102, (-4)); - const double var_x104 = pow(var_x99, 4); - const double var_x105 = var_x103 * var_x104 * var_x94; - const double var_x106 = var_x105 * var_x91; - const double var_x107 = var_x106; - const double var_x108 = pow(var_x96, (-2)); - const double var_x109 = pow(var_x99, 2); - const double var_x110 = pow(var_x97, 2); - const double var_x111 = var_x103 * var_x108 * var_x109 * var_x110; - const double var_x112 = pow(var_x93, (-2)); - const double var_x113 = pow(var_x90, 2); - const double var_x114 = var_x112 * var_x113; - const double var_x115 = var_x111 * var_x114; - const double var_x116 = pow(var_x90, 3); - const double var_x117 = pow(var_x93, (-3)); - const double var_x118 = pow(var_x99, 3); - const double var_x119 = var_x116 * var_x117 * var_x118 * var_x98; - const double var_x120 = 1 / (0.75 * var_x98 + 3 * var_x101); - const double var_x121 = var_x120 / pow(var_x102, 3); - const double var_x122 = var_x119 * var_x121; - const double var_x123 = var_x86 * (var_x107 + 0.125 * var_x115 + 2 * var_x122) * mParameters[11]; - const double var_x125 = mParameters[9] * var_chaste_interface__time_independent_potassium_current_y_gate__y; - const double var_x127 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; - const double var_x128 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); - const double var_x129 = 1 / (1 + 2.7439999999999993 * var_x128); - const double var_x130 = var_x129 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; - const double var_x133 = var_x130 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - const double var_x134 = var_x127 * var_x133; - const double var_x138 = pow(var_x102, (-5)); - const double var_x139 = var_x108 * var_x95 * var_x97; - const double var_x140 = var_x100 * var_x89; - const double var_x142 = var_x112 * var_x90; - const double var_x143 = var_x142 * var_x99; - const double var_x145 = var_x104 * var_x91; - const double var_x146 = var_x145 * var_x94; - const double var_x148 = var_x105 * var_x116 * var_x89; - const double var_x150 = var_x103 * var_x145 / pow(var_x93, 5); - const double var_x152 = var_x109 * var_x110 * var_x114; - const double var_x153 = 0.125 * var_x108 * var_x152; - const double var_x154 = var_x111 * var_x142 * var_x89; - const double var_x155 = var_x143 * var_x92; - const double var_x157 = 0.22222222222222221 * var_x138; - const double var_x158 = var_x103 * var_x152 * var_x95 / pow(var_x96, 3); - const double var_x159 = var_x113 * var_x117; - const double var_x160 = var_x111 * var_x159; - const double var_x161 = 2 * var_x103 * var_x120; - const double var_x162 = var_x118 * var_x121; - const double var_x164 = var_x159 * var_x89; - const double var_x165 = var_x116 * var_x162; - const double var_x166 = var_x117 * var_x165; - const double var_x167 = var_x92 * var_x94; - const double var_x169 = -26.712831923985377 * var_x88 + var_chaste_interface__membrane__Vm; - const double var_x170 = var_x125 * var_x169 * var_x86 * mParameters[11]; - const double var_x174 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; - const double var_x175 = pow(var_x174, 1.0600000000000001); - const double var_x176 = var_x175 * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001)); - const double var_x177 = 1 / var_chaste_interface__ATP_production__ATPi; - const double var_x178 = 1 + 0.094 * var_x177; - const double var_x179 = 1 / var_x178; - const double var_x180 = var_x179 / pow((0.22703754152993499 + var_x176), 2); - const double var_x182 = mParameters[9] * var_chaste_interface__sodium_potassium_pump_y_gate__y; - const double var_x188 = ((var_x1) ? (1) : (var_x16)); - const double var_x189 = ((var_x15) ? (var_x14 * var_x188) : (var_x188 * var_x24)); - const double var_x190 = var_x46 * var_x87; - const double var_x191 = var_x188 * var_x68; - const double var_x192 = var_x188 * var_x71; - const double var_x193 = var_x175 * var_x180 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 0.12000000000000011); - const double var_x194 = var_x182 * var_x193; - const double var_x195 = var_x82 * var_x85; - const double var_x196 = var_x195 * var_x87; - const double var_x197 = var_x87 * var_x98; - const double var_x198 = var_x139 * var_x87; - const double var_x199 = var_x101 * var_x87; - const double var_x200 = var_x140 * var_x87; - const double var_x201 = var_x155 * var_x87; - const double var_x202 = var_x138 * (0.40069247885978065 * var_x198 + 3.2055398308782452 * var_x201 + 5.1288637294051922 * var_x199 - 6.8384849725402566 * var_x200 - 0.93494911733948827 * var_x197); - const double var_x203 = var_x146 * var_x202; - const double var_x204 = 5.1288637294051922 * var_x106 * var_x87; - const double var_x205 = 6.8384849725402566 * var_x148 * var_x87; - const double var_x206 = var_x87 * var_x92; - const double var_x207 = 3.2055398308782452 * var_x150 * var_x206; - const double var_x208 = var_x119 * (0.30051935914483546 * var_x198 + 2.4041548731586837 * var_x201 + 3.8466477970538944 * var_x199 - 5.1288637294051922 * var_x200 - 0.70121183800461617 * var_x197); - const double var_x209 = var_x203 + var_x205 - var_x204 - var_x207 + var_x153 * var_x202 + var_x157 * var_x208 + var_x161 * var_x208 + 0.42740531078376603 * var_x154 * var_x87 - 0.10017311971494516 * var_x158 * var_x87 - 0.20034623942989033 * var_x160 * var_x206 - 0.80138495771956131 * var_x166 * var_x198 - 0.086816703752952459 * var_x115 * var_x87 - 5.823397359428812 * var_x166 * var_x197 + 10.257727458810384 * var_x162 * var_x164 * var_x197 - 4.8083097463173674 * var_x165 * var_x167 * var_x197; - const double var_x210 = var_x123 * var_x125; - const double var_x211 = var_x210 * var_x87; - const double var_x266 = 1.4250668745018745e-7 * var_x42; - const double var_x280 = 1.2955153404562495e-7 * var_x74; - const double var_x281 = 6.5991052644898155e-7 * var_x170; - const double var_x282 = 4.72863099266531e-10 * var_x134; - - partialF = (-1.7628078977900349e-5 * var_x211 - 2.4699248496712833e-5 * var_x196 - 1.2955153404562495e-6 * var_x189 - 1.2955153404562495e-6 * var_x191 - 1.2955153404562495e-6 * var_x192 - 0.0015243307837622452 * var_x190 - 1.9950936243026244e-7 * var_x188 - 1.0238719530354315e-7 * var_x194 - var_x188 * var_x266 - var_x188 * var_x280 - var_x188 * var_x282 - var_x209 * var_x281) * mParameters[4]; - } - else - { - const double y_save = rY[2]; - rY[2] += delta; - const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[2])/delta; - rY[2] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative3(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; - // Units: dimensionless; Initial value: 1.6882718240109127e-05 - double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; - // Units: dimensionless; Initial value: 0.8585352091865849 - double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; - // Units: dimensionless; Initial value: 0.9891789193465331 - double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; - // Units: dimensionless; Initial value: 0.46108441538480216 - double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; - // Units: dimensionless; Initial value: 0.00034314360001543243 - double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; - // Units: millimolar; Initial value: 9.455741736977666 - double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; - // Units: millimolar; Initial value: 2.611712901567567 - double var_chaste_interface__NL_model__pCa = rY[33]; - // Units: dimensionless; Initial value: 0.02490898775497523 - double var_chaste_interface__NL_model__pCaCB = rY[34]; - // Units: dimensionless; Initial value: 0.001990153835322864 - double var_chaste_interface__NL_model__pCB = rY[35]; - // Units: dimensionless; Initial value: 0.00042941813853474524 - double var_chaste_interface__NL_model__X = rY[36]; - // Units: micrometre; Initial value: 0.9573749975411884 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar - const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless - const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond - const double var_NL_model__Q_d2 = 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCaCB; // per_millisecond - const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond - const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_NL_model__Q_b = -0.029999999999999999 * var_chaste_interface__NL_model__pCa + 39 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB) * var_internal_ion_concentrations__Cai; // per_millisecond - const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond - const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA - const double var_SR_L_current__i_SR_L = (-var_internal_ion_concentrations__Cai + var_chaste_interface__Ca_concentrations_in_SR__Caup) * mParameters[0]; // picoA - const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless - const double var_SR_calcium_pump__i_SR_U = (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA - const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar - const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA - const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA - const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA - const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond - const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond - const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless - const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless - const double var_sodium_calcium_exchanger__i_NaCa = (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA - const double d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total = 0.070000000000000007 * var_NL_model__Q_d2 + 0.070000000000000007 * var_NL_model__Q_r + 6.4775767022812476e-7 * var_RyR_channel__i_RyR + 6.4775767022812476e-7 * var_SR_L_current__i_SR_L + 6.4775767022812476e-7 * var_SR_calcium_pump__i_SR_U + 1.2955153404562495e-6 * var_sodium_calcium_exchanger__i_NaCa - 0.070000000000000007 * var_NL_model__Q_b - 6.4775767022812476e-7 * var_L_type_Ca_channel__i_CaL_Ca - 6.4775767022812476e-7 * var_T_type_Ca_channel__i_Ca_T - 6.4775767022812476e-7 * var_background_Cab_current__i_Cab; // millimolar / millisecond - - return d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative3(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; - // Units: dimensionless; Initial value: 1.6882718240109127e-05 - double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; - // Units: dimensionless; Initial value: 0.8585352091865849 - double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; - // Units: dimensionless; Initial value: 0.9891789193465331 - double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; - // Units: dimensionless; Initial value: 0.46108441538480216 - double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; - // Units: dimensionless; Initial value: 0.00034314360001543243 - double var_chaste_interface__NL_model__pCa = rY[33]; - // Units: dimensionless; Initial value: 0.02490898775497523 - double var_chaste_interface__NL_model__pCaCB = rY[34]; - // Units: dimensionless; Initial value: 0.001990153835322864 - double var_chaste_interface__NL_model__pCB = rY[35]; - // Units: dimensionless; Initial value: 0.00042941813853474524 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - const double var_x1 = var_chaste_interface__membrane__Vm == 0; - const double var_x29 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; - const double var_x30 = exp(-var_x29); - const double var_x31 = 1 - var_x30; - const double var_x32 = 1 / var_x31; - const double var_x34 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x35 = -0.026190000000000001 + 0.5 * var_x34 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x40 = -0.052380000000000003 + var_x34 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x47 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); - const double var_x48 = 1 / var_x47; - const double var_x49 = -17.978260869565219 + 362.31884057971018 * var_x34 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x50 = var_x48 * var_x49; - const double var_x51 = _lt_0_row[5]; - const double var_x58 = mParameters[9] * mParameters[14]; - const double var_x127 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; - const double var_x128 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); - const double var_x129 = 1 / (1 + 2.7439999999999993 * var_x128); - const double var_x130 = var_x129 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; - const double var_x133 = var_x130 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - const double var_x177 = 1 / var_chaste_interface__ATP_production__ATPi; - const double var_x184 = var_x51 / pow((0.0014927113702623907 + var_x50), 2); - const double var_x187 = var_x58 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; - const double var_x212 = (-0.047620000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total) / var_x34; - const double var_x213 = 0.5 * var_x212; - const double var_x214 = 0.5 + var_x213; - const double var_x215 = ((var_x1) ? (0) : (var_x214 * var_x29 * var_x32)); - const double var_x219 = var_x127 * var_x215; - const double var_x220 = var_x133 * var_x219; - const double var_x221 = var_x184 * var_x48 * (362.31884057971018 + 362.31884057971018 * var_x212); - const double var_x274 = var_x187 * var_x221; - const double var_x289 = 0.00039642769417961232 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2; - const double var_x290 = 1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB; - const double var_x291 = -3.2387883511406238e-7 - 3.2387883511406238e-7 * var_x212; - const double var_x292 = mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; - const double var_x293 = 1 - var_chaste_interface__SR_calcium_pump_y_gate__y; - const double var_x294 = 1 + 0.10000000000000001 * var_x177; - const double var_x295 = 1 / var_x294; - const double var_x296 = 1 / var_x35; - const double var_x297 = 1 + 0.00080000000000000004 * var_x296; - const double var_x298 = pow(var_x40, 2); - const double var_x299 = (-0.5 - var_x213) / var_x298; - const double var_x300 = var_x299 / pow(var_x297, 2); - const double var_x301 = var_x295 * var_x300; - const double var_x302 = var_x293 * var_x301 * mParameters[3]; - - partialF = 2.0728245447299993e-9 * var_x302 - 1.9338304790483955e-9 * var_x274 - 6.4775767022812476e-7 * var_x220 - 2.591030680912499e-8 * var_x215 + var_x290 * (-1.3650000000000002 - 1.3650000000000002 * var_x212) + var_x291 * var_x292 + var_x291 * mParameters[0] + (-54.600000000000009 - 54.600000000000009 * var_x212) * var_chaste_interface__NL_model__pCB - var_x215 * var_x289; - } - else - { - const double y_save = rY[3]; - rY[3] += delta; - const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[3])/delta; - rY[3] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative4(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; - // Units: dimensionless; Initial value: 0.5910747147428818 - double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; - // Units: dimensionless; Initial value: 0.46108441538480216 - double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; - // Units: millimolar; Initial value: 2.611712901567567 - double var_chaste_interface__NL_model__pCaCB = rY[34]; - // Units: dimensionless; Initial value: 0.001990153835322864 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond - const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless - const double var_SR_calcium_pump__i_SR_U = (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA - const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar - const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond - const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless - const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA - const double d_dt_chaste_interface_var_ATP_production__ATPi = 0.014999999999999999 + 3.2387883511406238e-7 * var_SR_calcium_pump__i_SR_U - 0.0030000000000000001 * var_chaste_interface__ATP_production__ATPi - 0.028000000000000004 * var_chaste_interface__NL_model__pCaCB - 1.2955153404562495e-6 * var_sodium_potassium_pump__i_NaK; // millimolar / millisecond - - return d_dt_chaste_interface_var_ATP_production__ATPi; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative4(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; - // Units: dimensionless; Initial value: 0.5910747147428818 - double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; - // Units: dimensionless; Initial value: 0.46108441538480216 - - - - const double var_x34 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x35 = -0.026190000000000001 + 0.5 * var_x34 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x44 = pow(var_chaste_interface__ATP_production__ATPi, 2); - const double var_x174 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; - const double var_x175 = pow(var_x174, 1.0600000000000001); - const double var_x176 = var_x175 * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001)); - const double var_x177 = 1 / var_chaste_interface__ATP_production__ATPi; - const double var_x178 = 1 + 0.094 * var_x177; - const double var_x224 = 1 / (1 + 4.4045579125871104 * var_x176); - const double var_x225 = 1 / var_x44; - const double var_x226 = var_x224 * var_x225 * var_chaste_interface__sodium_potassium_pump_y_gate__y / pow(var_x178, 2); - const double var_x227 = var_x226 * mParameters[9]; - const double var_x293 = 1 - var_chaste_interface__SR_calcium_pump_y_gate__y; - const double var_x294 = 1 + 0.10000000000000001 * var_x177; - const double var_x296 = 1 / var_x35; - const double var_x297 = 1 + 0.00080000000000000004 * var_x296; - const double var_x303 = 1 / var_x297; - const double var_x304 = var_x225 * var_x293 * var_x303 / pow(var_x294, 2); - const double var_x305 = var_x304 * mParameters[3]; - - partialF = -0.0030000000000000001 - 3.2387883511406238e-8 * var_x305 - 9.4621849436243545e-7 * var_x227; - } - else - { - const double y_save = rY[4]; - rY[4] += delta; - const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[4])/delta; - rY[4] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative5(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; - // Units: dimensionless; Initial value: 1.779648367445368e-05 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; - // Units: dimensionless; Initial value: 0.3556412697995689 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; - // Units: dimensionless; Initial value: 0.40285968661346977 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_AP_RP = _lt_0_row[32]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_RP_AP = _lt_0_row[34]; // per_millisecond - const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na = 8.7499999999999999e-5 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na + var_sodium_current_voltage_dependent_gate__k_RP_AP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na - (var_sodium_current_voltage_dependent_gate__k_AP_AI + var_sodium_current_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // 1 / millisecond - - return d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative5(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x318 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); - const double var_x319 = 1 / var_x318; - const double var_x321 = exp(0.00125 * var_chaste_interface__membrane__Vm); - const double var_x322 = 0.058823529411764705 * var_chaste_interface__membrane__Vm; - const double var_x323 = exp(var_x322); - const double var_x331 = 1 / (26 * var_x323 + 0.02 * var_x321); - const double var_x332 = var_x331; - const double var_x333 = 1.25 * var_x319; - - partialF = -var_x332 - var_x333; - } - else - { - const double y_save = rY[5]; - rY[5] += delta; - const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[5])/delta; - rY[5] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative6(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; - // Units: dimensionless; Initial value: 1.779648367445368e-05 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; - // Units: dimensionless; Initial value: 0.3556412697995689 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; - // Units: dimensionless; Initial value: 0.40285968661346977 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_sodium_current_voltage_dependent_gate__k_AI_RI = _lt_0_row[30]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_AP_RP = _lt_0_row[32]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_RI_AI = _lt_0_row[33]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_RP_AP = _lt_0_row[34]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_RP_RI = 0.01 / (1 + 8.7499999999999999e-5 * var_sodium_current_voltage_dependent_gate__k_AP_RP * var_sodium_current_voltage_dependent_gate__k_RI_AI / (var_sodium_current_voltage_dependent_gate__k_AI_RI * var_sodium_current_voltage_dependent_gate__k_AP_AI * var_sodium_current_voltage_dependent_gate__k_RP_AP)); // per_millisecond - const double var_sodium_current_voltage_dependent_gate__p_RI_Na = 1 - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // dimensionless - const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na = (0.01 - var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_sodium_current_voltage_dependent_gate__p_RI_Na + var_sodium_current_voltage_dependent_gate__k_AP_RP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - (var_sodium_current_voltage_dependent_gate__k_RP_AP + var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // 1 / millisecond - - return d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative6(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x326 = exp(-0.125 * var_chaste_interface__membrane__Vm); - const double var_x327 = exp(-0.02 * var_chaste_interface__membrane__Vm); - const double var_x334 = 0.25 * var_x327 + 0.1027 * var_x326; - const double var_x335 = 1 / var_x334; - - partialF = -0.01 - var_x335; - } - else - { - const double y_save = rY[6]; - rY[6] += delta; - const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[6])/delta; - rY[6] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative7(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; - // Units: dimensionless; Initial value: 1.779648367445368e-05 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; - // Units: dimensionless; Initial value: 0.3556412697995689 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; - // Units: dimensionless; Initial value: 0.40285968661346977 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_sodium_current_voltage_dependent_gate__k_AI_RI = _lt_0_row[30]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__k_RI_AI = _lt_0_row[33]; // per_millisecond - const double var_sodium_current_voltage_dependent_gate__p_RI_Na = 1 - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // dimensionless - const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na = var_sodium_current_voltage_dependent_gate__k_AP_AI * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + var_sodium_current_voltage_dependent_gate__k_RI_AI * var_sodium_current_voltage_dependent_gate__p_RI_Na - (8.7499999999999999e-5 + var_sodium_current_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na; // 1 / millisecond - - return d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative7(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x318 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); - const double var_x321 = exp(0.00125 * var_chaste_interface__membrane__Vm); - const double var_x326 = exp(-0.125 * var_chaste_interface__membrane__Vm); - const double var_x336 = 1 / (5 * var_x318 + 0.0001027 * var_x326); - const double var_x337 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); - const double var_x338 = 1300 * var_x337 + 0.040000000000000001 * var_x321; - const double var_x350 = -var_x336; - - partialF = -8.7499999999999999e-5 + var_x350 - 1 / var_x338; - } - else - { - const double y_save = rY[7]; - rY[7] += delta; - const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[7])/delta; - rY[7] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative8(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; - // Units: dimensionless; Initial value: 0.5861887862983165 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y = (1 - var_chaste_interface__sodium_current_ultra_slow_gate__y) / (_lt_0_row[28]) - var_chaste_interface__sodium_current_ultra_slow_gate__y / (_lt_0_row[29]); // 1 / millisecond - - return d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative8(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x351 = 0.01 * var_chaste_interface__membrane__Vm; - const double var_x352 = exp(var_x351); - const double var_x353 = 0.20000000000000001 * var_chaste_interface__membrane__Vm; - const double var_x354 = exp(var_x353); - const double var_x355 = exp(-var_x353); - const double var_x356 = exp(-var_x351); - - partialF = -1 / (4000 * var_x356 + 0.014 * var_x355) - 1 / (8000 * var_x352 + 9000000000.0 * var_x354); - } - else - { - const double y_save = rY[8]; - rY[8] += delta; - const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[8])/delta; - rY[8] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative9(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; - // Units: dimensionless; Initial value: 0.9968480629364956 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; - // Units: dimensionless; Initial value: 0.000877325391245903 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP = _lt_0_row[11]; // per_millisecond - const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP = _lt_0_row[13]; // per_millisecond - const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = 0.001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL - (0.0040000000000000001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative9(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x358 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; - const double var_x363 = exp(var_x358); - const double var_x364 = exp(0.14285714285714285 * var_chaste_interface__membrane__Vm); - const double var_x367 = 1 / (480 * var_x364 + 2.2000000000000002 * var_x363); - const double var_x368 = var_x367; - - partialF = -0.0040000000000000001 - var_x368; - } - else - { - const double y_save = rY[9]; - rY[9] += delta; - const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[9])/delta; - rY[9] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative10(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; - // Units: dimensionless; Initial value: 0.9968480629364956 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; - // Units: dimensionless; Initial value: 0.000877325391245903 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL = 1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // dimensionless - const double var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI = _lt_0_row[10]; // per_millisecond - const double var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP = _lt_0_row[11]; // per_millisecond - const double var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI = _lt_0_row[12]; // per_millisecond - const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP = _lt_0_row[13]; // per_millisecond - const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI = 0.040000000000000001 / (1 + 0.25 * var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI / (var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI * var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP)); // per_millisecond - const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = (0.040000000000000001 - var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - (var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative10(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x357 = exp(-0.16949152542372881 * var_chaste_interface__membrane__Vm); - const double var_x358 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; - const double var_x359 = exp(-var_x358); - const double var_x369 = 1.5 * var_x359 + 0.27000000000000002 * var_x357; - const double var_x370 = 1 / var_x369; - - partialF = -0.040000000000000001 - var_x370; - } - else - { - const double y_save = rY[10]; - rY[10] += delta; - const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[10])/delta; - rY[10] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative11(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; - // Units: dimensionless; Initial value: 0.9968480629364956 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; - // Units: dimensionless; Initial value: 0.000877325391245903 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL = 1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // dimensionless - const double var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI = _lt_0_row[10]; // per_millisecond - const double var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI = _lt_0_row[12]; // per_millisecond - const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = 0.0040000000000000001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL - (0.001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative11(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x351 = 0.01 * var_chaste_interface__membrane__Vm; - const double var_x352 = exp(var_x351); - const double var_x356 = exp(-var_x351); - const double var_x371 = 0.13513513513513511 * var_chaste_interface__membrane__Vm; - const double var_x372 = exp(var_x371); - const double var_x373 = 11 * var_x352 + 2200000 * var_x372; - const double var_x375 = exp(-var_x371); - const double var_x376 = 1 / (2 * var_x356 + 0.0018 * var_x375); - const double var_x387 = -var_x376; - - partialF = -0.001 + var_x387 - 1 / var_x373; - } - else - { - const double y_save = rY[11]; - rY[11] += delta; - const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[11])/delta; - rY[11] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative12(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; - // Units: dimensionless; Initial value: 0.4250747299372254 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar - const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA - const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar - const double var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca = 6.9539999999999997 * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // per_millisecond - const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U = 0.14299999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C + 2.0019999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa - (0.34999999999999998 + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative12(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - - - - const double var_x1 = var_chaste_interface__membrane__Vm == 0; - const double var_x29 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; - const double var_x30 = exp(-var_x29); - const double var_x31 = 1 - var_x30; - const double var_x32 = 1 / var_x31; - const double var_x33 = var_x30 * mParameters[5]; - const double var_x34 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x35 = -0.026190000000000001 + 0.5 * var_x34 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x36 = var_x35 - var_x33; - const double var_x37 = var_x32 * var_x36; - const double var_x228 = ((var_x1) ? (-mParameters[5]) : (var_x29 * var_x37)); - const double var_x384 = 1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - const double var_x390 = 6.9539999999999997 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - const double var_x395 = 6.9539999999999997 * var_x35 * var_x384; - const double var_x396 = var_x390 * (var_x35 - 0.020279999999999996 * var_x228); - const double var_x397 = -var_x396; - - partialF = -0.34999999999999998 + var_x397 - var_x395; - } - else - { - const double y_save = rY[12]; - rY[12] += delta; - const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[12])/delta; - rY[12] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative13(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; - // Units: dimensionless; Initial value: 0.4250747299372254 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_L_type_Ca_channel_Ca_dependent_gate__p_CCa = 1 - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar - const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA - const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar - const double var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca = 6.9539999999999997 * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // per_millisecond - const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa = 0.00029999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - 2.3519999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative13(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - - - - - partialF = -2.3523000000000001; - } - else - { - const double y_save = rY[13]; - rY[13] += delta; - const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[13])/delta; - rY[13] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative14(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; - // Units: dimensionless; Initial value: 0.4250747299372254 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_L_type_Ca_channel_Ca_dependent_gate__p_CCa = 1 - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar - const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA - const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar - const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C = 0.34999999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + 0.0041999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - (0.14299999999999999 + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative14(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - - - - const double var_x1 = var_chaste_interface__membrane__Vm == 0; - const double var_x29 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; - const double var_x30 = exp(-var_x29); - const double var_x31 = 1 - var_x30; - const double var_x32 = 1 / var_x31; - const double var_x33 = var_x30 * mParameters[5]; - const double var_x34 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x35 = -0.026190000000000001 + 0.5 * var_x34 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x36 = var_x35 - var_x33; - const double var_x37 = var_x32 * var_x36; - const double var_x228 = ((var_x1) ? (-mParameters[5]) : (var_x29 * var_x37)); - const double var_x390 = 6.9539999999999997 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - const double var_x396 = var_x390 * (var_x35 - 0.020279999999999996 * var_x228); - const double var_x397 = -var_x396; - - partialF = -0.1472 + var_x397; - } - else - { - const double y_save = rY[14]; - rY[14] += delta; - const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[14])/delta; - rY[14] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative15(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y = (1 - var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y) / (_lt_0_row[8]) - var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y / (_lt_0_row[9]); // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative15(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x358 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; - const double var_x359 = exp(-var_x358); - const double var_x363 = exp(var_x358); - const double var_x398 = exp(0.1111111111111111 * var_chaste_interface__membrane__Vm); - const double var_x399 = exp(-0.071428571428571425 * var_chaste_interface__membrane__Vm); - - partialF = -1 / (58 * var_x363 + 250000 * var_x398) - 1 / (66 * var_x359 + 1800 * var_x399); - } - else - { - const double y_save = rY[15]; - rY[15] += delta; - const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[15])/delta; - rY[15] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative16(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; - // Units: dimensionless; Initial value: 1.6882718240109127e-05 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1 = (1 - var_chaste_interface__T_type_Ca_channel_y1_gate__y1) / (_lt_0_row[14]) - var_chaste_interface__T_type_Ca_channel_y1_gate__y1 / (_lt_0_row[15]); // 1 / millisecond - - return d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative16(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x400 = exp(-0.17857142857142858 * var_chaste_interface__membrane__Vm); - const double var_x401 = exp(-0.0040000000000000001 * var_chaste_interface__membrane__Vm); - const double var_x402 = exp(0.0001 * var_chaste_interface__membrane__Vm); - const double var_x403 = exp(0.15873015873015872 * var_chaste_interface__membrane__Vm); - - partialF = -1 / (1.5 * var_x402 + 40 * var_x403) - 1 / (0.019 * var_x400 + 0.81999999999999995 * var_x401); - } - else - { - const double y_save = rY[16]; - rY[16] += delta; - const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[16])/delta; - rY[16] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative17(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; - // Units: dimensionless; Initial value: 0.8585352091865849 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2 = (1 - var_chaste_interface__T_type_Ca_channel_y2_gate__y2) / (_lt_0_row[16]) - var_chaste_interface__T_type_Ca_channel_y2_gate__y2 / (_lt_0_row[17]); // 1 / millisecond - - return d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative17(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x404 = exp(0.00033333333333333332 * var_chaste_interface__membrane__Vm); - const double var_x405 = exp(0.099009900990099015 * var_chaste_interface__membrane__Vm); - const double var_x406 = exp(-0.14925373134328357 * var_chaste_interface__membrane__Vm); - const double var_x407 = exp(-0.040000000000000001 * var_chaste_interface__membrane__Vm); - - partialF = -1 / (30 * var_x404 + 62000 * var_x405) - 1 / (1.2 * var_x407 + 0.00059999999999999995 * var_x406); - } - else - { - const double y_save = rY[17]; - rY[17] += delta; - const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[17])/delta; - rY[17] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative18(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; - // Units: dimensionless; Initial value: 0.6080573900752752 - - - - // Mathematics - const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt - const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless - const double d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y = (1 - var_chaste_interface__time_independent_potassium_current_y_gate__y) / (7 * exp(-0.32333333333333331 + 0.0033333333333333335 * var_chaste_interface__membrane__Vm - 0.0033333333333333335 * var_time_independent_potassium_current__E_K) + 8000 * exp(-11.411764705882353 + 0.11764705882352941 * var_chaste_interface__membrane__Vm - 0.11764705882352941 * var_time_independent_potassium_current__E_K)) - pow(var_time_independent_potassium_current__fO, 4) * var_chaste_interface__time_independent_potassium_current_y_gate__y / (0.00013999999999999999 * exp(10.659340659340661 + 0.10989010989010989 * var_time_independent_potassium_current__E_K - 0.10989010989010989 * var_chaste_interface__membrane__Vm) + 0.20000000000000001 * exp(0.19400000000000001 + 0.002 * var_time_independent_potassium_current__E_K - 0.002 * var_chaste_interface__membrane__Vm)); // 1 / millisecond - - return d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative18(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - - - - const double var_x87 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; - const double var_x88 = log(var_x87 * mParameters[6]); - const double var_x89 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x88); - const double var_x90 = 1 + var_x89; - const double var_x91 = pow(var_x90, 4); - const double var_x92 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x88); - const double var_x93 = 1 + var_x92; - const double var_x94 = pow(var_x93, (-4)); - const double var_x95 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x88); - const double var_x96 = 1 + var_x95; - const double var_x97 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x88); - const double var_x98 = var_x97 / var_x96; - const double var_x99 = exp(0.47999999999999998 + 1.282215932351298 * var_x88 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); - const double var_x100 = var_x99 / var_x93; - const double var_x101 = var_x100 * var_x90; - const double var_x102 = var_x101 + 0.25 * var_x98; - const double var_x103 = pow(var_x102, (-4)); - const double var_x104 = pow(var_x99, 4); - const double var_x105 = var_x103 * var_x104 * var_x94; - const double var_x106 = var_x105 * var_x91; - const double var_x107 = var_x106; - const double var_x408 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; - const double var_x409 = exp(-0.32333333333333331 + var_x408 - 0.08904277307995126 * var_x88); - const double var_x410 = exp(-11.411764705882353 + 0.11764705882352941 * var_chaste_interface__membrane__Vm - 3.142686108704162 * var_x88); - const double var_x412 = exp(10.659340659340661 + 2.9354760356027887 * var_x88 - 0.10989010989010989 * var_chaste_interface__membrane__Vm); - const double var_x413 = 0.002 * var_chaste_interface__membrane__Vm; - const double var_x414 = exp(0.19400000000000001 - var_x413 + 0.053425663847970754 * var_x88); - const double var_x415 = 1 / (0.00013999999999999999 * var_x412 + 0.20000000000000001 * var_x414); - - partialF = -1 / (7 * var_x409 + 8000 * var_x410) - var_x107 * var_x415; - } - else - { - const double y_save = rY[18]; - rY[18] += delta; - const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[18])/delta; - rY[18] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative19(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; - // Units: dimensionless; Initial value: 0.0018339931180983765 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1 = -(_lt_0_row[18]) * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 + (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) / (_lt_0_row[19]); // 1 / millisecond - - return d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative19(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x337 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); - const double var_x408 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; - const double var_x418 = 1 / var_x337; - const double var_x419 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; - const double var_x420 = exp(var_x419); - const double var_x421 = exp(0.001 * var_chaste_interface__membrane__Vm); - const double var_x423 = exp(-var_x408); - const double var_x424 = exp(-0.086956521739130432 * var_chaste_interface__membrane__Vm); - - partialF = -1 / (5 * var_x423 + 20 * var_x424) - 1 / (160 * var_x420 + 200 * var_x421) - 0.00040000000000000002 * var_x418; - } - else - { - const double y_save = rY[19]; - rY[19] += delta; - const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[19])/delta; - rY[19] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative20(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; - // Units: dimensionless; Initial value: 0.20443083454225305 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2 = -(_lt_0_row[20]) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2) / (_lt_0_row[21]); // 1 / millisecond - - return d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative20(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x19 = -0.076923076923076927 * var_chaste_interface__membrane__Vm; - const double var_x337 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); - const double var_x408 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; - const double var_x418 = 1 / var_x337; - const double var_x419 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; - const double var_x420 = exp(var_x419); - const double var_x421 = exp(0.001 * var_chaste_interface__membrane__Vm); - const double var_x423 = exp(-var_x408); - const double var_x425 = exp(var_x19); - - partialF = -1 / (20 * var_x423 + 200 * var_x425) - 1 / (1600 * var_x420 + 2000 * var_x421) - 0.0001 * var_x418; - } - else - { - const double y_save = rY[20]; - rY[20] += delta; - const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[20])/delta; - rY[20] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative21(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; - // Units: dimensionless; Initial value: 0.967887666264921 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3 = (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3) / (_lt_0_row[22]) - var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 / (_lt_0_row[23]); // 1 / millisecond - - return d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative21(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x322 = 0.058823529411764705 * var_chaste_interface__membrane__Vm; - const double var_x323 = exp(var_x322); - const double var_x408 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; - const double var_x426 = exp(var_x408); - const double var_x427 = exp(-var_x322); - const double var_x428 = exp(-0.0066666666666666671 * var_chaste_interface__membrane__Vm); - - partialF = -1 / (2 * var_x428 + 0.34999999999999998 * var_x427) - 1 / (2.5 * var_x426 + 10 * var_x323); - } - else - { - const double y_save = rY[21]; - rY[21] += delta; - const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[21])/delta; - rY[21] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative22(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; - // Units: dimensionless; Initial value: 0.09738789658609195 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1 = (1 - var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1) / (_lt_0_row[24]) - var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 / (_lt_0_row[25]); // 1 / millisecond - - return d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative22(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x337 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); - const double var_x351 = 0.01 * var_chaste_interface__membrane__Vm; - const double var_x352 = exp(var_x351); - const double var_x429 = exp(-0.095238095238095233 * var_chaste_interface__membrane__Vm); - const double var_x430 = exp(-0.016129032258064516 * var_chaste_interface__membrane__Vm); - - partialF = -1 / (260 * var_x352 + 1450 * var_x337) - 1 / (85 * var_x429 + 370 * var_x430); - } - else - { - const double y_save = rY[22]; - rY[22] += delta; - const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[22])/delta; - rY[22] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative23(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; - // Units: dimensionless; Initial value: 0.09745345578743213 - - - - // Mathematics - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2 = -0.004444 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 + 3.7000000000000002 * (1 - var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_internal_ion_concentrations__Cai; // 1 / millisecond - - return d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative23(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - - - - const double var_x34 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - - partialF = 0.092459000000000013 - 1.8500000000000001 * var_x34 - 1.8500000000000001 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - } - else - { - const double y_save = rY[23]; - rY[23] += delta; - const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[23])/delta; - rY[23] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative24(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; - // Units: dimensionless; Initial value: 0.0007956883250874798 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1 = (1 - var_chaste_interface__transient_outward_current_y1_gate__y1) / (_lt_0_row[35]) - var_chaste_interface__transient_outward_current_y1_gate__y1 / (_lt_0_row[36]); // 1 / millisecond - - return d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative24(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x318 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); - const double var_x413 = 0.002 * var_chaste_interface__membrane__Vm; - const double var_x419 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; - const double var_x431 = exp(-var_x419); - const double var_x432 = exp(var_x413); - const double var_x433 = exp(0.0625 * var_chaste_interface__membrane__Vm); - - partialF = -1 / (11 * var_x431 + 0.20000000000000001 * var_x318) - 1 / (4.4000000000000004 * var_x433 + 0.20000000000000001 * var_x432); - } - else - { - const double y_save = rY[24]; - rY[24] += delta; - const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[24])/delta; - rY[24] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative25(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; - // Units: dimensionless; Initial value: 0.9999125083105881 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2 = 0.0038 * (1 - var_chaste_interface__transient_outward_current_y2_gate__y2) * _lt_0_row[38] / (_lt_0_row[37]) - 0.0038 * var_chaste_interface__transient_outward_current_y2_gate__y2 * _lt_0_row[40] / (_lt_0_row[39]); // 1 / millisecond - - return d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative25(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - - - - const double var_x434 = 0.088495575221238937 * var_chaste_interface__membrane__Vm; - const double var_x435 = exp(-1.1946902654867255 - var_x434); - const double var_x436 = 1 + 0.051334999999999999 * var_x435; - const double var_x438 = exp(1.1946902654867255 + var_x434); - const double var_x439 = 1 + 0.067083000000000004 * var_x438; - const double var_x440 = var_x438 / var_x439; - const double var_x441 = var_x435 / var_x436; - - partialF = -0.0038 * var_x440 - 0.0038 * var_x441; - } - else - { - const double y_save = rY[25]; - rY[25] += delta; - const double temp = EvaluateYDerivative25(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[25])/delta; - rY[25] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative26(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; - // Units: dimensionless; Initial value: 0.9891789193465331 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond - const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond - const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless - const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless - const double d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y = (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * (1 / (1 + 1.3799999999999999 * (1 + 1.4927113702623908e-6 * pow(mParameters[7], 3)) / mParameters[5]) + var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) - (1 / (1 + 0.0013799999999999999 * (1 + 0.0014927113702623907 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)) / var_internal_ion_concentrations__Cai) + var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na) * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; // 1 / millisecond - - return d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative26(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - const double var_x34 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x35 = -0.026190000000000001 + 0.5 * var_x34 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x47 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); - const double var_x48 = 1 / var_x47; - const double var_x49 = -17.978260869565219 + 362.31884057971018 * var_x34 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x50 = var_x48 * var_x49; - const double var_x51 = _lt_0_row[5]; - const double var_x52 = var_x51 / (1 + 669.921875 * var_x50); - const double var_x54 = pow(mParameters[7], 3); - const double var_x55 = _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / var_x54); - const double var_x263 = -var_x52 - var_x55; - const double var_x296 = 1 / var_x35; - const double var_x442 = 1 + 0.0014927113702623907 * var_x47; - const double var_x443 = 1 + 0.0013799999999999999 * var_x296 * var_x442; - - partialF = var_x263 - 1 / var_x443 - 1 / (1 + 1.3799999999999999 * (1 + 1.4927113702623908e-6 * var_x54) / mParameters[5]); - } - else - { - const double y_save = rY[26]; - rY[26] += delta; - const double temp = EvaluateYDerivative26(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[26])/delta; - rY[26] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative27(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; - // Units: dimensionless; Initial value: 0.5910747147428818 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar - const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond - const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless - const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless - const double d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y = (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * (0.040000000000000001 * var_sodium_potassium_pump__p_E2Na + 0.16500000000000001 / (1 + 0.21928759810465578 * pow((1 / mParameters[6]), 1.1200000000000001) * (1 + 0.011104864200909382 * pow(var_sodium_potassium_pump__Nao_Eff, 1.0600000000000001)))) - (0.01 / (1 + 49.999265664512095 * pow((1 / var_chaste_interface__internal_ion_concentrations__Ki), 1.1200000000000001) * (1 + 0.22703754152993499 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 1.0600000000000001))) + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na) * var_chaste_interface__sodium_potassium_pump_y_gate__y; // 1 / millisecond - - return d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative27(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - const double var_x78 = _lt_0_row[4]; - const double var_x79 = pow((1 / (var_x78 * mParameters[7])), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001)); - const double var_x87 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; - const double var_x174 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; - const double var_x175 = pow(var_x174, 1.0600000000000001); - const double var_x176 = var_x175 * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001)); - const double var_x177 = 1 / var_chaste_interface__ATP_production__ATPi; - const double var_x178 = 1 + 0.094 * var_x177; - const double var_x179 = 1 / var_x178; - const double var_x224 = 1 / (1 + 4.4045579125871104 * var_x176); - const double var_x264 = 1 / (1 + 90.050628437051003 * var_x79); - const double var_x265 = var_x179 * var_x224; - const double var_x445 = pow((1 / mParameters[6]), 1.1200000000000001); - const double var_x446 = pow((var_x78 * mParameters[7]), 1.0600000000000001); - const double var_x447 = 1 + 0.21928759810465578 * var_x445 * (1 + 0.011104864200909382 * var_x446); - const double var_x448 = pow(var_x87, 1.1200000000000001); - const double var_x449 = var_x448 * (1 + 0.22703754152993499 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 1.0600000000000001)); - - partialF = -0.37 * var_x265 - 0.01 / (1 + 49.999265664512095 * var_x449) - 0.040000000000000001 * var_x264 - 0.16500000000000001 / var_x447; - } - else - { - const double y_save = rY[27]; - rY[27] += delta; - const double temp = EvaluateYDerivative27(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[27])/delta; - rY[27] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative28(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; - // Units: dimensionless; Initial value: 0.46108441538480216 - double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; - // Units: millimolar; Initial value: 2.611712901567567 - - - - // Mathematics - const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond - const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless - const double d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y = (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * (0.01 - 0.01 * var_SR_calcium_pump__p_E2Ca + var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) - (1 - 0.98999999999999999 * var_SR_calcium_pump__p_E1Ca) * var_chaste_interface__SR_calcium_pump_y_gate__y; // 1 / millisecond - - return d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative28(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; - // Units: millimolar; Initial value: 2.611712901567567 - - - - const double var_x34 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x35 = -0.026190000000000001 + 0.5 * var_x34 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x177 = 1 / var_chaste_interface__ATP_production__ATPi; - const double var_x294 = 1 + 0.10000000000000001 * var_x177; - const double var_x295 = 1 / var_x294; - const double var_x296 = 1 / var_x35; - const double var_x297 = 1 + 0.00080000000000000004 * var_x296; - const double var_x303 = 1 / var_x297; - const double var_x308 = 1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup; - const double var_x309 = 1 / var_x308; - const double var_x310 = var_x295 * var_x303; - - partialF = -1.01 + 0.01 * var_x303 + 0.98999999999999999 * var_x309 - var_x310; - } - else - { - const double y_save = rY[28]; - rY[28] += delta; - const double temp = EvaluateYDerivative28(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[28])/delta; - rY[28] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative29(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; - // Units: dimensionless; Initial value: 0.00034314360001543243 - double var_chaste_interface__RyR_channel__p_close_RyR = rY[30]; - // Units: dimensionless; Initial value: 0.19135178123107768 - double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; - // Units: millimolar; Initial value: 9.455741736977666 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar - const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar - const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA - const double var_RyR_channel__k1 = 280000 * pow(var_internal_ion_concentrations__Cai, 2) / pow(mParameters[2], 2) - 150 * var_L_type_Ca_channel__p_open_CaL * var_L_type_Ca_channel_Ca_dependent_gate__iCaL; // per_millisecond - const double d_dt_chaste_interface_var_RyR_channel__p_open_RyR = var_RyR_channel__k1 * var_chaste_interface__RyR_channel__p_close_RyR - 0.080000000000000002 * var_chaste_interface__RyR_channel__p_open_RyR / (1 + 0.35999999999999999 / var_Ca_concentrations_in_SR__Carel); // 1 / millisecond - - return d_dt_chaste_interface_var_RyR_channel__p_open_RyR; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative29(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; - // Units: millimolar; Initial value: 9.455741736977666 - - - - const double var_x311 = 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; - const double var_x312 = sqrt(pow((1 - var_x311), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); - const double var_x464 = 1 + 0.35999999999999999 / (-5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * var_x312); - - partialF = -0.080000000000000002 / var_x464; - } - else - { - const double y_save = rY[29]; - rY[29] += delta; - const double temp = EvaluateYDerivative29(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[29])/delta; - rY[29] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative30(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; - // Units: dimensionless; Initial value: 0.00034314360001543243 - double var_chaste_interface__RyR_channel__p_close_RyR = rY[30]; - // Units: dimensionless; Initial value: 0.19135178123107768 - double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; - // Units: millimolar; Initial value: 9.455741736977666 - - - // Lookup table indexing - const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); - - // Mathematics - const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar - const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar - const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA - const double var_RyR_channel__k1 = 280000 * pow(var_internal_ion_concentrations__Cai, 2) / pow(mParameters[2], 2) - 150 * var_L_type_Ca_channel__p_open_CaL * var_L_type_Ca_channel_Ca_dependent_gate__iCaL; // per_millisecond - const double d_dt_chaste_interface_var_RyR_channel__p_close_RyR = -(0.00084900000000000004 + var_RyR_channel__k1) * var_chaste_interface__RyR_channel__p_close_RyR + 0.000377 * pow(var_Ca_concentrations_in_SR__Carel, 2) * (1 - var_chaste_interface__RyR_channel__p_close_RyR - var_chaste_interface__RyR_channel__p_open_RyR); // 1 / millisecond - - return d_dt_chaste_interface_var_RyR_channel__p_close_RyR; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative30(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; - // Units: millimolar; Initial value: 9.455741736977666 - - - - const double var_x1 = var_chaste_interface__membrane__Vm == 0; - const double var_x29 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; - const double var_x30 = exp(-var_x29); - const double var_x31 = 1 - var_x30; - const double var_x32 = 1 / var_x31; - const double var_x33 = var_x30 * mParameters[5]; - const double var_x34 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x35 = -0.026190000000000001 + 0.5 * var_x34 + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x36 = var_x35 - var_x33; - const double var_x37 = var_x32 * var_x36; - const double var_x40 = -0.052380000000000003 + var_x34 + var_chaste_interface__internal_ion_concentrations__Ca_Total; - const double var_x127 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; - const double var_x128 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); - const double var_x129 = 1 / (1 + 2.7439999999999993 * var_x128); - const double var_x228 = ((var_x1) ? (-mParameters[5]) : (var_x29 * var_x37)); - const double var_x229 = var_x127 * var_x228; - const double var_x246 = var_x129 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; - const double var_x298 = pow(var_x40, 2); - const double var_x311 = 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; - const double var_x312 = sqrt(pow((1 - var_x311), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); - const double var_x451 = 10.139999999999999 * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; - const double var_x454 = 70000 / pow(mParameters[2], 2); - const double var_x456 = var_x246 * var_x451; - const double var_x465 = var_x298 * var_x454; - const double var_x466 = var_x229 * var_x456; - const double var_x467 = -1 + var_x311 + var_x312; - const double var_x468 = pow(var_x467, 2); - const double var_x469 = -0.010993320000000001 * var_x468; - - partialF = -0.00084900000000000004 + var_x466 + var_x469 - var_x465; - } - else - { - const double y_save = rY[30]; - rY[30] += delta; - const double temp = EvaluateYDerivative30(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[30])/delta; - rY[30] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative31(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; - // Units: dimensionless; Initial value: 0.00034314360001543243 - double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; - // Units: millimolar; Initial value: 9.455741736977666 - double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; - // Units: millimolar; Initial value: 2.611712901567567 - - - - // Mathematics - const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar - const double var_SR_T_current__i_SR_T = 386 * var_chaste_interface__Ca_concentrations_in_SR__Caup - 386 * var_Ca_concentrations_in_SR__Carel; // picoA - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA - const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total = 3.2387883511406234e-5 * var_SR_T_current__i_SR_T - 3.2387883511406234e-5 * var_RyR_channel__i_RyR; // millimolar / millisecond - - return d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative31(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; - // Units: dimensionless; Initial value: 0.00034314360001543243 - double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; - // Units: millimolar; Initial value: 9.455741736977666 - - - - const double var_x292 = mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; - const double var_x311 = 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; - const double var_x312 = sqrt(pow((1 - var_x311), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); - const double var_x313 = (-0.078875171467764058 + 0.0085733882030178329 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total) / var_x312; - - partialF = -0.0062508615177014034 - 0.067509304391175154 * var_x313 + var_x292 * (-1.6193941755703117e-5 - 0.00017489457096159366 * var_x313); - } - else - { - const double y_save = rY[31]; - rY[31] += delta; - const double temp = EvaluateYDerivative31(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[31])/delta; - rY[31] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative32(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; - // Units: dimensionless; Initial value: 0.46108441538480216 - double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; - // Units: millimolar; Initial value: 9.455741736977666 - double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; - // Units: millimolar; Initial value: 2.611712901567567 - - - - // Mathematics - const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar - const double var_SR_T_current__i_SR_T = 386 * var_chaste_interface__Ca_concentrations_in_SR__Caup - 386 * var_Ca_concentrations_in_SR__Carel; // picoA - const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond - const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_SR_L_current__i_SR_L = (-var_internal_ion_concentrations__Cai + var_chaste_interface__Ca_concentrations_in_SR__Caup) * mParameters[0]; // picoA - const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless - const double var_SR_calcium_pump__i_SR_U = (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA - const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup = -1.2955153404562494e-5 * var_SR_L_current__i_SR_L - 1.2955153404562494e-5 * var_SR_T_current__i_SR_T - 1.2955153404562494e-5 * var_SR_calcium_pump__i_SR_U; // millimolar / millisecond - - return d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative32(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; - // Units: dimensionless; Initial value: 0.46108441538480216 - double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; - // Units: millimolar; Initial value: 2.611712901567567 - - - - const double var_x308 = 1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup; - const double var_x314 = var_chaste_interface__SR_calcium_pump_y_gate__y / (pow(var_x308, 2) * pow(var_chaste_interface__Ca_concentrations_in_SR__Caup, 2)); - const double var_x315 = var_x314 * mParameters[3]; - - partialF = -0.0050006892141611229 - 1.2955153404562494e-5 * mParameters[0] - 1.0364122723649996e-8 * var_x315; - } - else - { - const double y_save = rY[32]; - rY[32] += delta; - const double temp = EvaluateYDerivative32(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[32])/delta; - rY[32] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative33(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__NL_model__pCa = rY[33]; - // Units: dimensionless; Initial value: 0.02490898775497523 - double var_chaste_interface__NL_model__pCaCB = rY[34]; - // Units: dimensionless; Initial value: 0.001990153835322864 - double var_chaste_interface__NL_model__pCB = rY[35]; - // Units: dimensionless; Initial value: 0.00042941813853474524 - - - - // Mathematics - const double var_NL_model__Q_a = -0.0038999999999999998 * var_chaste_interface__NL_model__pCaCB + 0.0038999999999999998 * var_chaste_interface__NL_model__pCa * exp(-0.86212130841993795); // per_millisecond - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_NL_model__Q_b = -0.029999999999999999 * var_chaste_interface__NL_model__pCa + 39 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB) * var_internal_ion_concentrations__Cai; // per_millisecond - const double d_dt_chaste_interface_var_NL_model__pCa = -var_NL_model__Q_a + var_NL_model__Q_b; // 1 / millisecond - - return d_dt_chaste_interface_var_NL_model__pCa; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative33(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - - - - const double var_x34 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x470 = 0.0038999999999999998 * exp(-0.86212130841993795); - const double var_x471 = -19.5 * var_x34 - 19.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - - partialF = 0.99141000000000001 + var_x471 - var_x470; - } - else - { - const double y_save = rY[33]; - rY[33] += delta; - const double temp = EvaluateYDerivative33(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[33])/delta; - rY[33] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative34(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__NL_model__pCa = rY[33]; - // Units: dimensionless; Initial value: 0.02490898775497523 - double var_chaste_interface__NL_model__pCaCB = rY[34]; - // Units: dimensionless; Initial value: 0.001990153835322864 - double var_chaste_interface__NL_model__pCB = rY[35]; - // Units: dimensionless; Initial value: 0.00042941813853474524 - double var_chaste_interface__NL_model__X = rY[36]; - // Units: micrometre; Initial value: 0.9573749975411884 - - - - // Mathematics - const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond - const double var_NL_model__Q_a = -0.0038999999999999998 * var_chaste_interface__NL_model__pCaCB + 0.0038999999999999998 * var_chaste_interface__NL_model__pCa * exp(-0.86212130841993795); // per_millisecond - const double var_NL_model__Q_d2 = 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCaCB; // per_millisecond - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond - const double d_dt_chaste_interface_var_NL_model__pCaCB = -var_NL_model__Q_d2 - var_NL_model__Q_r + var_NL_model__Q_a; // 1 / millisecond - - return d_dt_chaste_interface_var_NL_model__pCaCB; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative34(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__NL_model__X = rY[36]; - // Units: micrometre; Initial value: 0.9573749975411884 - - - - const double var_x317 = pow((0.95737999754118841 - var_chaste_interface__NL_model__X), 2); - const double var_x473 = -0.038879999999999998 * var_x317; - - partialF = -0.0339 + var_x473; - } - else - { - const double y_save = rY[34]; - rY[34] += delta; - const double temp = EvaluateYDerivative34(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[34])/delta; - rY[34] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative35(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__NL_model__pCaCB = rY[34]; - // Units: dimensionless; Initial value: 0.001990153835322864 - double var_chaste_interface__NL_model__pCB = rY[35]; - // Units: dimensionless; Initial value: 0.00042941813853474524 - double var_chaste_interface__NL_model__X = rY[36]; - // Units: micrometre; Initial value: 0.9573749975411884 - - - - // Mathematics - const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond - const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar - const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond - const double d_dt_chaste_interface_var_NL_model__pCB = -0.12 * var_chaste_interface__NL_model__pCB - 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCB + var_NL_model__Q_r; // 1 / millisecond - - return d_dt_chaste_interface_var_NL_model__pCB; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative35(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__NL_model__X = rY[36]; - // Units: micrometre; Initial value: 0.9573749975411884 - - - - const double var_x34 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); - const double var_x317 = pow((0.95737999754118841 - var_chaste_interface__NL_model__X), 2); - const double var_x473 = -0.038879999999999998 * var_x317; - const double var_x474 = 780 * var_x34; - const double var_x475 = 780 * var_chaste_interface__internal_ion_concentrations__Ca_Total; - - partialF = 40.736400000000003 + var_x473 - var_x474 - var_x475; - } - else - { - const double y_save = rY[35]; - rY[35] += delta; - const double temp = EvaluateYDerivative35(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[35])/delta; - rY[35] = y_save; - } - return partialF; - } - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative36(double var_chaste_interface__environment__time, std::vector& rY) - { - - double var_chaste_interface__NL_model__X = rY[36]; - // Units: micrometre; Initial value: 0.9573749975411884 - - - - // Mathematics - const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond - - return d_dt_chaste_interface_var_NL_model__X; - } - - double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative36(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - - - - - partialF = -1.2; - } - else - { - const double y_save = rY[36]; - rY[36] += delta; - const double temp = EvaluateYDerivative36(var_chaste_interface__environment__time, rY); - partialF = (temp-mEvalF[36])/delta; - rY[36] = y_save; - } - return partialF; - } - - std::vector Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) - { - // Inputs: - // Time units: millisecond - double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -85.95752434460744 - double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; - // Units: millimolar; Initial value: 4.925761439682025 - double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; - // Units: millimolar; Initial value: 143.1837333000449 - double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; - // Units: millimolar; Initial value: 0.00040180173572968586 - double var_chaste_interface__ATP_production__ATPi = rY[4]; - // Units: millimolar; Initial value: 4.657102729020499 - double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; - // Units: dimensionless; Initial value: 1.779648367445368e-05 - double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; - // Units: dimensionless; Initial value: 0.5861887862983165 - double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; - // Units: dimensionless; Initial value: 1.5445004166497696e-06 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; - // Units: dimensionless; Initial value: 0.17246483915629204 - double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; - // Units: dimensionless; Initial value: 6.098246017787626e-05 - double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; - // Units: dimensionless; Initial value: 0.9985266538252986 - double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; - // Units: dimensionless; Initial value: 0.6080573900752752 - double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; - // Units: dimensionless; Initial value: 0.0018339931180983765 - double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; - // Units: dimensionless; Initial value: 0.20443083454225305 - double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; - // Units: dimensionless; Initial value: 0.967887666264921 - double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; - // Units: dimensionless; Initial value: 0.09738789658609195 - double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; - // Units: dimensionless; Initial value: 0.09745345578743213 - double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; - // Units: dimensionless; Initial value: 0.0007956883250874798 - double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; - // Units: dimensionless; Initial value: 0.9999125083105881 - double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; - // Units: dimensionless; Initial value: 0.9891789193465331 - double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; - // Units: dimensionless; Initial value: 0.00034314360001543243 - double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; - // Units: millimolar; Initial value: 9.455741736977666 - - - // Mathematics - const double var_Ca_concentrations_in_SR__CSQN_max = 10; // millimolar - const double var_Ca_concentrations_in_SR__K_mCSQN = 0.80000000000000004; // millimolar - const double var_Ca_concentrations_in_SR__b1 = -var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + var_Ca_concentrations_in_SR__CSQN_max + var_Ca_concentrations_in_SR__K_mCSQN; // millimolar - const double var_Ca_concentrations_in_SR__c1 = var_chaste_interface__Ca_concentrations_in_SR__Ca_Total * var_Ca_concentrations_in_SR__K_mCSQN; // millimolar2 - const double var_Ca_concentrations_in_SR__Carel = sqrt(0.25 * pow(var_Ca_concentrations_in_SR__b1, 2) + var_Ca_concentrations_in_SR__c1) - 0.5 * var_Ca_concentrations_in_SR__b1; // millimolar - const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless - const double var_internal_ion_concentrations__CMDN_max = 0.050000000000000003; // millimolar - const double var_internal_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar - const double var_internal_ion_concentrations__b1 = -var_chaste_interface__internal_ion_concentrations__Ca_Total + var_internal_ion_concentrations__CMDN_max + var_internal_ion_concentrations__K_mCMDN; // millimolar - const double var_internal_ion_concentrations__c1 = var_chaste_interface__internal_ion_concentrations__Ca_Total * var_internal_ion_concentrations__K_mCMDN; // millimolar2 - const double var_internal_ion_concentrations__Cai = sqrt(0.25 * pow(var_internal_ion_concentrations__b1, 2) + var_internal_ion_concentrations__c1) - 0.5 * var_internal_ion_concentrations__b1; // millimolar - const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA - const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF - const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole - const double var_membrane__R = 8.3142999999999994; // coulomb_millivolt_per_kelvin_millimole - const double var_membrane__T = 310; // kelvin - const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (2 * (-mParameters[5] * exp(-2 * var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)) + var_internal_ion_concentrations__Cai) * var_membrane__F * var_chaste_interface__membrane__Vm / ((1 - exp(-2 * var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T))); // millimolar - const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA - const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : ((-mParameters[6] * exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)) + var_chaste_interface__internal_ion_concentrations__Ki) * var_membrane__F * var_chaste_interface__membrane__Vm / ((1 - exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T))); // millimolar - const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA - const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : ((-mParameters[7] * exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)) + var_chaste_interface__internal_ion_concentrations__Nai) * var_membrane__F * var_chaste_interface__membrane__Vm / ((1 - exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T))); // millimolar - const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA - const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaL_Ca + var_L_type_Ca_channel__i_CaL_K + var_L_type_Ca_channel__i_CaL_Na; // picoA - const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 - const double var_membrane__i_ext_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 - const double var_rapid_time_dependent_potassium_current__g_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * mParameters[9] * mParameters[12]; // nanoS - const double var_slow_time_dependent_potassium_current__P_Ks_Na = 0.2016; // picoA_per_millimolar - const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA - const double var_slow_time_dependent_potassium_current__i_Ks_Na = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na * var_slow_time_dependent_potassium_current__P_Ks_Na; // picoA - const double var_slow_time_dependent_potassium_current__i_Ks = var_slow_time_dependent_potassium_current__i_Ks_K + var_slow_time_dependent_potassium_current__i_Ks_Na; // picoA - const double var_slow_time_dependent_potassium_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_time_dependent_potassium_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 - const double var_sodium_calcium_exchanger__Km_Cai = 0.0013799999999999999; // millimolar - const double var_sodium_calcium_exchanger__Km_Cao = 1.3799999999999999; // millimolar - const double var_sodium_calcium_exchanger__Km_Nai = 8.75; // millimolar - const double var_sodium_calcium_exchanger__Km_Nao = 87.5; // millimolar - const double var_sodium_calcium_exchanger__Partition = 0.32000000000000001; // dimensionless - const double var_sodium_calcium_exchanger__k1 = exp(var_membrane__F * var_chaste_interface__membrane__Vm * var_sodium_calcium_exchanger__Partition / (var_membrane__R * var_membrane__T)); // per_millisecond - const double var_sodium_calcium_exchanger__k2 = exp((-1 + var_sodium_calcium_exchanger__Partition) * var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)); // per_millisecond - const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + pow(var_sodium_calcium_exchanger__Km_Nai, 3) * (1 + var_internal_ion_concentrations__Cai / var_sodium_calcium_exchanger__Km_Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless - const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + pow(var_sodium_calcium_exchanger__Km_Nao, 3) * (1 + mParameters[5] / var_sodium_calcium_exchanger__Km_Cao) / pow(mParameters[7], 3)); // dimensionless - const double var_sodium_calcium_exchanger__i_NaCa = (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA - const double var_sodium_calcium_exchanger__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchanger__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 - const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA - const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA - const double var_sodium_current__i_Na = var_sodium_current__i_Na_K + var_sodium_current__i_Na_Na; // picoA - const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 - const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki) / var_membrane__F; // millivolt - const double var_rapid_time_dependent_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * var_rapid_time_dependent_potassium_current__g_Kr * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA - const double var_rapid_time_dependent_potassium_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_time_dependent_potassium_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 - const double var_time_independent_potassium_current__g_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * mParameters[9] * mParameters[11]; // nanoS - const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond - const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless - const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless - const double var_time_independent_potassium_current__fO2 = 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2); // dimensionless - const double var_time_independent_potassium_current__fO3 = 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB; // dimensionless - const double var_time_independent_potassium_current__fO4 = pow(var_time_independent_potassium_current__fO, 4); // dimensionless - const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (var_time_independent_potassium_current__fO2 + var_time_independent_potassium_current__fO3 + var_time_independent_potassium_current__fO4) * var_time_independent_potassium_current__g_K1 * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA - const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 - const double var_transient_outward_current__P_to_Na = 0.00297; // picoA_per_millimolar - const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA - const double var_transient_outward_current__i_to_Na = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_transient_outward_current__P_to_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA - const double var_transient_outward_current__i_to = var_transient_outward_current__i_to_K + var_transient_outward_current__i_to_Na; // picoA - const double var_transient_outward_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 - - std::vector dqs(13); - dqs[0] = var_Ca_concentrations_in_SR__Carel; - dqs[1] = var_RyR_channel__i_RyR; - dqs[2] = var_internal_ion_concentrations__Cai; - dqs[3] = var_L_type_Ca_channel__i_Ca_L_converted; - dqs[4] = var_membrane__Cm_converted; - dqs[5] = var_sodium_current__i_Na_converted; - dqs[6] = var_time_independent_potassium_current__i_K1_converted; - dqs[7] = var_rapid_time_dependent_potassium_current__i_Kr_converted; - dqs[8] = var_slow_time_dependent_potassium_current__i_Ks_converted; - dqs[9] = var_sodium_calcium_exchanger__i_NaCa_converted; - dqs[10] = var_membrane__i_ext_converted; - dqs[11] = var_transient_outward_current__i_to_converted; - dqs[12] = var_chaste_interface__environment__time; - return dqs; - } - -template<> -void OdeSystemInformation::Initialise(void) -{ - this->mSystemName = "matsuoka_model_2003"; - this->mFreeVariableName = "time"; - this->mFreeVariableUnits = "millisecond"; - - // rY[0]: - this->mVariableNames.push_back("membrane_voltage"); - this->mVariableUnits.push_back("millivolt"); - this->mInitialConditions.push_back(-85.95752434460744); - - // rY[1]: - this->mVariableNames.push_back("cytosolic_sodium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(4.925761439682025); - - // rY[2]: - this->mVariableNames.push_back("cytosolic_potassium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(143.1837333000449); - - // rY[3]: - this->mVariableNames.push_back("internal_ion_concentrations__Ca_Total"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.00040180173572968586); - - // rY[4]: - this->mVariableNames.push_back("ATP_production__ATPi"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(4.657102729020499); - - // rY[5]: - this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(1.779648367445368e-05); - - // rY[6]: - this->mVariableNames.push_back("sodium_current_voltage_dependent_gate__p_RP_Na"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.3556412697995689); - - // rY[7]: - this->mVariableNames.push_back("sodium_current_voltage_dependent_gate__p_AI_Na"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.40285968661346977); - - // rY[8]: - this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.5861887862983165); - - // rY[9]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(1.5445004166497696e-06); - - // rY[10]: - this->mVariableNames.push_back("L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9968480629364956); - - // rY[11]: - this->mVariableNames.push_back("L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.000877325391245903); - - // rY[12]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.17246483915629204); - - // rY[13]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(6.098246017787626e-05); - - // rY[14]: - this->mVariableNames.push_back("L_type_Ca_channel_Ca_dependent_gate__p_C"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.4250747299372254); - - // rY[15]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_d2_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9985266538252986); - - // rY[16]: - this->mVariableNames.push_back("T_type_Ca_channel_y1_gate__y1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(1.6882718240109127e-05); - - // rY[17]: - this->mVariableNames.push_back("T_type_Ca_channel_y2_gate__y2"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.8585352091865849); - - // rY[18]: - this->mVariableNames.push_back("time_independent_potassium_current_y_gate__y"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.6080573900752752); - - // rY[19]: - this->mVariableNames.push_back("rapid_time_dependent_potassium_current_y1_gate__y1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0018339931180983765); - - // rY[20]: - this->mVariableNames.push_back("rapid_time_dependent_potassium_current_y2_gate__y2"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.20443083454225305); - - // rY[21]: - this->mVariableNames.push_back("rapid_time_dependent_potassium_current_y3_gate__y3"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.967887666264921); - - // rY[22]: - this->mVariableNames.push_back("slow_time_dependent_potassium_current_y1_gate__y1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.09738789658609195); - - // rY[23]: - this->mVariableNames.push_back("slow_time_dependent_potassium_current_y2_gate__y2"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.09745345578743213); - - // rY[24]: - this->mVariableNames.push_back("transient_outward_current_y1_gate__y1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0007956883250874798); - - // rY[25]: - this->mVariableNames.push_back("transient_outward_current_y2_gate__y2"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9999125083105881); - - // rY[26]: - this->mVariableNames.push_back("sodium_calcium_exchanger_y_gate__y"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9891789193465331); - - // rY[27]: - this->mVariableNames.push_back("sodium_potassium_pump_y_gate__y"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.5910747147428818); - - // rY[28]: - this->mVariableNames.push_back("SR_calcium_pump_y_gate__y"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.46108441538480216); - - // rY[29]: - this->mVariableNames.push_back("RyR_channel__p_open_RyR"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.00034314360001543243); - - // rY[30]: - this->mVariableNames.push_back("RyR_channel__p_close_RyR"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.19135178123107768); - - // rY[31]: - this->mVariableNames.push_back("Ca_concentrations_in_SR__Ca_Total"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(9.455741736977666); - - // rY[32]: - this->mVariableNames.push_back("Ca_concentrations_in_SR__Caup"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(2.611712901567567); - - // rY[33]: - this->mVariableNames.push_back("NL_model__pCa"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.02490898775497523); - - // rY[34]: - this->mVariableNames.push_back("NL_model__pCaCB"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.001990153835322864); - - // rY[35]: - this->mVariableNames.push_back("NL_model__pCB"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.00042941813853474524); - - // rY[36]: - this->mVariableNames.push_back("NL_model__X"); - this->mVariableUnits.push_back("micrometre"); - this->mInitialConditions.push_back(0.9573749975411884); - - // mParameters[0]: - this->mParameterNames.push_back("SR_leak_current_max"); - this->mParameterUnits.push_back("picoA_per_millimolar"); - - // mParameters[1]: - this->mParameterNames.push_back("SR_release_current_max"); - this->mParameterUnits.push_back("picoA_per_millimolar"); - - // mParameters[2]: - this->mParameterNames.push_back("SR_release_kmcacyt"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[3]: - this->mParameterNames.push_back("SR_uptake_current_max"); - this->mParameterUnits.push_back("picoA"); - - // mParameters[4]: - this->mParameterNames.push_back("concentration_clamp_onoff"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[5]: - this->mParameterNames.push_back("extracellular_calcium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[6]: - this->mParameterNames.push_back("extracellular_potassium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[7]: - this->mParameterNames.push_back("extracellular_sodium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[8]: - this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); - this->mParameterUnits.push_back("picoA_per_millimolar"); - - // mParameters[9]: - this->mParameterNames.push_back("membrane__Cm"); - this->mParameterUnits.push_back("picoF"); - - // mParameters[10]: - this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); - this->mParameterUnits.push_back("picoA_per_millimolar"); - - // mParameters[11]: - this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // mParameters[12]: - this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("nanoS_per_picoF"); - - // mParameters[13]: - this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("picoA_per_millimolar"); - - // mParameters[14]: - this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); - this->mParameterUnits.push_back("picoA_per_picoF"); - - // mParameters[15]: - this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); - this->mParameterUnits.push_back("picoA_per_millimolar"); - - // Derived Quantity index [0]: - this->mDerivedQuantityNames.push_back("JSR_calcium_concentration"); - this->mDerivedQuantityUnits.push_back("millimolar"); - - // Derived Quantity index [1]: - this->mDerivedQuantityNames.push_back("SR_release_current"); - this->mDerivedQuantityUnits.push_back("picoA"); - - // Derived Quantity index [2]: - this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); - this->mDerivedQuantityUnits.push_back("millimolar"); - - // Derived Quantity index [3]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [4]: - this->mDerivedQuantityNames.push_back("membrane_capacitance"); - this->mDerivedQuantityUnits.push_back("uF"); - - // Derived Quantity index [5]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [6]: - this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [7]: - this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [8]: - this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [9]: - this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [10]: - this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [11]: - this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [12]: - this->mDerivedQuantityNames.push_back("time"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - this->mInitialised = true; -} - -// Serialization for Boost >= 1.36 -#include "SerializationExportWrapperForCpp.hpp" -CHASTE_CLASS_EXPORT(Dynamicmatsuoka_model_2003FromCellMLGRL1Opt) -extern "C" -{ - AbstractCardiacCellInterface* MakeCardiacCell( - boost::shared_ptr pSolver, - boost::shared_ptr pStimulus) - { - return new Dynamicmatsuoka_model_2003FromCellMLGRL1Opt(pSolver, pStimulus); - } - -} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999.cpp_python36 deleted file mode 100644 index 115381eb..00000000 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999.cpp_python36 +++ /dev/null @@ -1,3441 +0,0 @@ -//! @file -//! -//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) -//! -//! Model: winslow_model_1999 -//! -//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen -//! (translator: chaste_codegen, model type: GeneralizedRushLarsenSecondOrder) -//! on (date omitted as unimportant) -//! -//! - -#include "dynamic_winslow_model_1999.hpp" -#include -#include -#include -#include -#include "Exception.hpp" -#include "OdeSystemInformation.hpp" -#include "RegularStimulus.hpp" -#include "HeartConfig.hpp" -#include "IsNan.hpp" -#include "MathsCustomFunctions.hpp" - - - - - - boost::shared_ptr Dynamicwinslow_model_1999FromCellMLGRL2::UseCellMLDefaultStimulus() - { - // Use the default stimulus specified by CellML metadata - const double var_chaste_interface__membrane__stim_amplitude_converted = -21.126799999999999 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 - const double var_chaste_interface__membrane__stim_duration_converted = 2; // millisecond - const double var_chaste_interface__membrane__stim_period_converted = 1000; // millisecond - const double var_chaste_interface__membrane__stim_start_converted = 100; // millisecond - boost::shared_ptr p_cellml_stim(new RegularStimulus( - -fabs(var_chaste_interface__membrane__stim_amplitude_converted), - var_chaste_interface__membrane__stim_duration_converted, - var_chaste_interface__membrane__stim_period_converted, - var_chaste_interface__membrane__stim_start_converted - )); - mpIntracellularStimulus = p_cellml_stim; - return p_cellml_stim; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::GetIntracellularCalciumConcentration() - { - return mStateVariables[1]; - } - Dynamicwinslow_model_1999FromCellMLGRL2::Dynamicwinslow_model_1999FromCellMLGRL2(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) - : AbstractGeneralizedRushLarsenCardiacCell( - 33, - 0, - pIntracellularStimulus) - { - // Time units: millisecond - // - this->mpSystemInfo = OdeSystemInformation::Instance(); - Init(); - - // We have a default stimulus specified in the CellML file metadata - this->mHasDefaultStimulusFromCellML = true; - - this->mParameters[0] = 1800; // (var_RyR_channel__v1) [per_second] - this->mParameters[1] = 1; // (var_SERCA2a_pump__K_SR) [dimensionless] - this->mParameters[2] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] - this->mParameters[3] = 2; // (var_standard_ionic_concentrations__Cao) [millimolar] - this->mParameters[4] = 4; // (var_standard_ionic_concentrations__Ko) [millimolar] - this->mParameters[5] = 138; // (var_standard_ionic_concentrations__Nao) [millimolar] - this->mParameters[6] = 0.00031250000000000001; // (var_L_type_Ca_current__P_Ca) [cm_per_second] - this->mParameters[7] = 0.001; // (var_membrane__C_sc) [microF_per_cm2] - this->mParameters[8] = 12.800000000000001; // (var_fast_sodium_current__g_Na) [milliS_per_microF] - this->mParameters[9] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] - this->mParameters[10] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] - this->mParameters[11] = 2.7999999999999998; // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] - this->mParameters[12] = 0.0033999999999999998; // (var_rapid_activating_delayed_rectifiyer_K_current__g_Kr) [milliS_per_microF] - this->mParameters[13] = 0.0027133999999999999; // (var_slow_activating_delayed_rectifiyer_K_current__g_Ks) [milliS_per_microF] - this->mParameters[14] = 0.29999999999999999; // (var_Na_Ca_exchanger__K_NaCa) [microA_per_microF] - this->mParameters[15] = 0.23815; // (var_transient_outward_potassium_current__g_to1) [milliS_per_microF] - } - - Dynamicwinslow_model_1999FromCellMLGRL2::~Dynamicwinslow_model_1999FromCellMLGRL2() - { - } - - - void Dynamicwinslow_model_1999FromCellMLGRL2::VerifyStateVariables() - { - std::vector& rY = rGetStateVariables(); - std::string error_message = ""; - - for (unsigned i=0; i < 33; i++) - { - if(std::isnan(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; - } - if(std::isinf(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; - } - if(this->is_concentration[i] && rY[i] < 0) - { - error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] < 0) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] > 1) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; - } - } - if (error_message != ""){ - EXCEPTION(DumpState(error_message)); - } - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::GetIIonic(const std::vector* pStateVariables) - { - // For state variable interpolation (SVI) we read in interpolated state variables, - // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). - if (!pStateVariables) pStateVariables = &rGetStateVariables(); - const std::vector& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.0328302 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.988354 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99254 - double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; - // Units: dimensionless; Initial value: 0.51 - double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; - // Units: dimensionless; Initial value: 0.264 - double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; - // Units: dimensionless; Initial value: 2.63 - double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; - // Units: dimensionless; Initial value: 0.99 - double var_chaste_interface__L_type_Ca_current__O = rY[9]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; - // Units: dimensionless; Initial value: 0.798 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; - // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; - // Units: millimolar; Initial value: 157.8 - - const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second - const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF - const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar - const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar - const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless - const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless - const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF - const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole - const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF - const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF - const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar - const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF - const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF - const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF - const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar - const double var_sodium_potassium_pump__K_mNai = 10; // millimolar - const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF - const double var_L_type_Ca_current__i_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca; // uA_per_cm2 - const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second - const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt - const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF - const double var_L_type_Ca_current__i_Ca_K = pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt - const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF - const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF - const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 - const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF - const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF - const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 - const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[4] + 0.018329999999999999 * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt - const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF - const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_activating_delayed_rectifiyer_K_current__i_Ks; // uA_per_cm2 - const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF - const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless - const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF - const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar - const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF - const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 - const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF - const double var_transient_outward_potassium_current__i_to1_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_potassium_current__i_to1; // uA_per_cm2 - const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca_K + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Ca_b + HeartConfig::Instance()->GetCapacitance() * var_plateau_potassium_current__i_Kp + HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump__i_p_Ca + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Na_b + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_current__i_Ca_converted + var_Na_Ca_exchanger__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted + var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_potassium_current__i_to1_converted; // uA_per_cm2 - - const double i_ionic = var_chaste_interface__i_ionic; - EXCEPT_IF_NOT(!std::isnan(i_ionic)); - return i_ionic; - } - - void Dynamicwinslow_model_1999FromCellMLGRL2::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) - { - std::vector& rY = rGetStateVariables(); - const unsigned v_index = GetVoltageIndex(); - const double delta = 1e-8; - const double yinit = rY[v_index]; - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.0328302 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.988354 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99254 - double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; - // Units: dimensionless; Initial value: 0.51 - double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; - // Units: dimensionless; Initial value: 0.264 - double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; - // Units: dimensionless; Initial value: 2.63 - double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; - // Units: dimensionless; Initial value: 0.99 - double var_chaste_interface__L_type_Ca_current__O = rY[9]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; - // Units: dimensionless; Initial value: 0.798 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; - // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; - // Units: millimolar; Initial value: 157.8 - - - // Mathematics - double d_dt_chaste_interface_var_membrane__V; - const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second - const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF - const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar - const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar - const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless - const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless - const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF - const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole - const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 - const double var_membrane__i_Stim = var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF - const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF - const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF - const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar - const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF - const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF - const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF - const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar - const double var_sodium_potassium_pump__K_mNai = 10; // millimolar - const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF - const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second - const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt - const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF - const double var_L_type_Ca_current__i_Ca_K = pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt - const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF - const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF - const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF - const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[4] + 0.018329999999999999 * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt - const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF - const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF - const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless - const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF - const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar - const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF - const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF - const double var_membrane__V_orig_deriv = -(var_L_type_Ca_current__i_Ca + var_L_type_Ca_current__i_Ca_K + var_Na_Ca_exchanger__i_NaCa + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_membrane__i_Stim + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) / mParameters[7]; // millivolt / second - d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond - - double evalF = d_dt_chaste_interface_var_membrane__V; - mEvalF[0] = d_dt_chaste_interface_var_membrane__V; - double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); - if (fabs(partialF) < delta) - { - rY[v_index] += 0.5*evalF*mDt; - } - else - { - rY[v_index] += (evalF/partialF)*(exp(partialF*0.5*mDt)-1.0); - } - - rY[v_index] = yinit; - evalF = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); - mEvalF[0] = evalF; - partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); - if (fabs(partialF) < delta) - { - rY[v_index] = yinit + evalF*mDt; - } - else - { - rY[v_index] = yinit + (evalF/partialF)*(exp(partialF*mDt)-1.0); - } - } - - void Dynamicwinslow_model_1999FromCellMLGRL2::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) - { - std::vector& rY = rGetStateVariables(); - const double delta=1e-8; - const unsigned size = GetNumberOfStateVariables(); - mYInit = rY; - double y_save; - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.0328302 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.988354 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99254 - double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; - // Units: dimensionless; Initial value: 0.51 - double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; - // Units: dimensionless; Initial value: 0.264 - double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; - // Units: dimensionless; Initial value: 2.63 - double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; - // Units: dimensionless; Initial value: 0.99 - double var_chaste_interface__L_type_Ca_current__O = rY[9]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; - // Units: dimensionless; Initial value: 0.997208 - double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; - // Units: dimensionless; Initial value: 6.38897e-05 - double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; - // Units: dimensionless; Initial value: 1.535e-09 - double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; - // Units: dimensionless; Initial value: 1.63909e-14 - double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; - // Units: dimensionless; Initial value: 6.56337e-20 - double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; - // Units: dimensionless; Initial value: 0.00272826 - double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; - // Units: dimensionless; Initial value: 6.99215e-07 - double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; - // Units: dimensionless; Initial value: 6.71989e-11 - double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; - // Units: dimensionless; Initial value: 2.87031e-15 - double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; - // Units: dimensionless; Initial value: 4.59752e-20 - double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; - // Units: dimensionless; Initial value: 0.798 - double var_chaste_interface__RyR_channel__P_O1 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_O2 = rY[23]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_C1 = rY[24]; - // Units: dimensionless; Initial value: 0.47 - double var_chaste_interface__RyR_channel__P_C2 = rY[25]; - // Units: dimensionless; Initial value: 0.53 - double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; - // Units: millimolar; Initial value: 0.98 - double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; - // Units: millimolar; Initial value: 0.078 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; - // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; - // Units: millimolar; Initial value: 157.8 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; - // Units: millimolar; Initial value: 0.257 - double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; - // Units: millimolar; Initial value: 0.257 - - - // Mathematics - double d_dt_chaste_interface_var_membrane__V; - const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second - const double var_L_type_Ca_current__a = 2; // dimensionless - const double var_L_type_Ca_current__b = 2; // dimensionless - const double var_L_type_Ca_current__f = 300; // per_second - const double var_L_type_Ca_current__fprime = 7; // per_second - const double var_L_type_Ca_current__g = 2000; // per_second - const double var_L_type_Ca_current__O_orig_deriv = var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__f - var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__O = 0.001 * var_L_type_Ca_current__O_orig_deriv; // 1 / millisecond - const double var_L_type_Ca_current__gprime = 7000; // per_second - const double var_L_type_Ca_current__O_Ca_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__fprime - var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__O_Ca = 0.001 * var_L_type_Ca_current__O_Ca_orig_deriv; // 1 / millisecond - const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF - const double var_L_type_Ca_current__omega = 10; // per_second - const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar - const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar - const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless - const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless - const double var_RyR_channel__k_a_minus = 576; // per_second - const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second - const double var_RyR_channel__k_b_minus = 1930; // per_second - const double var_RyR_channel__k_b_plus = 4050000000.0; // millimolar3_per_second - const double var_RyR_channel__k_c_minus = 0.80000000000000004; // per_second - const double var_RyR_channel__k_c_plus = 100; // per_second - const double var_RyR_channel__P_C2_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus - var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus; // 1 / second - const double d_dt_chaste_interface_var_RyR_channel__P_C2 = 0.001 * var_RyR_channel__P_C2_orig_deriv; // 1 / millisecond - const double var_RyR_channel__m = 3; // dimensionless - const double var_RyR_channel__n = 4; // dimensionless - const double var_SERCA2a_pump__K_fb = 0.00016799999999999999; // millimolar - const double var_SERCA2a_pump__K_rb = 3.29; // millimolar - const double var_SERCA2a_pump__N_fb = 1.2; // dimensionless - const double var_SERCA2a_pump__N_rb = 1; // dimensionless - const double var_SERCA2a_pump__Vmaxf = 0.081299999999999997; // millimolar_per_second - const double var_SERCA2a_pump__Vmaxr = 0.318; // millimolar_per_second - const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF - const double var_intracellular_Ca_fluxes__HTRPN_tot = 0.14000000000000001; // dimensionless - const double var_intracellular_Ca_fluxes__LTRPN_tot = 0.070000000000000007; // dimensionless - const double var_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second - const double var_intracellular_Ca_fluxes__k_htrpn_plus = 20000; // per_millimolar_second - const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40; // per_second - const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000; // per_millimolar_second - const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second - const double var_intracellular_Ca_fluxes__tau_xfer = 0.026700000000000002; // second - const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 - const double var_intracellular_ion_concentrations__CMDN_tot = 0.050000000000000003; // millimolar - const double var_intracellular_ion_concentrations__CSQN_tot = 15; // millimolar - const double var_SERCA2a_pump__rb = pow((var_chaste_interface__intracellular_ion_concentrations__Ca_NSR / var_SERCA2a_pump__K_rb), var_SERCA2a_pump__N_rb); // dimensionless - const double var_intracellular_Ca_fluxes__J_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_chaste_interface__intracellular_ion_concentrations__Ca_NSR) / var_intracellular_Ca_fluxes__tau_tr; // millimolar_per_second - const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second - const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second - const double var_RyR_channel__P_C1_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus; // 1 / second - const double d_dt_chaste_interface_var_RyR_channel__P_C1 = 0.001 * var_RyR_channel__P_C1_orig_deriv; // 1 / millisecond - const double var_RyR_channel__P_O1_orig_deriv = var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus + var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second - const double d_dt_chaste_interface_var_RyR_channel__P_O1 = 0.001 * var_RyR_channel__P_O1_orig_deriv; // 1 / millisecond - const double var_RyR_channel__P_O2_orig_deriv = -var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second - const double d_dt_chaste_interface_var_RyR_channel__P_O2 = 0.001 * var_RyR_channel__P_O2_orig_deriv; // 1 / millisecond - const double var_SERCA2a_pump__fb = pow((var_chaste_interface__intracellular_ion_concentrations__Cai / var_SERCA2a_pump__K_fb), var_SERCA2a_pump__N_fb); // dimensionless - const double var_SERCA2a_pump__J_up = (var_SERCA2a_pump__Vmaxf * var_SERCA2a_pump__fb - var_SERCA2a_pump__Vmaxr * var_SERCA2a_pump__rb) * mParameters[1] / (1 + var_SERCA2a_pump__fb + var_SERCA2a_pump__rb); // millimolar_per_second - const double var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa * var_intracellular_Ca_fluxes__k_htrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) * var_intracellular_Ca_fluxes__k_htrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second - const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa = 0.001 * var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar / millisecond - const double var_intracellular_Ca_fluxes__J_HTRPNCa = var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar_per_second - const double var_intracellular_Ca_fluxes__J_xfer = (-var_chaste_interface__intracellular_ion_concentrations__Cai + var_chaste_interface__intracellular_ion_concentrations__Ca_ss) / var_intracellular_Ca_fluxes__tau_xfer; // millimolar_per_second - const double var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa * var_intracellular_Ca_fluxes__k_ltrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) * var_intracellular_Ca_fluxes__k_ltrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second - const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa = 0.001 * var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar / millisecond - const double var_intracellular_Ca_fluxes__J_LTRPNCa = var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar_per_second - const double var_intracellular_Ca_fluxes__J_trpn = var_intracellular_Ca_fluxes__HTRPN_tot * var_intracellular_Ca_fluxes__J_HTRPNCa + var_intracellular_Ca_fluxes__J_LTRPNCa * var_intracellular_Ca_fluxes__LTRPN_tot; // millimolar_per_second - const double var_intracellular_ion_concentrations__EGTA_tot = 0; // millimolar - const double var_intracellular_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar - const double var_intracellular_ion_concentrations__K_mCSQN = 0.80000000000000004; // millimolar - const double var_intracellular_ion_concentrations__K_mEGTA = 0.00014999999999999999; // millimolar - const double var_intracellular_ion_concentrations__V_JSR = 1.6e-7; // micro_litre - const double var_intracellular_ion_concentrations__V_NSR = 2.0999999999999998e-6; // micro_litre - const double var_intracellular_ion_concentrations__V_SS = 1.2e-9; // micro_litre - const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre - const double var_intracellular_ion_concentrations__Ca_NSR_orig_deriv = var_SERCA2a_pump__J_up * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_NSR - var_intracellular_Ca_fluxes__J_tr * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_NSR; // millimolar / second - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR = 0.001 * var_intracellular_ion_concentrations__Ca_NSR_orig_deriv; // millimolar / millisecond - const double var_intracellular_ion_concentrations__beta_JSR = 1 / (1 + var_intracellular_ion_concentrations__CSQN_tot * var_intracellular_ion_concentrations__K_mCSQN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_intracellular_ion_concentrations__K_mCSQN), 2)); // dimensionless - const double var_intracellular_ion_concentrations__Ca_JSR_orig_deriv = (-var_RyR_channel__J_rel + var_intracellular_Ca_fluxes__J_tr) * var_intracellular_ion_concentrations__beta_JSR; // millimolar / second - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR = 0.001 * var_intracellular_ion_concentrations__Ca_JSR_orig_deriv; // millimolar / millisecond - const double var_intracellular_ion_concentrations__beta_SS = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless - const double var_intracellular_ion_concentrations__beta_i = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless - const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole - const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second - const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__C0_orig_deriv = var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__omega - (4 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C0; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C0 = 0.001 * var_L_type_Ca_current__C0_orig_deriv; // 1 / millisecond - const double var_L_type_Ca_current__C1_orig_deriv = -(3 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__a * var_L_type_Ca_current__gamma + var_L_type_Ca_current__beta) * var_chaste_interface__L_type_Ca_current__C1 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__beta + 4 * var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__omega / var_L_type_Ca_current__b; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C1 = 0.001 * var_L_type_Ca_current__C1_orig_deriv; // 1 / millisecond - const double var_L_type_Ca_current__C2_orig_deriv = -(2 * var_L_type_Ca_current__alpha + 2 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 2) * var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C2 + 3 * var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__alpha + 3 * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2); // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C2 = 0.001 * var_L_type_Ca_current__C2_orig_deriv; // 1 / millisecond - const double var_L_type_Ca_current__C3_orig_deriv = -(3 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 3) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__alpha) * var_chaste_interface__L_type_Ca_current__C3 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__alpha + 4 * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3); // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C3 = 0.001 * var_L_type_Ca_current__C3_orig_deriv; // 1 / millisecond - const double var_L_type_Ca_current__C4_orig_deriv = var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g - (4 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 4) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__f) * var_chaste_interface__L_type_Ca_current__C4 + var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4); // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C4 = 0.001 * var_L_type_Ca_current__C4_orig_deriv; // 1 / millisecond - const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second - const double var_L_type_Ca_current__C_Ca0_orig_deriv = var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__gamma + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__beta_b - (4 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega) * var_chaste_interface__L_type_Ca_current__C_Ca0; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0 = 0.001 * var_L_type_Ca_current__C_Ca0_orig_deriv; // 1 / millisecond - const double var_L_type_Ca_current__C_Ca1_orig_deriv = -(3 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega / var_L_type_Ca_current__b + var_L_type_Ca_current__beta_b) * var_chaste_interface__L_type_Ca_current__C_Ca1 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__beta_b + 4 * var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__a * var_L_type_Ca_current__gamma; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1 = 0.001 * var_L_type_Ca_current__C_Ca1_orig_deriv; // 1 / millisecond - const double var_L_type_Ca_current__C_Ca2_orig_deriv = -(2 * var_L_type_Ca_current__alpha_a + 2 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2)) * var_chaste_interface__L_type_Ca_current__C_Ca2 + 3 * var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__alpha_a + 3 * var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 2) * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__gamma; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2 = 0.001 * var_L_type_Ca_current__C_Ca2_orig_deriv; // 1 / millisecond - const double var_L_type_Ca_current__C_Ca3_orig_deriv = -(3 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3) + var_L_type_Ca_current__alpha_a) * var_chaste_interface__L_type_Ca_current__C_Ca3 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__alpha_a + 4 * var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 3) * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__gamma; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3 = 0.001 * var_L_type_Ca_current__C_Ca3_orig_deriv; // 1 / millisecond - const double var_L_type_Ca_current__C_Ca4_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime - (4 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4) + var_L_type_Ca_current__fprime) * var_chaste_interface__L_type_Ca_current__C_Ca4 + pow(var_L_type_Ca_current__a, 4) * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__gamma; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4 = 0.001 * var_L_type_Ca_current__C_Ca4_orig_deriv; // 1 / millisecond - const double var_L_type_Ca_current_y_gate__tau_y = 0.02 + 0.59999999999999998 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // second - const double var_L_type_Ca_current_y_gate__y_infinity = 0.20000000000000001 + 0.80000000000000004 / (1 + exp(2.5 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_current_y_gate__y_orig_deriv = (-var_chaste_interface__L_type_Ca_current_y_gate__y + var_L_type_Ca_current_y_gate__y_infinity) / var_L_type_Ca_current_y_gate__tau_y; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y = 0.001 * var_L_type_Ca_current_y_gate__y_orig_deriv; // 1 / millisecond - const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_second - const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (3560 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10])) : (7692.3076923076924 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second - const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // dimensionless - const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second - const double var_fast_sodium_current_h_gate__h_orig_deriv = (-var_chaste_interface__fast_sodium_current_h_gate__h + var_fast_sodium_current_h_gate__h_inf) / var_fast_sodium_current_h_gate__tau_h; // 1 / second - const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * var_fast_sodium_current_h_gate__h_orig_deriv; // 1 / millisecond - const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]))) : (0)); // per_second - const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (121.2 * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300 * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[10] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second - const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // dimensionless - const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // second - const double var_fast_sodium_current_j_gate__j_orig_deriv = (-var_chaste_interface__fast_sodium_current_j_gate__j + var_fast_sodium_current_j_gate__j_inf) / var_fast_sodium_current_j_gate__tau_j; // 1 / second - const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * var_fast_sodium_current_j_gate__j_orig_deriv; // 1 / millisecond - const double var_fast_sodium_current_m_gate__E0_m = 47.130000000000003 + var_chaste_interface__membrane__V; // millivolt - const double var_fast_sodium_current_m_gate__alpha_m = ((fabs(var_fast_sodium_current_m_gate__E0_m) < 1.0000000000000001e-5) ? (1000 / (0.10000000000000001 - 0.0050000000000000001 * var_fast_sodium_current_m_gate__E0_m)) : (320 * var_fast_sodium_current_m_gate__E0_m / (1 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m)))); // per_second - const double var_fast_sodium_current_m_gate__beta_m = 80 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_second - const double var_fast_sodium_current_m_gate__m_orig_deriv = ((var_chaste_interface__membrane__V >= -90) ? ((1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m) : (0)); // 1 / second - const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond - const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF - const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf = var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor = 1; // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr = 0.001 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21) + 0.027 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor; // second - const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv = (-var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf) / var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr; // 1 / second - const double d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = 0.001 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv; // 1 / millisecond - const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF - const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar - const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF - const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity = 1 / (1 + exp(1.8161764705882353 - 0.073529411764705885 * var_chaste_interface__membrane__V)); // dimensionless - const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = 0.001 / (0.00013100000000000001 * (-10 + var_chaste_interface__membrane__V) / (-1 + exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V)) + 7.1899999999999999e-5 * (-10 + var_chaste_interface__membrane__V) / (1 - exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V))); // second - const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv = (-var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks + var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity) / var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks; // 1 / second - const double d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = 0.001 * var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv; // 1 / millisecond - const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF - const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF - const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar - const double var_sodium_potassium_pump__K_mNai = 10; // millimolar - const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF - const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second - const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt - const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF - const double var_intracellular_ion_concentrations__Ca_ss_orig_deriv = (var_RyR_channel__J_rel * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_SS - var_intracellular_Ca_fluxes__J_xfer * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_SS - 0.5 * var_L_type_Ca_current__i_Ca * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_SS * var_membrane__F)) * var_intracellular_ion_concentrations__beta_SS; // millimolar / second - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss = 0.001 * var_intracellular_ion_concentrations__Ca_ss_orig_deriv; // millimolar / millisecond - const double var_L_type_Ca_current__i_Ca_K = pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt - const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF - const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF - const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF - const double var_intracellular_ion_concentrations__Cai_orig_deriv = (-var_SERCA2a_pump__J_up - var_intracellular_Ca_fluxes__J_trpn + 0.5 * (-var_calcium_background_current__i_Ca_b - var_sarcolemmal_calcium_pump__i_p_Ca + 2 * var_Na_Ca_exchanger__i_NaCa) * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_myo * var_membrane__F) + var_intracellular_Ca_fluxes__J_xfer) * var_intracellular_ion_concentrations__beta_i; // millimolar / second - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai = 0.001 * var_intracellular_ion_concentrations__Cai_orig_deriv; // millimolar / millisecond - const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[4] + 0.018329999999999999 * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt - const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF - const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF - const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless - const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF - const double var_intracellular_ion_concentrations__Nai_orig_deriv = -(3 * var_Na_Ca_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Na_b) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai = 0.001 * var_intracellular_ion_concentrations__Nai_orig_deriv; // millimolar / millisecond - const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar - const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF - const double var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 = 45.159999999999997 * exp(0.035770000000000003 * var_chaste_interface__membrane__V); // per_second - const double var_transient_outward_potassium_current_X_to1_gate__beta_X_to1 = 98.900000000000006 * exp(-0.062370000000000002 * var_chaste_interface__membrane__V); // per_second - const double var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1) * var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_transient_outward_potassium_current_X_to1_gate__beta_X_to1; // 1 / second - const double d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1 = 0.001 * var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv; // 1 / millisecond - const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF - const double var_intracellular_ion_concentrations__Ki_orig_deriv = -(-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_current__i_Ca_K + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki = 0.001 * var_intracellular_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond - const double var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 = 5.415 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second - const double var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1 = 5.415 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second - const double var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1) * var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 * var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1; // 1 / second - const double d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1 = 0.001 * var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv; // 1 / millisecond - - if (mSetVoltageDerivativeToZero) - { - d_dt_chaste_interface_var_membrane__V = 0.0; - } - else - { - const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 - const double var_membrane__i_Stim = var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF - const double var_membrane__V_orig_deriv = -(var_L_type_Ca_current__i_Ca + var_L_type_Ca_current__i_Ca_K + var_Na_Ca_exchanger__i_NaCa + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_membrane__i_Stim + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) / mParameters[7]; // millivolt / second - d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond - } - - mEvalF[0] = d_dt_chaste_interface_var_membrane__V; - mEvalF[1] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai; - mEvalF[2] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; - mEvalF[3] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; - mEvalF[4] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; - mEvalF[5] = d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; - mEvalF[6] = d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; - mEvalF[7] = d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1; - mEvalF[8] = d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1; - mEvalF[9] = d_dt_chaste_interface_var_L_type_Ca_current__O; - mEvalF[10] = d_dt_chaste_interface_var_L_type_Ca_current__O_Ca; - mEvalF[11] = d_dt_chaste_interface_var_L_type_Ca_current__C0; - mEvalF[12] = d_dt_chaste_interface_var_L_type_Ca_current__C1; - mEvalF[13] = d_dt_chaste_interface_var_L_type_Ca_current__C2; - mEvalF[14] = d_dt_chaste_interface_var_L_type_Ca_current__C3; - mEvalF[15] = d_dt_chaste_interface_var_L_type_Ca_current__C4; - mEvalF[16] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0; - mEvalF[17] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1; - mEvalF[18] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2; - mEvalF[19] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3; - mEvalF[20] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4; - mEvalF[21] = d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y; - mEvalF[22] = d_dt_chaste_interface_var_RyR_channel__P_O1; - mEvalF[23] = d_dt_chaste_interface_var_RyR_channel__P_O2; - mEvalF[24] = d_dt_chaste_interface_var_RyR_channel__P_C1; - mEvalF[25] = d_dt_chaste_interface_var_RyR_channel__P_C2; - mEvalF[26] = d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa; - mEvalF[27] = d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa; - mEvalF[28] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai; - mEvalF[29] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki; - mEvalF[30] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss; - mEvalF[31] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR; - mEvalF[32] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR; - - - mPartialF[0] = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[25] = EvaluatePartialDerivative25(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[26] = EvaluatePartialDerivative26(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[27] = EvaluatePartialDerivative27(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[28] = EvaluatePartialDerivative28(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[29] = EvaluatePartialDerivative29(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[30] = EvaluatePartialDerivative30(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[31] = EvaluatePartialDerivative31(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[32] = EvaluatePartialDerivative32(var_chaste_interface__environment__time_converted, rY, delta); - for (unsigned var=0; var& rY) - { - double d_dt_chaste_interface_var_membrane__V; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.0328302 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.988354 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99254 - double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; - // Units: dimensionless; Initial value: 0.51 - double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; - // Units: dimensionless; Initial value: 0.264 - double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; - // Units: dimensionless; Initial value: 2.63 - double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; - // Units: dimensionless; Initial value: 0.99 - double var_chaste_interface__L_type_Ca_current__O = rY[9]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; - // Units: dimensionless; Initial value: 0.798 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; - // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; - // Units: millimolar; Initial value: 157.8 - - - // Mathematics - const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second - const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF - const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar - const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar - const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless - const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless - const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF - const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole - const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 - const double var_membrane__i_Stim = var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF - const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF - const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF - const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar - const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF - const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF - const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF - const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar - const double var_sodium_potassium_pump__K_mNai = 10; // millimolar - const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF - const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second - const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt - const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF - const double var_L_type_Ca_current__i_Ca_K = pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt - const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF - const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF - const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF - const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[4] + 0.018329999999999999 * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt - const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF - const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF - const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless - const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF - const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar - const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF - const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF - const double var_membrane__V_orig_deriv = -(var_L_type_Ca_current__i_Ca + var_L_type_Ca_current__i_Ca_K + var_Na_Ca_exchanger__i_NaCa + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_membrane__i_Stim + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) / mParameters[7]; // millivolt / second - d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond - - return d_dt_chaste_interface_var_membrane__V; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.0328302 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.988354 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99254 - double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; - // Units: dimensionless; Initial value: 0.51 - double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; - // Units: dimensionless; Initial value: 0.264 - double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; - // Units: dimensionless; Initial value: 2.63 - double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; - // Units: dimensionless; Initial value: 0.99 - double var_chaste_interface__L_type_Ca_current__O = rY[9]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; - // Units: dimensionless; Initial value: 0.798 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; - // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; - // Units: millimolar; Initial value: 157.8 - - - const double var_x0 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); - const double var_x1 = 1 + var_x0; - const double var_x2 = 1 / var_x1; - const double var_x3 = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * mParameters[13]; - const double var_x4 = mParameters[15] * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; - const double var_x5 = var_x4 * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1; - const double var_x6 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ki; - const double var_x7 = var_x6 * mParameters[4]; - const double var_x8 = log(var_x7); - const double var_x9 = -26.713760659695648 * var_x8 + var_chaste_interface__membrane__V; - const double var_x10 = var_x0 * var_x9 / pow(var_x1, 2); - const double var_x11 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); - const double var_x12 = var_x11 * mParameters[8] * var_chaste_interface__fast_sodium_current_j_gate__j; - const double var_x13 = var_x12 * var_chaste_interface__fast_sodium_current_h_gate__h; - const double var_x14 = exp(0.044600000000000001 * var_chaste_interface__membrane__V); - const double var_x15 = sqrt(mParameters[4]); - const double var_x16 = var_x15 * mParameters[12] / (1 + 1.4944999999999999 * var_x14); - const double var_x17 = var_x16 * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; - const double var_x18 = mParameters[4]; - const double var_x19 = exp(0.056150836234118207 * var_chaste_interface__membrane__V - 1.5 * var_x8); - const double var_x20 = mParameters[11] / (13 + mParameters[4]); - const double var_x21 = var_x20 / (2 + var_x19); - const double var_x22 = mParameters[3] * exp(0.013101861787960915 * var_chaste_interface__membrane__V); - const double var_x23 = var_x22 * pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); - const double var_x24 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); - const double var_x25 = pow(mParameters[5], 3); - const double var_x26 = var_x24 * var_x25; - const double var_x27 = var_x26 * var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x28 = 1 + 0.20000000000000001 * var_x24; - const double var_x29 = mParameters[14] / ((669921.875 + var_x25) * (1.3799999999999999 + mParameters[3])); - const double var_x30 = var_x29 / var_x28; - const double var_x31 = var_x30 * (0.013101861787960915 * var_x23 + 0.024332029034784559 * var_x27); - const double var_x32 = 1 / var_chaste_interface__intracellular_ion_concentrations__Nai; - const double var_x33 = pow(var_x32, 1.5); - const double var_x34 = exp(-0.0037433890822745476 * var_chaste_interface__membrane__V); - const double var_x35 = exp(0.01485884101040119 * mParameters[5]); - const double var_x36 = 0.037433890822745473 * var_chaste_interface__membrane__V; - const double var_x37 = exp(-var_x36); - const double var_x38 = 1 + 0.1245 * var_x34 + 0.036499999999999998 * var_x37 * (-0.14285714285714285 + 0.14285714285714285 * var_x35); - const double var_x39 = mParameters[4] / (1.5 + mParameters[4]); - const double var_x40 = var_x39 * (0.00046605194074318115 * var_x34 + 0.037433890822745473 * var_x37 * (-0.0052142857142857138 + 0.0052142857142857138 * var_x35)) / (pow(var_x38, 2) * (1 + 31.622776601683793 * var_x33)); - const double var_x41 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; - const double var_x42 = var_x41 * var_chaste_interface__L_type_Ca_current_y_gate__y; - const double var_x43 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); - const double var_x44 = -1 + var_x43; - const double var_x45 = 1 / var_x44; - const double var_x46 = 0.001 * var_x43 - 0.34100000000000003 * mParameters[3]; - const double var_x47 = var_x45 * var_x46 * mParameters[6]; - const double var_x48 = var_x47 * var_chaste_interface__membrane__V; - const double var_x49 = 1 / (1 - 54518.063995566983 * var_x48); - const double var_x50 = exp(var_x36); - const double var_x51 = -1 + var_x50; - const double var_x52 = 1 / var_x51; - const double var_x53 = var_x50 * var_chaste_interface__intracellular_ion_concentrations__Ki; - const double var_x54 = var_x53 - mParameters[4]; - const double var_x55 = var_x49 * var_x52 * var_x54; - const double var_x56 = 2.0912447872899554e-6 * var_x55; - const double var_x57 = var_x42 * var_x47; - const double var_x58 = var_x43 * mParameters[6] * var_chaste_interface__membrane__V; - const double var_x59 = var_x45 * var_x58; - const double var_x60 = var_x42 * var_x59; - const double var_x61 = var_x23 - var_x27; - const double var_x62 = var_x24 * var_x29 * var_x61 / pow(var_x28, 2); - const double var_x63 = var_x19 * var_x20 * var_x9 / pow((1 + 0.5 * var_x19), 2); - const double var_x64 = var_x63 * mParameters[4]; - const double var_x65 = var_x14 * var_x15 * var_x9 * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr / pow((0.66912010705921721 + var_x14), 2); - const double var_x66 = var_x42 * var_x52 * var_chaste_interface__membrane__V; - const double var_x67 = var_x49 * var_x66; - const double var_x68 = var_x53 * var_x67; - const double var_x69 = var_x46 * var_x58 / pow(var_x44, 2); - const double var_x70 = var_x54 * var_x66 * (4.0816465109550109 * var_x59 + 54518.063995566983 * var_x47 - 4081.6465109550109 * var_x69) / pow((1.8342544226833014e-5 - var_x48), 2); - const double var_x71 = var_x42 * var_x69; - const double var_x72 = var_x42 * var_x49 * var_x50 * var_x54 * var_chaste_interface__membrane__V / pow(var_x51, 2); - const double var_x73 = 1 / mParameters[7]; - const double var_x74 = 0.001 * var_x73; - - partialF = -var_x74 * (0.0034841999999999998 + var_x13 + var_x3 + var_x5 + 0.5 * var_x17 + 5000 * var_x31 + 0.0022160000000000001 * var_x2 + 0.69299999999999995 * var_x40 + 1.0816363254030779 * var_x60 + 7.8283429051047759e-8 * var_x68 + 0.00037056856187290968 * var_x10 + 24.332029034784558 * var_x62 + 7.035970683610309e-16 * var_x70 + 14447.286958825252 * var_x57 - 1081.636325403078 * var_x71 - 7.8283429051047759e-8 * var_x72 - 0.014037709058529552 * var_x64 - 0.014921378387420543 * var_x65 + var_x18 * var_x21 + var_x42 * var_x56); - } - else - { - const double y_save = rY[0]; - rY[0] += delta; - const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[0])/delta; - rY[0] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; - // Units: millimolar; Initial value: 0.98 - double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; - // Units: millimolar; Initial value: 0.078 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; - // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; - // Units: millimolar; Initial value: 0.257 - - - // Mathematics - const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar - const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar - const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless - const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless - const double var_SERCA2a_pump__K_fb = 0.00016799999999999999; // millimolar - const double var_SERCA2a_pump__K_rb = 3.29; // millimolar - const double var_SERCA2a_pump__N_fb = 1.2; // dimensionless - const double var_SERCA2a_pump__N_rb = 1; // dimensionless - const double var_SERCA2a_pump__Vmaxf = 0.081299999999999997; // millimolar_per_second - const double var_SERCA2a_pump__Vmaxr = 0.318; // millimolar_per_second - const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF - const double var_intracellular_Ca_fluxes__HTRPN_tot = 0.14000000000000001; // dimensionless - const double var_intracellular_Ca_fluxes__LTRPN_tot = 0.070000000000000007; // dimensionless - const double var_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second - const double var_intracellular_Ca_fluxes__k_htrpn_plus = 20000; // per_millimolar_second - const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40; // per_second - const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000; // per_millimolar_second - const double var_intracellular_Ca_fluxes__tau_xfer = 0.026700000000000002; // second - const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 - const double var_intracellular_ion_concentrations__CMDN_tot = 0.050000000000000003; // millimolar - const double var_SERCA2a_pump__rb = pow((var_chaste_interface__intracellular_ion_concentrations__Ca_NSR / var_SERCA2a_pump__K_rb), var_SERCA2a_pump__N_rb); // dimensionless - const double var_SERCA2a_pump__fb = pow((var_chaste_interface__intracellular_ion_concentrations__Cai / var_SERCA2a_pump__K_fb), var_SERCA2a_pump__N_fb); // dimensionless - const double var_SERCA2a_pump__J_up = (var_SERCA2a_pump__Vmaxf * var_SERCA2a_pump__fb - var_SERCA2a_pump__Vmaxr * var_SERCA2a_pump__rb) * mParameters[1] / (1 + var_SERCA2a_pump__fb + var_SERCA2a_pump__rb); // millimolar_per_second - const double var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa * var_intracellular_Ca_fluxes__k_htrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) * var_intracellular_Ca_fluxes__k_htrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second - const double var_intracellular_Ca_fluxes__J_HTRPNCa = var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar_per_second - const double var_intracellular_Ca_fluxes__J_xfer = (-var_chaste_interface__intracellular_ion_concentrations__Cai + var_chaste_interface__intracellular_ion_concentrations__Ca_ss) / var_intracellular_Ca_fluxes__tau_xfer; // millimolar_per_second - const double var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa * var_intracellular_Ca_fluxes__k_ltrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) * var_intracellular_Ca_fluxes__k_ltrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second - const double var_intracellular_Ca_fluxes__J_LTRPNCa = var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar_per_second - const double var_intracellular_Ca_fluxes__J_trpn = var_intracellular_Ca_fluxes__HTRPN_tot * var_intracellular_Ca_fluxes__J_HTRPNCa + var_intracellular_Ca_fluxes__J_LTRPNCa * var_intracellular_Ca_fluxes__LTRPN_tot; // millimolar_per_second - const double var_intracellular_ion_concentrations__EGTA_tot = 0; // millimolar - const double var_intracellular_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar - const double var_intracellular_ion_concentrations__K_mEGTA = 0.00014999999999999999; // millimolar - const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre - const double var_intracellular_ion_concentrations__beta_i = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless - const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole - const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF - const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar - const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF - const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt - const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF - const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF - const double var_intracellular_ion_concentrations__Cai_orig_deriv = (-var_SERCA2a_pump__J_up - var_intracellular_Ca_fluxes__J_trpn + 0.5 * (-var_calcium_background_current__i_Ca_b - var_sarcolemmal_calcium_pump__i_p_Ca + 2 * var_Na_Ca_exchanger__i_NaCa) * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_myo * var_membrane__F) + var_intracellular_Ca_fluxes__J_xfer) * var_intracellular_ion_concentrations__beta_i; // millimolar / second - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai = 0.001 * var_intracellular_ion_concentrations__Cai_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; - // Units: millimolar; Initial value: 0.98 - double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; - // Units: millimolar; Initial value: 0.078 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; - // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; - // Units: millimolar; Initial value: 0.257 - - - const double var_x22 = mParameters[3] * exp(0.013101861787960915 * var_chaste_interface__membrane__V); - const double var_x23 = var_x22 * pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); - const double var_x24 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); - const double var_x25 = pow(mParameters[5], 3); - const double var_x26 = var_x24 * var_x25; - const double var_x27 = var_x26 * var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x28 = 1 + 0.20000000000000001 * var_x24; - const double var_x29 = mParameters[14] / ((669921.875 + var_x25) * (1.3799999999999999 + mParameters[3])); - const double var_x30 = var_x29 / var_x28; - const double var_x61 = var_x23 - var_x27; - const double var_x75 = 5.0000000000000002e-5 + var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x76 = 1 / var_x75; - const double var_x77 = 1 / var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x78 = var_chaste_interface__intracellular_ion_concentrations__Cai / pow(var_x75, 2); - const double var_x103 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Cai; - const double var_x104 = 1 + 0.00011900000000000002 / pow(var_x103, 2); - const double var_x105 = 1 / var_x104; - const double var_x106 = 0.001 * var_x105; - const double var_x107 = 0.0015381954438488301 * var_x76; - const double var_x108 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 0.19999999999999996); - const double var_x109 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 1.2); - const double var_x110 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); - const double var_x111 = mParameters[1] / (1 + 33855.471141425078 * var_x109 + 0.303951367781155 * var_x110); - const double var_x112 = var_x108 * var_x111; - const double var_x113 = 2752.4498037978587 * var_x109 - 0.096656534954407292 * var_x110; - const double var_x114 = var_x113 * mParameters[1] / pow((2.9537323401073989e-5 + var_x109 + 8.9779098483507565e-6 * var_x110), 2); - const double var_x115 = var_x108 * var_x114; - const double var_x116 = 307.63908876976598 * var_x30; - const double var_x117 = 2800.0000000000005 * var_chaste_interface__intracellular_ion_concentrations__Cai; - - partialF = var_x106 * (-5637.4531835205999 - var_x107 + 3.5444788081288787e-5 * var_x115 + 0.0015381954438488301 * var_x78 + 2800.0000000000005 * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + 2800.0000000000005 * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa - 0.00015787156411954756 * var_x77 - 3302.9397645574304 * var_x112 - var_x116 * var_x26) + 2.3800000000000004e-7 * (2.8000000000000003 * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa + 37.453183520599246 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss + 0.0092400000000000017 * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + 0.00015787156411954756 * log(var_x77 * mParameters[3]) - 37.453183520599246 * var_chaste_interface__intracellular_ion_concentrations__Cai - 1.181949379053441e-5 * var_chaste_interface__membrane__V + var_x116 * var_x61 - var_x107 * var_chaste_interface__intracellular_ion_concentrations__Cai - var_x111 * var_x113 - var_x117 * (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) - var_x117 * (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa)) / (pow(var_x103, 3) * pow(var_x104, 2)); - } - else - { - const double y_save = rY[1]; - rY[1] += delta; - const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[1])/delta; - rY[1] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.0328302 - - - // Mathematics - const double var_fast_sodium_current_m_gate__E0_m = 47.130000000000003 + var_chaste_interface__membrane__V; // millivolt - const double var_fast_sodium_current_m_gate__alpha_m = ((fabs(var_fast_sodium_current_m_gate__E0_m) < 1.0000000000000001e-5) ? (1000 / (0.10000000000000001 - 0.0050000000000000001 * var_fast_sodium_current_m_gate__E0_m)) : (320 * var_fast_sodium_current_m_gate__E0_m / (1 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m)))); // per_second - const double var_fast_sodium_current_m_gate__beta_m = 80 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_second - const double var_fast_sodium_current_m_gate__m_orig_deriv = ((var_chaste_interface__membrane__V >= -90) ? ((1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m) : (0)); // 1 / second - const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - - - const double var_x119 = exp(-0.090909090909090912 * var_chaste_interface__membrane__V); - const double var_x121 = var_chaste_interface__membrane__V >= -90; - const double var_x122 = 47.130000000000003 + var_chaste_interface__membrane__V; - const double var_x123 = (var_x121) && (fabs(var_x122) < 1.0000000000000001e-5); - const double var_x124 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x125 = exp(-4.7130000000000001 + var_x124); - const double var_x126 = 1 - var_x125; - const double var_x127 = 320 / var_x126; - const double var_x128 = -80 * var_x119; - - partialF = 0.001 * ((var_x123) ? (var_x128 - 1000 / (-0.13565000000000002 - 0.0050000000000000001 * var_chaste_interface__membrane__V)) : ((var_x121) ? (var_x128 - var_x122 * var_x127) : (0))); - } - else - { - const double y_save = rY[2]; - rY[2] += delta; - const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[2])/delta; - rY[2] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.988354 - - - // Mathematics - const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_second - const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (3560 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10])) : (7692.3076923076924 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second - const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // dimensionless - const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second - const double var_fast_sodium_current_h_gate__h_orig_deriv = (-var_chaste_interface__fast_sodium_current_h_gate__h + var_fast_sodium_current_h_gate__h_inf) / var_fast_sodium_current_h_gate__tau_h; // 1 / second - const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * var_fast_sodium_current_h_gate__h_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - - - const double var_x129 = exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V); - const double var_x130 = var_chaste_interface__membrane__V < -40; - const double var_x131 = ((var_x130) ? (135 * var_x129) : (0)); - const double var_x132 = 0.001 * var_x131; - const double var_x133 = exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]); - const double var_x134 = exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10]); - const double var_x135 = exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V); - const double var_x136 = 1 + var_x135; - const double var_x137 = ((var_x130) ? (3560 * var_x133 + 310000 * var_x134) : (7692.3076923076924 / var_x136)); - const double var_x138 = 0.001 * var_x137; - - partialF = -var_x132 - var_x138; - } - else - { - const double y_save = rY[3]; - rY[3] += delta; - const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[3])/delta; - rY[3] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99254 - - - // Mathematics - const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]))) : (0)); // per_second - const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (121.2 * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300 * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[10] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second - const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // dimensionless - const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // second - const double var_fast_sodium_current_j_gate__j_orig_deriv = (-var_chaste_interface__fast_sodium_current_j_gate__j + var_fast_sodium_current_j_gate__j_inf) / var_fast_sodium_current_j_gate__tau_j; // 1 / second - const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * var_fast_sodium_current_j_gate__j_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - - - const double var_x124 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x130 = var_chaste_interface__membrane__V < -40; - const double var_x145 = exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V); - const double var_x146 = 1 + var_x145; - const double var_x147 = exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V); - const double var_x148 = var_x147 / var_x146; - const double var_x149 = exp(-3.2000000000000002 + var_x124 + 0.10000000000000001 * mParameters[10]); - const double var_x150 = 1 + var_x149; - const double var_x151 = exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V); - const double var_x152 = var_x151 / var_x150; - const double var_x153 = ((var_x130) ? (121.2 * var_x148) : (300 * var_x152)); - const double var_x154 = 0.001 * var_x153; - const double var_x155 = 37.780000000000001 + var_chaste_interface__membrane__V; - const double var_x156 = exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]); - const double var_x157 = exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V); - const double var_x158 = -127140 * var_x156 - 3.4740000000000003e-5 * var_x157; - const double var_x159 = exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]); - const double var_x160 = 1 + var_x159; - const double var_x161 = 1000 / var_x160; - const double var_x162 = var_x158 * var_x161; - const double var_x163 = ((var_x130) ? (var_x155 * var_x162) : (0)); - const double var_x164 = 0.001 * var_x163; - - partialF = -var_x154 - var_x164; - } - else - { - const double y_save = rY[4]; - rY[4] += delta; - const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[4])/delta; - rY[4] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; - // Units: dimensionless; Initial value: 0.51 - - - // Mathematics - const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf = var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor = 1; // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr = 0.001 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21) + 0.027 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor; // second - const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv = (-var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf) / var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr; // 1 / second - const double d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = 0.001 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - - - const double var_x169 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); - const double var_x170 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); - const double var_x171 = var_x169 + var_x170; - const double var_x172 = 1 / var_x171; - const double var_x175 = 0.001 / (0.027 + 0.001 * var_x172); - - partialF = -var_x175; - } - else - { - const double y_save = rY[5]; - rY[5] += delta; - const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[5])/delta; - rY[5] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; - // Units: dimensionless; Initial value: 0.264 - - - // Mathematics - const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity = 1 / (1 + exp(1.8161764705882353 - 0.073529411764705885 * var_chaste_interface__membrane__V)); // dimensionless - const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = 0.001 / (0.00013100000000000001 * (-10 + var_chaste_interface__membrane__V) / (-1 + exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V)) + 7.1899999999999999e-5 * (-10 + var_chaste_interface__membrane__V) / (1 - exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V))); // second - const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv = (-var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks + var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity) / var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks; // 1 / second - const double d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = 0.001 * var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - - - const double var_x178 = exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V); - const double var_x179 = -1 + var_x178; - const double var_x180 = 1 / var_x179; - const double var_x182 = exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V); - const double var_x183 = 1 - var_x182; - const double var_x184 = 1 / var_x183; - const double var_x186 = -10 + var_chaste_interface__membrane__V; - - partialF = -0.00013100000000000001 * var_x180 * var_x186 - 7.1899999999999999e-5 * var_x184 * var_x186; - } - else - { - const double y_save = rY[6]; - rY[6] += delta; - const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[6])/delta; - rY[6] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; - // Units: dimensionless; Initial value: 2.63 - - - // Mathematics - const double var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 = 45.159999999999997 * exp(0.035770000000000003 * var_chaste_interface__membrane__V); // per_second - const double var_transient_outward_potassium_current_X_to1_gate__beta_X_to1 = 98.900000000000006 * exp(-0.062370000000000002 * var_chaste_interface__membrane__V); // per_second - const double var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1) * var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_transient_outward_potassium_current_X_to1_gate__beta_X_to1; // 1 / second - const double d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1 = 0.001 * var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - - - const double var_x187 = exp(0.035770000000000003 * var_chaste_interface__membrane__V); - const double var_x188 = exp(-0.062370000000000002 * var_chaste_interface__membrane__V); - - partialF = -0.045159999999999999 * var_x187 - 0.098900000000000002 * var_x188; - } - else - { - const double y_save = rY[7]; - rY[7] += delta; - const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[7])/delta; - rY[7] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; - // Units: dimensionless; Initial value: 0.99 - - - // Mathematics - const double var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 = 5.415 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second - const double var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1 = 5.415 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second - const double var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1) * var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 * var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1; // 1 / second - const double d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1 = 0.001 * var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - - - const double var_x189 = 0.20000000000000001 * var_chaste_interface__membrane__V; - const double var_x190 = exp(6.7000000000000002 + var_x189); - const double var_x191 = 1 + 0.051334999999999999 * var_x190; - const double var_x192 = exp(-6.7000000000000002 - var_x189); - const double var_x193 = 1 + 0.051334999999999999 * var_x192; - const double var_x195 = var_x190 / var_x191; - const double var_x196 = var_x192 / var_x193; - - partialF = -0.0054149999999999997 * var_x195 - 0.0054149999999999997 * var_x196; - } - else - { - const double y_save = rY[8]; - rY[8] += delta; - const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[8])/delta; - rY[8] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__L_type_Ca_current__O = rY[9]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; - // Units: dimensionless; Initial value: 6.56337e-20 - - - // Mathematics - const double var_L_type_Ca_current__f = 300; // per_second - const double var_L_type_Ca_current__g = 2000; // per_second - const double var_L_type_Ca_current__O_orig_deriv = var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__f - var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__O = 0.001 * var_L_type_Ca_current__O_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_current__O; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - - - - partialF = -2; - } - else - { - const double y_save = rY[9]; - rY[9] += delta; - const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[9])/delta; - rY[9] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; - // Units: dimensionless; Initial value: 4.59752e-20 - - - // Mathematics - const double var_L_type_Ca_current__fprime = 7; // per_second - const double var_L_type_Ca_current__gprime = 7000; // per_second - const double var_L_type_Ca_current__O_Ca_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__fprime - var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__O_Ca = 0.001 * var_L_type_Ca_current__O_Ca_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_current__O_Ca; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - - - - partialF = -7; - } - else - { - const double y_save = rY[10]; - rY[10] += delta; - const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[10])/delta; - rY[10] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; - // Units: dimensionless; Initial value: 0.997208 - double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; - // Units: dimensionless; Initial value: 6.38897e-05 - double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; - // Units: dimensionless; Initial value: 0.00272826 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - // Mathematics - const double var_L_type_Ca_current__omega = 10; // per_second - const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second - const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__C0_orig_deriv = var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__omega - (4 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C0; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C0 = 0.001 * var_L_type_Ca_current__C0_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_current__C0; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - const double var_x199 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x202 = 1.6000000000000001 * var_x199; - const double var_x203 = -var_x202; - const double var_x204 = 0.10375 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - - partialF = var_x203 - var_x204; - } - else - { - const double y_save = rY[11]; - rY[11] += delta; - const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[11])/delta; - rY[11] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; - // Units: dimensionless; Initial value: 0.997208 - double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; - // Units: dimensionless; Initial value: 6.38897e-05 - double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; - // Units: dimensionless; Initial value: 1.535e-09 - double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; - // Units: dimensionless; Initial value: 6.99215e-07 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - // Mathematics - const double var_L_type_Ca_current__a = 2; // dimensionless - const double var_L_type_Ca_current__b = 2; // dimensionless - const double var_L_type_Ca_current__omega = 10; // per_second - const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second - const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__C1_orig_deriv = -(3 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__a * var_L_type_Ca_current__gamma + var_L_type_Ca_current__beta) * var_chaste_interface__L_type_Ca_current__C1 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__beta + 4 * var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__omega / var_L_type_Ca_current__b; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C1 = 0.001 * var_L_type_Ca_current__C1_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_current__C1; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - const double var_x197 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x199 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x205 = 0.050000000000000003 * var_x197; - const double var_x209 = 1.2 * var_x199; - const double var_x210 = -var_x205; - const double var_x211 = 0.20749999999999999 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - - partialF = var_x210 - var_x209 - var_x211; - } - else - { - const double y_save = rY[12]; - rY[12] += delta; - const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[12])/delta; - rY[12] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; - // Units: dimensionless; Initial value: 6.38897e-05 - double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; - // Units: dimensionless; Initial value: 1.535e-09 - double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; - // Units: dimensionless; Initial value: 1.63909e-14 - double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; - // Units: dimensionless; Initial value: 6.71989e-11 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - // Mathematics - const double var_L_type_Ca_current__a = 2; // dimensionless - const double var_L_type_Ca_current__b = 2; // dimensionless - const double var_L_type_Ca_current__omega = 10; // per_second - const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second - const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__C2_orig_deriv = -(2 * var_L_type_Ca_current__alpha + 2 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 2) * var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C2 + 3 * var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__alpha + 3 * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2); // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C2 = 0.001 * var_L_type_Ca_current__C2_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_current__C2; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - const double var_x197 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x199 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x212 = 0.10000000000000001 * var_x197; - const double var_x216 = -var_x212; - const double var_x217 = 0.80000000000000004 * var_x199; - const double var_x218 = -var_x217; - const double var_x219 = 0.41499999999999998 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - - partialF = var_x216 + var_x218 - var_x219; - } - else - { - const double y_save = rY[13]; - rY[13] += delta; - const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[13])/delta; - rY[13] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; - // Units: dimensionless; Initial value: 1.535e-09 - double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; - // Units: dimensionless; Initial value: 1.63909e-14 - double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; - // Units: dimensionless; Initial value: 6.56337e-20 - double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; - // Units: dimensionless; Initial value: 2.87031e-15 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - // Mathematics - const double var_L_type_Ca_current__a = 2; // dimensionless - const double var_L_type_Ca_current__b = 2; // dimensionless - const double var_L_type_Ca_current__omega = 10; // per_second - const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second - const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__C3_orig_deriv = -(3 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 3) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__alpha) * var_chaste_interface__L_type_Ca_current__C3 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__alpha + 4 * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3); // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C3 = 0.001 * var_L_type_Ca_current__C3_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_current__C3; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - const double var_x197 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x199 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x220 = 0.14999999999999999 * var_x197; - const double var_x224 = 0.40000000000000002 * var_x199; - const double var_x225 = 0.82999999999999996 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - - partialF = -var_x220 - var_x224 - var_x225; - } - else - { - const double y_save = rY[14]; - rY[14] += delta; - const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[14])/delta; - rY[14] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__O = rY[9]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; - // Units: dimensionless; Initial value: 1.63909e-14 - double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; - // Units: dimensionless; Initial value: 6.56337e-20 - double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; - // Units: dimensionless; Initial value: 4.59752e-20 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - // Mathematics - const double var_L_type_Ca_current__a = 2; // dimensionless - const double var_L_type_Ca_current__b = 2; // dimensionless - const double var_L_type_Ca_current__f = 300; // per_second - const double var_L_type_Ca_current__g = 2000; // per_second - const double var_L_type_Ca_current__omega = 10; // per_second - const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second - const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__C4_orig_deriv = var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g - (4 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 4) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__f) * var_chaste_interface__L_type_Ca_current__C4 + var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4); // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C4 = 0.001 * var_L_type_Ca_current__C4_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_current__C4; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - const double var_x197 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x226 = 0.20000000000000001 * var_x197; - const double var_x228 = 1.6599999999999999 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - - partialF = -0.29999999999999999 - var_x226 - var_x228; - } - else - { - const double y_save = rY[15]; - rY[15] += delta; - const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[15])/delta; - rY[15] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; - // Units: dimensionless; Initial value: 0.997208 - double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; - // Units: dimensionless; Initial value: 0.00272826 - double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; - // Units: dimensionless; Initial value: 6.99215e-07 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - // Mathematics - const double var_L_type_Ca_current__a = 2; // dimensionless - const double var_L_type_Ca_current__b = 2; // dimensionless - const double var_L_type_Ca_current__omega = 10; // per_second - const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second - const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second - const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second - const double var_L_type_Ca_current__C_Ca0_orig_deriv = var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__gamma + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__beta_b - (4 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega) * var_chaste_interface__L_type_Ca_current__C_Ca0; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0 = 0.001 * var_L_type_Ca_current__C_Ca0_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - - - const double var_x199 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x232 = 3.2000000000000002 * var_x199; - - partialF = -0.01 - var_x232; - } - else - { - const double y_save = rY[16]; - rY[16] += delta; - const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[16])/delta; - rY[16] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; - // Units: dimensionless; Initial value: 6.38897e-05 - double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; - // Units: dimensionless; Initial value: 0.00272826 - double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; - // Units: dimensionless; Initial value: 6.99215e-07 - double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; - // Units: dimensionless; Initial value: 6.71989e-11 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - // Mathematics - const double var_L_type_Ca_current__a = 2; // dimensionless - const double var_L_type_Ca_current__b = 2; // dimensionless - const double var_L_type_Ca_current__omega = 10; // per_second - const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second - const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second - const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second - const double var_L_type_Ca_current__C_Ca1_orig_deriv = -(3 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega / var_L_type_Ca_current__b + var_L_type_Ca_current__beta_b) * var_chaste_interface__L_type_Ca_current__C_Ca1 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__beta_b + 4 * var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__a * var_L_type_Ca_current__gamma; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1 = 0.001 * var_L_type_Ca_current__C_Ca1_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - - - const double var_x197 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x199 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x233 = 0.025000000000000001 * var_x197; - const double var_x235 = 2.3999999999999999 * var_x199; - - partialF = -0.0050000000000000001 - var_x233 - var_x235; - } - else - { - const double y_save = rY[17]; - rY[17] += delta; - const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[17])/delta; - rY[17] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; - // Units: dimensionless; Initial value: 1.535e-09 - double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; - // Units: dimensionless; Initial value: 6.99215e-07 - double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; - // Units: dimensionless; Initial value: 6.71989e-11 - double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; - // Units: dimensionless; Initial value: 2.87031e-15 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - // Mathematics - const double var_L_type_Ca_current__a = 2; // dimensionless - const double var_L_type_Ca_current__b = 2; // dimensionless - const double var_L_type_Ca_current__omega = 10; // per_second - const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second - const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second - const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second - const double var_L_type_Ca_current__C_Ca2_orig_deriv = -(2 * var_L_type_Ca_current__alpha_a + 2 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2)) * var_chaste_interface__L_type_Ca_current__C_Ca2 + 3 * var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__alpha_a + 3 * var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 2) * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__gamma; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2 = 0.001 * var_L_type_Ca_current__C_Ca2_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - - - const double var_x197 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x199 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x202 = 1.6000000000000001 * var_x199; - const double var_x203 = -var_x202; - const double var_x205 = 0.050000000000000003 * var_x197; - const double var_x210 = -var_x205; - - partialF = -0.0025000000000000001 + var_x203 + var_x210; - } - else - { - const double y_save = rY[18]; - rY[18] += delta; - const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[18])/delta; - rY[18] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; - // Units: dimensionless; Initial value: 1.63909e-14 - double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; - // Units: dimensionless; Initial value: 6.71989e-11 - double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; - // Units: dimensionless; Initial value: 2.87031e-15 - double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; - // Units: dimensionless; Initial value: 4.59752e-20 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - // Mathematics - const double var_L_type_Ca_current__a = 2; // dimensionless - const double var_L_type_Ca_current__b = 2; // dimensionless - const double var_L_type_Ca_current__omega = 10; // per_second - const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second - const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second - const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second - const double var_L_type_Ca_current__C_Ca3_orig_deriv = -(3 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3) + var_L_type_Ca_current__alpha_a) * var_chaste_interface__L_type_Ca_current__C_Ca3 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__alpha_a + 4 * var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 3) * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__gamma; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3 = 0.001 * var_L_type_Ca_current__C_Ca3_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - - - const double var_x197 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x199 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x217 = 0.80000000000000004 * var_x199; - const double var_x218 = -var_x217; - const double var_x236 = 0.074999999999999997 * var_x197; - - partialF = -0.00125 + var_x218 - var_x236; - } - else - { - const double y_save = rY[19]; - rY[19] += delta; - const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[19])/delta; - rY[19] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; - // Units: dimensionless; Initial value: 6.56337e-20 - double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; - // Units: dimensionless; Initial value: 2.87031e-15 - double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; - // Units: dimensionless; Initial value: 4.59752e-20 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - // Mathematics - const double var_L_type_Ca_current__a = 2; // dimensionless - const double var_L_type_Ca_current__b = 2; // dimensionless - const double var_L_type_Ca_current__fprime = 7; // per_second - const double var_L_type_Ca_current__gprime = 7000; // per_second - const double var_L_type_Ca_current__omega = 10; // per_second - const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second - const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second - const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second - const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second - const double var_L_type_Ca_current__C_Ca4_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime - (4 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4) + var_L_type_Ca_current__fprime) * var_chaste_interface__L_type_Ca_current__C_Ca4 + pow(var_L_type_Ca_current__a, 4) * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__gamma; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4 = 0.001 * var_L_type_Ca_current__C_Ca4_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - - - const double var_x197 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); - const double var_x212 = 0.10000000000000001 * var_x197; - const double var_x216 = -var_x212; - - partialF = -0.0076249999999999998 + var_x216; - } - else - { - const double y_save = rY[20]; - rY[20] += delta; - const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[20])/delta; - rY[20] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; - // Units: dimensionless; Initial value: 0.798 - - - // Mathematics - const double var_L_type_Ca_current_y_gate__tau_y = 0.02 + 0.59999999999999998 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // second - const double var_L_type_Ca_current_y_gate__y_infinity = 0.20000000000000001 + 0.80000000000000004 / (1 + exp(2.5 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_current_y_gate__y_orig_deriv = (-var_chaste_interface__L_type_Ca_current_y_gate__y + var_L_type_Ca_current_y_gate__y_infinity) / var_L_type_Ca_current_y_gate__tau_y; // 1 / second - const double d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y = 0.001 * var_L_type_Ca_current_y_gate__y_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - - - const double var_x240 = exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V); - const double var_x241 = 1 + var_x240; - const double var_x242 = 1 / var_x241; - const double var_x243 = 1 / (0.02 + 0.59999999999999998 * var_x242); - - partialF = -0.001 * var_x243; - } - else - { - const double y_save = rY[21]; - rY[21] += delta; - const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[21])/delta; - rY[21] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__RyR_channel__P_O1 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_O2 = rY[23]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_C1 = rY[24]; - // Units: dimensionless; Initial value: 0.47 - double var_chaste_interface__RyR_channel__P_C2 = rY[25]; - // Units: dimensionless; Initial value: 0.53 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - // Mathematics - const double var_RyR_channel__k_a_minus = 576; // per_second - const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second - const double var_RyR_channel__k_b_minus = 1930; // per_second - const double var_RyR_channel__k_b_plus = 4050000000.0; // millimolar3_per_second - const double var_RyR_channel__k_c_minus = 0.80000000000000004; // per_second - const double var_RyR_channel__k_c_plus = 100; // per_second - const double var_RyR_channel__m = 3; // dimensionless - const double var_RyR_channel__n = 4; // dimensionless - const double var_RyR_channel__P_O1_orig_deriv = var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus + var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second - const double d_dt_chaste_interface_var_RyR_channel__P_O1 = 0.001 * var_RyR_channel__P_O1_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_RyR_channel__P_O1; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - const double var_x244 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 3); - const double var_x245 = 4050000 * var_x244; - - partialF = -0.67600000000000005 - var_x245; - } - else - { - const double y_save = rY[22]; - rY[22] += delta; - const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[22])/delta; - rY[22] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__RyR_channel__P_O1 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_O2 = rY[23]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - // Mathematics - const double var_RyR_channel__k_b_minus = 1930; // per_second - const double var_RyR_channel__k_b_plus = 4050000000.0; // millimolar3_per_second - const double var_RyR_channel__m = 3; // dimensionless - const double var_RyR_channel__P_O2_orig_deriv = -var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second - const double d_dt_chaste_interface_var_RyR_channel__P_O2 = 0.001 * var_RyR_channel__P_O2_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_RyR_channel__P_O2; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - - - - partialF = -1.9299999999999999; - } - else - { - const double y_save = rY[23]; - rY[23] += delta; - const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[23])/delta; - rY[23] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__RyR_channel__P_O1 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_C1 = rY[24]; - // Units: dimensionless; Initial value: 0.47 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - // Mathematics - const double var_RyR_channel__k_a_minus = 576; // per_second - const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second - const double var_RyR_channel__n = 4; // dimensionless - const double var_RyR_channel__P_C1_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus; // 1 / second - const double d_dt_chaste_interface_var_RyR_channel__P_C1 = 0.001 * var_RyR_channel__P_C1_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_RyR_channel__P_C1; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - - - const double var_x246 = 12150000000.0 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 4); - - partialF = -var_x246; - } - else - { - const double y_save = rY[24]; - rY[24] += delta; - const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[24])/delta; - rY[24] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__RyR_channel__P_O1 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_C2 = rY[25]; - // Units: dimensionless; Initial value: 0.53 - - - // Mathematics - const double var_RyR_channel__k_c_minus = 0.80000000000000004; // per_second - const double var_RyR_channel__k_c_plus = 100; // per_second - const double var_RyR_channel__P_C2_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus - var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus; // 1 / second - const double d_dt_chaste_interface_var_RyR_channel__P_C2 = 0.001 * var_RyR_channel__P_C2_orig_deriv; // 1 / millisecond - - return d_dt_chaste_interface_var_RyR_channel__P_C2; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - - - - partialF = -0.00080000000000000004; - } - else - { - const double y_save = rY[25]; - rY[25] += delta; - const double temp = EvaluateYDerivative25(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[25])/delta; - rY[25] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; - // Units: millimolar; Initial value: 0.98 - - - // Mathematics - const double var_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second - const double var_intracellular_Ca_fluxes__k_htrpn_plus = 20000; // per_millimolar_second - const double var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa * var_intracellular_Ca_fluxes__k_htrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) * var_intracellular_Ca_fluxes__k_htrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second - const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa = 0.001 * var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - - - - partialF = -6.6000000000000005e-5 - 20 * var_chaste_interface__intracellular_ion_concentrations__Cai; - } - else - { - const double y_save = rY[26]; - rY[26] += delta; - const double temp = EvaluateYDerivative26(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[26])/delta; - rY[26] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative27(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; - // Units: millimolar; Initial value: 0.078 - - - // Mathematics - const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40; // per_second - const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000; // per_millimolar_second - const double var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa * var_intracellular_Ca_fluxes__k_ltrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) * var_intracellular_Ca_fluxes__k_ltrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second - const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa = 0.001 * var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative27(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - - - - partialF = -0.040000000000000001 - 40 * var_chaste_interface__intracellular_ion_concentrations__Cai; - } - else - { - const double y_save = rY[27]; - rY[27] += delta; - const double temp = EvaluateYDerivative27(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[27])/delta; - rY[27] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative28(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.0328302 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.988354 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99254 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; - // Units: millimolar; Initial value: 10.0 - - - // Mathematics - const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar - const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar - const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless - const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless - const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 - const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre - const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole - const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF - const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF - const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar - const double var_sodium_potassium_pump__K_mNai = 10; // millimolar - const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF - const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF - const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless - const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF - const double var_intracellular_ion_concentrations__Nai_orig_deriv = -(3 * var_Na_Ca_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Na_b) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai = 0.001 * var_intracellular_ion_concentrations__Nai_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative28(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.0328302 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.988354 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99254 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; - // Units: millimolar; Initial value: 10.0 - - - const double var_x11 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); - const double var_x12 = var_x11 * mParameters[8] * var_chaste_interface__fast_sodium_current_j_gate__j; - const double var_x13 = var_x12 * var_chaste_interface__fast_sodium_current_h_gate__h; - const double var_x22 = mParameters[3] * exp(0.013101861787960915 * var_chaste_interface__membrane__V); - const double var_x24 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); - const double var_x25 = pow(mParameters[5], 3); - const double var_x28 = 1 + 0.20000000000000001 * var_x24; - const double var_x29 = mParameters[14] / ((669921.875 + var_x25) * (1.3799999999999999 + mParameters[3])); - const double var_x30 = var_x29 / var_x28; - const double var_x32 = 1 / var_chaste_interface__intracellular_ion_concentrations__Nai; - const double var_x33 = pow(var_x32, 1.5); - const double var_x34 = exp(-0.0037433890822745476 * var_chaste_interface__membrane__V); - const double var_x35 = exp(0.01485884101040119 * mParameters[5]); - const double var_x36 = 0.037433890822745473 * var_chaste_interface__membrane__V; - const double var_x37 = exp(-var_x36); - const double var_x38 = 1 + 0.1245 * var_x34 + 0.036499999999999998 * var_x37 * (-0.14285714285714285 + 0.14285714285714285 * var_x35); - const double var_x39 = mParameters[4] / (1.5 + mParameters[4]); - const double var_x94 = var_x13 * var_x32; - const double var_x95 = var_x32 * var_x33 * var_x39 / (var_x38 * pow((0.031622776601683791 + var_x33), 2)); - const double var_x96 = var_x22 * var_x30 * pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 2); - - partialF = (-5.0952821319166834e-6 * var_x32 - 2.768751798927894 * var_x96 - 6.0676044384883792e-6 * var_x95 - 0.0016436393973924784 * var_x94) * mParameters[2]; - } - else - { - const double y_save = rY[28]; - rY[28] += delta; - const double temp = EvaluateYDerivative28(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[28])/delta; - rY[28] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative29(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; - // Units: dimensionless; Initial value: 0.51 - double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; - // Units: dimensionless; Initial value: 0.264 - double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; - // Units: dimensionless; Initial value: 2.63 - double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; - // Units: dimensionless; Initial value: 0.99 - double var_chaste_interface__L_type_Ca_current__O = rY[9]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; - // Units: dimensionless; Initial value: 0.798 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; - // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; - // Units: millimolar; Initial value: 157.8 - - - // Mathematics - const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second - const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF - const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 - const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre - const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole - const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF - const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF - const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar - const double var_sodium_potassium_pump__K_mNai = 10; // millimolar - const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second - const double var_L_type_Ca_current__i_Ca_K = pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt - const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF - const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF - const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[4] + 0.018329999999999999 * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt - const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF - const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless - const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF - const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar - const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF - const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF - const double var_intracellular_ion_concentrations__Ki_orig_deriv = -(-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_current__i_Ca_K + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki = 0.001 * var_intracellular_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative29(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; - // Units: dimensionless; Initial value: 0.51 - double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; - // Units: dimensionless; Initial value: 0.264 - double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; - // Units: dimensionless; Initial value: 2.63 - double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; - // Units: dimensionless; Initial value: 0.99 - double var_chaste_interface__L_type_Ca_current__O = rY[9]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; - // Units: dimensionless; Initial value: 0.798 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; - // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; - // Units: millimolar; Initial value: 157.8 - - - const double var_x0 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); - const double var_x1 = 1 + var_x0; - const double var_x2 = 1 / var_x1; - const double var_x3 = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * mParameters[13]; - const double var_x4 = mParameters[15] * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; - const double var_x5 = var_x4 * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1; - const double var_x6 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ki; - const double var_x7 = var_x6 * mParameters[4]; - const double var_x8 = log(var_x7); - const double var_x9 = -26.713760659695648 * var_x8 + var_chaste_interface__membrane__V; - const double var_x14 = exp(0.044600000000000001 * var_chaste_interface__membrane__V); - const double var_x15 = sqrt(mParameters[4]); - const double var_x16 = var_x15 * mParameters[12] / (1 + 1.4944999999999999 * var_x14); - const double var_x17 = var_x16 * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; - const double var_x19 = exp(0.056150836234118207 * var_chaste_interface__membrane__V - 1.5 * var_x8); - const double var_x20 = mParameters[11] / (13 + mParameters[4]); - const double var_x21 = var_x20 / (2 + var_x19); - const double var_x36 = 0.037433890822745473 * var_chaste_interface__membrane__V; - const double var_x41 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; - const double var_x42 = var_x41 * var_chaste_interface__L_type_Ca_current_y_gate__y; - const double var_x43 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); - const double var_x44 = -1 + var_x43; - const double var_x45 = 1 / var_x44; - const double var_x46 = 0.001 * var_x43 - 0.34100000000000003 * mParameters[3]; - const double var_x47 = var_x45 * var_x46 * mParameters[6]; - const double var_x48 = var_x47 * var_chaste_interface__membrane__V; - const double var_x49 = 1 / (1 - 54518.063995566983 * var_x48); - const double var_x50 = exp(var_x36); - const double var_x51 = -1 + var_x50; - const double var_x52 = 1 / var_x51; - const double var_x63 = var_x19 * var_x20 * var_x9 / pow((1 + 0.5 * var_x19), 2); - const double var_x66 = var_x42 * var_x52 * var_chaste_interface__membrane__V; - const double var_x67 = var_x49 * var_x66; - const double var_x86 = 1 / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai); - const double var_x93 = var_x3 * var_x86; - const double var_x97 = var_x2 * var_x6; - const double var_x98 = var_x5 * var_x6; - const double var_x99 = var_x17 * var_x6; - const double var_x100 = var_x21 * var_x7; - const double var_x101 = var_x50 * var_x67; - const double var_x102 = var_x63 * var_x7; - - partialF = (2.3072931657732449e-5 * var_x102 - 3.6423049046217326e-6 * var_x97 - 1.28669728151281e-10 * var_x101 - 0.00082181969869623921 * var_x99 - 0.0016436393973924784 * var_x100 - 0.0016436393973924784 * var_x93 - 0.0016436393973924784 * var_x98) * mParameters[2]; - } - else - { - const double y_save = rY[29]; - rY[29] += delta; - const double temp = EvaluateYDerivative29(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[29])/delta; - rY[29] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative30(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__L_type_Ca_current__O = rY[9]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; - // Units: dimensionless; Initial value: 0.798 - double var_chaste_interface__RyR_channel__P_O1 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_O2 = rY[23]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; - // Units: millimolar; Initial value: 0.257 - - - // Mathematics - const double var_intracellular_Ca_fluxes__tau_xfer = 0.026700000000000002; // second - const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 - const double var_intracellular_ion_concentrations__CMDN_tot = 0.050000000000000003; // millimolar - const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second - const double var_intracellular_Ca_fluxes__J_xfer = (-var_chaste_interface__intracellular_ion_concentrations__Cai + var_chaste_interface__intracellular_ion_concentrations__Ca_ss) / var_intracellular_Ca_fluxes__tau_xfer; // millimolar_per_second - const double var_intracellular_ion_concentrations__EGTA_tot = 0; // millimolar - const double var_intracellular_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar - const double var_intracellular_ion_concentrations__K_mEGTA = 0.00014999999999999999; // millimolar - const double var_intracellular_ion_concentrations__V_JSR = 1.6e-7; // micro_litre - const double var_intracellular_ion_concentrations__V_SS = 1.2e-9; // micro_litre - const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre - const double var_intracellular_ion_concentrations__beta_SS = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless - const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole - const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF - const double var_intracellular_ion_concentrations__Ca_ss_orig_deriv = (var_RyR_channel__J_rel * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_SS - var_intracellular_Ca_fluxes__J_xfer * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_SS - 0.5 * var_L_type_Ca_current__i_Ca * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_SS * var_membrane__F)) * var_intracellular_ion_concentrations__beta_SS; // millimolar / second - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss = 0.001 * var_intracellular_ion_concentrations__Ca_ss_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative30(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__L_type_Ca_current__O = rY[9]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; - // Units: dimensionless; Initial value: 0.798 - double var_chaste_interface__RyR_channel__P_O1 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_O2 = rY[23]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; - // Units: millimolar; Initial value: 0.257 - - - const double var_x41 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; - const double var_x42 = var_x41 * var_chaste_interface__L_type_Ca_current_y_gate__y; - const double var_x43 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); - const double var_x44 = -1 + var_x43; - const double var_x45 = 1 / var_x44; - const double var_x46 = 0.001 * var_x43 - 0.34100000000000003 * mParameters[3]; - const double var_x47 = var_x45 * var_x46 * mParameters[6]; - const double var_x48 = var_x47 * var_chaste_interface__membrane__V; - const double var_x255 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_ss; - const double var_x256 = 1 + 0.00011900000000000002 / pow(var_x255, 2); - const double var_x257 = 1 / var_x256; - const double var_x258 = 0.001 * var_x257; - const double var_x263 = 133.33333333333334 * var_chaste_interface__RyR_channel__P_O1; - const double var_x264 = 133.33333333333334 * var_chaste_interface__RyR_channel__P_O2; - const double var_x265 = (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; - const double var_x266 = var_x265 * (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR); - - partialF = var_x258 * (-806491.88514357049 + (-var_x263 - var_x264) * mParameters[0]) + 2.3800000000000004e-7 * (133.33333333333334 * var_x266 + 806491.88514357049 * var_chaste_interface__intracellular_ion_concentrations__Cai - 806491.88514357049 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss - 9570598.0870152581 * var_x42 * var_x48) / (pow(var_x255, 3) * pow(var_x256, 2)); - } - else - { - const double y_save = rY[30]; - rY[30] += delta; - const double temp = EvaluateYDerivative30(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[30])/delta; - rY[30] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative31(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__RyR_channel__P_O1 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_O2 = rY[23]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; - // Units: millimolar; Initial value: 0.257 - double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; - // Units: millimolar; Initial value: 0.257 - - - // Mathematics - const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second - const double var_intracellular_ion_concentrations__CSQN_tot = 15; // millimolar - const double var_intracellular_Ca_fluxes__J_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_chaste_interface__intracellular_ion_concentrations__Ca_NSR) / var_intracellular_Ca_fluxes__tau_tr; // millimolar_per_second - const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second - const double var_intracellular_ion_concentrations__K_mCSQN = 0.80000000000000004; // millimolar - const double var_intracellular_ion_concentrations__beta_JSR = 1 / (1 + var_intracellular_ion_concentrations__CSQN_tot * var_intracellular_ion_concentrations__K_mCSQN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_intracellular_ion_concentrations__K_mCSQN), 2)); // dimensionless - const double var_intracellular_ion_concentrations__Ca_JSR_orig_deriv = (-var_RyR_channel__J_rel + var_intracellular_Ca_fluxes__J_tr) * var_intracellular_ion_concentrations__beta_JSR; // millimolar / second - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR = 0.001 * var_intracellular_ion_concentrations__Ca_JSR_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative31(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__RyR_channel__P_O1 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_O2 = rY[23]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; - // Units: millimolar; Initial value: 0.257 - double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; - // Units: millimolar; Initial value: 0.257 - - - const double var_x265 = (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; - const double var_x266 = var_x265 * (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR); - const double var_x267 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; - const double var_x268 = pow(var_x267, (-2)); - const double var_x269 = 1 / (1 + 12 * var_x268); - const double var_x270 = 0.001 * var_x269; - - partialF = var_x270 * (-1740.0382808421784 + (-var_chaste_interface__RyR_channel__P_O1 - var_chaste_interface__RyR_channel__P_O2) * mParameters[0]) + 0.00016666666666666666 * (-var_x266 + 1740.0382808421784 * var_chaste_interface__intracellular_ion_concentrations__Ca_NSR - 1740.0382808421784 * var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) / (pow(var_x267, 3) * pow((0.083333333333333329 + var_x268), 2)); - } - else - { - const double y_save = rY[31]; - rY[31] += delta; - const double temp = EvaluateYDerivative31(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[31])/delta; - rY[31] = y_save; - } - return partialF; - } - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative32(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; - // Units: millimolar; Initial value: 0.257 - double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; - // Units: millimolar; Initial value: 0.257 - - - // Mathematics - const double var_SERCA2a_pump__K_fb = 0.00016799999999999999; // millimolar - const double var_SERCA2a_pump__K_rb = 3.29; // millimolar - const double var_SERCA2a_pump__N_fb = 1.2; // dimensionless - const double var_SERCA2a_pump__N_rb = 1; // dimensionless - const double var_SERCA2a_pump__Vmaxf = 0.081299999999999997; // millimolar_per_second - const double var_SERCA2a_pump__Vmaxr = 0.318; // millimolar_per_second - const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second - const double var_SERCA2a_pump__rb = pow((var_chaste_interface__intracellular_ion_concentrations__Ca_NSR / var_SERCA2a_pump__K_rb), var_SERCA2a_pump__N_rb); // dimensionless - const double var_intracellular_Ca_fluxes__J_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_chaste_interface__intracellular_ion_concentrations__Ca_NSR) / var_intracellular_Ca_fluxes__tau_tr; // millimolar_per_second - const double var_SERCA2a_pump__fb = pow((var_chaste_interface__intracellular_ion_concentrations__Cai / var_SERCA2a_pump__K_fb), var_SERCA2a_pump__N_fb); // dimensionless - const double var_SERCA2a_pump__J_up = (var_SERCA2a_pump__Vmaxf * var_SERCA2a_pump__fb - var_SERCA2a_pump__Vmaxr * var_SERCA2a_pump__rb) * mParameters[1] / (1 + var_SERCA2a_pump__fb + var_SERCA2a_pump__rb); // millimolar_per_second - const double var_intracellular_ion_concentrations__V_JSR = 1.6e-7; // micro_litre - const double var_intracellular_ion_concentrations__V_NSR = 2.0999999999999998e-6; // micro_litre - const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre - const double var_intracellular_ion_concentrations__Ca_NSR_orig_deriv = var_SERCA2a_pump__J_up * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_NSR - var_intracellular_Ca_fluxes__J_tr * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_NSR; // millimolar / second - const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR = 0.001 * var_intracellular_ion_concentrations__Ca_NSR_orig_deriv; // millimolar / millisecond - - return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR; - } - - double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative32(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; - // Units: millimolar; Initial value: 0.257 - - - const double var_x109 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 1.2); - const double var_x110 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); - const double var_x111 = mParameters[1] / (1 + 33855.471141425078 * var_x109 + 0.303951367781155 * var_x110); - const double var_x113 = 2752.4498037978587 * var_x109 - 0.096656534954407292 * var_x110; - const double var_x114 = var_x113 * mParameters[1] / pow((2.9537323401073989e-5 + var_x109 + 8.9779098483507565e-6 * var_x110), 2); - - partialF = -0.13257434520702313 - 0.0011893356491532784 * var_x111 - 3.2630189260961817e-12 * var_x114; - } - else - { - const double y_save = rY[32]; - rY[32] += delta; - const double temp = EvaluateYDerivative32(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[32])/delta; - rY[32] = y_save; - } - return partialF; - } - - std::vector Dynamicwinslow_model_1999FromCellMLGRL2::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) - { - // Inputs: - // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -96.1638 - double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; - // Units: millimolar; Initial value: 8e-05 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.0328302 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.988354 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99254 - double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; - // Units: dimensionless; Initial value: 0.51 - double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; - // Units: dimensionless; Initial value: 0.264 - double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; - // Units: dimensionless; Initial value: 2.63 - double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; - // Units: dimensionless; Initial value: 0.99 - double var_chaste_interface__L_type_Ca_current__O = rY[9]; - // Units: dimensionless; Initial value: 9.84546e-21 - double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; - // Units: dimensionless; Initial value: 0.798 - double var_chaste_interface__RyR_channel__P_O1 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__RyR_channel__P_O2 = rY[23]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; - // Units: millimolar; Initial value: 10.0 - double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; - // Units: millimolar; Initial value: 157.8 - double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; - // Units: millimolar; Initial value: 0.00011 - double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; - // Units: millimolar; Initial value: 0.257 - - // Mathematics - const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar - const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar - const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless - const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless - const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second - const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole - const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_L_type_Ca_current_y_gate__tau_y = 0.02 + 0.59999999999999998 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // second - const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_second - const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (3560 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10])) : (7692.3076923076924 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second - const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second - const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]))) : (0)); // per_second - const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (121.2 * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300 * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[10] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second - const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // second - const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 - const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless - const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF - const double var_L_type_Ca_current__i_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca; // uA_per_cm2 - const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt - const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless - const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF - const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 - const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF - const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF - const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 - const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[4] + 0.018329999999999999 * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt - const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF - const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_activating_delayed_rectifiyer_K_current__i_Ks; // uA_per_cm2 - const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar - const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless - const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF - const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 - const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF - const double var_transient_outward_potassium_current__i_to1_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_potassium_current__i_to1; // uA_per_cm2 - - std::vector dqs(13); - dqs[0] = var_RyR_channel__J_rel; - dqs[1] = var_L_type_Ca_current__i_Ca_converted; - dqs[2] = var_L_type_Ca_current_y_gate__tau_y; - dqs[3] = var_fast_sodium_current__i_Na_converted; - dqs[4] = var_fast_sodium_current_h_gate__tau_h; - dqs[5] = var_fast_sodium_current_j_gate__tau_j; - dqs[6] = var_time_independent_potassium_current__i_K1_converted; - dqs[7] = var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted; - dqs[8] = var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted; - dqs[9] = var_Na_Ca_exchanger__i_NaCa_converted; - dqs[10] = var_membrane__i_Stim_converted; - dqs[11] = var_transient_outward_potassium_current__i_to1_converted; - dqs[12] = var_chaste_interface__environment__time_converted; - return dqs; - } - -template<> -void OdeSystemInformation::Initialise(void) -{ - this->mSystemName = "winslow_model_1999"; - this->mFreeVariableName = "time"; - this->mFreeVariableUnits = "millisecond"; - - // rY[0]: - this->mVariableNames.push_back("membrane_voltage"); - this->mVariableUnits.push_back("millivolt"); - this->mInitialConditions.push_back(-96.1638); - - // rY[1]: - this->mVariableNames.push_back("cytosolic_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(8e-05); - - // rY[2]: - this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0328302); - - // rY[3]: - this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.988354); - - // rY[4]: - this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.99254); - - // rY[5]: - this->mVariableNames.push_back("rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.51); - - // rY[6]: - this->mVariableNames.push_back("slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.264); - - // rY[7]: - this->mVariableNames.push_back("transient_outward_potassium_current_X_to1_gate__X_to1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(2.63); - - // rY[8]: - this->mVariableNames.push_back("transient_outward_potassium_current_Y_to1_gate__Y_to1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.99); - - // rY[9]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(9.84546e-21); - - // rY[10]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_d2_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0); - - // rY[11]: - this->mVariableNames.push_back("L_type_Ca_current__C0"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.997208); - - // rY[12]: - this->mVariableNames.push_back("L_type_Ca_current__C1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(6.38897e-05); - - // rY[13]: - this->mVariableNames.push_back("L_type_Ca_current__C2"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(1.535e-09); - - // rY[14]: - this->mVariableNames.push_back("L_type_Ca_current__C3"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(1.63909e-14); - - // rY[15]: - this->mVariableNames.push_back("L_type_Ca_current__C4"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(6.56337e-20); - - // rY[16]: - this->mVariableNames.push_back("L_type_Ca_current__C_Ca0"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.00272826); - - // rY[17]: - this->mVariableNames.push_back("L_type_Ca_current__C_Ca1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(6.99215e-07); - - // rY[18]: - this->mVariableNames.push_back("L_type_Ca_current__C_Ca2"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(6.71989e-11); - - // rY[19]: - this->mVariableNames.push_back("L_type_Ca_current__C_Ca3"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(2.87031e-15); - - // rY[20]: - this->mVariableNames.push_back("L_type_Ca_current__C_Ca4"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(4.59752e-20); - - // rY[21]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.798); - - // rY[22]: - this->mVariableNames.push_back("RyR_channel__P_O1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0); - - // rY[23]: - this->mVariableNames.push_back("RyR_channel__P_O2"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0); - - // rY[24]: - this->mVariableNames.push_back("RyR_channel__P_C1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.47); - - // rY[25]: - this->mVariableNames.push_back("RyR_channel__P_C2"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.53); - - // rY[26]: - this->mVariableNames.push_back("intracellular_Ca_fluxes__HTRPNCa"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.98); - - // rY[27]: - this->mVariableNames.push_back("intracellular_Ca_fluxes__LTRPNCa"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.078); - - // rY[28]: - this->mVariableNames.push_back("cytosolic_sodium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(10.0); - - // rY[29]: - this->mVariableNames.push_back("cytosolic_potassium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(157.8); - - // rY[30]: - this->mVariableNames.push_back("dyadic_space_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.00011); - - // rY[31]: - this->mVariableNames.push_back("JSR_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.257); - - // rY[32]: - this->mVariableNames.push_back("NSR_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.257); - - // mParameters[0]: - this->mParameterNames.push_back("SR_release_current_max"); - this->mParameterUnits.push_back("per_second"); - - // mParameters[1]: - this->mParameterNames.push_back("SR_uptake_current_max"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[2]: - this->mParameterNames.push_back("concentration_clamp_onoff"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[3]: - this->mParameterNames.push_back("extracellular_calcium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[4]: - this->mParameterNames.push_back("extracellular_potassium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[5]: - this->mParameterNames.push_back("extracellular_sodium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[6]: - this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); - this->mParameterUnits.push_back("cm_per_second"); - - // mParameters[7]: - this->mParameterNames.push_back("membrane_capacitance"); - this->mParameterUnits.push_back("microF_per_cm2"); - - // mParameters[8]: - this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_microF"); - - // mParameters[9]: - this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[10]: - this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); - this->mParameterUnits.push_back("millivolt"); - - // mParameters[11]: - this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_microF"); - - // mParameters[12]: - this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_microF"); - - // mParameters[13]: - this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_microF"); - - // mParameters[14]: - this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); - this->mParameterUnits.push_back("microA_per_microF"); - - // mParameters[15]: - this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); - this->mParameterUnits.push_back("milliS_per_microF"); - - // Derived Quantity index [0]: - this->mDerivedQuantityNames.push_back("SR_release_current"); - this->mDerivedQuantityUnits.push_back("millimolar_per_second"); - - // Derived Quantity index [1]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [2]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); - this->mDerivedQuantityUnits.push_back("second"); - - // Derived Quantity index [3]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [4]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); - this->mDerivedQuantityUnits.push_back("second"); - - // Derived Quantity index [5]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); - this->mDerivedQuantityUnits.push_back("second"); - - // Derived Quantity index [6]: - this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [7]: - this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [8]: - this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [9]: - this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [10]: - this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [11]: - this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [12]: - this->mDerivedQuantityNames.push_back("time"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - this->mInitialised = true; -} - -// Serialization for Boost >= 1.36 -#include "SerializationExportWrapperForCpp.hpp" -CHASTE_CLASS_EXPORT(Dynamicwinslow_model_1999FromCellMLGRL2) -extern "C" -{ - AbstractCardiacCellInterface* MakeCardiacCell( - boost::shared_ptr pSolver, - boost::shared_ptr pStimulus) - { - return new Dynamicwinslow_model_1999FromCellMLGRL2(pSolver, pStimulus); - } - -} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp similarity index 97% rename from chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp index 2662b80e..bc32c0d4 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp @@ -388,15 +388,15 @@ // Units: millivolt; Initial value: -75.0 - const double var_x3 = (var_chaste_interface__membrane__V >= -50.000000999999997) && (var_chaste_interface__membrane__V <= -49.999999000000003); - const double var_x4 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x5 = -5 + var_x4; - const double var_x6 = exp(var_x5); + const double var_x3 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x4 = 5 + var_x3; + const double var_x5 = (var_x4 >= -9.9999999999999995e-8) && (var_x4 <= 9.9999999999999995e-8); + const double var_x6 = exp(-var_x4); const double var_x7 = -1 + var_x6; const double var_x8 = 1 / var_x7; const double var_x9 = exp(-4.166666666666667 - 0.055555555555555552 * var_chaste_interface__membrane__V); - partialF = -((var_x3) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (var_x5 * var_x8)) - 4 * var_x9; + partialF = -((var_x5) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (-1 * var_x4 * var_x8)) - 4 * var_x9; } else { @@ -480,15 +480,15 @@ // Units: millivolt; Initial value: -75.0 - const double var_x4 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x13 = (var_chaste_interface__membrane__V >= -65.000000999999997) && (var_chaste_interface__membrane__V <= -64.999999000000003); - const double var_x14 = -6.5 + var_x4; - const double var_x15 = exp(var_x14); + const double var_x3 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x13 = 6.5 + var_x3; + const double var_x14 = (var_x13 >= -9.9999999999999995e-8) && (var_x13 <= 9.9999999999999995e-8); + const double var_x15 = exp(-var_x13); const double var_x16 = -1 + var_x15; const double var_x17 = 1 / var_x16; const double var_x18 = exp(0.9375 + 0.012500000000000001 * var_chaste_interface__membrane__V); - partialF = -((var_x13) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (0.099999999999999992 * var_x14 * var_x17)) - 0.125 * var_x18; + partialF = -((var_x14) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-0.099999999999999992 * var_x13 * var_x17)) - 0.125 * var_x18; } else { diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi.cpp_python36 deleted file mode 100644 index 0b70a462..00000000 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi.cpp_python36 +++ /dev/null @@ -1,3472 +0,0 @@ -//! @file -//! -//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) -//! -//! Model: viswanathan_model_1999_epi -//! -//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen -//! (translator: chaste_codegen, model type: GeneralizedRushLarsenSecondOrderOpt) -//! on (date omitted as unimportant) -//! -//! - -#include "dynamic_viswanathan_model_1999_epi.hpp" -#include -#include -#include -#include -#include "Exception.hpp" -#include "OdeSystemInformation.hpp" -#include "RegularStimulus.hpp" -#include "HeartConfig.hpp" -#include "IsNan.hpp" -#include "MathsCustomFunctions.hpp" - -#include "ModelFactory.hpp" - -AbstractGeneralizedRushLarsenCardiacCell* Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { - return new Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt(p_solver, p_stimulus); -} - -bool Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::registered = ModelFactory::Register("dynamic_viswanathan_model_1999_epi", "GeneralizedRushLarsenSecondOrderOpt", (ModelFactory::TCreateMethod)Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::CreateMethod); - -class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public AbstractLookupTableCollection -{ -public: - static Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables* Instance() - { - if (mpInstance.get() == NULL) - { - mpInstance.reset(new Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables); - } - return mpInstance.get(); - } - - void FreeMemory() - { - - if (_lookup_table_0) - { - delete[] _lookup_table_0; - _lookup_table_0 = NULL; - } - - mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); - } - - // Row lookup methods - // using linear-interpolation - - double* _lookup_0_row(unsigned i, double _factor_) - { - for (unsigned j=0; j<30; j++) - { - const double y1 = _lookup_table_0[i][j]; - const double y2 = _lookup_table_0[i+1][j]; - _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; - } - return _lookup_table_0_row; - } - - - const double * IndexTable0(double var_chaste_interface__membrane__V) - { - const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; - const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; - const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); - const double _factor_0 = _offset_0_over_table_step - _table_index_0; - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); - return _lt_0_row; - } - - -// LCOV_EXCL_START - bool CheckIndex0(double& var_chaste_interface__membrane__V) - { - bool _oob_0 = false; - if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= 2){ - EXCEPTION("Lookup table 15 at ["<= 2){ - EXCEPTION("Lookup table 16 at ["<= 2){ - EXCEPTION("Lookup table 17 at ["<= 2){ - EXCEPTION("Lookup table 18 at ["<= 1.0000000000000001e-5) ? (320 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V))) : (3200)); - }; - const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; - double val = f(var_chaste_interface__membrane__V); - //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. - //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. - if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[19] < 2){ - double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); - double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); - val = (left + right) / 2.0; - // count and limit number of misshits - _lookup_table_0_num_misshit_piecewise[19] +=1; - } - else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[19] >= 2){ - EXCEPTION("Lookup table 19 at ["< mpInstance; - - // Row lookup methods memory - double _lookup_table_0_row[30]; - - // Lookup tables - double (*_lookup_table_0)[30]; - int _lookup_table_0_num_misshit_piecewise[30] = {0}; - -}; - -std::shared_ptr Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::mpInstance; - - - boost::shared_ptr Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::UseCellMLDefaultStimulus() - { - // Use the default stimulus specified by CellML metadata - const double var_chaste_interface__membrane__stim_amplitude_converted = -25.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 - const double var_chaste_interface__membrane__stim_duration_converted = 2; // millisecond - const double var_chaste_interface__membrane__stim_period_converted = 1000; // millisecond - const double var_chaste_interface__membrane__stim_start_converted = 100; // millisecond - boost::shared_ptr p_cellml_stim(new RegularStimulus( - -fabs(var_chaste_interface__membrane__stim_amplitude_converted), - var_chaste_interface__membrane__stim_duration_converted, - var_chaste_interface__membrane__stim_period_converted, - var_chaste_interface__membrane__stim_start_converted - )); - mpIntracellularStimulus = p_cellml_stim; - return p_cellml_stim; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::GetIntracellularCalciumConcentration() - { - return mStateVariables[1]; - } - Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) - : AbstractGeneralizedRushLarsenCardiacCell( - 25, - 0, - pIntracellularStimulus) - { - // Time units: millisecond - // - this->mpSystemInfo = OdeSystemInformation::Instance(); - Init(); - - // We have a default stimulus specified in the CellML file metadata - this->mHasDefaultStimulusFromCellML = true; - - this->mParameters[0] = 1.8; // (var_calcium_dynamics__Cao) [millimolar] - this->mParameters[1] = 4.5; // (var_ionic_concentrations__Ko) [millimolar] - this->mParameters[2] = 132; // (var_ionic_concentrations__Nao) [millimolar] - this->mParameters[3] = 0.001; // (var_membrane__Cm) [microF] - this->mParameters[4] = 16; // (var_fast_sodium_current__g_Na) [milliS_per_microF] - this->mParameters[5] = 0.75; // (var_time_independent_potassium_current__g_K1_max) [milliS_per_cm2] - this->mParameters[6] = 0.02614; // (var_rapid_delayed_rectifier_potassium_current__g_Kr_max) [milliS_per_cm2] - } - - Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::~Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt() - { - } - - AbstractLookupTableCollection* Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::GetLookupTableCollection() - { - return Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance(); - } - - void Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::VerifyStateVariables() - { - std::vector& rY = rGetStateVariables(); - std::string error_message = ""; - - for (unsigned i=0; i < 25; i++) - { - if(std::isnan(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; - } - if(std::isinf(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; - } - if(this->is_concentration[i] && rY[i] < 0) - { - error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] < 0) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] > 1) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; - } - } - if (error_message != ""){ - EXCEPTION(DumpState(error_message)); - } - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::GetIIonic(const std::vector* pStateVariables) - { - // For state variable interpolation (SVI) we read in interpolated state variables, - // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). - if (!pStateVariables) pStateVariables = &rGetStateVariables(); - const std::vector& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.00079287 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9938 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99573 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; - // Units: dimensionless; Initial value: 0.000967785 - double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; - // Units: dimensionless; Initial value: 0.95331988 - double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 0.00032151644 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; - // Units: dimensionless; Initial value: 0.0272635 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; - // Units: dimensionless; Initial value: 0.0631269 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - double var_chaste_interface__ionic_concentrations__Ki = rY[24]; - // Units: millimolar; Initial value: 137.6244 - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless - const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt - const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt - const double var_L_type_Ca_channel__i_Ca_L_converted = (7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]) + 0.0024381008236689767 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]) + 0.00069711623550831479 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3])) * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 - const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF - const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF - const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF - const double var_fast_sodium_current__i_Na_converted = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // uA_per_cm2 - const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second - const double var_non_specific_calcium_activated_current__i_ns_Ca = 3612.0012202503358 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])) + 3612.0012202503358 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF - const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF - const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF - const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF - const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF - const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt - const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF - const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[8]); // microA_per_microF - const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = 0.43033148291193518 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / (_lt_0_row[9]); // uA_per_cm2 - const double var_time_independent_potassium_current__i_K1_converted = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // uA_per_cm2 - const double var_transient_outward_current__i_to = 0; // microA_per_microF - const double var_chaste_interface__i_ionic = -var_L_type_Ca_channel__i_Ca_L_converted - var_fast_sodium_current__i_Na_converted - var_rapid_delayed_rectifier_potassium_current__i_Kr_converted - var_time_independent_potassium_current__i_K1_converted - HeartConfig::Instance()->GetCapacitance() * var_ATP_sensitive_potassium_current__i_K_ATP - HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa - HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T - HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Ca_b - HeartConfig::Instance()->GetCapacitance() * var_non_specific_calcium_activated_current__i_ns_Ca - HeartConfig::Instance()->GetCapacitance() * var_plateau_potassium_current__i_Kp - HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump__i_p_Ca - HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks - HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Na_b - HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK - HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to; // uA_per_cm2 - - const double i_ionic = var_chaste_interface__i_ionic; - EXCEPT_IF_NOT(!std::isnan(i_ionic)); - return i_ionic; - } - - void Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) - { - std::vector& rY = rGetStateVariables(); - const unsigned v_index = GetVoltageIndex(); - const double delta = 1e-8; - const double yinit = rY[v_index]; - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.00079287 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9938 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99573 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; - // Units: dimensionless; Initial value: 0.000967785 - double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; - // Units: dimensionless; Initial value: 0.95331988 - double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 0.00032151644 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; - // Units: dimensionless; Initial value: 0.0272635 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; - // Units: dimensionless; Initial value: 0.0631269 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - double var_chaste_interface__ionic_concentrations__Ki = rY[24]; - // Units: millimolar; Initial value: 137.6244 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - double d_dt_chaste_interface_var_membrane__V; - const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless - const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt - const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt - const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]); // microA_per_microF - const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF - const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF - const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF - const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF - const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF - const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second - const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF - const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF - const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF - const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF - const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF - const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF - const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt - const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF - const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[8]); // microA_per_microF - const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / (_lt_0_row[9]); // microA_per_microF - const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF - const double var_transient_outward_current__i_to = 0; // microA_per_microF - const double var_membrane__dVdt = -(GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless - d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__dVdt; // millivolt / millisecond - - double evalF = d_dt_chaste_interface_var_membrane__V; - mEvalF[0] = d_dt_chaste_interface_var_membrane__V; - double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); - if (fabs(partialF) < delta) - { - rY[v_index] += 0.5*evalF*mDt; - } - else - { - rY[v_index] += (evalF/partialF)*(exp(partialF*0.5*mDt)-1.0); - } - - rY[v_index] = yinit; - evalF = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); - mEvalF[0] = evalF; - partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); - if (fabs(partialF) < delta) - { - rY[v_index] = yinit + evalF*mDt; - } - else - { - rY[v_index] = yinit + (evalF/partialF)*(exp(partialF*mDt)-1.0); - } - } - - void Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) - { - std::vector& rY = rGetStateVariables(); - const double delta=1e-8; - const unsigned size = GetNumberOfStateVariables(); - mYInit = rY; - double y_save; - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.00079287 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9938 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99573 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; - // Units: dimensionless; Initial value: 0.000967785 - double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; - // Units: dimensionless; Initial value: 0.95331988 - double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 0.00032151644 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; - // Units: dimensionless; Initial value: 0.0272635 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; - // Units: dimensionless; Initial value: 0.0631269 - double var_chaste_interface__transient_outward_current_zdv_gate__zdv = rY[12]; - // Units: dimensionless; Initial value: 0.011528 - double var_chaste_interface__transient_outward_current_ydv_gate__ydv = rY[13]; - // Units: dimensionless; Initial value: 0.985232 - double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; - // Units: millimolar; Initial value: 0.817895 - double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; - // Units: millimolar; Initial value: 2.797668 - double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; - // Units: dimensionless; Initial value: 3.814e-87 - double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; - // Units: dimensionless; Initial value: 2.1084e-86 - double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; - // Units: dimensionless; Initial value: 0.01925 - double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; - // Units: dimensionless; Initial value: 1.784e-87 - double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - double var_chaste_interface__ionic_concentrations__Ki = rY[24]; - // Units: millimolar; Initial value: 137.6244 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - double d_dt_chaste_interface_var_membrane__V; - const double d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack2) : (-500 * var_chaste_interface__calcium_dynamics__APtrack2)); // 1 / millisecond - const double d_dt_chaste_interface_var_calcium_dynamics__APtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack3) : (-10 * var_chaste_interface__calcium_dynamics__APtrack3)); // 1 / millisecond - const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless - const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack2)); // 1 / millisecond - const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack3) : (-10 * var_chaste_interface__calcium_dynamics__OVRLDtrack3)); // 1 / millisecond - const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (1 / (1 + 0.80000000000000004 / var_chaste_interface__calcium_dynamics__Ca_JSR) > 0.69999999999999996)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack)); // 1 / millisecond - const double var_calcium_dynamics__i_leak = 0.33333333333333331 * var_chaste_interface__calcium_dynamics__Ca_NSR; // millimolar_per_second - const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * ((var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack)) : ((var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0) ? (4000 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2) * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); // millimolar_per_second - const double var_calcium_dynamics__i_up = 5 * var_chaste_interface__calcium_dynamics__Cai / (0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second - const double var_calcium_dynamics__i_tr = 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second - const double d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR = 0.001 * (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__calcium_dynamics__Ca_JSR), 2)); // millimolar / millisecond - const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre - const double var_calcium_dynamics__V_JSR = 0.0070588235294117632 * var_ionic_concentrations__V_myo; // micro_litre - const double var_calcium_dynamics__V_NSR = 0.081176470588235281 * var_ionic_concentrations__V_myo; // micro_litre - const double d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR = 0.001 * var_calcium_dynamics__i_up - 0.001 * var_calcium_dynamics__i_leak - 0.001 * var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_tr / var_calcium_dynamics__V_NSR; // millimolar / millisecond - const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt - const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt - const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]); // microA_per_microF - const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF - const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF - const double var_L_type_Ca_channel_d_gate__E0_d = 10 + var_chaste_interface__membrane__V; // millivolt - const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless - const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(var_L_type_Ca_channel_d_gate__E0_d) < 1.0000000000000001e-5) ? (0.0045787545787545781) : (0.028571428571428571 * (1 - exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__E0_d)); // second - const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d - 0.001 * (1 - var_L_type_Ca_channel_d_gate__d_infinity) * var_chaste_interface__L_type_Ca_channel_d_gate__d / var_L_type_Ca_channel_d_gate__tau_d; // 1 / millisecond - const double var_L_type_Ca_channel_f_gate__f_infinity = _lt_0_row[10]; // dimensionless - const double var_L_type_Ca_channel_f_gate__tau_f = _lt_0_row[11]; // second - const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f - 0.001 * (1 - var_L_type_Ca_channel_f_gate__f_infinity) * var_chaste_interface__L_type_Ca_channel_f_gate__f / var_L_type_Ca_channel_f_gate__tau_f; // 1 / millisecond - const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF - const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF - const double d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b = 0.001 * (-var_chaste_interface__T_type_Ca_channel_b_gate__b + _lt_0_row[12]) / (_lt_0_row[13]); // 1 / millisecond - const double d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g = 0.001 * (-var_chaste_interface__T_type_Ca_channel_g_gate__g + _lt_0_row[14]) * ((var_chaste_interface__membrane__V <= 0) ? (1 / (0.012 - 0.00087500000000000002 * var_chaste_interface__membrane__V)) : (83.333333333333329)); // 1 / millisecond - const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF - const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * _lt_0_row[15] - 0.001 * _lt_0_row[16] * var_chaste_interface__fast_sodium_current_h_gate__h; // 1 / millisecond - const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * (1 - var_chaste_interface__fast_sodium_current_j_gate__j) * _lt_0_row[17] - 0.001 * _lt_0_row[18] * var_chaste_interface__fast_sodium_current_j_gate__j; // 1 / millisecond - const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * _lt_0_row[19] - 0.080000000000000002 * var_chaste_interface__fast_sodium_current_m_gate__m * _lt_0_row[20]; // 1 / millisecond - const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second - const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF - const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF - const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr = 0.001 * (-var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr + _lt_0_row[21]) * (_lt_0_row[22]); // 1 / millisecond - const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF - const double d_dt_chaste_interface_var_calcium_dynamics__Cai = 0.001 * (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo + (-var_calcium_dynamics__i_up + var_calcium_dynamics__i_leak) * var_calcium_dynamics__V_NSR / var_ionic_concentrations__V_myo + var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_rel / var_ionic_concentrations__V_myo) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__calcium_dynamics__Cai), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai), 2)); // millimolar / millisecond - const double d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack = 0.001 * ((var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001) ? (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo) : ((var_chaste_interface__calcium_dynamics__APtrack2 > 0.01) ? (0) : (-500 * var_chaste_interface__calcium_dynamics__Cainfluxtrack))); // 1 / millisecond - const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 + _lt_0_row[23]) * (_lt_0_row[24]); // 1 / millisecond - const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF - const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 + _lt_0_row[23]) * (_lt_0_row[25]); // 1 / millisecond - const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF - const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF - const double d_dt_chaste_interface_var_ionic_concentrations__Nai = 1.4862413846711923e-15 * (-var_L_type_Ca_channel__i_CaNa - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Na - var_sodium_background_current__i_Na_b - 3 * var_Na_Ca_exchanger__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond - const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt - const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF - const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[8]); // microA_per_microF - const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / (_lt_0_row[9]); // microA_per_microF - const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF - const double var_transient_outward_current_ydv_gate__alpha_ydv = _lt_0_row[26]; // per_second - const double var_transient_outward_current_ydv_gate__beta_ydv = _lt_0_row[27]; // per_second - const double d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv = 0.001 * (-var_chaste_interface__transient_outward_current_ydv_gate__ydv + var_transient_outward_current_ydv_gate__alpha_ydv / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv)) * (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv); // 1 / millisecond - const double var_transient_outward_current_zdv_gate__alpha_zdv = _lt_0_row[28]; // per_second - const double var_transient_outward_current_zdv_gate__beta_zdv = _lt_0_row[29]; // per_second - const double var_transient_outward_current__i_to = 0; // microA_per_microF - const double d_dt_chaste_interface_var_ionic_concentrations__Ki = 1.4862413846711923e-15 * (-var_ATP_sensitive_potassium_current__i_K_ATP - var_L_type_Ca_channel__i_CaK - var_non_specific_calcium_activated_current__i_ns_K - var_plateau_potassium_current__i_Kp - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to + 2 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond - const double var_membrane__dVdt = -(GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless - const double d_dt_chaste_interface_var_calcium_dynamics__APtrack = 0.001 * ((var_membrane__dVdt > 150000) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack) : (-500 * var_chaste_interface__calcium_dynamics__APtrack)); // 1 / millisecond - const double d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv = 0.001 * (-var_chaste_interface__transient_outward_current_zdv_gate__zdv + var_transient_outward_current_zdv_gate__alpha_zdv / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv)) * (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv); // 1 / millisecond - - if (mSetVoltageDerivativeToZero) - { - d_dt_chaste_interface_var_membrane__V = 0.0; - } - else - { - d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__dVdt; // millivolt / millisecond - } - - mEvalF[0] = d_dt_chaste_interface_var_membrane__V; - mEvalF[1] = d_dt_chaste_interface_var_calcium_dynamics__Cai; - mEvalF[2] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; - mEvalF[3] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; - mEvalF[4] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; - mEvalF[5] = d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d; - mEvalF[6] = d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f; - mEvalF[7] = d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b; - mEvalF[8] = d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g; - mEvalF[9] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr; - mEvalF[10] = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1; - mEvalF[11] = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2; - mEvalF[12] = d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv; - mEvalF[13] = d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv; - mEvalF[14] = d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR; - mEvalF[15] = d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR; - mEvalF[16] = d_dt_chaste_interface_var_calcium_dynamics__APtrack; - mEvalF[17] = d_dt_chaste_interface_var_calcium_dynamics__APtrack2; - mEvalF[18] = d_dt_chaste_interface_var_calcium_dynamics__APtrack3; - mEvalF[19] = d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack; - mEvalF[20] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack; - mEvalF[21] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2; - mEvalF[22] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3; - mEvalF[23] = d_dt_chaste_interface_var_ionic_concentrations__Nai; - mEvalF[24] = d_dt_chaste_interface_var_ionic_concentrations__Ki; - - - mPartialF[0] = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time_converted, rY, delta); - mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time_converted, rY, delta); - for (unsigned var=0; var& rY) - { - double d_dt_chaste_interface_var_membrane__V; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.00079287 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9938 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99573 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; - // Units: dimensionless; Initial value: 0.000967785 - double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; - // Units: dimensionless; Initial value: 0.95331988 - double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 0.00032151644 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; - // Units: dimensionless; Initial value: 0.0272635 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; - // Units: dimensionless; Initial value: 0.0631269 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - double var_chaste_interface__ionic_concentrations__Ki = rY[24]; - // Units: millimolar; Initial value: 137.6244 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless - const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt - const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt - const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]); // microA_per_microF - const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF - const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF - const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF - const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF - const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF - const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second - const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF - const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF - const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF - const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF - const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF - const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF - const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt - const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF - const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[8]); // microA_per_microF - const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / (_lt_0_row[9]); // microA_per_microF - const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF - const double var_transient_outward_current__i_to = 0; // microA_per_microF - const double var_membrane__dVdt = -(GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless - d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__dVdt; // millivolt / millisecond - - return d_dt_chaste_interface_var_membrane__V; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.00079287 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9938 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99573 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; - // Units: dimensionless; Initial value: 0.000967785 - double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; - // Units: dimensionless; Initial value: 0.95331988 - double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 0.00032151644 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; - // Units: dimensionless; Initial value: 0.0272635 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; - // Units: dimensionless; Initial value: 0.0631269 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - double var_chaste_interface__ionic_concentrations__Ki = rY[24]; - // Units: millimolar; Initial value: 137.6244 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - const double var_x0 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); - const double var_x1 = 1 + var_x0; - const double var_x2 = 1 / var_x1; - const double var_x3 = 0.0055199999999999997 * var_x2; - const double var_x4 = pow(mParameters[1], 0.23999999999999999); - const double var_x5 = 1.921898339896919e-8 * var_x4; - const double var_x6 = 1 / var_chaste_interface__calcium_dynamics__Cai; - const double var_x7 = pow(var_x6, 1.3999999999999999); - const double var_x8 = 1 + 6.4818210260626455e-7 * var_x7; - const double var_x9 = 0.25979999999999998 / var_x8; - const double var_x10 = 0.433 + var_x9; - const double var_x11 = var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; - const double var_x12 = var_x10 * var_x11; - const double var_x13 = 0.018717941753901308 * var_chaste_interface__membrane__V; - const double var_x14 = exp(var_x13); - const double var_x15 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; - const double var_x16 = var_x14 * var_x15; - const double var_x17 = exp(-var_x13); - const double var_x18 = pow(mParameters[2], 3); - const double var_x19 = var_x18 * var_chaste_interface__calcium_dynamics__Cai; - const double var_x20 = var_x17 * var_x19; - const double var_x21 = 0.018717941753901308 * var_x16 + 0.018717941753901308 * var_x20; - const double var_x22 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); - const double var_x23 = 1 + 0.001 * var_x15 + 0.001 * var_x19; - const double var_x24 = 1 / var_x23; - const double var_x25 = var_x22 * var_x24; - const double var_x26 = 0.002 * var_x25; - const double var_x27 = var_x21 * var_x26; - const double var_x28 = 1 / var_chaste_interface__ionic_concentrations__Ki; - const double var_x29 = log(var_x28 * mParameters[1]); - const double var_x30 = -26.712338705498265 * var_x29 + var_chaste_interface__membrane__V; - const double var_x31 = 0.00092307692307692295 * var_x0 * var_x30 / pow(var_x1, 2); - const double var_x32 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); - const double var_x33 = var_x32 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; - const double var_x34 = var_x33 * var_chaste_interface__fast_sodium_current_h_gate__h; - const double var_x35 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); - const double var_x36 = 1 + var_x35; - const double var_x37 = sqrt(mParameters[1]); - const double var_x38 = var_x37 * mParameters[6] / var_x36; - const double var_x39 = var_x38 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; - const double var_x40 = 0.43033148291193518 * var_x39; - const double var_x41 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x29); - const double var_x42 = 1 + var_x41; - const double var_x43 = 1 / var_x42; - const double var_x44 = exp(-2.4444678999999998 + 13.738155796237757 * var_x29 - 0.51429999999999998 * var_chaste_interface__membrane__V); - const double var_x45 = 1 + var_x44; - const double var_x46 = 1 / var_x45; - const double var_x47 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x29); - const double var_x48 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x29); - const double var_x49 = var_x48 + 0.49124000000000001 * var_x47; - const double var_x50 = var_x46 * var_x49; - const double var_x51 = 1 / (1000 * var_x50 + 1020 * var_x43); - const double var_x52 = var_x37 * var_x43 * mParameters[5]; - const double var_x53 = var_x51 * var_x52; - const double var_x54 = 438.93811257017387 * var_x53; - const double var_x55 = pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); - const double var_x56 = 1 / (1 + 100 * var_x55); - const double var_x57 = 2 * var_x56; - const double var_x58 = 1 / (1.5 + mParameters[1]); - const double var_x59 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); - const double var_x60 = exp(0.01485884101040119 * mParameters[2]); - const double var_x61 = 0.037435883507802616 * var_chaste_interface__membrane__V; - const double var_x62 = exp(-var_x61); - const double var_x63 = 1 + 0.1245 * var_x59 + 0.036499999999999998 * var_x62 * (-0.14285714285714285 + 0.14285714285714285 * var_x60); - const double var_x64 = var_x58 * (0.00046607674967214262 * var_x59 + 0.037435883507802616 * var_x62 * (-0.0052142857142857138 + 0.0052142857142857138 * var_x60)) * mParameters[1] / pow(var_x63, 2); - const double var_x65 = exp(var_x61); - const double var_x66 = -1 + var_x65; - const double var_x67 = 1 / var_x66; - const double var_x68 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); - const double var_x69 = var_x68 * var_chaste_interface__L_type_Ca_channel_f_gate__f; - const double var_x70 = var_x69 * var_chaste_interface__L_type_Ca_channel_d_gate__d; - const double var_x71 = var_x67 * var_x70; - const double var_x72 = 0.75 * var_x65; - const double var_x73 = -0.75 * mParameters[2] + var_x72 * var_chaste_interface__ionic_concentrations__Nai; - const double var_x74 = 0.0024381008236689767 * var_x73; - const double var_x75 = var_x71 * var_x74; - const double var_x76 = -0.75 * mParameters[1] + var_x72 * var_chaste_interface__ionic_concentrations__Ki; - const double var_x77 = 0.00069711623550831479 * var_x76; - const double var_x78 = var_x71 * var_x77; - const double var_x79 = var_x41 / pow(var_x42, 2); - const double var_x80 = 1000 * var_x46; - const double var_x81 = var_x44 * var_x49 / pow(var_x45, 2); - const double var_x82 = 0.0004218936106979757 * var_x30 * var_x52 / pow((var_x43 + 0.98039215686274506 * var_x50), 2); - const double var_x83 = var_x82 * (243.26999999999998 * var_x79 - 514.29999999999995 * var_x81 - var_x80 * (0.061749999999999999 * var_x48 + 0.039456396800000001 * var_x47)); - const double var_x84 = var_x30 * var_x37; - const double var_x85 = 0.019211226915711394 * var_x35 * var_x84 * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / pow(var_x36, 2); - const double var_x86 = var_x51 * var_x84 * mParameters[5]; - const double var_x87 = 104.68673984798647 * var_x79 * var_x86; - const double var_x88 = var_x65 * var_x71 * var_chaste_interface__membrane__V; - const double var_x89 = 6.8454343811362063e-5 * var_x88 * var_chaste_interface__ionic_concentrations__Nai; - const double var_x90 = 1.9572871637915374e-5 * var_x88 * var_chaste_interface__ionic_concentrations__Ki; - const double var_x91 = var_x70 * var_chaste_interface__membrane__V; - const double var_x92 = var_x65 * var_x91 / pow(var_x66, 2); - const double var_x93 = 2.6097162183887167e-5 * var_x76 * var_x92; - const double var_x94 = 9.1272458415149417e-5 * var_x73 * var_x92; - const double var_x95 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); - const double var_x96 = var_x95 * var_chaste_interface__T_type_Ca_channel_g_gate__g; - const double var_x97 = 0.050000000000000003 * var_x96; - const double var_x98 = _lt_0_row[0]; - const double var_x99 = -1 + var_x98; - const double var_x100 = 1 / var_x99; - const double var_x101 = var_x98 * var_chaste_interface__calcium_dynamics__Cai; - const double var_x102 = var_x101 - 0.34100000000000003 * mParameters[0]; - const double var_x103 = var_x100 * var_x102; - const double var_x104 = 7.8019226357407252 * var_x103; - const double var_x105 = var_x104 * var_x70; - const double var_x106 = var_x100 * var_x91; - const double var_x107 = var_x105 + var_x97 + 0.58414373385695628 * var_x101 * var_x106 - 0.58414373385695628 * var_x102 * var_x91 * var_x98 / pow(var_x99, 2); - const double var_x108 = 1 / mParameters[3]; - const double var_x109 = 0.001 * var_x108; - - partialF = -var_x109 * (0.0070159999999999997 + var_x107 + var_x12 + var_x27 + var_x3 + var_x31 + var_x34 + var_x40 + var_x5 + var_x54 + var_x75 + var_x78 + var_x83 + var_x89 + var_x90 - var_x85 - var_x87 - var_x93 - var_x94 + var_x57 * var_x64); - } - else - { - const double y_save = rY[0]; - rY[0] += delta; - const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[0])/delta; - rY[0] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; - // Units: dimensionless; Initial value: 0.000967785 - double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; - // Units: dimensionless; Initial value: 0.95331988 - double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; - // Units: millimolar; Initial value: 0.817895 - double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; - // Units: millimolar; Initial value: 2.797668 - double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; - // Units: dimensionless; Initial value: 2.1084e-86 - double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; - // Units: dimensionless; Initial value: 1.784e-87 - double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless - const double var_calcium_dynamics__i_leak = 0.33333333333333331 * var_chaste_interface__calcium_dynamics__Ca_NSR; // millimolar_per_second - const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * ((var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack)) : ((var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0) ? (4000 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2) * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); // millimolar_per_second - const double var_calcium_dynamics__i_up = 5 * var_chaste_interface__calcium_dynamics__Cai / (0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second - const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre - const double var_calcium_dynamics__V_JSR = 0.0070588235294117632 * var_ionic_concentrations__V_myo; // micro_litre - const double var_calcium_dynamics__V_NSR = 0.081176470588235281 * var_ionic_concentrations__V_myo; // micro_litre - const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt - const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]); // microA_per_microF - const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF - const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF - const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF - const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF - const double d_dt_chaste_interface_var_calcium_dynamics__Cai = 0.001 * (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo + (-var_calcium_dynamics__i_up + var_calcium_dynamics__i_leak) * var_calcium_dynamics__V_NSR / var_ionic_concentrations__V_myo + var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_rel / var_ionic_concentrations__V_myo) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__calcium_dynamics__Cai), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai), 2)); // millimolar / millisecond - - return d_dt_chaste_interface_var_calcium_dynamics__Cai; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; - // Units: dimensionless; Initial value: 0.000967785 - double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; - // Units: dimensionless; Initial value: 0.95331988 - double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; - // Units: millimolar; Initial value: 0.817895 - double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; - // Units: millimolar; Initial value: 2.797668 - double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; - // Units: dimensionless; Initial value: 2.1084e-86 - double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; - // Units: dimensionless; Initial value: 1.784e-87 - double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - const double var_x6 = 1 / var_chaste_interface__calcium_dynamics__Cai; - const double var_x13 = 0.018717941753901308 * var_chaste_interface__membrane__V; - const double var_x14 = exp(var_x13); - const double var_x15 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; - const double var_x16 = var_x14 * var_x15; - const double var_x17 = exp(-var_x13); - const double var_x18 = pow(mParameters[2], 3); - const double var_x19 = var_x18 * var_chaste_interface__calcium_dynamics__Cai; - const double var_x20 = var_x17 * var_x19; - const double var_x22 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); - const double var_x23 = 1 + 0.001 * var_x15 + 0.001 * var_x19; - const double var_x24 = 1 / var_x23; - const double var_x25 = var_x22 * var_x24; - const double var_x26 = 0.002 * var_x25; - const double var_x68 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); - const double var_x69 = var_x68 * var_chaste_interface__L_type_Ca_channel_f_gate__f; - const double var_x70 = var_x69 * var_chaste_interface__L_type_Ca_channel_d_gate__d; - const double var_x91 = var_x70 * var_chaste_interface__membrane__V; - const double var_x95 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); - const double var_x96 = var_x95 * var_chaste_interface__T_type_Ca_channel_g_gate__g; - const double var_x97 = 0.050000000000000003 * var_x96; - const double var_x98 = _lt_0_row[0]; - const double var_x99 = -1 + var_x98; - const double var_x100 = 1 / var_x99; - const double var_x101 = var_x98 * var_chaste_interface__calcium_dynamics__Cai; - const double var_x102 = var_x101 - 0.34100000000000003 * mParameters[0]; - const double var_x103 = var_x100 * var_x102; - const double var_x104 = 7.8019226357407252 * var_x103; - const double var_x105 = var_x104 * var_x70; - const double var_x106 = var_x100 * var_x91; - const double var_x110 = var_x16 - var_x20; - const double var_x111 = var_x110 * var_x24 / pow((0.0068999999999999999 + var_chaste_interface__calcium_dynamics__Cai), 2); - const double var_x112 = 1.38e-5 * var_x111; - const double var_x113 = var_x17 * var_x18; - const double var_x114 = var_x113 * var_x26; - const double var_x115 = var_x110 * var_x22 / pow(var_x23, 2); - const double var_x116 = var_x115 * var_x18; - const double var_x117 = 1.9999999999999999e-6 * var_x116; - const double var_x121 = var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__membrane__V; - const double var_x122 = var_x121 * var_chaste_interface__L_type_Ca_channel_f_gate__f / pow((0.00059999999999999995 + var_chaste_interface__calcium_dynamics__Cai), 2); - const double var_x126 = 0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai; - const double var_x127 = 1.1499999999999999 / var_x126; - const double var_x128 = pow(var_x126, (-2)); - const double var_x129 = var_x127 + 0.040282206767891383 * var_x6 + 7.8019226357407252 * var_x106 * var_x98 + 0.6678084676374566 * var_x6 * var_x96 - 1.1499999999999999 * var_x128 * var_chaste_interface__calcium_dynamics__Cai - 0.0046811535814444347 * var_x103 * var_x122; - const double var_x141 = log(var_x6 * mParameters[0]); - const double var_x142 = -13.356169352749133 * var_x141 + var_chaste_interface__membrane__V; - const double var_x169 = 0.0023800000000000002 + var_chaste_interface__calcium_dynamics__Cai; - const double var_x170 = 1 + 0.00011900000000000002 / pow(var_x169, 2) + 3.5000000000000004e-5 * var_x128; - const double var_x171 = 1 / var_x170; - const double var_x172 = 1 / M_PI; - const double var_x175 = 0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; - const double var_x176 = 1 / var_x175; - const double var_x177 = 1 - var_chaste_interface__calcium_dynamics__APtrack2; - const double var_x178 = -0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; - const double var_x179 = 60000 * var_x176 * var_x177 * var_x178; - const double var_x180 = var_x179 * var_chaste_interface__calcium_dynamics__APtrack2; - const double var_x181 = var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001; - const double var_x182 = 4000 * var_chaste_interface__calcium_dynamics__OVRLDtrack2; - const double var_x183 = var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0; - const double var_x184 = ((var_x181) ? (-var_x180) : ((var_x183) ? ((-4000 + var_x182) * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); - const double var_x185 = 0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai; - const double var_x186 = 1 / var_x185; - const double var_x187 = 0.40588235294117642 * var_x186; - const double var_x188 = var_chaste_interface__calcium_dynamics__Cai / pow(var_x185, 2); - const double var_x189 = var_x112 + var_x114 + var_x117 + var_x129; - const double var_x190 = 0.090316078310111333 * var_x172; - const double var_x191 = -var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR; - const double var_x192 = ((var_x181) ? (var_x180 * var_x191) : ((var_x183) ? (var_x182 * var_x191 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2)) : (0))); - const double var_x193 = var_x110 * var_x26; - const double var_x194 = -0.040282206767891383 * var_x141 + var_x105 * var_chaste_interface__membrane__V + var_x127 * var_chaste_interface__calcium_dynamics__Cai + var_x142 * var_x97; - - partialF = 0.001 * var_x171 * (-var_x187 + 0.40588235294117642 * var_x188 + 0.0070588235294117632 * var_x184 - var_x189 * var_x190) + 0.001 * (0.00023800000000000004 / pow(var_x169, 3) + 7.0000000000000007e-5 / pow(var_x126, 3)) * (0.027058823529411764 * var_chaste_interface__calcium_dynamics__Ca_NSR + 0.0070588235294117632 * var_x192 - var_x187 * var_chaste_interface__calcium_dynamics__Cai - var_x190 * (var_x194 - var_x193 + 0.003016 * var_chaste_interface__membrane__V)) / pow(var_x170, 2); - } - else - { - const double y_save = rY[1]; - rY[1] += delta; - const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[1])/delta; - rY[1] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.00079287 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * _lt_0_row[19] - 0.080000000000000002 * var_chaste_interface__fast_sodium_current_m_gate__m * _lt_0_row[20]; // 1 / millisecond - - return d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - const double var_x208 = _lt_0_row[20]; - const double var_x211 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x212 = exp(-4.7130000000000001 + var_x211); - const double var_x213 = 1 - var_x212; - const double var_x214 = 0.32000000000000001 / var_x213; - const double var_x215 = 47.130000000000003 + var_chaste_interface__membrane__V; - const double var_x216 = fabs(var_x215) >= 1.0000000000000001e-5; - const double var_x217 = -0.080000000000000002 * var_x208; - - partialF = ((var_x216) ? (var_x217 - var_x214 * var_x215) : (-3.2000000000000002 + var_x217)); - } - else - { - const double y_save = rY[2]; - rY[2] += delta; - const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[2])/delta; - rY[2] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9938 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * _lt_0_row[15] - 0.001 * _lt_0_row[16] * var_chaste_interface__fast_sodium_current_h_gate__h; // 1 / millisecond - - return d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - - - - const double var_x218 = exp(0.34999999999999998 * var_chaste_interface__membrane__V); - const double var_x219 = exp(0.079000000000000001 * var_chaste_interface__membrane__V); - const double var_x220 = exp(-11.764705882352942 - 0.14705882352941177 * var_chaste_interface__membrane__V); - const double var_x221 = var_chaste_interface__membrane__V < -40; - const double var_x222 = exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__membrane__V); - const double var_x223 = 1 + var_x222; - - partialF = ((var_x221) ? (-310000 * var_x218 - 0.13500000000000001 * var_x220 - 3.5600000000000001 * var_x219) : (-7.6923076923076934 / var_x223)); - } - else - { - const double y_save = rY[3]; - rY[3] += delta; - const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[3])/delta; - rY[3] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99573 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * (1 - var_chaste_interface__fast_sodium_current_j_gate__j) * _lt_0_row[17] - 0.001 * _lt_0_row[18] * var_chaste_interface__fast_sodium_current_j_gate__j; // 1 / millisecond - - return d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - - - - const double var_x211 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x221 = var_chaste_interface__membrane__V < -40; - const double var_x225 = exp(0.24440000000000001 * var_chaste_interface__membrane__V); - const double var_x226 = exp(-0.043909999999999998 * var_chaste_interface__membrane__V); - const double var_x227 = -127140 * var_x225 - 3.4740000000000003e-5 * var_x226; - const double var_x229 = exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V); - const double var_x230 = 1 + var_x229; - const double var_x231 = 1 / var_x230; - const double var_x232 = exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__membrane__V); - const double var_x233 = 1 + var_x232; - const double var_x234 = exp(-0.01052 * var_chaste_interface__membrane__V); - const double var_x235 = var_x234 / var_x233; - const double var_x236 = 37.780000000000001 + var_chaste_interface__membrane__V; - const double var_x237 = var_x231 * var_x236; - const double var_x238 = exp(-3.2000000000000002 + var_x211); - const double var_x239 = 1 + var_x238; - const double var_x240 = exp(-2.5349999999999999e-7 * var_chaste_interface__membrane__V); - const double var_x241 = var_x240 / var_x239; - - partialF = ((var_x221) ? (-0.1212 * var_x235 - var_x227 * var_x237) : (-0.29999999999999999 * var_x241)); - } - else - { - const double y_save = rY[4]; - rY[4] += delta; - const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[4])/delta; - rY[4] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - - - - // Mathematics - const double var_L_type_Ca_channel_d_gate__E0_d = 10 + var_chaste_interface__membrane__V; // millivolt - const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless - const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(var_L_type_Ca_channel_d_gate__E0_d) < 1.0000000000000001e-5) ? (0.0045787545787545781) : (0.028571428571428571 * (1 - exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__E0_d)); // second - const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d - 0.001 * (1 - var_L_type_Ca_channel_d_gate__d_infinity) * var_chaste_interface__L_type_Ca_channel_d_gate__d / var_L_type_Ca_channel_d_gate__tau_d; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - - - - const double var_x242 = exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V); - const double var_x243 = 1 + var_x242; - const double var_x244 = 0.001 / var_x243; - const double var_x245 = -0.001 + var_x244; - const double var_x246 = 10 + var_chaste_interface__membrane__V; - const double var_x247 = fabs(var_x246) < 1.0000000000000001e-5; - const double var_x248 = 1 - var_x242; - const double var_x249 = 1 / var_x248; - const double var_x250 = 35 * var_x243 * var_x249; - const double var_x254 = ((var_x247) ? (218.40000000000003) : (var_x246 * var_x250)); - - partialF = var_x245 * var_x254 - var_x244 * var_x254; - } - else - { - const double y_save = rY[5]; - rY[5] += delta; - const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[5])/delta; - rY[5] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double var_L_type_Ca_channel_f_gate__f_infinity = _lt_0_row[10]; // dimensionless - const double var_L_type_Ca_channel_f_gate__tau_f = _lt_0_row[11]; // second - const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f - 0.001 * (1 - var_L_type_Ca_channel_f_gate__f_infinity) * var_chaste_interface__L_type_Ca_channel_f_gate__f / var_L_type_Ca_channel_f_gate__tau_f; // 1 / millisecond - - return d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - - - - const double var_x256 = exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2)); - const double var_x259 = exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane__V); - const double var_x260 = 1 + var_x259; - const double var_x262 = exp(4 + 0.125 * var_chaste_interface__membrane__V); - const double var_x263 = 1 + var_x262; - const double var_x265 = 0.019699999999999999 * var_x256; - const double var_x266 = -0.02 - var_x265; - const double var_x267 = 1 / var_x263; - const double var_x268 = 0.59999999999999998 / var_x260; - const double var_x269 = var_x267 + var_x268; - const double var_x271 = 1 - var_x267 - var_x268; - - partialF = var_x266 * var_x269 + var_x266 * var_x271; - } - else - { - const double y_save = rY[6]; - rY[6] += delta; - const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[6])/delta; - rY[6] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; - // Units: dimensionless; Initial value: 0.000967785 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b = 0.001 * (-var_chaste_interface__T_type_Ca_channel_b_gate__b + _lt_0_row[12]) / (_lt_0_row[13]); // 1 / millisecond - - return d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - - - - const double var_x274 = exp(5.5555555555555554 + 0.22222222222222221 * var_chaste_interface__membrane__V); - const double var_x275 = 1 + var_x274; - const double var_x276 = 1 / var_x275; - const double var_x277 = 1 / (0.0037000000000000002 + 0.0061000000000000004 * var_x276); - - partialF = -0.001 * var_x277; - } - else - { - const double y_save = rY[7]; - rY[7] += delta; - const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[7])/delta; - rY[7] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; - // Units: dimensionless; Initial value: 0.95331988 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g = 0.001 * (-var_chaste_interface__T_type_Ca_channel_g_gate__g + _lt_0_row[14]) * ((var_chaste_interface__membrane__V <= 0) ? (1 / (0.012 - 0.00087500000000000002 * var_chaste_interface__membrane__V)) : (83.333333333333329)); // 1 / millisecond - - return d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - - - - const double var_x280 = 1 / (0.012 - 0.00087500000000000002 * var_chaste_interface__membrane__V); - const double var_x282 = var_chaste_interface__membrane__V <= 0; - - partialF = ((var_x282) ? (-0.001 * var_x280) : (-0.083333333333333329)); - } - else - { - const double y_save = rY[8]; - rY[8] += delta; - const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[8])/delta; - rY[8] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 0.00032151644 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr = 0.001 * (-var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr + _lt_0_row[21]) * (_lt_0_row[22]); // 1 / millisecond - - return d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - - - - const double var_x285 = exp(5.6404999999999994 + 0.14499999999999999 * var_chaste_interface__membrane__V); - const double var_x286 = -1 + var_x285; - const double var_x287 = 1 / var_x286; - const double var_x289 = exp(-1.7465999999999999 - 0.123 * var_chaste_interface__membrane__V); - const double var_x290 = 1 - var_x289; - const double var_x291 = 1 / var_x290; - const double var_x293 = 14.199999999999999 + var_chaste_interface__membrane__V; - const double var_x294 = 38.899999999999999 + var_chaste_interface__membrane__V; - - partialF = -0.0013799999999999999 * var_x291 * var_x293 - 0.00060999999999999997 * var_x287 * var_x294; - } - else - { - const double y_save = rY[9]; - rY[9] += delta; - const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[9])/delta; - rY[9] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; - // Units: dimensionless; Initial value: 0.0272635 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 + _lt_0_row[23]) * (_lt_0_row[24]); // 1 / millisecond - - return d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - - - - const double var_x298 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V); - const double var_x299 = -1 + var_x298; - const double var_x300 = 1 / var_x299; - const double var_x302 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V); - const double var_x303 = 1 - var_x302; - const double var_x304 = 1 / var_x303; - const double var_x306 = 30 + var_chaste_interface__membrane__V; - const double var_x310 = var_x300 * var_x306; - const double var_x311 = var_x304 * var_x306; - - partialF = -0.00013100000000000001 * var_x310 - 7.1899999999999999e-5 * var_x311; - } - else - { - const double y_save = rY[10]; - rY[10] += delta; - const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[10])/delta; - rY[10] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; - // Units: dimensionless; Initial value: 0.0631269 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 + _lt_0_row[23]) * (_lt_0_row[25]); // 1 / millisecond - - return d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - - - - const double var_x298 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V); - const double var_x299 = -1 + var_x298; - const double var_x300 = 1 / var_x299; - const double var_x302 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V); - const double var_x303 = 1 - var_x302; - const double var_x304 = 1 / var_x303; - const double var_x306 = 30 + var_chaste_interface__membrane__V; - const double var_x310 = var_x300 * var_x306; - const double var_x311 = var_x304 * var_x306; - - partialF = -3.2750000000000003e-5 * var_x310 - 1.7975e-5 * var_x311; - } - else - { - const double y_save = rY[11]; - rY[11] += delta; - const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[11])/delta; - rY[11] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__transient_outward_current_zdv_gate__zdv = rY[12]; - // Units: dimensionless; Initial value: 0.011528 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double var_transient_outward_current_zdv_gate__alpha_zdv = _lt_0_row[28]; // per_second - const double var_transient_outward_current_zdv_gate__beta_zdv = _lt_0_row[29]; // per_second - const double d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv = 0.001 * (-var_chaste_interface__transient_outward_current_zdv_gate__zdv + var_transient_outward_current_zdv_gate__alpha_zdv / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv)) * (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv); // 1 / millisecond - - return d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - - - - const double var_x314 = 0.040000000000000001 * var_chaste_interface__membrane__V; - const double var_x315 = exp(-1.6000000000000001 + var_x314); - const double var_x316 = 1 + var_x315; - const double var_x317 = var_x315 / var_x316; - const double var_x318 = exp(-3.6000000000000001 - var_x314); - const double var_x319 = 1 + var_x318; - const double var_x320 = var_x318 / var_x319; - const double var_x323 = 10 * var_x317; - - partialF = -var_x323 - 10 * var_x320; - } - else - { - const double y_save = rY[12]; - rY[12] += delta; - const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[12])/delta; - rY[12] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__transient_outward_current_ydv_gate__ydv = rY[13]; - // Units: dimensionless; Initial value: 0.985232 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double var_transient_outward_current_ydv_gate__alpha_ydv = _lt_0_row[26]; // per_second - const double var_transient_outward_current_ydv_gate__beta_ydv = _lt_0_row[27]; // per_second - const double d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv = 0.001 * (-var_chaste_interface__transient_outward_current_ydv_gate__ydv + var_transient_outward_current_ydv_gate__alpha_ydv / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv)) * (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv); // 1 / millisecond - - return d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - - - - const double var_x330 = 0.20000000000000001 * var_chaste_interface__membrane__V; - const double var_x331 = exp(12 + var_x330); - const double var_x332 = 1 + var_x331; - const double var_x333 = 1 / var_x332; - const double var_x334 = exp(5 + var_x330); - const double var_x335 = 1 + var_x334; - const double var_x336 = var_x334 / var_x335; - const double var_x343 = 0.014999999999999999 * var_x333; - - partialF = -var_x343 - 0.10000000000000001 * var_x336; - } - else - { - const double y_save = rY[13]; - rY[13] += delta; - const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[13])/delta; - rY[13] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; - // Units: millimolar; Initial value: 0.817895 - double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; - // Units: millimolar; Initial value: 2.797668 - double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; - // Units: dimensionless; Initial value: 2.1084e-86 - double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; - // Units: dimensionless; Initial value: 1.784e-87 - double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; - // Units: dimensionless; Initial value: 0.0 - - - - // Mathematics - const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * ((var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack)) : ((var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0) ? (4000 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2) * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); // millimolar_per_second - const double var_calcium_dynamics__i_tr = 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second - const double d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR = 0.001 * (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__calcium_dynamics__Ca_JSR), 2)); // millimolar / millisecond - - return d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; - // Units: millimolar; Initial value: 0.817895 - double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; - // Units: millimolar; Initial value: 2.797668 - double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; - // Units: dimensionless; Initial value: 2.1084e-86 - double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; - // Units: dimensionless; Initial value: 1.784e-87 - double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; - // Units: dimensionless; Initial value: 0.0 - - - - const double var_x175 = 0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; - const double var_x176 = 1 / var_x175; - const double var_x177 = 1 - var_chaste_interface__calcium_dynamics__APtrack2; - const double var_x178 = -0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; - const double var_x179 = 60000 * var_x176 * var_x177 * var_x178; - const double var_x180 = var_x179 * var_chaste_interface__calcium_dynamics__APtrack2; - const double var_x181 = var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001; - const double var_x182 = 4000 * var_chaste_interface__calcium_dynamics__OVRLDtrack2; - const double var_x183 = var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0; - const double var_x191 = -var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR; - const double var_x192 = ((var_x181) ? (var_x180 * var_x191) : ((var_x183) ? (var_x182 * var_x191 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2)) : (0))); - const double var_x200 = 4000 - var_x182; - const double var_x201 = ((var_x181) ? (var_x180) : ((var_x183) ? (var_x200 * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); - const double var_x344 = 0.80000000000000004 + var_chaste_interface__calcium_dynamics__Ca_JSR; - const double var_x345 = pow(var_x344, (-2)); - const double var_x346 = 1 / (1 + 8 * var_x345); - const double var_x347 = 0.001 * var_x346; - - partialF = var_x347 * (-5.5555555555555554 - var_x201) + 0.00025000000000000001 * (-var_x192 + 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR) / (pow(var_x344, 3) * pow((0.125 + var_x345), 2)); - } - else - { - const double y_save = rY[14]; - rY[14] += delta; - const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[14])/delta; - rY[14] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; - // Units: millimolar; Initial value: 0.817895 - double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; - // Units: millimolar; Initial value: 2.797668 - - - - // Mathematics - const double var_calcium_dynamics__i_leak = 0.33333333333333331 * var_chaste_interface__calcium_dynamics__Ca_NSR; // millimolar_per_second - const double var_calcium_dynamics__i_up = 5 * var_chaste_interface__calcium_dynamics__Cai / (0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second - const double var_calcium_dynamics__i_tr = 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second - const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre - const double var_calcium_dynamics__V_JSR = 0.0070588235294117632 * var_ionic_concentrations__V_myo; // micro_litre - const double var_calcium_dynamics__V_NSR = 0.081176470588235281 * var_ionic_concentrations__V_myo; // micro_litre - const double d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR = 0.001 * var_calcium_dynamics__i_up - 0.001 * var_calcium_dynamics__i_leak - 0.001 * var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_tr / var_calcium_dynamics__V_NSR; // millimolar / millisecond - - return d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - - - - - partialF = -0.00081642512077294684; - } - else - { - const double y_save = rY[15]; - rY[15] += delta; - const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[15])/delta; - rY[15] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.00079287 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9938 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99573 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; - // Units: dimensionless; Initial value: 0.000967785 - double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; - // Units: dimensionless; Initial value: 0.95331988 - double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 0.00032151644 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; - // Units: dimensionless; Initial value: 0.0272635 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; - // Units: dimensionless; Initial value: 0.0631269 - double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; - // Units: dimensionless; Initial value: 3.814e-87 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - double var_chaste_interface__ionic_concentrations__Ki = rY[24]; - // Units: millimolar; Initial value: 137.6244 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless - const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt - const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt - const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]); // microA_per_microF - const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF - const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF - const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF - const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF - const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF - const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second - const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF - const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF - const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF - const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF - const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF - const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF - const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt - const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF - const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[8]); // microA_per_microF - const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / (_lt_0_row[9]); // microA_per_microF - const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF - const double var_transient_outward_current__i_to = 0; // microA_per_microF - const double var_membrane__dVdt = -(GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless - const double d_dt_chaste_interface_var_calcium_dynamics__APtrack = 0.001 * ((var_membrane__dVdt > 150000) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack) : (-500 * var_chaste_interface__calcium_dynamics__APtrack)); // 1 / millisecond - - return d_dt_chaste_interface_var_calcium_dynamics__APtrack; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.00079287 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9938 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99573 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; - // Units: dimensionless; Initial value: 0.000967785 - double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; - // Units: dimensionless; Initial value: 0.95331988 - double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 0.00032151644 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; - // Units: dimensionless; Initial value: 0.0272635 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; - // Units: dimensionless; Initial value: 0.0631269 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - double var_chaste_interface__ionic_concentrations__Ki = rY[24]; - // Units: millimolar; Initial value: 137.6244 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - const double var_x0 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); - const double var_x1 = 1 + var_x0; - const double var_x2 = 1 / var_x1; - const double var_x3 = 0.0055199999999999997 * var_x2; - const double var_x4 = pow(mParameters[1], 0.23999999999999999); - const double var_x5 = 1.921898339896919e-8 * var_x4; - const double var_x6 = 1 / var_chaste_interface__calcium_dynamics__Cai; - const double var_x7 = pow(var_x6, 1.3999999999999999); - const double var_x8 = 1 + 6.4818210260626455e-7 * var_x7; - const double var_x9 = 0.25979999999999998 / var_x8; - const double var_x10 = 0.433 + var_x9; - const double var_x11 = var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; - const double var_x12 = var_x10 * var_x11; - const double var_x13 = 0.018717941753901308 * var_chaste_interface__membrane__V; - const double var_x14 = exp(var_x13); - const double var_x15 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; - const double var_x16 = var_x14 * var_x15; - const double var_x17 = exp(-var_x13); - const double var_x18 = pow(mParameters[2], 3); - const double var_x19 = var_x18 * var_chaste_interface__calcium_dynamics__Cai; - const double var_x20 = var_x17 * var_x19; - const double var_x22 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); - const double var_x23 = 1 + 0.001 * var_x15 + 0.001 * var_x19; - const double var_x24 = 1 / var_x23; - const double var_x25 = var_x22 * var_x24; - const double var_x26 = 0.002 * var_x25; - const double var_x28 = 1 / var_chaste_interface__ionic_concentrations__Ki; - const double var_x29 = log(var_x28 * mParameters[1]); - const double var_x30 = -26.712338705498265 * var_x29 + var_chaste_interface__membrane__V; - const double var_x32 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); - const double var_x33 = var_x32 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; - const double var_x34 = var_x33 * var_chaste_interface__fast_sodium_current_h_gate__h; - const double var_x35 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); - const double var_x36 = 1 + var_x35; - const double var_x37 = sqrt(mParameters[1]); - const double var_x38 = var_x37 * mParameters[6] / var_x36; - const double var_x39 = var_x38 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; - const double var_x40 = 0.43033148291193518 * var_x39; - const double var_x41 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x29); - const double var_x42 = 1 + var_x41; - const double var_x43 = 1 / var_x42; - const double var_x44 = exp(-2.4444678999999998 + 13.738155796237757 * var_x29 - 0.51429999999999998 * var_chaste_interface__membrane__V); - const double var_x45 = 1 + var_x44; - const double var_x46 = 1 / var_x45; - const double var_x47 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x29); - const double var_x48 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x29); - const double var_x49 = var_x48 + 0.49124000000000001 * var_x47; - const double var_x50 = var_x46 * var_x49; - const double var_x51 = 1 / (1000 * var_x50 + 1020 * var_x43); - const double var_x52 = var_x37 * var_x43 * mParameters[5]; - const double var_x53 = var_x51 * var_x52; - const double var_x54 = 438.93811257017387 * var_x53; - const double var_x55 = pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); - const double var_x56 = 1 / (1 + 100 * var_x55); - const double var_x57 = 2 * var_x56; - const double var_x58 = 1 / (1.5 + mParameters[1]); - const double var_x59 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); - const double var_x60 = exp(0.01485884101040119 * mParameters[2]); - const double var_x61 = 0.037435883507802616 * var_chaste_interface__membrane__V; - const double var_x62 = exp(-var_x61); - const double var_x63 = 1 + 0.1245 * var_x59 + 0.036499999999999998 * var_x62 * (-0.14285714285714285 + 0.14285714285714285 * var_x60); - const double var_x65 = exp(var_x61); - const double var_x66 = -1 + var_x65; - const double var_x67 = 1 / var_x66; - const double var_x68 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); - const double var_x69 = var_x68 * var_chaste_interface__L_type_Ca_channel_f_gate__f; - const double var_x70 = var_x69 * var_chaste_interface__L_type_Ca_channel_d_gate__d; - const double var_x71 = var_x67 * var_x70; - const double var_x72 = 0.75 * var_x65; - const double var_x73 = -0.75 * mParameters[2] + var_x72 * var_chaste_interface__ionic_concentrations__Nai; - const double var_x74 = 0.0024381008236689767 * var_x73; - const double var_x75 = var_x71 * var_x74; - const double var_x76 = -0.75 * mParameters[1] + var_x72 * var_chaste_interface__ionic_concentrations__Ki; - const double var_x77 = 0.00069711623550831479 * var_x76; - const double var_x78 = var_x71 * var_x77; - const double var_x95 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); - const double var_x96 = var_x95 * var_chaste_interface__T_type_Ca_channel_g_gate__g; - const double var_x97 = 0.050000000000000003 * var_x96; - const double var_x98 = _lt_0_row[0]; - const double var_x99 = -1 + var_x98; - const double var_x100 = 1 / var_x99; - const double var_x101 = var_x98 * var_chaste_interface__calcium_dynamics__Cai; - const double var_x102 = var_x101 - 0.34100000000000003 * mParameters[0]; - const double var_x103 = var_x100 * var_x102; - const double var_x104 = 7.8019226357407252 * var_x103; - const double var_x105 = var_x104 * var_x70; - const double var_x108 = 1 / mParameters[3]; - const double var_x110 = var_x16 - var_x20; - const double var_x118 = 1 / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki); - const double var_x119 = -26.712338705498265 * log(var_x118 * (0.018329999999999999 * mParameters[2] + mParameters[1])) + var_chaste_interface__membrane__V; - const double var_x126 = 0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai; - const double var_x127 = 1.1499999999999999 / var_x126; - const double var_x130 = 1 / var_chaste_interface__ionic_concentrations__Nai; - const double var_x131 = log(var_x130 * mParameters[2]); - const double var_x132 = -26.712338705498265 * var_x131 + var_chaste_interface__membrane__V; - const double var_x141 = log(var_x6 * mParameters[0]); - const double var_x142 = -13.356169352749133 * var_x141 + var_chaste_interface__membrane__V; - const double var_x155 = var_x58 * mParameters[1] / var_x63; - const double var_x193 = var_x110 * var_x26; - const double var_x194 = -0.040282206767891383 * var_x141 + var_x105 * var_chaste_interface__membrane__V + var_x127 * var_chaste_interface__calcium_dynamics__Cai + var_x142 * var_x97; - - partialF = ((var_x108 * (var_x193 + var_x194 + 0.0070159999999999997 * var_chaste_interface__membrane__V - 0.10684935482199306 * var_x131 + var_x119 * var_x12 + var_x132 * var_x34 + var_x155 * var_x57 + var_x3 * var_x30 + var_x30 * var_x40 + var_x30 * var_x5 + var_x30 * var_x54 + var_x75 * var_chaste_interface__membrane__V + var_x78 * var_chaste_interface__membrane__V + GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance()) < -150000) ? (-100.5) : (-0.5)); - } - else - { - const double y_save = rY[16]; - rY[16] += delta; - const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[16])/delta; - rY[16] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; - // Units: dimensionless; Initial value: 3.814e-87 - double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; - // Units: dimensionless; Initial value: 2.1084e-86 - - - - // Mathematics - const double d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack2) : (-500 * var_chaste_interface__calcium_dynamics__APtrack2)); // 1 / millisecond - - return d_dt_chaste_interface_var_calcium_dynamics__APtrack2; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; - // Units: dimensionless; Initial value: 3.814e-87 - - - - const double var_x348 = (var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001); - - partialF = ((var_x348) ? (-100.5) : (-0.5)); - } - else - { - const double y_save = rY[17]; - rY[17] += delta; - const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[17])/delta; - rY[17] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; - // Units: dimensionless; Initial value: 3.814e-87 - double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; - // Units: dimensionless; Initial value: 0.01925 - - - - // Mathematics - const double d_dt_chaste_interface_var_calcium_dynamics__APtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack3) : (-10 * var_chaste_interface__calcium_dynamics__APtrack3)); // 1 / millisecond - - return d_dt_chaste_interface_var_calcium_dynamics__APtrack3; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; - // Units: dimensionless; Initial value: 3.814e-87 - - - - const double var_x348 = (var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001); - - partialF = ((var_x348) ? (-100.5) : (-0.01)); - } - else - { - const double y_save = rY[18]; - rY[18] += delta; - const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[18])/delta; - rY[18] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; - // Units: dimensionless; Initial value: 0.000967785 - double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; - // Units: dimensionless; Initial value: 0.95331988 - double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; - // Units: dimensionless; Initial value: 3.814e-87 - double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; - // Units: dimensionless; Initial value: 2.1084e-86 - double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; - // Units: dimensionless; Initial value: 1.784e-87 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless - const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre - const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt - const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]); // microA_per_microF - const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF - const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF - const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF - const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF - const double d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack = 0.001 * ((var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001) ? (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo) : ((var_chaste_interface__calcium_dynamics__APtrack2 > 0.01) ? (0) : (-500 * var_chaste_interface__calcium_dynamics__Cainfluxtrack))); // 1 / millisecond - - return d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; - // Units: dimensionless; Initial value: 3.814e-87 - double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; - // Units: dimensionless; Initial value: 2.1084e-86 - - - - const double var_x349 = var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001; - - partialF = (((var_x349) || (var_chaste_interface__calcium_dynamics__APtrack2 > 0.01)) ? (0) : (-0.5)); - } - else - { - const double y_save = rY[19]; - rY[19] += delta; - const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[19])/delta; - rY[19] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; - // Units: millimolar; Initial value: 0.817895 - double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; - // Units: dimensionless; Initial value: 0.01925 - double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - - - - // Mathematics - const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (1 / (1 + 0.80000000000000004 / var_chaste_interface__calcium_dynamics__Ca_JSR) > 0.69999999999999996)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack)); // 1 / millisecond - - return d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; - // Units: millimolar; Initial value: 0.817895 - double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; - // Units: dimensionless; Initial value: 0.01925 - double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - - - - - partialF = (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (1 / (1 + 0.80000000000000004 / var_chaste_interface__calcium_dynamics__Ca_JSR) > 0.69999999999999996)) ? (-50) : (-0.5)); - } - else - { - const double y_save = rY[20]; - rY[20] += delta; - const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[20])/delta; - rY[20] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; - // Units: dimensionless; Initial value: 0.0 - - - - // Mathematics - const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack2)); // 1 / millisecond - - return d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; - // Units: dimensionless; Initial value: 0.0 - - - - const double var_x350 = var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998; - - partialF = (((var_x350) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < 0.97999999999999998)) ? (-50) : (-0.5)); - } - else - { - const double y_save = rY[21]; - rY[21] += delta; - const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[21])/delta; - rY[21] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - - - - // Mathematics - const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack3) : (-10 * var_chaste_interface__calcium_dynamics__OVRLDtrack3)); // 1 / millisecond - - return d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; - // Units: dimensionless; Initial value: 0.0 - double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; - // Units: dimensionless; Initial value: 0.0 - - - - const double var_x350 = var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998; - - partialF = (((var_x350) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.97999999999999998)) ? (-50) : (-0.01)); - } - else - { - const double y_save = rY[22]; - rY[22] += delta; - const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[22])/delta; - rY[22] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.00079287 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9938 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99573 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless - const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre - const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt - const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF - const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF - const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second - const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF - const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF - const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF - const double d_dt_chaste_interface_var_ionic_concentrations__Nai = 1.4862413846711923e-15 * (-var_L_type_Ca_channel__i_CaNa - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Na - var_sodium_background_current__i_Na_b - 3 * var_Na_Ca_exchanger__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond - - return d_dt_chaste_interface_var_ionic_concentrations__Nai; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.00079287 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9938 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99573 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - - - - const double var_x13 = 0.018717941753901308 * var_chaste_interface__membrane__V; - const double var_x14 = exp(var_x13); - const double var_x15 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; - const double var_x16 = var_x14 * var_x15; - const double var_x17 = exp(-var_x13); - const double var_x18 = pow(mParameters[2], 3); - const double var_x19 = var_x18 * var_chaste_interface__calcium_dynamics__Cai; - const double var_x20 = var_x17 * var_x19; - const double var_x22 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); - const double var_x23 = 1 + 0.001 * var_x15 + 0.001 * var_x19; - const double var_x24 = 1 / var_x23; - const double var_x25 = var_x22 * var_x24; - const double var_x32 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); - const double var_x33 = var_x32 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; - const double var_x34 = var_x33 * var_chaste_interface__fast_sodium_current_h_gate__h; - const double var_x55 = pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); - const double var_x58 = 1 / (1.5 + mParameters[1]); - const double var_x59 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); - const double var_x60 = exp(0.01485884101040119 * mParameters[2]); - const double var_x61 = 0.037435883507802616 * var_chaste_interface__membrane__V; - const double var_x62 = exp(-var_x61); - const double var_x63 = 1 + 0.1245 * var_x59 + 0.036499999999999998 * var_x62 * (-0.14285714285714285 + 0.14285714285714285 * var_x60); - const double var_x65 = exp(var_x61); - const double var_x66 = -1 + var_x65; - const double var_x67 = 1 / var_x66; - const double var_x68 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); - const double var_x69 = var_x68 * var_chaste_interface__L_type_Ca_channel_f_gate__f; - const double var_x70 = var_x69 * var_chaste_interface__L_type_Ca_channel_d_gate__d; - const double var_x71 = var_x67 * var_x70; - const double var_x88 = var_x65 * var_x71 * var_chaste_interface__membrane__V; - const double var_x110 = var_x16 - var_x20; - const double var_x115 = var_x110 * var_x22 / pow(var_x23, 2); - const double var_x130 = 1 / var_chaste_interface__ionic_concentrations__Nai; - const double var_x149 = 0.10684935482199306 * var_x130; - const double var_x152 = pow(var_chaste_interface__ionic_concentrations__Nai, 2) * mParameters[0]; - const double var_x153 = var_x14 * var_x152; - const double var_x155 = var_x58 * mParameters[1] / var_x63; - const double var_x156 = var_x155 / (pow((0.01 + var_x55), 2) * pow(var_chaste_interface__ionic_concentrations__Nai, 3)); - const double var_x157 = 26.712338705498265 * var_x130 * var_x34; - const double var_x158 = var_x115 * var_x152; - const double var_x160 = 0.0018285756177517324 * var_x88; - const double var_x172 = 1 / M_PI; - const double var_x352 = 0.00018063215662022267 * var_x172; - - partialF = var_x352 * (-var_x149 - var_x157 - var_x160 + 1.8e-5 * var_x158 - 0.12 * var_x156 - 0.018000000000000002 * var_x153 * var_x25); - } - else - { - const double y_save = rY[23]; - rY[23] += delta; - const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[23])/delta; - rY[23] = y_save; - } - return partialF; - } - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) - { - - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 0.00032151644 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; - // Units: dimensionless; Initial value: 0.0272635 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; - // Units: dimensionless; Initial value: 0.0631269 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - double var_chaste_interface__ionic_concentrations__Ki = rY[24]; - // Units: millimolar; Initial value: 137.6244 - - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless - const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre - const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF - const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second - const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF - const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF - const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF - const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt - const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF - const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[8]); // microA_per_microF - const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / (_lt_0_row[9]); // microA_per_microF - const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF - const double var_transient_outward_current__i_to = 0; // microA_per_microF - const double d_dt_chaste_interface_var_ionic_concentrations__Ki = 1.4862413846711923e-15 * (-var_ATP_sensitive_potassium_current__i_K_ATP - var_L_type_Ca_channel__i_CaK - var_non_specific_calcium_activated_current__i_ns_K - var_plateau_potassium_current__i_Kp - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to + 2 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond - - return d_dt_chaste_interface_var_ionic_concentrations__Ki; - } - - double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) - { - double partialF; - if (!forceNumerical && this->mUseAnalyticJacobian) - { - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 0.00032151644 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; - // Units: dimensionless; Initial value: 0.0272635 - double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; - // Units: dimensionless; Initial value: 0.0631269 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - double var_chaste_interface__ionic_concentrations__Ki = rY[24]; - // Units: millimolar; Initial value: 137.6244 - - - - const double var_x0 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); - const double var_x1 = 1 + var_x0; - const double var_x2 = 1 / var_x1; - const double var_x4 = pow(mParameters[1], 0.23999999999999999); - const double var_x6 = 1 / var_chaste_interface__calcium_dynamics__Cai; - const double var_x7 = pow(var_x6, 1.3999999999999999); - const double var_x8 = 1 + 6.4818210260626455e-7 * var_x7; - const double var_x9 = 0.25979999999999998 / var_x8; - const double var_x11 = var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; - const double var_x28 = 1 / var_chaste_interface__ionic_concentrations__Ki; - const double var_x29 = log(var_x28 * mParameters[1]); - const double var_x30 = -26.712338705498265 * var_x29 + var_chaste_interface__membrane__V; - const double var_x35 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); - const double var_x36 = 1 + var_x35; - const double var_x37 = sqrt(mParameters[1]); - const double var_x38 = var_x37 * mParameters[6] / var_x36; - const double var_x39 = var_x38 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; - const double var_x41 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x29); - const double var_x42 = 1 + var_x41; - const double var_x43 = 1 / var_x42; - const double var_x44 = exp(-2.4444678999999998 + 13.738155796237757 * var_x29 - 0.51429999999999998 * var_chaste_interface__membrane__V); - const double var_x45 = 1 + var_x44; - const double var_x46 = 1 / var_x45; - const double var_x47 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x29); - const double var_x48 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x29); - const double var_x49 = var_x48 + 0.49124000000000001 * var_x47; - const double var_x50 = var_x46 * var_x49; - const double var_x51 = 1 / (1000 * var_x50 + 1020 * var_x43); - const double var_x52 = var_x37 * var_x43 * mParameters[5]; - const double var_x53 = var_x51 * var_x52; - const double var_x61 = 0.037435883507802616 * var_chaste_interface__membrane__V; - const double var_x65 = exp(var_x61); - const double var_x66 = -1 + var_x65; - const double var_x67 = 1 / var_x66; - const double var_x68 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); - const double var_x69 = var_x68 * var_chaste_interface__L_type_Ca_channel_f_gate__f; - const double var_x70 = var_x69 * var_chaste_interface__L_type_Ca_channel_d_gate__d; - const double var_x71 = var_x67 * var_x70; - const double var_x79 = var_x41 / pow(var_x42, 2); - const double var_x80 = 1000 * var_x46; - const double var_x81 = var_x44 * var_x49 / pow(var_x45, 2); - const double var_x82 = 0.0004218936106979757 * var_x30 * var_x52 / pow((var_x43 + 0.98039215686274506 * var_x50), 2); - const double var_x84 = var_x30 * var_x37; - const double var_x86 = var_x51 * var_x84 * mParameters[5]; - const double var_x88 = var_x65 * var_x71 * var_chaste_interface__membrane__V; - const double var_x118 = 1 / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki); - const double var_x161 = 5.1338399412861326e-7 * var_x28 * var_x4; - const double var_x162 = 0.14745210965435041 * var_x2 * var_x28; - const double var_x163 = 11.495160327182951 * var_x28 * var_x39; - const double var_x164 = 11725.06353372661 * var_x28 * var_x53; - const double var_x165 = 0.00052283717663123607 * var_x88; - const double var_x166 = var_x28 * var_x79; - const double var_x167 = var_x82 * (6498.310636886562 * var_x166 - var_x80 * (1.053972635420138 * var_x28 * var_x47 + 1.6494869150645177 * var_x28 * var_x48) - 13738.155796237757 * var_x28 * var_x81); - const double var_x168 = 2796.4276527937964 * var_x166 * var_x86; - const double var_x172 = 1 / M_PI; - const double var_x352 = 0.00018063215662022267 * var_x172; - const double var_x357 = -0.433 - var_x9; - const double var_x358 = var_x11 * var_x357; - const double var_x361 = var_x118 * var_x358; - - partialF = var_x352 * (var_x168 - var_x161 - var_x162 - var_x163 - var_x164 - var_x165 - var_x167 + 26.712338705498265 * var_x361); - } - else - { - const double y_save = rY[24]; - rY[24] += delta; - const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time_converted, rY); - partialF = (temp-mEvalF[24])/delta; - rY[24] = y_save; - } - return partialF; - } - - std::vector Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) - { - // Inputs: - // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -88.984 - double var_chaste_interface__calcium_dynamics__Cai = rY[1]; - // Units: millimolar; Initial value: 0.00035237 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.00079287 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.9938 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.99573 - double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 3.18355e-06 - double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.9974388 - double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; - // Units: dimensionless; Initial value: 0.00032151644 - double var_chaste_interface__ionic_concentrations__Nai = rY[23]; - // Units: millimolar; Initial value: 15.6748357 - double var_chaste_interface__ionic_concentrations__Ki = rY[24]; - // Units: millimolar; Initial value: 137.6244 - - // Lookup table indexing - const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double var_L_type_Ca_channel__P_Ca = 0.00054000000000000001; // cm_per_second - const double var_L_type_Ca_channel__P_K = 1.9299999999999999e-7; // cm_per_second - const double var_L_type_Ca_channel__P_Na = 6.75e-7; // cm_per_second - const double var_L_type_Ca_channel__gamma_Cai = 1; // dimensionless - const double var_L_type_Ca_channel__gamma_Cao = 0.34100000000000003; // dimensionless - const double var_L_type_Ca_channel__gamma_Ki = 0.75; // dimensionless - const double var_L_type_Ca_channel__gamma_Ko = 0.75; // dimensionless - const double var_L_type_Ca_channel__gamma_Nai = 0.75; // dimensionless - const double var_L_type_Ca_channel__gamma_Nao = 0.75; // dimensionless - const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // millimolar - const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + var_chaste_interface__calcium_dynamics__Cai / var_L_type_Ca_channel_f_Ca_gate__Km_Ca); // dimensionless - const double var_membrane__F = 96485; // coulomb_per_mole - const double var_membrane__I_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 - const double var_membrane__R = 8314; // joule_per_kilomole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai) / var_membrane__F; // millivolt - const double var_L_type_Ca_channel__I_CaCa = 4 * pow(var_membrane__F, 2) * (-var_L_type_Ca_channel__gamma_Cao * mParameters[0] + var_L_type_Ca_channel__gamma_Cai * var_chaste_interface__calcium_dynamics__Cai * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_Ca * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_L_type_Ca_channel__I_CaK = pow(var_membrane__F, 2) * (-var_L_type_Ca_channel__gamma_Ko * mParameters[1] + var_L_type_Ca_channel__gamma_Ki * var_chaste_interface__ionic_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_K * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_L_type_Ca_channel__I_CaNa = pow(var_membrane__F, 2) * (-var_L_type_Ca_channel__gamma_Nao * mParameters[2] + var_L_type_Ca_channel__gamma_Nai * var_chaste_interface__ionic_concentrations__Nai * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_Na * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF - const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF - const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF - const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF - const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // microA_per_microF - const double var_L_type_Ca_channel__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L; // uA_per_cm2 - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF - const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 - const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 / (_lt_0_row[9]); // dimensionless - const double var_rapid_delayed_rectifier_potassium_current__g_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[6]; // milliS_per_microF - const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki) / var_membrane__F; // millivolt - const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_rapid_delayed_rectifier_potassium_current__Rect * var_rapid_delayed_rectifier_potassium_current__g_Kr * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF - const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 - const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[5]; // milliS_per_cm2 - const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)); // per_second - const double var_time_independent_potassium_current_K1_gate__beta_K1 = 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // per_second - const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless - const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // microA_per_microF - const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 - - std::vector dqs(6); - dqs[0] = var_L_type_Ca_channel__i_Ca_L_converted; - dqs[1] = var_fast_sodium_current__i_Na_converted; - dqs[2] = var_time_independent_potassium_current__i_K1_converted; - dqs[3] = var_rapid_delayed_rectifier_potassium_current__i_Kr_converted; - dqs[4] = var_membrane__I_st_converted; - dqs[5] = var_chaste_interface__environment__time_converted; - return dqs; - } - -template<> -void OdeSystemInformation::Initialise(void) -{ - this->mSystemName = "viswanathan_model_1999_epi"; - this->mFreeVariableName = "time"; - this->mFreeVariableUnits = "millisecond"; - - // rY[0]: - this->mVariableNames.push_back("membrane_voltage"); - this->mVariableUnits.push_back("millivolt"); - this->mInitialConditions.push_back(-88.984); - - // rY[1]: - this->mVariableNames.push_back("cytosolic_calcium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.00035237); - - // rY[2]: - this->mVariableNames.push_back("fast_sodium_current_m_gate__m"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.00079287); - - // rY[3]: - this->mVariableNames.push_back("fast_sodium_current_h_gate__h"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9938); - - // rY[4]: - this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.99573); - - // rY[5]: - this->mVariableNames.push_back("L_type_Ca_channel_d_gate__d"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(3.18355e-06); - - // rY[6]: - this->mVariableNames.push_back("L_type_Ca_channel_f_gate__f"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9974388); - - // rY[7]: - this->mVariableNames.push_back("T_type_Ca_channel_b_gate__b"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.000967785); - - // rY[8]: - this->mVariableNames.push_back("T_type_Ca_channel_g_gate__g"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.95331988); - - // rY[9]: - this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current_xr_gate__xr"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.00032151644); - - // rY[10]: - this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current_xs1_gate__xs1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0272635); - - // rY[11]: - this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current_xs2_gate__xs2"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0631269); - - // rY[12]: - this->mVariableNames.push_back("transient_outward_current_zdv_gate__zdv"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.011528); - - // rY[13]: - this->mVariableNames.push_back("transient_outward_current_ydv_gate__ydv"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.985232); - - // rY[14]: - this->mVariableNames.push_back("calcium_dynamics__Ca_JSR"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(0.817895); - - // rY[15]: - this->mVariableNames.push_back("calcium_dynamics__Ca_NSR"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(2.797668); - - // rY[16]: - this->mVariableNames.push_back("calcium_dynamics__APtrack"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(3.814e-87); - - // rY[17]: - this->mVariableNames.push_back("calcium_dynamics__APtrack2"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(2.1084e-86); - - // rY[18]: - this->mVariableNames.push_back("calcium_dynamics__APtrack3"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.01925); - - // rY[19]: - this->mVariableNames.push_back("calcium_dynamics__Cainfluxtrack"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(1.784e-87); - - // rY[20]: - this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0); - - // rY[21]: - this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack2"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0); - - // rY[22]: - this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack3"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0); - - // rY[23]: - this->mVariableNames.push_back("cytosolic_sodium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(15.6748357); - - // rY[24]: - this->mVariableNames.push_back("cytosolic_potassium_concentration"); - this->mVariableUnits.push_back("millimolar"); - this->mInitialConditions.push_back(137.6244); - - // mParameters[0]: - this->mParameterNames.push_back("extracellular_calcium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[1]: - this->mParameterNames.push_back("extracellular_potassium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[2]: - this->mParameterNames.push_back("extracellular_sodium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[3]: - this->mParameterNames.push_back("membrane_capacitance"); - this->mParameterUnits.push_back("microF"); - - // mParameters[4]: - this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_microF"); - - // mParameters[5]: - this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_cm2"); - - // mParameters[6]: - this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_cm2"); - - // Derived Quantity index [0]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [1]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [2]: - this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [3]: - this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [4]: - this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [5]: - this->mDerivedQuantityNames.push_back("time"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - this->mInitialised = true; -} - -// Serialization for Boost >= 1.36 -#include "SerializationExportWrapperForCpp.hpp" -CHASTE_CLASS_EXPORT(Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt) -extern "C" -{ - AbstractCardiacCellInterface* MakeCardiacCell( - boost::shared_ptr pSolver, - boost::shared_ptr pStimulus) - { - return new Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt(pSolver, pStimulus); - } - -} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp similarity index 93% rename from chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp index 762a39ec..9e3173a7 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp @@ -143,7 +143,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL2Opt_LookupT for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return (((var_chaste_interface__membrane__V >= -65.000000999999997) && (var_chaste_interface__membrane__V <= -64.999999000000003)) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (0.099999999999999992 * (-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + return (((6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-0.099999999999999992 * (6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -187,7 +187,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL2Opt_LookupT for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V); + return 1 / (1 + exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -198,7 +198,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLGRL2Opt_LookupT for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return (((var_chaste_interface__membrane__V >= -50.000000999999997) && (var_chaste_interface__membrane__V <= -49.999999000000003)) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : ((-5 - 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + return (((5 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (5 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (-1 * (5 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -432,7 +432,7 @@ std::shared_ptrIndexTable0(var_chaste_interface__membrane__V); const double var_x3 = _lt_0_row[5]; - const double var_x5 = (var_chaste_interface__membrane__V >= -50.000000999999997) && (var_chaste_interface__membrane__V <= -49.999999000000003); - const double var_x6 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x7 = -5 + var_x6; - const double var_x8 = exp(var_x7); - const double var_x9 = -1 + var_x8; - const double var_x10 = 1 / var_x9; - const double var_x12 = -4 * var_x3; + const double var_x4 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x5 = 5 + var_x4; + const double var_x6 = (var_x5 >= -9.9999999999999995e-8) && (var_x5 <= 9.9999999999999995e-8); + const double var_x7 = exp(-var_x5); + const double var_x8 = -1 + var_x7; + const double var_x9 = 1 / var_x8; + const double var_x11 = 4 * var_x3; - partialF = ((var_x5) ? (-3.5 + var_x12 - 0.050000000000000003 * var_chaste_interface__membrane__V) : (var_x12 - var_x10 * var_x7)); + partialF = ((var_x6) ? (-3.5 - var_x11 - 0.050000000000000003 * var_chaste_interface__membrane__V) : (-var_x11 + 1 * var_x5 * var_x9)); } else { @@ -635,7 +635,7 @@ std::shared_ptrIndexTable0(var_chaste_interface__membrane__V); // Mathematics - const double d_dt_chaste_interface_var_sodium_channel_h_gate__h = 0.070000000000000007 * (1 - var_chaste_interface__sodium_channel_h_gate__h) * _lt_0_row[2] - var_chaste_interface__sodium_channel_h_gate__h / (_lt_0_row[3]); // 1 / millisecond + const double d_dt_chaste_interface_var_sodium_channel_h_gate__h = 0.070000000000000007 * (1 - var_chaste_interface__sodium_channel_h_gate__h) * _lt_0_row[2] - 1 * _lt_0_row[3] * var_chaste_interface__sodium_channel_h_gate__h; // 1 / millisecond return d_dt_chaste_interface_var_sodium_channel_h_gate__h; } @@ -657,11 +657,11 @@ std::shared_ptrIndexTable0(var_chaste_interface__membrane__V); - const double var_x13 = _lt_0_row[2]; - const double var_x14 = exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V); - const double var_x15 = 1 + var_x14; + const double var_x12 = _lt_0_row[2]; + const double var_x13 = exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x14 = 1 + var_x13; - partialF = -1 / var_x15 - 0.070000000000000007 * var_x13; + partialF = -1 / var_x14 - 0.070000000000000007 * var_x12; } else { @@ -713,16 +713,16 @@ std::shared_ptrIndexTable0(var_chaste_interface__membrane__V); - const double var_x6 = -0.10000000000000001 * var_chaste_interface__membrane__V; - const double var_x16 = _lt_0_row[1]; - const double var_x18 = (var_chaste_interface__membrane__V >= -65.000000999999997) && (var_chaste_interface__membrane__V <= -64.999999000000003); - const double var_x19 = -6.5 + var_x6; - const double var_x20 = exp(var_x19); - const double var_x21 = -1 + var_x20; - const double var_x22 = 1 / var_x21; - const double var_x24 = -0.125 * var_x16; + const double var_x4 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x15 = _lt_0_row[1]; + const double var_x17 = 6.5 + var_x4; + const double var_x18 = (var_x17 >= -9.9999999999999995e-8) && (var_x17 <= 9.9999999999999995e-8); + const double var_x19 = exp(-var_x17); + const double var_x20 = -1 + var_x19; + const double var_x21 = 1 / var_x20; + const double var_x23 = 0.125 * var_x15; - partialF = ((var_x18) ? (-0.42499999999999999 + var_x24 - 0.0050000000000000001 * var_chaste_interface__membrane__V) : (var_x24 - 0.099999999999999992 * var_x19 * var_x22)); + partialF = ((var_x18) ? (-0.42499999999999999 - var_x23 - 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-var_x23 + 0.099999999999999992 * var_x17 * var_x21)); } else { diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994--sympy_1_13.cpp new file mode 100644 index 00000000..eb0894fc --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994--sympy_1_13.cpp @@ -0,0 +1,520 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: luo_rudy_1994 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: Normal) +//! on (date omitted as unimportant) +//! +//! + +#include "luo_rudy_1994.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Cellluo_rudy_1994FromCellML::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stimCurrent_converted = 50.000000000000007; // uA_per_cm2 + const double var_chaste_interface__membrane__stimDuration = 0.5; // ms + const double var_chaste_interface__membrane__stimPeriod = 1000; // ms + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stimCurrent_converted), + var_chaste_interface__membrane__stimDuration, + var_chaste_interface__membrane__stimPeriod, + 0.0 + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellluo_rudy_1994FromCellML::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellluo_rudy_1994FromCellML::Cellluo_rudy_1994FromCellML(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCell( + pSolver, + 12, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1.8; // (var_ionic_concentrations__Cao) [mM] + this->mParameters[1] = 5.4000000000000004; // (var_ionic_concentrations__Ko) [mM] + this->mParameters[2] = 140; // (var_ionic_concentrations__Nao) [mM] + this->mParameters[3] = 0.01; // (var_membrane__Cm) [uF_per_mm2] + this->mParameters[4] = 0.16; // (var_fast_sodium_current__g_Na) [mS_per_mm2] + this->mParameters[5] = 0.0074999999999999997; // (var_time_independent_potassium_current__g_K1_max) [mS_per_mm2] + } + + Cellluo_rudy_1994FromCellML::~Cellluo_rudy_1994FromCellML() + { + } + + + void Cellluo_rudy_1994FromCellML::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 12; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellluo_rudy_1994FromCellML::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__ionic_concentrations__Cai = rY[1]; + // Units: mM; Initial value: 0.00012 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__time_dependent_potassium_current_X_gate__X = rY[7]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[8]; + // Units: mM; Initial value: 10.0 + double var_chaste_interface__ionic_concentrations__Ki = rY[9]; + // Units: mM; Initial value: 145.0 + + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // mM + const double var_Na_Ca_exchanger__K_NaCa = 20; // uA_per_mm2 + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // mM + const double var_Na_Ca_exchanger__K_mNa = 87.5; // mM + const double var_Na_Ca_exchanger__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 3.0159999999999999e-5; // mS_per_mm2 + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + pow(var_chaste_interface__ionic_concentrations__Cai, 2) / pow(var_L_type_Ca_channel_f_Ca_gate__Km_Ca, 2)); // dimensionless + const double var_membrane__F = 96845; // faradays_constant_units + const double var_membrane__R = 8314.5; // gas_constant_units + const double var_membrane__T = 310; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[0] / var_chaste_interface__ionic_concentrations__Cai) / var_membrane__F; // mV + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai) / var_membrane__F; // mV + const double var_L_type_Ca_channel__I_CaCa = (((var_chaste_interface__membrane__V >= -1.3307320976818627e-6) && (var_chaste_interface__membrane__V <= 1.3307320976818627e-6)) ? (375733.02761014085 * (1.3307320976818627e-6 + var_chaste_interface__membrane__V) * (1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.078597788527232842 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(0.075146605522028176 * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + exp(0.075146605522028176 * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__I_CaK = (((var_chaste_interface__membrane__V >= -2.6614641953637254e-6) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6)) ? (187866.51380507043 * (2.6614641953637254e-6 + var_chaste_interface__membrane__V) * (1.8691085000000002e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.8691085000000002e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.8691085000000002e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (7.0228579563684903e-6 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037573302761014088 * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__I_CaNa = (((var_chaste_interface__membrane__V >= -2.6614641953637254e-6) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6)) ? (187866.51380507043 * (2.6614641953637254e-6 + var_chaste_interface__membrane__V) * (6.5370374999999993e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 6.5370374999999993e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 6.5370374999999993e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (2.4561808914760263e-5 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037573302761014088 * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // uA_per_mm2 + const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // uA_per_mm2 + const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // uA_per_mm2 + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // uA_per_mm2 + const double var_Na_Ca_exchanger__i_NaCa = 1 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__ionic_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_Na_Ca_exchanger__K_NaCa / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[2], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[0])); // uA_per_mm2 + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_CaN + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // uA_per_mm2 + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // uA_per_mm2 + const double var_fast_sodium_current__i_Na_converted = 100.00000000000001 * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_non_specific_calcium_activated_current__I_ns_K = ((((var_chaste_interface__membrane__V >= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) || ((var_chaste_interface__membrane__V >= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))))) ? (1.6947874999999998e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 187866.51380507043 * (-1.6947874999999998e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 1.6947874999999998e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) * (-2.6614641953637254e-6 - 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V)) : (6.3678763853082156e-6 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) * (-26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V) / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))))); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__I_ns_Na = ((((var_chaste_interface__membrane__V >= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) || ((var_chaste_interface__membrane__V >= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))))) ? (1.6947874999999998e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 187866.51380507043 * (-1.6947874999999998e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 1.6947874999999998e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) * (-2.6614641953637254e-6 - 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V)) : (6.3678763853082156e-6 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) * (-26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V) / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))))); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__K_m_ns_Ca = 0.0011999999999999999; // mM + const double var_non_specific_calcium_activated_current__i_ns_K = 1 * var_non_specific_calcium_activated_current__I_ns_K / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__ionic_concentrations__Cai, 3)); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__i_ns_Na = 1 * var_non_specific_calcium_activated_current__I_ns_Na / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__ionic_concentrations__Cai, 3)); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__i_ns_Ca = var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na; // uA_per_mm2 + const double var_plateau_potassium_current__Kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_plateau_potassium_current__g_Kp = 0.000183; // mS_per_mm2 + const double var_sarcolemmal_calcium_pump__I_pCa = 0.0115; // uA_per_mm2 + const double var_sarcolemmal_calcium_pump__K_mpCa = 0.00050000000000000001; // mM + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__ionic_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__ionic_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // uA_per_mm2 + const double var_sodium_background_current__E_NaN = var_fast_sodium_current__E_Na; // mV + const double var_sodium_background_current__g_Nab = 1.4100000000000001e-5; // mS_per_mm2 + const double var_sodium_background_current__i_Na_b = (-var_sodium_background_current__E_NaN + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // uA_per_mm2 + const double var_sodium_potassium_pump__I_NaK = 0.014999999999999999; // uA_per_mm2 + const double var_sodium_potassium_pump__K_mKo = 1.5; // mM + const double var_sodium_potassium_pump__K_mNai = 10; // mM + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * mParameters[1] * var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__ionic_concentrations__Nai), 1.5)) * (mParameters[1] + var_sodium_potassium_pump__K_mKo)); // uA_per_mm2 + const double var_time_dependent_potassium_current__PR_NaK = 0.018329999999999999; // dimensionless + const double var_time_dependent_potassium_current__E_K = var_membrane__R * var_membrane__T * log((mParameters[2] * var_time_dependent_potassium_current__PR_NaK + mParameters[1]) / (var_chaste_interface__ionic_concentrations__Nai * var_time_dependent_potassium_current__PR_NaK + var_chaste_interface__ionic_concentrations__Ki)) / var_membrane__F; // mV + const double var_time_dependent_potassium_current__g_K_max = 0.00282; // mS_per_mm2 + const double var_time_dependent_potassium_current__g_K = 0.43033148291193518 * sqrt(mParameters[1]) * var_time_dependent_potassium_current__g_K_max; // mS_per_mm2 + const double var_time_dependent_potassium_current_Xi_gate__Xi = 1 / (1 + exp(-1.7526479750778814 + 0.031152647975077882 * var_chaste_interface__membrane__V)); // dimensionless + const double var_time_dependent_potassium_current__i_K = pow(var_chaste_interface__time_dependent_potassium_current_X_gate__X, 2) * (-var_time_dependent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_time_dependent_potassium_current__g_K * var_time_dependent_potassium_current_Xi_gate__Xi; // uA_per_mm2 + const double var_time_independent_potassium_current__E_K1 = var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki) / var_membrane__F; // mV + const double var_plateau_potassium_current__E_Kp = var_time_independent_potassium_current__E_K1; // mV + const double var_plateau_potassium_current__i_Kp = (-var_plateau_potassium_current__E_Kp + var_chaste_interface__membrane__V) * var_plateau_potassium_current__Kp * var_plateau_potassium_current__g_Kp; // uA_per_mm2 + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[5]; // mS_per_mm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K1) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K1)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K1 - 0.51429999999999998 * var_chaste_interface__membrane__V)); // per_ms + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // uA_per_mm2 + const double var_time_independent_potassium_current__i_K1_converted = 100.00000000000001 * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_chaste_interface__i_ionic = -var_fast_sodium_current__i_Na_converted - var_time_independent_potassium_current__i_K1_converted - 100.00000000000001 * var_L_type_Ca_channel__i_Ca_L - 100.00000000000001 * var_Na_Ca_exchanger__i_NaCa - 100.00000000000001 * var_calcium_background_current__i_Ca_b - 100.00000000000001 * var_non_specific_calcium_activated_current__i_ns_Ca - 100.00000000000001 * var_plateau_potassium_current__i_Kp - 100.00000000000001 * var_sarcolemmal_calcium_pump__i_p_Ca - 100.00000000000001 * var_sodium_background_current__i_Na_b - 100.00000000000001 * var_sodium_potassium_pump__i_NaK - 100.00000000000001 * var_time_dependent_potassium_current__i_K; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellluo_rudy_1994FromCellML::EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__ionic_concentrations__Cai = rY[1]; + // Units: mM; Initial value: 0.00012 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__time_dependent_potassium_current_X_gate__X = rY[7]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[8]; + // Units: mM; Initial value: 10.0 + double var_chaste_interface__ionic_concentrations__Ki = rY[9]; + // Units: mM; Initial value: 145.0 + double var_chaste_interface__ionic_concentrations__Ca_JSR = rY[10]; + // Units: mM; Initial value: 1.8 + double var_chaste_interface__ionic_concentrations__Ca_NSR = rY[11]; + // Units: mM; Initial value: 1.8 + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // mM + const double var_Na_Ca_exchanger__K_NaCa = 20; // uA_per_mm2 + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // mM + const double var_Na_Ca_exchanger__K_mNa = 87.5; // mM + const double var_Na_Ca_exchanger__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 3.0159999999999999e-5; // mS_per_mm2 + const double var_calcium_fluxes_in_the_SR__Ca_NSR_max = 15; // mM + const double var_calcium_fluxes_in_the_SR__G_rel_max = 60; // per_ms + const double var_calcium_fluxes_in_the_SR__I_up = 0.0050000000000000001; // mM_per_ms + const double var_calcium_fluxes_in_the_SR__K_leak = var_calcium_fluxes_in_the_SR__I_up / var_calcium_fluxes_in_the_SR__Ca_NSR_max; // per_ms + const double var_calcium_fluxes_in_the_SR__K_mrel = 0.00080000000000000004; // mM + const double var_calcium_fluxes_in_the_SR__K_mup = 0.00092000000000000003; // mM + const double var_calcium_fluxes_in_the_SR__delta_Ca_i2 = 0; // mM + const double var_calcium_fluxes_in_the_SR__delta_Ca_ith = 0.00018000000000000001; // mM + const double var_calcium_fluxes_in_the_SR__G_rel_peak = ((var_calcium_fluxes_in_the_SR__delta_Ca_i2 < var_calcium_fluxes_in_the_SR__delta_Ca_ith) ? (0) : (var_calcium_fluxes_in_the_SR__G_rel_max)); // per_ms + const double var_calcium_fluxes_in_the_SR__t_CICR = 0; // ms + const double var_calcium_fluxes_in_the_SR__tau_off = 2; // ms + const double var_calcium_fluxes_in_the_SR__tau_on = 2; // ms + const double var_calcium_fluxes_in_the_SR__G_rel = (1 - exp(-var_calcium_fluxes_in_the_SR__t_CICR / var_calcium_fluxes_in_the_SR__tau_on)) * (-var_calcium_fluxes_in_the_SR__delta_Ca_ith + var_calcium_fluxes_in_the_SR__delta_Ca_i2) * var_calcium_fluxes_in_the_SR__G_rel_peak * exp(-var_calcium_fluxes_in_the_SR__t_CICR / var_calcium_fluxes_in_the_SR__tau_off) / (-var_calcium_fluxes_in_the_SR__delta_Ca_ith + var_calcium_fluxes_in_the_SR__K_mrel + var_calcium_fluxes_in_the_SR__delta_Ca_i2); // per_ms + const double var_calcium_fluxes_in_the_SR__tau_tr = 180; // ms + const double var_ionic_concentrations__Am = 200; // per_mm + const double var_calcium_fluxes_in_the_SR__i_leak = var_calcium_fluxes_in_the_SR__K_leak * var_chaste_interface__ionic_concentrations__Ca_NSR; // mM_per_ms + const double var_calcium_fluxes_in_the_SR__i_tr = (-var_chaste_interface__ionic_concentrations__Ca_JSR + var_chaste_interface__ionic_concentrations__Ca_NSR) / var_calcium_fluxes_in_the_SR__tau_tr; // mM_per_ms + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + pow(var_chaste_interface__ionic_concentrations__Cai, 2) / pow(var_L_type_Ca_channel_f_Ca_gate__Km_Ca, 2)); // dimensionless + const double var_calcium_fluxes_in_the_SR__i_rel = (-var_chaste_interface__ionic_concentrations__Cai + var_chaste_interface__ionic_concentrations__Ca_JSR) * var_calcium_fluxes_in_the_SR__G_rel; // mM_per_ms + const double var_calcium_fluxes_in_the_SR__i_up = var_calcium_fluxes_in_the_SR__I_up * var_chaste_interface__ionic_concentrations__Cai / (var_calcium_fluxes_in_the_SR__K_mup + var_chaste_interface__ionic_concentrations__Cai); // mM_per_ms + const double d_dt_chaste_interface_var_ionic_concentrations__Ca_NSR = -var_calcium_fluxes_in_the_SR__i_leak - var_calcium_fluxes_in_the_SR__i_tr + var_calcium_fluxes_in_the_SR__i_up; // mM / ms + const double var_ionic_concentrations__V_JSR = 0.0047999999999999996; // dimensionless + const double var_ionic_concentrations__V_NSR = 0.055199999999999999; // dimensionless + const double d_dt_chaste_interface_var_ionic_concentrations__Ca_JSR = -var_calcium_fluxes_in_the_SR__i_rel + var_calcium_fluxes_in_the_SR__i_tr * var_ionic_concentrations__V_NSR / var_ionic_concentrations__V_JSR; // mM / ms + const double var_ionic_concentrations__V_myo = 0.68000000000000005; // dimensionless + const double var_membrane__F = 96845; // faradays_constant_units + const double var_membrane__R = 8314.5; // gas_constant_units + const double var_membrane__T = 310; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[0] / var_chaste_interface__ionic_concentrations__Cai) / var_membrane__F; // mV + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai) / var_membrane__F; // mV + const double var_L_type_Ca_channel__I_CaCa = (((var_chaste_interface__membrane__V >= -1.3307320976818627e-6) && (var_chaste_interface__membrane__V <= 1.3307320976818627e-6)) ? (375733.02761014085 * (1.3307320976818627e-6 + var_chaste_interface__membrane__V) * (1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.078597788527232842 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(0.075146605522028176 * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + exp(0.075146605522028176 * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__I_CaK = (((var_chaste_interface__membrane__V >= -2.6614641953637254e-6) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6)) ? (187866.51380507043 * (2.6614641953637254e-6 + var_chaste_interface__membrane__V) * (1.8691085000000002e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.8691085000000002e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.8691085000000002e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (7.0228579563684903e-6 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037573302761014088 * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__I_CaNa = (((var_chaste_interface__membrane__V >= -2.6614641953637254e-6) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6)) ? (187866.51380507043 * (2.6614641953637254e-6 + var_chaste_interface__membrane__V) * (6.5370374999999993e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 6.5370374999999993e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 6.5370374999999993e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (2.4561808914760263e-5 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037573302761014088 * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // uA_per_mm2 + const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // uA_per_mm2 + const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // uA_per_mm2 + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = (((var_chaste_interface__membrane__V >= -10.000000624) && (var_chaste_interface__membrane__V <= -9.9999993759999999)) ? (801282.05129393819 * (10.000000624 + var_chaste_interface__membrane__V) * (45787545.788225032 * (1 - exp(9.999999999851651e-8)) / (1 + exp(9.999999999851651e-8)) + 45787545.788225032 * (1 - exp(-9.999999999851651e-8)) / (1 + exp(-9.999999999851651e-8))) - 45787545.788225032 * (1 - exp(9.999999999851651e-8)) / (1 + exp(9.999999999851651e-8))) : (28.571428571428569 * (1 - exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) / ((1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) * (10 + var_chaste_interface__membrane__V)))); // ms + const double var_L_type_Ca_channel_d_gate__alpha_d = var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d; // per_ms + const double var_L_type_Ca_channel_d_gate__beta_d = (1 - var_L_type_Ca_channel_d_gate__d_infinity) / var_L_type_Ca_channel_d_gate__tau_d; // per_ms + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = (1 - var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__alpha_d - var_L_type_Ca_channel_d_gate__beta_d * var_chaste_interface__L_type_Ca_channel_d_gate__d; // 1 / ms + const double var_L_type_Ca_channel_f_gate__f_infinity = 1 / (1 + exp(4.0767441860465121 + 0.11627906976744186 * var_chaste_interface__membrane__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); // ms + const double var_L_type_Ca_channel_f_gate__alpha_f = var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f; // per_ms + const double var_L_type_Ca_channel_f_gate__beta_f = (1 - var_L_type_Ca_channel_f_gate__f_infinity) / var_L_type_Ca_channel_f_gate__tau_f; // per_ms + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = (1 - var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__alpha_f - var_L_type_Ca_channel_f_gate__beta_f * var_chaste_interface__L_type_Ca_channel_f_gate__f; // 1 / ms + const double var_Na_Ca_exchanger__i_NaCa = 1 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__ionic_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_Na_Ca_exchanger__K_NaCa / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[2], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[0])); // uA_per_mm2 + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_CaN + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // uA_per_mm2 + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // uA_per_mm2 + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_ms + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V)) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_ms + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * var_fast_sodium_current_h_gate__alpha_h - var_fast_sodium_current_h_gate__beta_h * var_chaste_interface__fast_sodium_current_h_gate__h; // 1 / ms + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V) - 3.4740000000000003e-5 * exp(-0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V))) : (0)); // per_ms + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(-0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(-2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_ms + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = (1 - var_chaste_interface__fast_sodium_current_j_gate__j) * var_fast_sodium_current_j_gate__alpha_j - var_fast_sodium_current_j_gate__beta_j * var_chaste_interface__fast_sodium_current_j_gate__j; // 1 / ms + const double var_fast_sodium_current_m_gate__alpha_m = (((var_chaste_interface__membrane__V >= -47.130001) && (var_chaste_interface__membrane__V <= -47.129999000000005)) ? (-3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 499999.99998562218 * (47.130001 + var_chaste_interface__membrane__V) * (3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 3.200000000092018e-7 / (1 - exp(-1.0000000000287557e-7)))) : (0.32000000000000001 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_ms + const double var_fast_sodium_current_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_ms + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m; // 1 / ms + const double var_non_specific_calcium_activated_current__I_ns_K = ((((var_chaste_interface__membrane__V >= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) || ((var_chaste_interface__membrane__V >= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))))) ? (1.6947874999999998e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 187866.51380507043 * (-1.6947874999999998e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 1.6947874999999998e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) * (-2.6614641953637254e-6 - 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V)) : (6.3678763853082156e-6 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) * (-26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V) / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))))); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__I_ns_Na = ((((var_chaste_interface__membrane__V >= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) || ((var_chaste_interface__membrane__V >= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))))) ? (1.6947874999999998e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 187866.51380507043 * (-1.6947874999999998e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 1.6947874999999998e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) * (-2.6614641953637254e-6 - 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V)) : (6.3678763853082156e-6 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) * (-26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V) / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))))); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__K_m_ns_Ca = 0.0011999999999999999; // mM + const double var_non_specific_calcium_activated_current__i_ns_K = 1 * var_non_specific_calcium_activated_current__I_ns_K / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__ionic_concentrations__Cai, 3)); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__i_ns_Na = 1 * var_non_specific_calcium_activated_current__I_ns_Na / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__ionic_concentrations__Cai, 3)); // uA_per_mm2 + const double var_plateau_potassium_current__Kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_plateau_potassium_current__g_Kp = 0.000183; // mS_per_mm2 + const double var_sarcolemmal_calcium_pump__I_pCa = 0.0115; // uA_per_mm2 + const double var_sarcolemmal_calcium_pump__K_mpCa = 0.00050000000000000001; // mM + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__ionic_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__ionic_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // uA_per_mm2 + const double d_dt_chaste_interface_var_ionic_concentrations__Cai = (-var_calcium_fluxes_in_the_SR__i_up + var_calcium_fluxes_in_the_SR__i_leak) * var_ionic_concentrations__V_NSR / var_ionic_concentrations__V_myo + var_calcium_fluxes_in_the_SR__i_rel * var_ionic_concentrations__V_JSR / var_ionic_concentrations__V_myo + 0.5 * (-var_L_type_Ca_channel__i_CaCa - var_calcium_background_current__i_Ca_b - var_sarcolemmal_calcium_pump__i_p_Ca + var_Na_Ca_exchanger__i_NaCa) * var_ionic_concentrations__Am / (var_ionic_concentrations__V_myo * var_membrane__F); // mM / ms + const double var_sodium_background_current__E_NaN = var_fast_sodium_current__E_Na; // mV + const double var_sodium_background_current__g_Nab = 1.4100000000000001e-5; // mS_per_mm2 + const double var_sodium_background_current__i_Na_b = (-var_sodium_background_current__E_NaN + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // uA_per_mm2 + const double var_sodium_potassium_pump__I_NaK = 0.014999999999999999; // uA_per_mm2 + const double var_sodium_potassium_pump__K_mKo = 1.5; // mM + const double var_sodium_potassium_pump__K_mNai = 10; // mM + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * mParameters[1] * var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__ionic_concentrations__Nai), 1.5)) * (mParameters[1] + var_sodium_potassium_pump__K_mKo)); // uA_per_mm2 + const double d_dt_chaste_interface_var_ionic_concentrations__Nai = (-var_L_type_Ca_channel__i_CaNa - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Na - var_sodium_background_current__i_Na_b - 3 * var_Na_Ca_exchanger__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) * var_ionic_concentrations__Am / (var_ionic_concentrations__V_myo * var_membrane__F); // mM / ms + const double var_time_dependent_potassium_current__PR_NaK = 0.018329999999999999; // dimensionless + const double var_time_dependent_potassium_current__E_K = var_membrane__R * var_membrane__T * log((mParameters[2] * var_time_dependent_potassium_current__PR_NaK + mParameters[1]) / (var_chaste_interface__ionic_concentrations__Nai * var_time_dependent_potassium_current__PR_NaK + var_chaste_interface__ionic_concentrations__Ki)) / var_membrane__F; // mV + const double var_time_dependent_potassium_current__g_K_max = 0.00282; // mS_per_mm2 + const double var_time_dependent_potassium_current__g_K = 0.43033148291193518 * sqrt(mParameters[1]) * var_time_dependent_potassium_current__g_K_max; // mS_per_mm2 + const double var_time_dependent_potassium_current_X_gate__alpha_X = (((var_chaste_interface__membrane__V >= -30.000000675675675) && (var_chaste_interface__membrane__V <= -29.999999324324325)) ? (-4.8581081081938701e-11 / (1 - exp(1.0000000000176534e-7)) + 739999.99998693645 * (30.000000675675675 + var_chaste_interface__membrane__V) * (4.8581081081938701e-11 / (1 - exp(1.0000000000176534e-7)) + 4.8581081081938701e-11 / (1 - exp(-1.0000000000176534e-7)))) : (7.1899999999999999e-5 * (30 + var_chaste_interface__membrane__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V)))); // per_ms + const double var_time_dependent_potassium_current_X_gate__beta_X = (((var_chaste_interface__membrane__V >= -30.000001455604075) && (var_chaste_interface__membrane__V <= -29.999998544395925)) ? (-1.9068413391534758e-10 / (-1 + exp(-9.9999999999880736e-8)) + 343500.00000040967 * (30.000001455604075 + var_chaste_interface__membrane__V) * (1.9068413391534758e-10 / (-1 + exp(9.9999999999880736e-8)) + 1.9068413391534758e-10 / (-1 + exp(-9.9999999999880736e-8)))) : (0.00013100000000000001 * (30 + var_chaste_interface__membrane__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V)))); // per_ms + const double d_dt_chaste_interface_var_time_dependent_potassium_current_X_gate__X = (1 - var_chaste_interface__time_dependent_potassium_current_X_gate__X) * var_time_dependent_potassium_current_X_gate__alpha_X - var_chaste_interface__time_dependent_potassium_current_X_gate__X * var_time_dependent_potassium_current_X_gate__beta_X; // 1 / ms + const double var_time_dependent_potassium_current_Xi_gate__Xi = 1 / (1 + exp(-1.7526479750778814 + 0.031152647975077882 * var_chaste_interface__membrane__V)); // dimensionless + const double var_time_dependent_potassium_current__i_K = pow(var_chaste_interface__time_dependent_potassium_current_X_gate__X, 2) * (-var_time_dependent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_time_dependent_potassium_current__g_K * var_time_dependent_potassium_current_Xi_gate__Xi; // uA_per_mm2 + const double var_time_independent_potassium_current__E_K1 = var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki) / var_membrane__F; // mV + const double var_plateau_potassium_current__E_Kp = var_time_independent_potassium_current__E_K1; // mV + const double var_plateau_potassium_current__i_Kp = (-var_plateau_potassium_current__E_Kp + var_chaste_interface__membrane__V) * var_plateau_potassium_current__Kp * var_plateau_potassium_current__g_Kp; // uA_per_mm2 + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[5]; // mS_per_mm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K1) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K1)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K1 - 0.51429999999999998 * var_chaste_interface__membrane__V)); // per_ms + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // uA_per_mm2 + const double d_dt_chaste_interface_var_ionic_concentrations__Ki = (-var_L_type_Ca_channel__i_CaK - var_non_specific_calcium_activated_current__i_ns_K - var_plateau_potassium_current__i_Kp - var_time_dependent_potassium_current__i_K - var_time_independent_potassium_current__i_K1 + 2 * var_sodium_potassium_pump__i_NaK) * var_ionic_concentrations__Am / (var_ionic_concentrations__V_myo * var_membrane__F); // mM / ms + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_membrane__I_st_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__I_st = 0.0099999999999999985 * var_membrane__I_st_converted; // uA_per_mm2 + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // uA_per_mm2 + const double var_non_specific_calcium_activated_current__i_ns_Ca = var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na; // uA_per_mm2 + const double var_membrane__dV_dt = (-var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger__i_NaCa - var_calcium_background_current__i_Ca_b - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Ca - var_plateau_potassium_current__i_Kp - var_sarcolemmal_calcium_pump__i_p_Ca - var_sodium_background_current__i_Na_b - var_sodium_potassium_pump__i_NaK - var_time_dependent_potassium_current__i_K - var_time_independent_potassium_current__i_K1 + var_membrane__I_st) / mParameters[3]; // mV_per_ms + d_dt_chaste_interface_var_membrane__V = var_membrane__dV_dt; // mV / ms + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_ionic_concentrations__Cai; + rDY[2] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + rDY[3] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + rDY[4] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + rDY[5] = d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d; + rDY[6] = d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f; + rDY[7] = d_dt_chaste_interface_var_time_dependent_potassium_current_X_gate__X; + rDY[8] = d_dt_chaste_interface_var_ionic_concentrations__Nai; + rDY[9] = d_dt_chaste_interface_var_ionic_concentrations__Ki; + rDY[10] = d_dt_chaste_interface_var_ionic_concentrations__Ca_JSR; + rDY[11] = d_dt_chaste_interface_var_ionic_concentrations__Ca_NSR; + } + + std::vector Cellluo_rudy_1994FromCellML::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[8]; + // Units: mM; Initial value: 10.0 + double var_chaste_interface__ionic_concentrations__Ki = rY[9]; + // Units: mM; Initial value: 145.0 + + // Mathematics + const double var_membrane__F = 96845; // faradays_constant_units + const double var_membrane__I_st_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__R = 8314.5; // gas_constant_units + const double var_membrane__T = 310; // kelvin + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai) / var_membrane__F; // mV + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // uA_per_mm2 + const double var_fast_sodium_current__i_Na_converted = 100.00000000000001 * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_time_independent_potassium_current__E_K1 = var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki) / var_membrane__F; // mV + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[5]; // mS_per_mm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K1) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K1)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K1 - 0.51429999999999998 * var_chaste_interface__membrane__V)); // per_ms + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // uA_per_mm2 + const double var_time_independent_potassium_current__i_K1_converted = 100.00000000000001 * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + + std::vector dqs(4); + dqs[0] = var_fast_sodium_current__i_Na_converted; + dqs[1] = var_time_independent_potassium_current__i_K1_converted; + dqs[2] = var_membrane__I_st_converted; + dqs[3] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "luo_rudy_1994"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "ms"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-84.624); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00012); + + // rY[2]: + this->mVariableNames.push_back("fast_sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[3]: + this->mVariableNames.push_back("fast_sodium_current_h_gate__h"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[5]: + this->mVariableNames.push_back("L_type_Ca_channel_d_gate__d"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[6]: + this->mVariableNames.push_back("L_type_Ca_channel_f_gate__f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[7]: + this->mVariableNames.push_back("time_dependent_potassium_current_X_gate__X"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[8]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(10.0); + + // rY[9]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(145.0); + + // rY[10]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(1.8); + + // rY[11]: + this->mVariableNames.push_back("NSR_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(1.8); + + // mParameters[0]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[1]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("uF_per_mm2"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_mm2"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_mm2"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("ms"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellluo_rudy_1994FromCellML) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994--sympy_1_14.cpp new file mode 100644 index 00000000..3d5c6621 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/luo_rudy_1994--sympy_1_14.cpp @@ -0,0 +1,520 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: luo_rudy_1994 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: Normal) +//! on (date omitted as unimportant) +//! +//! + +#include "luo_rudy_1994.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Cellluo_rudy_1994FromCellML::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stimCurrent_converted = 50.000000000000007; // uA_per_cm2 + const double var_chaste_interface__membrane__stimDuration = 0.5; // ms + const double var_chaste_interface__membrane__stimPeriod = 1000; // ms + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stimCurrent_converted), + var_chaste_interface__membrane__stimDuration, + var_chaste_interface__membrane__stimPeriod, + 0.0 + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellluo_rudy_1994FromCellML::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellluo_rudy_1994FromCellML::Cellluo_rudy_1994FromCellML(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCell( + pSolver, + 12, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1.8; // (var_ionic_concentrations__Cao) [mM] + this->mParameters[1] = 5.4000000000000004; // (var_ionic_concentrations__Ko) [mM] + this->mParameters[2] = 140; // (var_ionic_concentrations__Nao) [mM] + this->mParameters[3] = 0.01; // (var_membrane__Cm) [uF_per_mm2] + this->mParameters[4] = 0.16; // (var_fast_sodium_current__g_Na) [mS_per_mm2] + this->mParameters[5] = 0.0074999999999999997; // (var_time_independent_potassium_current__g_K1_max) [mS_per_mm2] + } + + Cellluo_rudy_1994FromCellML::~Cellluo_rudy_1994FromCellML() + { + } + + + void Cellluo_rudy_1994FromCellML::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 12; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellluo_rudy_1994FromCellML::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__ionic_concentrations__Cai = rY[1]; + // Units: mM; Initial value: 0.00012 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__time_dependent_potassium_current_X_gate__X = rY[7]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[8]; + // Units: mM; Initial value: 10.0 + double var_chaste_interface__ionic_concentrations__Ki = rY[9]; + // Units: mM; Initial value: 145.0 + + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // mM + const double var_Na_Ca_exchanger__K_NaCa = 20; // uA_per_mm2 + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // mM + const double var_Na_Ca_exchanger__K_mNa = 87.5; // mM + const double var_Na_Ca_exchanger__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 3.0159999999999999e-5; // mS_per_mm2 + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + pow(var_chaste_interface__ionic_concentrations__Cai, 2) / pow(var_L_type_Ca_channel_f_Ca_gate__Km_Ca, 2)); // dimensionless + const double var_membrane__F = 96845; // faradays_constant_units + const double var_membrane__R = 8314.5; // gas_constant_units + const double var_membrane__T = 310; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[0] / var_chaste_interface__ionic_concentrations__Cai) / var_membrane__F; // mV + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai) / var_membrane__F; // mV + const double var_L_type_Ca_channel__I_CaCa = (((var_chaste_interface__membrane__V >= -1.3307320976818627e-6) && (var_chaste_interface__membrane__V <= 1.3307320976818627e-6)) ? (375733.02761014085 * (1.3307320976818627e-6 + var_chaste_interface__membrane__V) * (1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.078597788527232842 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(0.075146605522028176 * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + exp(0.075146605522028176 * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__I_CaK = (((var_chaste_interface__membrane__V >= -2.6614641953637254e-6) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6)) ? (187866.51380507043 * (2.6614641953637254e-6 + var_chaste_interface__membrane__V) * (1.8691085000000002e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.8691085000000002e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.8691085000000002e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (7.0228579563684903e-6 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037573302761014088 * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__I_CaNa = (((var_chaste_interface__membrane__V >= -2.6614641953637254e-6) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6)) ? (187866.51380507043 * (2.6614641953637254e-6 + var_chaste_interface__membrane__V) * (6.5370374999999993e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 6.5370374999999993e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 6.5370374999999993e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (2.4561808914760263e-5 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037573302761014088 * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // uA_per_mm2 + const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // uA_per_mm2 + const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // uA_per_mm2 + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // uA_per_mm2 + const double var_Na_Ca_exchanger__i_NaCa = 1 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__ionic_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_Na_Ca_exchanger__K_NaCa / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[2], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[0])); // uA_per_mm2 + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_CaN + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // uA_per_mm2 + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // uA_per_mm2 + const double var_fast_sodium_current__i_Na_converted = 100.00000000000001 * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_non_specific_calcium_activated_current__I_ns_K = ((((var_chaste_interface__membrane__V >= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) || ((var_chaste_interface__membrane__V >= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))))) ? (1.6947874999999998e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 187866.51380507043 * (-1.6947874999999998e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 1.6947874999999998e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) * (-2.6614641953637254e-6 - 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V)) : (6.3678763853082156e-6 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) * (-26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V) / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))))); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__I_ns_Na = ((((var_chaste_interface__membrane__V >= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) || ((var_chaste_interface__membrane__V >= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))))) ? (1.6947874999999998e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 187866.51380507043 * (-1.6947874999999998e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 1.6947874999999998e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) * (-2.6614641953637254e-6 - 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V)) : (6.3678763853082156e-6 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) * (-26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V) / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))))); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__K_m_ns_Ca = 0.0011999999999999999; // mM + const double var_non_specific_calcium_activated_current__i_ns_K = 1 * var_non_specific_calcium_activated_current__I_ns_K / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__ionic_concentrations__Cai, 3)); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__i_ns_Na = 1 * var_non_specific_calcium_activated_current__I_ns_Na / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__ionic_concentrations__Cai, 3)); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__i_ns_Ca = var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na; // uA_per_mm2 + const double var_plateau_potassium_current__Kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_plateau_potassium_current__g_Kp = 0.000183; // mS_per_mm2 + const double var_sarcolemmal_calcium_pump__I_pCa = 0.0115; // uA_per_mm2 + const double var_sarcolemmal_calcium_pump__K_mpCa = 0.00050000000000000001; // mM + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__ionic_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__ionic_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // uA_per_mm2 + const double var_sodium_background_current__E_NaN = var_fast_sodium_current__E_Na; // mV + const double var_sodium_background_current__g_Nab = 1.4100000000000001e-5; // mS_per_mm2 + const double var_sodium_background_current__i_Na_b = (-var_sodium_background_current__E_NaN + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // uA_per_mm2 + const double var_sodium_potassium_pump__I_NaK = 0.014999999999999999; // uA_per_mm2 + const double var_sodium_potassium_pump__K_mKo = 1.5; // mM + const double var_sodium_potassium_pump__K_mNai = 10; // mM + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * mParameters[1] * var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__ionic_concentrations__Nai), 1.5)) * (mParameters[1] + var_sodium_potassium_pump__K_mKo)); // uA_per_mm2 + const double var_time_dependent_potassium_current__PR_NaK = 0.018329999999999999; // dimensionless + const double var_time_dependent_potassium_current__E_K = var_membrane__R * var_membrane__T * log((mParameters[2] * var_time_dependent_potassium_current__PR_NaK + mParameters[1]) / (var_chaste_interface__ionic_concentrations__Nai * var_time_dependent_potassium_current__PR_NaK + var_chaste_interface__ionic_concentrations__Ki)) / var_membrane__F; // mV + const double var_time_dependent_potassium_current__g_K_max = 0.00282; // mS_per_mm2 + const double var_time_dependent_potassium_current__g_K = 0.43033148291193518 * sqrt(mParameters[1]) * var_time_dependent_potassium_current__g_K_max; // mS_per_mm2 + const double var_time_dependent_potassium_current_Xi_gate__Xi = 1 / (1 + exp(-1.7526479750778814 + 0.031152647975077882 * var_chaste_interface__membrane__V)); // dimensionless + const double var_time_dependent_potassium_current__i_K = pow(var_chaste_interface__time_dependent_potassium_current_X_gate__X, 2) * (-var_time_dependent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_time_dependent_potassium_current__g_K * var_time_dependent_potassium_current_Xi_gate__Xi; // uA_per_mm2 + const double var_time_independent_potassium_current__E_K1 = var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki) / var_membrane__F; // mV + const double var_plateau_potassium_current__E_Kp = var_time_independent_potassium_current__E_K1; // mV + const double var_plateau_potassium_current__i_Kp = (-var_plateau_potassium_current__E_Kp + var_chaste_interface__membrane__V) * var_plateau_potassium_current__Kp * var_plateau_potassium_current__g_Kp; // uA_per_mm2 + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[5]; // mS_per_mm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K1) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K1)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K1 - 0.51429999999999998 * var_chaste_interface__membrane__V)); // per_ms + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // uA_per_mm2 + const double var_time_independent_potassium_current__i_K1_converted = 100.00000000000001 * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_chaste_interface__i_ionic = -var_fast_sodium_current__i_Na_converted - var_time_independent_potassium_current__i_K1_converted - 100.00000000000001 * var_L_type_Ca_channel__i_Ca_L - 100.00000000000001 * var_Na_Ca_exchanger__i_NaCa - 100.00000000000001 * var_calcium_background_current__i_Ca_b - 100.00000000000001 * var_non_specific_calcium_activated_current__i_ns_Ca - 100.00000000000001 * var_plateau_potassium_current__i_Kp - 100.00000000000001 * var_sarcolemmal_calcium_pump__i_p_Ca - 100.00000000000001 * var_sodium_background_current__i_Na_b - 100.00000000000001 * var_sodium_potassium_pump__i_NaK - 100.00000000000001 * var_time_dependent_potassium_current__i_K; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellluo_rudy_1994FromCellML::EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__ionic_concentrations__Cai = rY[1]; + // Units: mM; Initial value: 0.00012 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__time_dependent_potassium_current_X_gate__X = rY[7]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[8]; + // Units: mM; Initial value: 10.0 + double var_chaste_interface__ionic_concentrations__Ki = rY[9]; + // Units: mM; Initial value: 145.0 + double var_chaste_interface__ionic_concentrations__Ca_JSR = rY[10]; + // Units: mM; Initial value: 1.8 + double var_chaste_interface__ionic_concentrations__Ca_NSR = rY[11]; + // Units: mM; Initial value: 1.8 + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // mM + const double var_Na_Ca_exchanger__K_NaCa = 20; // uA_per_mm2 + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // mM + const double var_Na_Ca_exchanger__K_mNa = 87.5; // mM + const double var_Na_Ca_exchanger__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 3.0159999999999999e-5; // mS_per_mm2 + const double var_calcium_fluxes_in_the_SR__Ca_NSR_max = 15; // mM + const double var_calcium_fluxes_in_the_SR__G_rel_max = 60; // per_ms + const double var_calcium_fluxes_in_the_SR__I_up = 0.0050000000000000001; // mM_per_ms + const double var_calcium_fluxes_in_the_SR__K_leak = var_calcium_fluxes_in_the_SR__I_up / var_calcium_fluxes_in_the_SR__Ca_NSR_max; // per_ms + const double var_calcium_fluxes_in_the_SR__K_mrel = 0.00080000000000000004; // mM + const double var_calcium_fluxes_in_the_SR__K_mup = 0.00092000000000000003; // mM + const double var_calcium_fluxes_in_the_SR__delta_Ca_i2 = 0; // mM + const double var_calcium_fluxes_in_the_SR__delta_Ca_ith = 0.00018000000000000001; // mM + const double var_calcium_fluxes_in_the_SR__G_rel_peak = ((var_calcium_fluxes_in_the_SR__delta_Ca_i2 < var_calcium_fluxes_in_the_SR__delta_Ca_ith) ? (0) : (var_calcium_fluxes_in_the_SR__G_rel_max)); // per_ms + const double var_calcium_fluxes_in_the_SR__t_CICR = 0; // ms + const double var_calcium_fluxes_in_the_SR__tau_off = 2; // ms + const double var_calcium_fluxes_in_the_SR__tau_on = 2; // ms + const double var_calcium_fluxes_in_the_SR__G_rel = (1 - exp(-var_calcium_fluxes_in_the_SR__t_CICR / var_calcium_fluxes_in_the_SR__tau_on)) * (-var_calcium_fluxes_in_the_SR__delta_Ca_ith + var_calcium_fluxes_in_the_SR__delta_Ca_i2) * var_calcium_fluxes_in_the_SR__G_rel_peak * exp(-var_calcium_fluxes_in_the_SR__t_CICR / var_calcium_fluxes_in_the_SR__tau_off) / (-var_calcium_fluxes_in_the_SR__delta_Ca_ith + var_calcium_fluxes_in_the_SR__K_mrel + var_calcium_fluxes_in_the_SR__delta_Ca_i2); // per_ms + const double var_calcium_fluxes_in_the_SR__tau_tr = 180; // ms + const double var_ionic_concentrations__Am = 200; // per_mm + const double var_calcium_fluxes_in_the_SR__i_leak = var_calcium_fluxes_in_the_SR__K_leak * var_chaste_interface__ionic_concentrations__Ca_NSR; // mM_per_ms + const double var_calcium_fluxes_in_the_SR__i_tr = (-var_chaste_interface__ionic_concentrations__Ca_JSR + var_chaste_interface__ionic_concentrations__Ca_NSR) / var_calcium_fluxes_in_the_SR__tau_tr; // mM_per_ms + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + pow(var_chaste_interface__ionic_concentrations__Cai, 2) / pow(var_L_type_Ca_channel_f_Ca_gate__Km_Ca, 2)); // dimensionless + const double var_calcium_fluxes_in_the_SR__i_rel = (-var_chaste_interface__ionic_concentrations__Cai + var_chaste_interface__ionic_concentrations__Ca_JSR) * var_calcium_fluxes_in_the_SR__G_rel; // mM_per_ms + const double var_calcium_fluxes_in_the_SR__i_up = var_calcium_fluxes_in_the_SR__I_up * var_chaste_interface__ionic_concentrations__Cai / (var_calcium_fluxes_in_the_SR__K_mup + var_chaste_interface__ionic_concentrations__Cai); // mM_per_ms + const double d_dt_chaste_interface_var_ionic_concentrations__Ca_NSR = -var_calcium_fluxes_in_the_SR__i_leak - var_calcium_fluxes_in_the_SR__i_tr + var_calcium_fluxes_in_the_SR__i_up; // mM / ms + const double var_ionic_concentrations__V_JSR = 0.0047999999999999996; // dimensionless + const double var_ionic_concentrations__V_NSR = 0.055199999999999999; // dimensionless + const double d_dt_chaste_interface_var_ionic_concentrations__Ca_JSR = -var_calcium_fluxes_in_the_SR__i_rel + var_calcium_fluxes_in_the_SR__i_tr * var_ionic_concentrations__V_NSR / var_ionic_concentrations__V_JSR; // mM / ms + const double var_ionic_concentrations__V_myo = 0.68000000000000005; // dimensionless + const double var_membrane__F = 96845; // faradays_constant_units + const double var_membrane__R = 8314.5; // gas_constant_units + const double var_membrane__T = 310; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[0] / var_chaste_interface__ionic_concentrations__Cai) / var_membrane__F; // mV + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai) / var_membrane__F; // mV + const double var_L_type_Ca_channel__I_CaCa = (((var_chaste_interface__membrane__V >= -1.3307320976818627e-6) && (var_chaste_interface__membrane__V <= 1.3307320976818627e-6)) ? (375733.02761014085 * (1.3307320976818627e-6 + var_chaste_interface__membrane__V) * (1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.0459259999999999e-7 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (0.078597788527232842 * (-0.34000000000000002 * mParameters[0] + 1 * var_chaste_interface__ionic_concentrations__Cai * exp(0.075146605522028176 * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + exp(0.075146605522028176 * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__I_CaK = (((var_chaste_interface__membrane__V >= -2.6614641953637254e-6) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6)) ? (187866.51380507043 * (2.6614641953637254e-6 + var_chaste_interface__membrane__V) * (1.8691085000000002e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 1.8691085000000002e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 1.8691085000000002e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (7.0228579563684903e-6 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037573302761014088 * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__I_CaNa = (((var_chaste_interface__membrane__V >= -2.6614641953637254e-6) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6)) ? (187866.51380507043 * (2.6614641953637254e-6 + var_chaste_interface__membrane__V) * (6.5370374999999993e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 6.5370374999999993e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 6.5370374999999993e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) : (2.4561808914760263e-5 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037573302761014088 * var_chaste_interface__membrane__V)) * var_chaste_interface__membrane__V / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V)))); // uA_per_mm2 + const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // uA_per_mm2 + const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // uA_per_mm2 + const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // uA_per_mm2 + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = (((var_chaste_interface__membrane__V >= -10.000000624) && (var_chaste_interface__membrane__V <= -9.9999993759999999)) ? (801282.05129393819 * (10.000000624 + var_chaste_interface__membrane__V) * (45787545.788225032 * (1 - exp(9.999999999851651e-8)) / (1 + exp(9.999999999851651e-8)) + 45787545.788225032 * (1 - exp(-9.999999999851651e-8)) / (1 + exp(-9.999999999851651e-8))) - 45787545.788225032 * (1 - exp(9.999999999851651e-8)) / (1 + exp(9.999999999851651e-8))) : (28.571428571428569 * (1 - exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) / ((1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) * (10 + var_chaste_interface__membrane__V)))); // ms + const double var_L_type_Ca_channel_d_gate__alpha_d = var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d; // per_ms + const double var_L_type_Ca_channel_d_gate__beta_d = (1 - var_L_type_Ca_channel_d_gate__d_infinity) / var_L_type_Ca_channel_d_gate__tau_d; // per_ms + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = (1 - var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__alpha_d - var_L_type_Ca_channel_d_gate__beta_d * var_chaste_interface__L_type_Ca_channel_d_gate__d; // 1 / ms + const double var_L_type_Ca_channel_f_gate__f_infinity = 1 / (1 + exp(4.0767441860465121 + 0.11627906976744186 * var_chaste_interface__membrane__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-pow((0.33700000000000002 + 0.033700000000000001 * var_chaste_interface__membrane__V), 2))); // ms + const double var_L_type_Ca_channel_f_gate__alpha_f = var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f; // per_ms + const double var_L_type_Ca_channel_f_gate__beta_f = (1 - var_L_type_Ca_channel_f_gate__f_infinity) / var_L_type_Ca_channel_f_gate__tau_f; // per_ms + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = (1 - var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__alpha_f - var_L_type_Ca_channel_f_gate__beta_f * var_chaste_interface__L_type_Ca_channel_f_gate__f; // 1 / ms + const double var_Na_Ca_exchanger__i_NaCa = 1 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[2], 3) * var_chaste_interface__ionic_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_Na_Ca_exchanger__K_NaCa / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[2], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[0])); // uA_per_mm2 + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_CaN + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // uA_per_mm2 + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // uA_per_mm2 + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_ms + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V)) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_ms + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * var_fast_sodium_current_h_gate__alpha_h - var_fast_sodium_current_h_gate__beta_h * var_chaste_interface__fast_sodium_current_h_gate__h; // 1 / ms + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V) - 3.4740000000000003e-5 * exp(-0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V))) : (0)); // per_ms + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(-0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(-2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_ms + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = (1 - var_chaste_interface__fast_sodium_current_j_gate__j) * var_fast_sodium_current_j_gate__alpha_j - var_fast_sodium_current_j_gate__beta_j * var_chaste_interface__fast_sodium_current_j_gate__j; // 1 / ms + const double var_fast_sodium_current_m_gate__alpha_m = (((var_chaste_interface__membrane__V >= -47.130001) && (var_chaste_interface__membrane__V <= -47.129999000000005)) ? (-3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 499999.99998562218 * (47.130001 + var_chaste_interface__membrane__V) * (3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 3.200000000092018e-7 / (1 - exp(-1.0000000000287557e-7)))) : (0.32000000000000001 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_ms + const double var_fast_sodium_current_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_ms + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m; // 1 / ms + const double var_non_specific_calcium_activated_current__I_ns_K = ((((var_chaste_interface__membrane__V >= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) || ((var_chaste_interface__membrane__V >= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))))) ? (1.6947874999999998e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 187866.51380507043 * (-1.6947874999999998e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 1.6947874999999998e-11 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) * (-2.6614641953637254e-6 - 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V)) : (6.3678763853082156e-6 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) * (-26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V) / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))))); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__I_ns_Na = ((((var_chaste_interface__membrane__V >= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) || ((var_chaste_interface__membrane__V >= 2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))) && (var_chaste_interface__membrane__V <= -2.6614641953637254e-6 + 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai))))) ? (1.6947874999999998e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 187866.51380507043 * (-1.6947874999999998e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) - 1.6947874999999998e-11 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) * (-2.6614641953637254e-6 - 26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V)) : (6.3678763853082156e-6 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))) * (-26.614641953637257 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)) + var_chaste_interface__membrane__V) / (-1 + exp(0.037573302761014088 * var_chaste_interface__membrane__V - 1 * log((mParameters[1] + mParameters[2]) / (var_chaste_interface__ionic_concentrations__Ki + var_chaste_interface__ionic_concentrations__Nai)))))); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__K_m_ns_Ca = 0.0011999999999999999; // mM + const double var_non_specific_calcium_activated_current__i_ns_K = 1 * var_non_specific_calcium_activated_current__I_ns_K / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__ionic_concentrations__Cai, 3)); // uA_per_mm2 + const double var_non_specific_calcium_activated_current__i_ns_Na = 1 * var_non_specific_calcium_activated_current__I_ns_Na / (1 + pow(var_non_specific_calcium_activated_current__K_m_ns_Ca, 3) / pow(var_chaste_interface__ionic_concentrations__Cai, 3)); // uA_per_mm2 + const double var_plateau_potassium_current__Kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_plateau_potassium_current__g_Kp = 0.000183; // mS_per_mm2 + const double var_sarcolemmal_calcium_pump__I_pCa = 0.0115; // uA_per_mm2 + const double var_sarcolemmal_calcium_pump__K_mpCa = 0.00050000000000000001; // mM + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__ionic_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__ionic_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // uA_per_mm2 + const double d_dt_chaste_interface_var_ionic_concentrations__Cai = (-var_calcium_fluxes_in_the_SR__i_up + var_calcium_fluxes_in_the_SR__i_leak) * var_ionic_concentrations__V_NSR / var_ionic_concentrations__V_myo + var_calcium_fluxes_in_the_SR__i_rel * var_ionic_concentrations__V_JSR / var_ionic_concentrations__V_myo + 0.5 * (-var_L_type_Ca_channel__i_CaCa - var_calcium_background_current__i_Ca_b - var_sarcolemmal_calcium_pump__i_p_Ca + var_Na_Ca_exchanger__i_NaCa) * var_ionic_concentrations__Am / (var_ionic_concentrations__V_myo * var_membrane__F); // mM / ms + const double var_sodium_background_current__E_NaN = var_fast_sodium_current__E_Na; // mV + const double var_sodium_background_current__g_Nab = 1.4100000000000001e-5; // mS_per_mm2 + const double var_sodium_background_current__i_Na_b = (-var_sodium_background_current__E_NaN + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // uA_per_mm2 + const double var_sodium_potassium_pump__I_NaK = 0.014999999999999999; // uA_per_mm2 + const double var_sodium_potassium_pump__K_mKo = 1.5; // mM + const double var_sodium_potassium_pump__K_mNai = 10; // mM + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * mParameters[1] * var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__ionic_concentrations__Nai), 1.5)) * (mParameters[1] + var_sodium_potassium_pump__K_mKo)); // uA_per_mm2 + const double d_dt_chaste_interface_var_ionic_concentrations__Nai = (-var_L_type_Ca_channel__i_CaNa - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Na - var_sodium_background_current__i_Na_b - 3 * var_Na_Ca_exchanger__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) * var_ionic_concentrations__Am / (var_ionic_concentrations__V_myo * var_membrane__F); // mM / ms + const double var_time_dependent_potassium_current__PR_NaK = 0.018329999999999999; // dimensionless + const double var_time_dependent_potassium_current__E_K = var_membrane__R * var_membrane__T * log((mParameters[2] * var_time_dependent_potassium_current__PR_NaK + mParameters[1]) / (var_chaste_interface__ionic_concentrations__Nai * var_time_dependent_potassium_current__PR_NaK + var_chaste_interface__ionic_concentrations__Ki)) / var_membrane__F; // mV + const double var_time_dependent_potassium_current__g_K_max = 0.00282; // mS_per_mm2 + const double var_time_dependent_potassium_current__g_K = 0.43033148291193518 * sqrt(mParameters[1]) * var_time_dependent_potassium_current__g_K_max; // mS_per_mm2 + const double var_time_dependent_potassium_current_X_gate__alpha_X = (((var_chaste_interface__membrane__V >= -30.000000675675675) && (var_chaste_interface__membrane__V <= -29.999999324324325)) ? (-4.8581081081938701e-11 / (1 - exp(1.0000000000176534e-7)) + 739999.99998693645 * (30.000000675675675 + var_chaste_interface__membrane__V) * (4.8581081081938701e-11 / (1 - exp(1.0000000000176534e-7)) + 4.8581081081938701e-11 / (1 - exp(-1.0000000000176534e-7)))) : (7.1899999999999999e-5 * (30 + var_chaste_interface__membrane__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V)))); // per_ms + const double var_time_dependent_potassium_current_X_gate__beta_X = (((var_chaste_interface__membrane__V >= -30.000001455604075) && (var_chaste_interface__membrane__V <= -29.999998544395925)) ? (-1.9068413391534758e-10 / (-1 + exp(-9.9999999999880736e-8)) + 343500.00000040967 * (30.000001455604075 + var_chaste_interface__membrane__V) * (1.9068413391534758e-10 / (-1 + exp(9.9999999999880736e-8)) + 1.9068413391534758e-10 / (-1 + exp(-9.9999999999880736e-8)))) : (0.00013100000000000001 * (30 + var_chaste_interface__membrane__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V)))); // per_ms + const double d_dt_chaste_interface_var_time_dependent_potassium_current_X_gate__X = (1 - var_chaste_interface__time_dependent_potassium_current_X_gate__X) * var_time_dependent_potassium_current_X_gate__alpha_X - var_chaste_interface__time_dependent_potassium_current_X_gate__X * var_time_dependent_potassium_current_X_gate__beta_X; // 1 / ms + const double var_time_dependent_potassium_current_Xi_gate__Xi = 1 / (1 + exp(-1.7526479750778814 + 0.031152647975077882 * var_chaste_interface__membrane__V)); // dimensionless + const double var_time_dependent_potassium_current__i_K = pow(var_chaste_interface__time_dependent_potassium_current_X_gate__X, 2) * (-var_time_dependent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_time_dependent_potassium_current__g_K * var_time_dependent_potassium_current_Xi_gate__Xi; // uA_per_mm2 + const double var_time_independent_potassium_current__E_K1 = var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki) / var_membrane__F; // mV + const double var_plateau_potassium_current__E_Kp = var_time_independent_potassium_current__E_K1; // mV + const double var_plateau_potassium_current__i_Kp = (-var_plateau_potassium_current__E_Kp + var_chaste_interface__membrane__V) * var_plateau_potassium_current__Kp * var_plateau_potassium_current__g_Kp; // uA_per_mm2 + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[5]; // mS_per_mm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K1) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K1)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K1 - 0.51429999999999998 * var_chaste_interface__membrane__V)); // per_ms + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // uA_per_mm2 + const double d_dt_chaste_interface_var_ionic_concentrations__Ki = (-var_L_type_Ca_channel__i_CaK - var_non_specific_calcium_activated_current__i_ns_K - var_plateau_potassium_current__i_Kp - var_time_dependent_potassium_current__i_K - var_time_independent_potassium_current__i_K1 + 2 * var_sodium_potassium_pump__i_NaK) * var_ionic_concentrations__Am / (var_ionic_concentrations__V_myo * var_membrane__F); // mM / ms + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_membrane__I_st_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__I_st = 0.0099999999999999985 * var_membrane__I_st_converted; // uA_per_mm2 + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // uA_per_mm2 + const double var_non_specific_calcium_activated_current__i_ns_Ca = var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na; // uA_per_mm2 + const double var_membrane__dV_dt = (-var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger__i_NaCa - var_calcium_background_current__i_Ca_b - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Ca - var_plateau_potassium_current__i_Kp - var_sarcolemmal_calcium_pump__i_p_Ca - var_sodium_background_current__i_Na_b - var_sodium_potassium_pump__i_NaK - var_time_dependent_potassium_current__i_K - var_time_independent_potassium_current__i_K1 + var_membrane__I_st) / mParameters[3]; // mV_per_ms + d_dt_chaste_interface_var_membrane__V = var_membrane__dV_dt; // mV / ms + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_ionic_concentrations__Cai; + rDY[2] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + rDY[3] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + rDY[4] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + rDY[5] = d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d; + rDY[6] = d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f; + rDY[7] = d_dt_chaste_interface_var_time_dependent_potassium_current_X_gate__X; + rDY[8] = d_dt_chaste_interface_var_ionic_concentrations__Nai; + rDY[9] = d_dt_chaste_interface_var_ionic_concentrations__Ki; + rDY[10] = d_dt_chaste_interface_var_ionic_concentrations__Ca_JSR; + rDY[11] = d_dt_chaste_interface_var_ionic_concentrations__Ca_NSR; + } + + std::vector Cellluo_rudy_1994FromCellML::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[8]; + // Units: mM; Initial value: 10.0 + double var_chaste_interface__ionic_concentrations__Ki = rY[9]; + // Units: mM; Initial value: 145.0 + + // Mathematics + const double var_membrane__F = 96845; // faradays_constant_units + const double var_membrane__I_st_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__R = 8314.5; // gas_constant_units + const double var_membrane__T = 310; // kelvin + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai) / var_membrane__F; // mV + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // uA_per_mm2 + const double var_fast_sodium_current__i_Na_converted = 100.00000000000001 * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_time_independent_potassium_current__E_K1 = var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki) / var_membrane__F; // mV + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[5]; // mS_per_mm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)); // per_ms + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K1) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K1)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K1 - 0.51429999999999998 * var_chaste_interface__membrane__V)); // per_ms + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // uA_per_mm2 + const double var_time_independent_potassium_current__i_K1_converted = 100.00000000000001 * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + + std::vector dqs(4); + dqs[0] = var_fast_sodium_current__i_Na_converted; + dqs[1] = var_time_independent_potassium_current__i_K1_converted; + dqs[2] = var_membrane__I_st_converted; + dqs[3] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "luo_rudy_1994"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "ms"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-84.624); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00012); + + // rY[2]: + this->mVariableNames.push_back("fast_sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[3]: + this->mVariableNames.push_back("fast_sodium_current_h_gate__h"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[5]: + this->mVariableNames.push_back("L_type_Ca_channel_d_gate__d"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[6]: + this->mVariableNames.push_back("L_type_Ca_channel_f_gate__f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[7]: + this->mVariableNames.push_back("time_dependent_potassium_current_X_gate__X"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[8]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(10.0); + + // rY[9]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(145.0); + + // rY[10]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(1.8); + + // rY[11]: + this->mVariableNames.push_back("NSR_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(1.8); + + // mParameters[0]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[1]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("uF_per_mm2"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_mm2"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_mm2"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("ms"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellluo_rudy_1994FromCellML) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables.cpp_python36 deleted file mode 100644 index 6aa6d38c..00000000 --- a/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables.cpp_python36 +++ /dev/null @@ -1,842 +0,0 @@ -//! @file -//! -//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) -//! -//! Model: beeler_reuter_model_1977 -//! -//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen -//! (translator: chaste_codegen, model type: NormalOpt) -//! on (date omitted as unimportant) -//! -//! - -#include "beeler_reuter_model_1977_lookup_tables.hpp" -#include -#include -#include -#include -#include "Exception.hpp" -#include "OdeSystemInformation.hpp" -#include "RegularStimulus.hpp" -#include "HeartConfig.hpp" -#include "IsNan.hpp" -#include "MathsCustomFunctions.hpp" - - - -class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLookupTableCollection -{ -public: - static Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables* Instance() - { - if (mpInstance.get() == NULL) - { - mpInstance.reset(new Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables); - } - return mpInstance.get(); - } - - void FreeMemory() - { - - if (_lookup_table_0) - { - delete[] _lookup_table_0; - _lookup_table_0 = NULL; - } - - if (_lookup_table_1) - { - delete[] _lookup_table_1; - _lookup_table_1 = NULL; - } - - mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); - } - - // Row lookup methods - // using linear-interpolation - - double* _lookup_0_row(unsigned i, double _factor_) - { - for (unsigned j=0; j<17; j++) - { - const double y1 = _lookup_table_0[i][j]; - const double y2 = _lookup_table_0[i+1][j]; - _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; - } - return _lookup_table_0_row; - } - - double* _lookup_1_row(unsigned i, double _factor_) - { - for (unsigned j=0; j<1; j++) - { - const double y1 = _lookup_table_1[i][j]; - const double y2 = _lookup_table_1[i+1][j]; - _lookup_table_1_row[j] = y1 + (y2-y1)*_factor_; - } - return _lookup_table_1_row; - } - - - const double * IndexTable0(double var_chaste_interface__membrane__V) - { - const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; - const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; - const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); - const double _factor_0 = _offset_0_over_table_step - _table_index_0; - const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); - return _lt_0_row; - } - - const double * IndexTable1(double var_chaste_interface__slow_inward_current__Cai) - { - const double _offset_1 = var_chaste_interface__slow_inward_current__Cai - mTableMins[1]; - const double _offset_1_over_table_step = _offset_1 * mTableStepInverses[1]; - const unsigned _table_index_1 = (unsigned)(_offset_1_over_table_step); - const double _factor_1 = _offset_1_over_table_step - _table_index_1; - const double* const _lt_1_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->_lookup_1_row(_table_index_1, _factor_1); - return _lt_1_row; - } - - -// LCOV_EXCL_START - bool CheckIndex0(double& var_chaste_interface__membrane__V) - { - bool _oob_0 = false; - if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__VmTableMaxs[1] || var_chaste_interface__slow_inward_current__Cai= -23.000002500000001) && (var_chaste_interface__membrane__V <= -22.999997499999999)) ? (7.3000000000000007 + 0.10000000000000001 * var_chaste_interface__membrane__V) : (5 * (-0.92000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-0.92000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V)))); - }; - const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; - double val = f(var_chaste_interface__membrane__V); - - _lookup_table_0[i][2] = val; - } - - for (unsigned i=0 ; i<_table_size_0; i++) - { - auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(0.35997120230381568 - 0.071994240460763137 * var_chaste_interface__membrane__V); - }; - const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; - double val = f(var_chaste_interface__membrane__V); - - _lookup_table_0[i][3] = val; - } - - for (unsigned i=0 ; i<_table_size_0; i++) - { - auto f = [](double var_chaste_interface__membrane__V) { - return exp(0.050000000000000003 - 0.01 * var_chaste_interface__membrane__V); - }; - const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; - double val = f(var_chaste_interface__membrane__V); - - _lookup_table_0[i][4] = val; - } - - for (unsigned i=0 ; i<_table_size_0; i++) - { - auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(2.2000000000000002 + 0.050000000000000003 * var_chaste_interface__membrane__V); - }; - const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; - double val = f(var_chaste_interface__membrane__V); - - _lookup_table_0[i][5] = val; - } - - for (unsigned i=0 ; i<_table_size_0; i++) - { - auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.74576271186440679 - 0.016949152542372881 * var_chaste_interface__membrane__V); - }; - const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; - double val = f(var_chaste_interface__membrane__V); - - _lookup_table_0[i][6] = val; - } - - for (unsigned i=0 ; i<_table_size_0; i++) - { - auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(4.197901049475262 + 0.14992503748125938 * var_chaste_interface__membrane__V); - }; - const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; - double val = f(var_chaste_interface__membrane__V); - - _lookup_table_0[i][7] = val; - } - - for (unsigned i=0 ; i<_table_size_0; i++) - { - auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.224 - 0.0080000000000000002 * var_chaste_interface__membrane__V); - }; - const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; - double val = f(var_chaste_interface__membrane__V); - - _lookup_table_0[i][8] = val; - } - - for (unsigned i=0 ; i<_table_size_0; i++) - { - auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-6 - 0.20000000000000001 * var_chaste_interface__membrane__V); - }; - const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; - double val = f(var_chaste_interface__membrane__V); - - _lookup_table_0[i][9] = val; - } - - for (unsigned i=0 ; i<_table_size_0; i++) - { - auto f = [](double var_chaste_interface__membrane__V) { - return exp(-0.59999999999999998 - 0.02 * var_chaste_interface__membrane__V); - }; - const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; - double val = f(var_chaste_interface__membrane__V); - - _lookup_table_0[i][10] = val; - } - - for (unsigned i=0 ; i<_table_size_0; i++) - { - auto f = [](double var_chaste_interface__membrane__V) { - return (((var_chaste_interface__membrane__V >= -47.000000999999997) && (var_chaste_interface__membrane__V <= -46.999999000000003)) ? (33.5 + 0.5 * var_chaste_interface__membrane__V) : (10 * (-4.7000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-4.7000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); - }; - const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; - double val = f(var_chaste_interface__membrane__V); - //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. - //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. - if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[11] < 2){ - double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); - double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); - val = (left + right) / 2.0; - // count and limit number of misshits - _lookup_table_0_num_misshit_piecewise[11] +=1; - } - else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[11] >= 2){ - EXCEPTION("Lookup table 11 at ["< mpInstance; - - // Row lookup methods memory - double _lookup_table_0_row[17]; - - // Row lookup methods memory - double _lookup_table_1_row[1]; - - // Lookup tables - double (*_lookup_table_0)[17]; - int _lookup_table_0_num_misshit_piecewise[17] = {0}; - - // Lookup tables - double (*_lookup_table_1)[1]; - int _lookup_table_1_num_misshit_piecewise[1] = {0}; - -}; - -std::shared_ptr Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::mpInstance; - - - boost::shared_ptr Cellbeeler_reuter_model_1977FromCellMLOpt::UseCellMLDefaultStimulus() - { - // Use the default stimulus specified by CellML metadata - const double var_chaste_interface__stimulus_protocol__IstimAmplitude_converted = 50.000000000000007; // uA_per_cm2 - const double var_chaste_interface__stimulus_protocol__IstimPeriod = 1000; // ms - const double var_chaste_interface__stimulus_protocol__IstimPulseDuration = 1; // ms - const double var_chaste_interface__stimulus_protocol__IstimStart = 10; // ms - boost::shared_ptr p_cellml_stim(new RegularStimulus( - -fabs(var_chaste_interface__stimulus_protocol__IstimAmplitude_converted), - var_chaste_interface__stimulus_protocol__IstimPulseDuration, - var_chaste_interface__stimulus_protocol__IstimPeriod, - var_chaste_interface__stimulus_protocol__IstimStart - )); - mpIntracellularStimulus = p_cellml_stim; - return p_cellml_stim; - } - double Cellbeeler_reuter_model_1977FromCellMLOpt::GetIntracellularCalciumConcentration() - { - return mStateVariables[1]; - } - Cellbeeler_reuter_model_1977FromCellMLOpt::Cellbeeler_reuter_model_1977FromCellMLOpt(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) - : AbstractCardiacCell( - pSolver, - 8, - 0, - pIntracellularStimulus) - { - // Time units: millisecond - // - this->mpSystemInfo = OdeSystemInformation::Instance(); - Init(); - - // We have a default stimulus specified in the CellML file metadata - this->mHasDefaultStimulusFromCellML = true; - - this->mParameters[0] = 0.00089999999999999998; // (var_slow_inward_current__g_s) [mS_per_mm2] - this->mParameters[1] = 0.01; // (var_membrane__C) [uF_per_mm2] - this->mParameters[2] = 0.040000000000000001; // (var_sodium_current__g_Na) [mS_per_mm2] - this->mParameters[3] = 0; // (var_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] - this->mParameters[4] = 0; // (var_sodium_current__shift_INa_inact) [mV] - this->mParameters[5] = 0.0035000000000000001; // (var_time_independent_outward_current__G_K1) [uA_per_mm2] - this->mParameters[6] = 0.0080000000000000002; // (var_time_dependent_outward_current__G_Kr) [uA_per_mm2] - this->mParameters[7] = 50; // (var_sodium_current__E_Na) [mV] - } - - Cellbeeler_reuter_model_1977FromCellMLOpt::~Cellbeeler_reuter_model_1977FromCellMLOpt() - { - } - - AbstractLookupTableCollection* Cellbeeler_reuter_model_1977FromCellMLOpt::GetLookupTableCollection() - { - return Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance(); - } - - void Cellbeeler_reuter_model_1977FromCellMLOpt::VerifyStateVariables() - { - std::vector& rY = rGetStateVariables(); - std::string error_message = ""; - - for (unsigned i=0; i < 8; i++) - { - if(std::isnan(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; - } - if(std::isinf(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; - } - if(this->is_concentration[i] && rY[i] < 0) - { - error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] < 0) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] > 1) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; - } - } - if (error_message != ""){ - EXCEPTION(DumpState(error_message)); - } - } - - double Cellbeeler_reuter_model_1977FromCellMLOpt::GetIIonic(const std::vector* pStateVariables) - { - // For state variable interpolation (SVI) we read in interpolated state variables, - // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). - if (!pStateVariables) pStateVariables = &rGetStateVariables(); - const std::vector& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: mV; Initial value: -84.624 - double var_chaste_interface__slow_inward_current__Cai = rY[1]; - // Units: concentration_units; Initial value: 0.0001 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.011 - double var_chaste_interface__sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.988 - double var_chaste_interface__sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.975 - double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 0.003 - double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.994 - double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; - // Units: dimensionless; Initial value: 0.0001 - - // Lookup table indexing - const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Lookup table indexing - const bool _oob_1 = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->CheckIndex1(var_chaste_interface__slow_inward_current__Cai); -// LCOV_EXCL_START - if (_oob_1) - EXCEPTION(DumpState("cytosolic_calcium_concentration outside lookup table range", rY)); -// LCOV_EXCL_STOP - const double* const _lt_1_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->IndexTable1(var_chaste_interface__slow_inward_current__Cai); - - const double var_slow_inward_current__i_s_converted = 100.00000000000001 * (-7.6990712032745758 + _lt_1_row[0] + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_cm2 - const double var_sodium_current__i_Na_converted = 100.00000000000001 * (3.0000000000000001e-5 + pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j) * (-mParameters[7] + var_chaste_interface__membrane__V); // uA_per_cm2 - const double var_time_dependent_outward_current__i_x1_converted = 100.00000000000001 * (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 / _lt_0_row[0]; // uA_per_cm2 - const double var_time_independent_outward_current__i_K1_converted = 100.00000000000001 * (_lt_0_row[2]) * mParameters[5]; // uA_per_cm2 - const double var_chaste_interface__i_ionic = var_slow_inward_current__i_s_converted + var_sodium_current__i_Na_converted + var_time_dependent_outward_current__i_x1_converted + var_time_independent_outward_current__i_K1_converted; // uA_per_cm2 - - const double i_ionic = var_chaste_interface__i_ionic; - EXCEPT_IF_NOT(!std::isnan(i_ionic)); - return i_ionic; - } - - void Cellbeeler_reuter_model_1977FromCellMLOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY) - { - // Inputs: - // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: mV; Initial value: -84.624 - double var_chaste_interface__slow_inward_current__Cai = rY[1]; - // Units: concentration_units; Initial value: 0.0001 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.011 - double var_chaste_interface__sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.988 - double var_chaste_interface__sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.975 - double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 0.003 - double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.994 - double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; - // Units: dimensionless; Initial value: 0.0001 - - // Lookup table indexing - const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Lookup table indexing - const bool _oob_1 = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->CheckIndex1(var_chaste_interface__slow_inward_current__Cai); -// LCOV_EXCL_START - if (_oob_1) - EXCEPTION(DumpState("cytosolic_calcium_concentration outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_1_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->IndexTable1(var_chaste_interface__slow_inward_current__Cai); - - // Mathematics - double d_dt_chaste_interface_var_membrane__V; - const double d_dt_chaste_interface_var_slow_inward_current_d_gate__d = 0.095000000000000001 * (1 - var_chaste_interface__slow_inward_current_d_gate__d) * _lt_0_row[4] / (_lt_0_row[3]) - 0.070000000000000007 * var_chaste_interface__slow_inward_current_d_gate__d * _lt_0_row[6] / (_lt_0_row[5]); // 1 / ms - const double d_dt_chaste_interface_var_slow_inward_current_f_gate__f = 0.012 * (1 - var_chaste_interface__slow_inward_current_f_gate__f) * _lt_0_row[8] / (_lt_0_row[7]) - 0.0064999999999999997 * var_chaste_interface__slow_inward_current_f_gate__f * _lt_0_row[10] / (_lt_0_row[9]); // 1 / ms - const double var_slow_inward_current__i_s = (-7.6990712032745758 + _lt_1_row[0] + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 - const double d_dt_chaste_interface_var_slow_inward_current__Cai = 7.0000000000000007e-6 - 0.070000000000000007 * var_chaste_interface__slow_inward_current__Cai - 0.01 * var_slow_inward_current__i_s; // concentration_units / ms - const double var_sodium_current_h_gate__alpha_h = 0.126 * exp(-19.25 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V); // per_ms - const double var_sodium_current_h_gate__beta_h = 1.7 / (1 + exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V)); // per_ms - const double d_dt_chaste_interface_var_sodium_current_h_gate__h = (var_sodium_current_h_gate__alpha_h + var_sodium_current_h_gate__beta_h) * (-var_chaste_interface__sodium_current_h_gate__h + 0.01 * mParameters[3] + (1 - 0.01 * mParameters[3]) * var_sodium_current_h_gate__alpha_h / (var_sodium_current_h_gate__alpha_h + var_sodium_current_h_gate__beta_h)); // 1 / ms - const double var_sodium_current_j_gate__alpha_j = 0.055 * exp(-19.5 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V) / (1 + exp(-15.600000000000001 + 0.20000000000000001 * mParameters[4] - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_ms - const double var_sodium_current_j_gate__beta_j = 0.29999999999999999 / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[4] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_ms - const double d_dt_chaste_interface_var_sodium_current_j_gate__j = (var_sodium_current_j_gate__alpha_j + var_sodium_current_j_gate__beta_j) * (-var_chaste_interface__sodium_current_j_gate__j + 0.01 * mParameters[3] + (1 - 0.01 * mParameters[3]) * var_sodium_current_j_gate__alpha_j / (var_sodium_current_j_gate__alpha_j + var_sodium_current_j_gate__beta_j)); // 1 / ms - const double d_dt_chaste_interface_var_sodium_current_m_gate__m = (1 - var_chaste_interface__sodium_current_m_gate__m) * _lt_0_row[11] - 40 * var_chaste_interface__sodium_current_m_gate__m * _lt_0_row[12]; // 1 / ms - const double d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1 = 0.00050000000000000001 * (1 - var_chaste_interface__time_dependent_outward_current_x1_gate__x1) * _lt_0_row[14] / (_lt_0_row[13]) - 0.0012999999999999999 * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 * _lt_0_row[16] / (_lt_0_row[15]); // 1 / ms - - if (mSetVoltageDerivativeToZero) - { - d_dt_chaste_interface_var_membrane__V = 0.0; - } - else - { - d_dt_chaste_interface_var_membrane__V = (-var_slow_inward_current__i_s - 0.0099999999999999985 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) - (3.0000000000000001e-5 + pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j) * (-mParameters[7] + var_chaste_interface__membrane__V) - (_lt_0_row[2]) * mParameters[5] - (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 / _lt_0_row[0]) / mParameters[1]; // mV / ms - } - - rDY[0] = d_dt_chaste_interface_var_membrane__V; - rDY[1] = d_dt_chaste_interface_var_slow_inward_current__Cai; - rDY[2] = d_dt_chaste_interface_var_sodium_current_m_gate__m; - rDY[3] = d_dt_chaste_interface_var_sodium_current_h_gate__h; - rDY[4] = d_dt_chaste_interface_var_sodium_current_j_gate__j; - rDY[5] = d_dt_chaste_interface_var_slow_inward_current_d_gate__d; - rDY[6] = d_dt_chaste_interface_var_slow_inward_current_f_gate__f; - rDY[7] = d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1; - } - - std::vector Cellbeeler_reuter_model_1977FromCellMLOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) - { - // Inputs: - // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: mV; Initial value: -84.624 - double var_chaste_interface__slow_inward_current__Cai = rY[1]; - // Units: concentration_units; Initial value: 0.0001 - double var_chaste_interface__sodium_current_m_gate__m = rY[2]; - // Units: dimensionless; Initial value: 0.011 - double var_chaste_interface__sodium_current_h_gate__h = rY[3]; - // Units: dimensionless; Initial value: 0.988 - double var_chaste_interface__sodium_current_j_gate__j = rY[4]; - // Units: dimensionless; Initial value: 0.975 - double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; - // Units: dimensionless; Initial value: 0.003 - double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; - // Units: dimensionless; Initial value: 0.994 - double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; - // Units: dimensionless; Initial value: 0.0001 - - // Lookup table indexing - const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - - // Mathematics - const double var_slow_inward_current__E_s = 7.6990712032745758 - 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai); // mV - const double var_slow_inward_current__i_s = (-var_slow_inward_current__E_s + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 - const double var_slow_inward_current__i_s_converted = 100.00000000000001 * var_slow_inward_current__i_s; // uA_per_cm2 - const double var_sodium_current__g_Nac = 3.0000000000000001e-5; // mS_per_mm2 - const double var_sodium_current_h_gate__alpha_h = 0.126 * exp(-19.25 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V); // per_ms - const double var_sodium_current_h_gate__beta_h = 1.7 / (1 + exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V)); // per_ms - const double var_sodium_current_h_gate__tau_h = 1 / (var_sodium_current_h_gate__alpha_h + var_sodium_current_h_gate__beta_h); // ms - const double var_sodium_current_j_gate__alpha_j = 0.055 * exp(-19.5 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V) / (1 + exp(-15.600000000000001 + 0.20000000000000001 * mParameters[4] - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_ms - const double var_sodium_current_j_gate__beta_j = 0.29999999999999999 / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[4] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_ms - const double var_sodium_current_j_gate__tau_j = 1 / (var_sodium_current_j_gate__alpha_j + var_sodium_current_j_gate__beta_j); // ms - const double var_sodium_current__i_Na = (-mParameters[7] + var_chaste_interface__membrane__V) * (pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j + var_sodium_current__g_Nac); // uA_per_mm2 - const double var_sodium_current__i_Na_converted = 100.00000000000001 * var_sodium_current__i_Na; // uA_per_cm2 - const double var_stimulus_protocol__Istim_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 - const double var_time_dependent_outward_current__i_x1 = (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 / _lt_0_row[0]; // uA_per_mm2 - const double var_time_dependent_outward_current__i_x1_converted = 100.00000000000001 * var_time_dependent_outward_current__i_x1; // uA_per_cm2 - const double var_time_independent_outward_current__B = -0.040000000000000001; // per_mV - const double var_time_independent_outward_current__A = -0.20000000000000001 / var_time_independent_outward_current__B; // dimensionless - const double var_time_independent_outward_current__v0 = -23; // mV - const double var_time_independent_outward_current__U = (-var_time_independent_outward_current__v0 + var_chaste_interface__membrane__V) * var_time_independent_outward_current__B; // dimensionless - const double var_time_independent_outward_current__temp_current = (((var_time_independent_outward_current__U >= -9.9999999999999995e-8) && (var_time_independent_outward_current__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_time_independent_outward_current__U) * var_time_independent_outward_current__A) : (var_time_independent_outward_current__A * var_time_independent_outward_current__U / (-1 + exp(var_time_independent_outward_current__U)))); // dimensionless - const double var_time_independent_outward_current__i_K1 = (4 * (-1 + exp(3.3999999999999999 + 0.040000000000000001 * var_chaste_interface__membrane__V)) / (exp(2.1200000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V) + exp(4.2400000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V)) + var_time_independent_outward_current__temp_current) * mParameters[5]; // uA_per_mm2 - const double var_time_independent_outward_current__i_K1_converted = 100.00000000000001 * var_time_independent_outward_current__i_K1; // uA_per_cm2 - - std::vector dqs(8); - dqs[0] = var_slow_inward_current__i_s_converted; - dqs[1] = var_sodium_current__i_Na_converted; - dqs[2] = var_sodium_current_h_gate__tau_h; - dqs[3] = var_sodium_current_j_gate__tau_j; - dqs[4] = var_time_independent_outward_current__i_K1_converted; - dqs[5] = var_time_dependent_outward_current__i_x1_converted; - dqs[6] = var_stimulus_protocol__Istim_converted; - dqs[7] = var_chaste_interface__environment__time; - return dqs; - } - -template<> -void OdeSystemInformation::Initialise(void) -{ - this->mSystemName = "beeler_reuter_model_1977"; - this->mFreeVariableName = "time"; - this->mFreeVariableUnits = "ms"; - - // rY[0]: - this->mVariableNames.push_back("membrane_voltage"); - this->mVariableUnits.push_back("mV"); - this->mInitialConditions.push_back(-84.624); - - // rY[1]: - this->mVariableNames.push_back("cytosolic_calcium_concentration"); - this->mVariableUnits.push_back("concentration_units"); - this->mInitialConditions.push_back(0.0001); - - // rY[2]: - this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.011); - - // rY[3]: - this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.988); - - // rY[4]: - this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.975); - - // rY[5]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.003); - - // rY[6]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.994); - - // rY[7]: - this->mVariableNames.push_back("time_dependent_outward_current_x1_gate__x1"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0001); - - // mParameters[0]: - this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); - this->mParameterUnits.push_back("mS_per_mm2"); - - // mParameters[1]: - this->mParameterNames.push_back("membrane_capacitance"); - this->mParameterUnits.push_back("uF_per_mm2"); - - // mParameters[2]: - this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); - this->mParameterUnits.push_back("mS_per_mm2"); - - // mParameters[3]: - this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[4]: - this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); - this->mParameterUnits.push_back("mV"); - - // mParameters[5]: - this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("uA_per_mm2"); - - // mParameters[6]: - this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("uA_per_mm2"); - - // mParameters[7]: - this->mParameterNames.push_back("sodium_reversal_potential"); - this->mParameterUnits.push_back("mV"); - - // Derived Quantity index [0]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [1]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [2]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); - this->mDerivedQuantityUnits.push_back("ms"); - - // Derived Quantity index [3]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); - this->mDerivedQuantityUnits.push_back("ms"); - - // Derived Quantity index [4]: - this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [5]: - this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [6]: - this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); - this->mDerivedQuantityUnits.push_back("uA_per_cm2"); - - // Derived Quantity index [7]: - this->mDerivedQuantityNames.push_back("time"); - this->mDerivedQuantityUnits.push_back("ms"); - - this->mInitialised = true; -} - -// Serialization for Boost >= 1.36 -#include "SerializationExportWrapperForCpp.hpp" -CHASTE_CLASS_EXPORT(Cellbeeler_reuter_model_1977FromCellMLOpt) - diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp similarity index 95% rename from chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp index 235fda79..ef3b1a34 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp @@ -143,7 +143,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLOpt_LookupTable for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return (((var_chaste_interface__membrane__V >= -65.000000999999997) && (var_chaste_interface__membrane__V <= -64.999999000000003)) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (0.099999999999999992 * (-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + return (((6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-0.099999999999999992 * (6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -187,7 +187,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLOpt_LookupTable for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V); + return 1 / (1 + exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -198,7 +198,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLOpt_LookupTable for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return (((var_chaste_interface__membrane__V >= -50.000000999999997) && (var_chaste_interface__membrane__V <= -49.999999000000003)) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : ((-5 - 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + return (((5 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (5 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (-1 * (5 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -380,7 +380,7 @@ std::shared_ptr - -#include "test_luo_rudy_1991_with_range_cap_dimensionless.hpp" -#include -#include -#include -#include -#include "Exception.hpp" -#include "OdeSystemInformation.hpp" -#include "RegularStimulus.hpp" -#include "HeartConfig.hpp" -#include "IsNan.hpp" -#include "MathsCustomFunctions.hpp" - - - -class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables : public AbstractLookupTableCollection -{ -public: - static Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables* Instance() - { - if (mpInstance.get() == NULL) - { - mpInstance.reset(new Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables); - } - return mpInstance.get(); - } - - void FreeMemory() - { - - if (_lookup_table_0) - { - delete[] _lookup_table_0; - _lookup_table_0 = NULL; - } - - mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); - } - - // Row lookup methods - // using linear-interpolation - - double* _lookup_0_row(unsigned i, double _factor_) - { - for (unsigned j=0; j<16; j++) - { - const double y1 = _lookup_table_0[i][j]; - const double y2 = _lookup_table_0[i+1][j]; - _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; - } - return _lookup_table_0_row; - } - - - const double * IndexTable0(double var_chaste_interface__membrane__V) - { - const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; - const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; - const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); - const double _factor_0 = _offset_0_over_table_step - _table_index_0; - const double* const _lt_0_row = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); - return _lt_0_row; - } - - -// LCOV_EXCL_START - bool CheckIndex0(double& var_chaste_interface__membrane__V) - { - bool _oob_0 = false; - if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= -77.000002499999994) && (var_chaste_interface__membrane__V <= -76.999997500000006)) ? ((0.28823920000000003 + 0.0022696000000000001 * var_chaste_interface__membrane__V) / exp(1.4000000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V)) : ((var_chaste_interface__membrane__V > -100) ? (0.11348000000000001 * (-1 + exp(3.0800000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V)) / ((3.0800000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V) * exp(1.4000000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V))) : (1))); - }; - const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; - double val = f(var_chaste_interface__membrane__V); - //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. - //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. - if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[0] < 2){ - double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); - double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); - val = (left + right) / 2.0; - // count and limit number of misshits - _lookup_table_0_num_misshit_piecewise[0] +=1; - } - else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[0] >= 2){ - EXCEPTION("Lookup table 0 at ["<= -47.130001) && (var_chaste_interface__membrane__V <= -47.129999000000005)) ? (10.7408 + 0.16 * var_chaste_interface__membrane__V) : (3.1999999999999997 * (-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); - }; - const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; - double val = f(var_chaste_interface__membrane__V); - //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. - //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. - if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[2] < 2){ - double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); - double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); - val = (left + right) / 2.0; - // count and limit number of misshits - _lookup_table_0_num_misshit_piecewise[2] +=1; - } - else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[2] >= 2){ - EXCEPTION("Lookup table 2 at ["< mpInstance; - - // Row lookup methods memory - double _lookup_table_0_row[16]; - - // Lookup tables - double (*_lookup_table_0)[16]; - int _lookup_table_0_num_misshit_piecewise[16] = {0}; - -}; - -std::shared_ptr Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::mpInstance; - - - boost::shared_ptr Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::UseCellMLDefaultStimulus() - { - // Use the default stimulus specified by CellML metadata - const double var_chaste_interface__membrane__stim_amplitude = -25.5; // microA_per_cm2 - const double var_chaste_interface__membrane__stim_duration = 2; // millisecond - const double var_chaste_interface__membrane__stim_end = 100000000000.0; // millisecond - const double var_chaste_interface__membrane__stim_period = 1000; // millisecond - const double var_chaste_interface__membrane__stim_start = 100; // millisecond - boost::shared_ptr p_cellml_stim(new RegularStimulus( - -fabs(var_chaste_interface__membrane__stim_amplitude), - var_chaste_interface__membrane__stim_duration, - var_chaste_interface__membrane__stim_period, - var_chaste_interface__membrane__stim_start, var_chaste_interface__membrane__stim_end - )); - mpIntracellularStimulus = p_cellml_stim; - return p_cellml_stim; - } - double Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::GetIntracellularCalciumConcentration() - { - return mStateVariables[7]; - } - Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) - : AbstractCardiacCell( - pSolver, - 8, - 0, - pIntracellularStimulus) - { - // Time units: millisecond - // - this->mpSystemInfo = OdeSystemInformation::Instance(); - Init(); - - // We have a default stimulus specified in the CellML file metadata - this->mHasDefaultStimulusFromCellML = true; - - this->mParameters[0] = 145; // (var_ionic_concentrations__Ki) [millimolar] - this->mParameters[1] = 18; // (var_ionic_concentrations__Nai) [millimolar] - this->mParameters[2] = 5.4000000000000004; // (var_ionic_concentrations__Ko) [millimolar] - this->mParameters[3] = 140; // (var_ionic_concentrations__Nao) [millimolar] - this->mParameters[4] = 0.089999999999999997; // (var_slow_inward_current__P_si) [milliS_per_cm2] - this->mParameters[5] = 1; // (var_membrane__C) [dimensionless] - this->mParameters[6] = 0.28199999999999997; // (var_time_dependent_potassium_current__g_K_max) [milliS_per_cm2] - this->mParameters[7] = 23; // (var_fast_sodium_current__g_Na) [milliS_per_cm2] - this->mParameters[8] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] - this->mParameters[9] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] - this->mParameters[10] = 0.60470000000000002; // (var_time_independent_potassium_current__g_K1_max) [milliS_per_cm2] - this->mParameters[11] = 0.039210000000000002; // (var_background_current__g_b) [milliS_per_cm2] - this->mParameters[12] = 0.0183; // (var_plateau_potassium_current__g_Kp) [milliS_per_cm2] - } - - Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::~Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt() - { - } - - AbstractLookupTableCollection* Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::GetLookupTableCollection() - { - return Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance(); - } - - void Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::VerifyStateVariables() - { - std::vector& rY = rGetStateVariables();double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; - // Units: dimensionless; Initial value: 0.00187018 - - if (var_chaste_interface__fast_sodium_current_m_gate__m < 0.0 || var_chaste_interface__fast_sodium_current_m_gate__m > 1.0) - { - EXCEPTION(DumpState("State variable membrane_fast_sodium_current_m_gate has gone out of range. Check numerical parameters, for example time and space stepsizes, and/or solver tolerances")); - } - - std::string error_message = ""; - - for (unsigned i=0; i < 8; i++) - { - if(std::isnan(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; - } - if(std::isinf(rY[i])) - { - error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; - } - if(this->is_concentration[i] && rY[i] < 0) - { - error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] < 0) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; - } - if(this->is_probability[i] && rY[i] > 1) - { - error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; - } - } - if (error_message != ""){ - EXCEPTION(DumpState(error_message)); - } - } - - double Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::GetIIonic(const std::vector* pStateVariables) - { - // For state variable interpolation (SVI) we read in interpolated state variables, - // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). - if (!pStateVariables) pStateVariables = &rGetStateVariables(); - const std::vector& rY = *pStateVariables; - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -83.853 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; - // Units: dimensionless; Initial value: 0.00187018 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[2]; - // Units: dimensionless; Initial value: 0.9804713 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[3]; - // Units: dimensionless; Initial value: 0.98767124 - double var_chaste_interface__slow_inward_current_d_gate__d = rY[4]; - // Units: dimensionless; Initial value: 0.00316354 - double var_chaste_interface__slow_inward_current_f_gate__f = rY[5]; - // Units: dimensionless; Initial value: 0.99427859 - double var_chaste_interface__time_dependent_potassium_current_X_gate__X = rY[6]; - // Units: dimensionless; Initial value: 0.16647703 - double var_chaste_interface__intracellular_calcium_concentration__Cai = rY[7]; - // Units: dimensionless; Initial value: 0.0002 - - // Lookup table indexing - const bool _oob_0 = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - const double var_background_current__i_b = (59.869999999999997 + var_chaste_interface__membrane__V) * mParameters[11]; // microA_per_cm2 - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-26.712449447891164 * log(mParameters[3] / mParameters[1]) + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_cm2 - const double var_slow_inward_current__i_si = (-7.7000000000000002 + 13.028700000000001 * log(var_chaste_interface__intracellular_calcium_concentration__Cai) + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // microA_per_cm2 - const double var_time_dependent_potassium_current__i_K = 0.43033148291193518 * sqrt(mParameters[2]) * (-26.712449447891164 * log((0.018329999999999999 * mParameters[3] + mParameters[2]) / (0.018329999999999999 * mParameters[1] + mParameters[0])) + var_chaste_interface__membrane__V) * _lt_0_row[0] * mParameters[6] * var_chaste_interface__time_dependent_potassium_current_X_gate__X; // microA_per_cm2 - const double var_time_independent_potassium_current__E_K1 = 26.712449447891164 * log(mParameters[2] / mParameters[0]); // millivolt - const double var_plateau_potassium_current__i_Kp = (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * mParameters[12] / (_lt_0_row[1]); // microA_per_cm2 - const double var_time_independent_potassium_current__i_K1 = 0.4389381125701739 * sqrt(mParameters[2]) * (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * mParameters[10] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)) + (exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K1) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K1)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K1 - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_cm2 - const double var_chaste_interface__i_ionic = var_background_current__i_b + var_fast_sodium_current__i_Na + var_plateau_potassium_current__i_Kp + var_slow_inward_current__i_si + var_time_dependent_potassium_current__i_K + var_time_independent_potassium_current__i_K1; // uA_per_cm2 - - const double i_ionic = var_chaste_interface__i_ionic; - EXCEPT_IF_NOT(!std::isnan(i_ionic)); - return i_ionic; - } - - void Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY) - { - // Inputs: - // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -83.853 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; - // Units: dimensionless; Initial value: 0.00187018 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[2]; - // Units: dimensionless; Initial value: 0.9804713 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[3]; - // Units: dimensionless; Initial value: 0.98767124 - double var_chaste_interface__slow_inward_current_d_gate__d = rY[4]; - // Units: dimensionless; Initial value: 0.00316354 - double var_chaste_interface__slow_inward_current_f_gate__f = rY[5]; - // Units: dimensionless; Initial value: 0.99427859 - double var_chaste_interface__time_dependent_potassium_current_X_gate__X = rY[6]; - // Units: dimensionless; Initial value: 0.16647703 - double var_chaste_interface__intracellular_calcium_concentration__Cai = rY[7]; - // Units: dimensionless; Initial value: 0.0002 - - // Lookup table indexing - const bool _oob_0 = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - double d_dt_chaste_interface_var_membrane__V; - const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[9] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond - const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[9]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[9])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[9] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond - const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h) * (-var_chaste_interface__fast_sodium_current_h_gate__h + 0.01 * mParameters[8] + (1 - 0.01 * mParameters[8]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h)); // 1 / millisecond - const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[9]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[9] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[9]))) : (0)); // per_millisecond - const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[9] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[9] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[9] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[9] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond - const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j) * (-var_chaste_interface__fast_sodium_current_j_gate__j + 0.01 * mParameters[8] + (1 - 0.01 * mParameters[8]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j)); // 1 / millisecond - const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * _lt_0_row[2] - 0.080000000000000002 * var_chaste_interface__fast_sodium_current_m_gate__m * _lt_0_row[3]; // 1 / millisecond - const double d_dt_chaste_interface_var_slow_inward_current_d_gate__d = 0.095000000000000001 * (1 - var_chaste_interface__slow_inward_current_d_gate__d) * _lt_0_row[5] / (_lt_0_row[4]) - 0.070000000000000007 * var_chaste_interface__slow_inward_current_d_gate__d * _lt_0_row[7] / (_lt_0_row[6]); // 1 / millisecond - const double d_dt_chaste_interface_var_slow_inward_current_f_gate__f = 0.012 * (1 - var_chaste_interface__slow_inward_current_f_gate__f) * _lt_0_row[9] / (_lt_0_row[8]) - 0.0064999999999999997 * var_chaste_interface__slow_inward_current_f_gate__f * _lt_0_row[11] / (_lt_0_row[10]); // 1 / millisecond - const double var_slow_inward_current__i_si = (-7.7000000000000002 + 13.028700000000001 * log(var_chaste_interface__intracellular_calcium_concentration__Cai) + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // microA_per_cm2 - const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Cai = 7.0000000000000007e-6 - 0.070000000000000007 * var_chaste_interface__intracellular_calcium_concentration__Cai - 0.0001 * var_slow_inward_current__i_si; // 1 / millisecond - const double d_dt_chaste_interface_var_time_dependent_potassium_current_X_gate__X = 0.00050000000000000001 * (1 - var_chaste_interface__time_dependent_potassium_current_X_gate__X) * _lt_0_row[13] / (_lt_0_row[12]) - 0.0012999999999999999 * var_chaste_interface__time_dependent_potassium_current_X_gate__X * _lt_0_row[15] / (_lt_0_row[14]); // 1 / millisecond - - if (mSetVoltageDerivativeToZero) - { - d_dt_chaste_interface_var_membrane__V = 0.0; - } - else - { - const double var_time_independent_potassium_current__E_K1 = 26.712449447891164 * log(mParameters[2] / mParameters[0]); // millivolt - d_dt_chaste_interface_var_membrane__V = -((59.869999999999997 + var_chaste_interface__membrane__V) * mParameters[11] + (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * mParameters[12] / (_lt_0_row[1]) + pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-26.712449447891164 * log(mParameters[3] / mParameters[1]) + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j + 0.43033148291193518 * sqrt(mParameters[2]) * (-26.712449447891164 * log((0.018329999999999999 * mParameters[3] + mParameters[2]) / (0.018329999999999999 * mParameters[1] + mParameters[0])) + var_chaste_interface__membrane__V) * _lt_0_row[0] * mParameters[6] * var_chaste_interface__time_dependent_potassium_current_X_gate__X + 0.4389381125701739 * sqrt(mParameters[2]) * (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * mParameters[10] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)) + (exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K1) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K1)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K1 - 0.51429999999999998 * var_chaste_interface__membrane__V)))) + GetIntracellularAreaStimulus(var_chaste_interface__environment__time) + var_slow_inward_current__i_si) / mParameters[5]; // millivolt / millisecond - } - - rDY[0] = d_dt_chaste_interface_var_membrane__V; - rDY[1] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; - rDY[2] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; - rDY[3] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; - rDY[4] = d_dt_chaste_interface_var_slow_inward_current_d_gate__d; - rDY[5] = d_dt_chaste_interface_var_slow_inward_current_f_gate__f; - rDY[6] = d_dt_chaste_interface_var_time_dependent_potassium_current_X_gate__X; - rDY[7] = d_dt_chaste_interface_var_intracellular_calcium_concentration__Cai; - } - - std::vector Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) - { - // Inputs: - // Time units: millisecond - double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); - // Units: millivolt; Initial value: -83.853 - double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; - // Units: dimensionless; Initial value: 0.00187018 - double var_chaste_interface__fast_sodium_current_h_gate__h = rY[2]; - // Units: dimensionless; Initial value: 0.9804713 - double var_chaste_interface__fast_sodium_current_j_gate__j = rY[3]; - // Units: dimensionless; Initial value: 0.98767124 - double var_chaste_interface__slow_inward_current_d_gate__d = rY[4]; - // Units: dimensionless; Initial value: 0.00316354 - double var_chaste_interface__slow_inward_current_f_gate__f = rY[5]; - // Units: dimensionless; Initial value: 0.99427859 - double var_chaste_interface__time_dependent_potassium_current_X_gate__X = rY[6]; - // Units: dimensionless; Initial value: 0.16647703 - double var_chaste_interface__intracellular_calcium_concentration__Cai = rY[7]; - // Units: dimensionless; Initial value: 0.0002 - - // Lookup table indexing - const bool _oob_0 = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); -// LCOV_EXCL_START - if (_oob_0) - EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); -// LCOV_EXCL_STOP - const double* const _lt_0_row = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); - - // Mathematics - const double var_background_current__E_b = -59.869999999999997; // millivolt - const double var_membrane__F = 96484.600000000006; // coulomb_per_mole - const double var_membrane__I_stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // microA_per_cm2 - const double var_membrane__R = 8314; // joule_per_kilomole_kelvin - const double var_membrane__T = 310; // kelvin - const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[3] / mParameters[1]) / var_membrane__F; // millivolt - const double var_background_current__i_b = (-var_background_current__E_b + var_chaste_interface__membrane__V) * mParameters[11]; // microA_per_cm2 - const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_cm2 - const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[9] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond - const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[9]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[9])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[9] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond - const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // millisecond - const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[9]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[9] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[9]))) : (0)); // per_millisecond - const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[9] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[9] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[9] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[9] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond - const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // millisecond - const double var_plateau_potassium_current__Kp = 1 / (_lt_0_row[1]); // dimensionless - const double var_slow_inward_current__E_si = 7.7000000000000002 - 13.028700000000001 * log(var_chaste_interface__intracellular_calcium_concentration__Cai); // millivolt - const double var_slow_inward_current_f_gate__alpha_f = 0.012 * _lt_0_row[9] / (_lt_0_row[8]); // per_millisecond - const double var_slow_inward_current_f_gate__beta_f = 0.0064999999999999997 * _lt_0_row[11] / (_lt_0_row[10]); // per_millisecond - const double var_slow_inward_current__i_si = (-var_slow_inward_current__E_si + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // microA_per_cm2 - const double var_slow_inward_current_f_gate__tau_f = 1 / (var_slow_inward_current_f_gate__alpha_f + var_slow_inward_current_f_gate__beta_f); // millisecond - const double var_time_dependent_potassium_current__PR_NaK = 0.018329999999999999; // dimensionless - const double var_time_dependent_potassium_current__E_K = var_membrane__R * var_membrane__T * log((mParameters[3] * var_time_dependent_potassium_current__PR_NaK + mParameters[2]) / (mParameters[1] * var_time_dependent_potassium_current__PR_NaK + mParameters[0])) / var_membrane__F; // millivolt - const double var_time_dependent_potassium_current__g_K = 0.43033148291193518 * sqrt(mParameters[2]) * mParameters[6]; // milliS_per_cm2 - const double var_time_dependent_potassium_current_Xi_gate__B = 0.040000000000000001; // per_millivolt - const double var_time_dependent_potassium_current_Xi_gate__A = 2.8370000000000002 * var_time_dependent_potassium_current_Xi_gate__B; // dimensionless - const double var_time_dependent_potassium_current_Xi_gate__v0 = -77; // millivolt - const double var_time_dependent_potassium_current_Xi_gate__U = (-var_time_dependent_potassium_current_Xi_gate__v0 + var_chaste_interface__membrane__V) * var_time_dependent_potassium_current_Xi_gate__B; // dimensionless - const double var_time_dependent_potassium_current_Xi_gate__temp_Xi = (((var_time_dependent_potassium_current_Xi_gate__U >= -9.9999999999999995e-8) && (var_time_dependent_potassium_current_Xi_gate__U <= 9.9999999999999995e-8)) ? ((1 + 0.5 * var_time_dependent_potassium_current_Xi_gate__U) * var_time_dependent_potassium_current_Xi_gate__A) : ((-1 + exp(var_time_dependent_potassium_current_Xi_gate__U)) * var_time_dependent_potassium_current_Xi_gate__A / var_time_dependent_potassium_current_Xi_gate__U)); // dimensionless - const double var_time_dependent_potassium_current_Xi_gate__Xi = ((var_chaste_interface__membrane__V > -100) ? (var_time_dependent_potassium_current_Xi_gate__temp_Xi / exp(1.4000000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V)) : (1)); // dimensionless - const double var_time_dependent_potassium_current__i_K = (-var_time_dependent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_time_dependent_potassium_current__g_K * var_chaste_interface__time_dependent_potassium_current_X_gate__X * var_time_dependent_potassium_current_Xi_gate__Xi; // microA_per_cm2 - const double var_time_independent_potassium_current__E_K1 = var_membrane__R * var_membrane__T * log(mParameters[2] / mParameters[0]) / var_membrane__F; // millivolt - const double var_plateau_potassium_current__E_Kp = var_time_independent_potassium_current__E_K1; // millivolt - const double var_plateau_potassium_current__i_Kp = (-var_plateau_potassium_current__E_Kp + var_chaste_interface__membrane__V) * var_plateau_potassium_current__Kp * mParameters[12]; // microA_per_cm2 - const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(mParameters[2]) * mParameters[10]; // milliS_per_cm2 - const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)); // per_millisecond - const double var_time_independent_potassium_current_K1_gate__beta_K1 = (exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K1) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K1)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K1 - 0.51429999999999998 * var_chaste_interface__membrane__V)); // per_millisecond - const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless - const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // microA_per_cm2 - - std::vector dqs(11); - dqs[0] = var_slow_inward_current__i_si; - dqs[1] = var_slow_inward_current_f_gate__tau_f; - dqs[2] = var_time_dependent_potassium_current__i_K; - dqs[3] = var_fast_sodium_current__i_Na; - dqs[4] = var_fast_sodium_current_h_gate__tau_h; - dqs[5] = var_fast_sodium_current_j_gate__tau_j; - dqs[6] = var_time_independent_potassium_current__i_K1; - dqs[7] = var_background_current__i_b; - dqs[8] = var_plateau_potassium_current__i_Kp; - dqs[9] = var_membrane__I_stim; - dqs[10] = var_chaste_interface__environment__time; - return dqs; - } - -template<> -void OdeSystemInformation::Initialise(void) -{ - this->mSystemName = "luo_rudy_1991"; - this->mFreeVariableName = "time"; - this->mFreeVariableUnits = "millisecond"; - - // rY[0]: - this->mVariableNames.push_back("membrane_voltage"); - this->mVariableUnits.push_back("millivolt"); - this->mInitialConditions.push_back(-83.853); - - // rY[1]: - this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.00187018); - - // rY[2]: - this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.9804713); - - // rY[3]: - this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.98767124); - - // rY[4]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.00316354); - - // rY[5]: - this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.99427859); - - // rY[6]: - this->mVariableNames.push_back("time_dependent_potassium_current_X_gate__X"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.16647703); - - // rY[7]: - this->mVariableNames.push_back("cytosolic_calcium_concentration"); - this->mVariableUnits.push_back("dimensionless"); - this->mInitialConditions.push_back(0.0002); - - // mParameters[0]: - this->mParameterNames.push_back("cytosolic_potassium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[1]: - this->mParameterNames.push_back("cytosolic_sodium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[2]: - this->mParameterNames.push_back("extracellular_potassium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[3]: - this->mParameterNames.push_back("extracellular_sodium_concentration"); - this->mParameterUnits.push_back("millimolar"); - - // mParameters[4]: - this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_cm2"); - - // mParameters[5]: - this->mParameterNames.push_back("membrane_capacitance"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[6]: - this->mParameterNames.push_back("membrane_delayed_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_cm2"); - - // mParameters[7]: - this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_cm2"); - - // mParameters[8]: - this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); - this->mParameterUnits.push_back("dimensionless"); - - // mParameters[9]: - this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); - this->mParameterUnits.push_back("millivolt"); - - // mParameters[10]: - this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_cm2"); - - // mParameters[11]: - this->mParameterNames.push_back("membrane_leakage_current_conductance"); - this->mParameterUnits.push_back("milliS_per_cm2"); - - // mParameters[12]: - this->mParameterNames.push_back("membrane_plateau_potassium_current_conductance"); - this->mParameterUnits.push_back("milliS_per_cm2"); - - // Derived Quantity index [0]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); - this->mDerivedQuantityUnits.push_back("microA_per_cm2"); - - // Derived Quantity index [1]: - this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - // Derived Quantity index [2]: - this->mDerivedQuantityNames.push_back("membrane_delayed_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("microA_per_cm2"); - - // Derived Quantity index [3]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); - this->mDerivedQuantityUnits.push_back("microA_per_cm2"); - - // Derived Quantity index [4]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - // Derived Quantity index [5]: - this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - // Derived Quantity index [6]: - this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); - this->mDerivedQuantityUnits.push_back("microA_per_cm2"); - - // Derived Quantity index [7]: - this->mDerivedQuantityNames.push_back("membrane_leakage_current"); - this->mDerivedQuantityUnits.push_back("microA_per_cm2"); - - // Derived Quantity index [8]: - this->mDerivedQuantityNames.push_back("membrane_plateau_potassium_current"); - this->mDerivedQuantityUnits.push_back("microA_per_cm2"); - - // Derived Quantity index [9]: - this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); - this->mDerivedQuantityUnits.push_back("microA_per_cm2"); - - // Derived Quantity index [10]: - this->mDerivedQuantityNames.push_back("time"); - this->mDerivedQuantityUnits.push_back("millisecond"); - - this->mInitialised = true; -} - -// Serialization for Boost >= 1.36 -#include "SerializationExportWrapperForCpp.hpp" -CHASTE_CLASS_EXPORT(Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt) - diff --git a/chaste_codegen/data/tests/chaste_reference_models/RL/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/RL/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp new file mode 100644 index 00000000..5ef668e7 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/RL/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp @@ -0,0 +1,309 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: hodgkin_huxley_squid_axon_model_1952_modified +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: RushLarsen) +//! on (date omitted as unimportant) +//! +//! + +#include "hodgkin_huxley_squid_axon_model_1952_modified.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsen::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude = -20; // microA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 0.5; // millisecond + const double var_chaste_interface__membrane__stim_period = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start = 10; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsen::Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsen(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractRushLarsenCardiacCell( + 4, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1; // (var_membrane__Cm) [microF_per_cm2] + this->mParameters[1] = 120; // (var_sodium_channel__g_Na) [milliS_per_cm2] + this->mParameters[2] = 0.29999999999999999; // (var_leakage_current__g_L) [milliS_per_cm2] + this->mParameters[3] = 36; // (var_potassium_channel__g_K) [milliS_per_cm2] + } + + Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsen::~Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsen() + { + } + + + void Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsen::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 4; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsen::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -75.0 + double var_chaste_interface__sodium_channel_m_gate__m = rY[1]; + // Units: dimensionless; Initial value: 0.05 + double var_chaste_interface__sodium_channel_h_gate__h = rY[2]; + // Units: dimensionless; Initial value: 0.6 + double var_chaste_interface__potassium_channel_n_gate__n = rY[3]; + // Units: dimensionless; Initial value: 0.325 + + const double var_membrane__E_R = -75; // millivolt + const double var_leakage_current__E_L = 10.613 + var_membrane__E_R; // millivolt + const double var_leakage_current__i_L = (-var_leakage_current__E_L + var_chaste_interface__membrane__V) * mParameters[2]; // microA_per_cm2 + const double var_potassium_channel__E_K = -12 + var_membrane__E_R; // millivolt + const double var_potassium_channel__i_K = pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (-var_potassium_channel__E_K + var_chaste_interface__membrane__V) * mParameters[3]; // microA_per_cm2 + const double var_sodium_channel__E_Na = 115 + var_membrane__E_R; // millivolt + const double var_sodium_channel__i_Na = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * (-var_sodium_channel__E_Na + var_chaste_interface__membrane__V) * mParameters[1] * var_chaste_interface__sodium_channel_h_gate__h; // microA_per_cm2 + const double var_chaste_interface__i_ionic = var_leakage_current__i_L + var_potassium_channel__i_K + var_sodium_channel__i_Na; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsen::EvaluateEquations(double var_chaste_interface__environment__time, std::vector &rDY, std::vector &rAlphaOrTau, std::vector &rBetaOrInf) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -75.0 + double var_chaste_interface__sodium_channel_m_gate__m = rY[1]; + // Units: dimensionless; Initial value: 0.05 + double var_chaste_interface__sodium_channel_h_gate__h = rY[2]; + // Units: dimensionless; Initial value: 0.6 + double var_chaste_interface__potassium_channel_n_gate__n = rY[3]; + // Units: dimensionless; Initial value: 0.325 + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_potassium_channel_n_gate__B = -0.10000000000000001; // per_millivolt + const double var_potassium_channel_n_gate__A = -0.01 / var_potassium_channel_n_gate__B; // per_millisecond + const double var_potassium_channel_n_gate__beta_n = 0.125 * exp(0.9375 + 0.012500000000000001 * var_chaste_interface__membrane__V); // per_millisecond + const double var_potassium_channel_n_gate__v0 = -65; // millivolt + const double var_potassium_channel_n_gate__U = (-var_potassium_channel_n_gate__v0 + var_chaste_interface__membrane__V) * var_potassium_channel_n_gate__B; // dimensionless + const double var_potassium_channel_n_gate__alpha_n = (((var_potassium_channel_n_gate__U >= -9.9999999999999995e-8) && (var_potassium_channel_n_gate__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_potassium_channel_n_gate__U) * var_potassium_channel_n_gate__A) : (var_potassium_channel_n_gate__A * var_potassium_channel_n_gate__U / (-1 + exp(var_potassium_channel_n_gate__U)))); // per_millisecond + const double var_sodium_channel_h_gate__alpha_h = 0.070000000000000007 * exp(-3.75 - 0.050000000000000003 * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_h_gate__beta_h = 1 / (1 + exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_sodium_channel_m_gate__B = -0.10000000000000001; // per_millivolt + const double var_sodium_channel_m_gate__A = -0.10000000000000001 / var_sodium_channel_m_gate__B; // per_millisecond + const double var_sodium_channel_m_gate__beta_m = 4 * exp(-4.166666666666667 - 0.055555555555555552 * var_chaste_interface__membrane__V); // per_millisecond + const double var_sodium_channel_m_gate__v0 = -50; // millivolt + const double var_sodium_channel_m_gate__U = (-var_sodium_channel_m_gate__v0 + var_chaste_interface__membrane__V) * var_sodium_channel_m_gate__B; // dimensionless + const double var_sodium_channel_m_gate__alpha_m = (((var_sodium_channel_m_gate__U >= -9.9999999999999995e-8) && (var_sodium_channel_m_gate__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_sodium_channel_m_gate__U) * var_sodium_channel_m_gate__A) : (var_sodium_channel_m_gate__A * var_sodium_channel_m_gate__U / (-1 + exp(var_sodium_channel_m_gate__U)))); // per_millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_membrane__E_R = -75; // millivolt + const double var_leakage_current__E_L = 10.613 + var_membrane__E_R; // millivolt + const double var_leakage_current__i_L = (-var_leakage_current__E_L + var_chaste_interface__membrane__V) * mParameters[2]; // microA_per_cm2 + const double var_membrane__i_Stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // microA_per_cm2 + const double var_potassium_channel__E_K = -12 + var_membrane__E_R; // millivolt + const double var_potassium_channel__i_K = pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (-var_potassium_channel__E_K + var_chaste_interface__membrane__V) * mParameters[3]; // microA_per_cm2 + const double var_sodium_channel__E_Na = 115 + var_membrane__E_R; // millivolt + const double var_sodium_channel__i_Na = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * (-var_sodium_channel__E_Na + var_chaste_interface__membrane__V) * mParameters[1] * var_chaste_interface__sodium_channel_h_gate__h; // microA_per_cm2 + d_dt_chaste_interface_var_membrane__V = (-var_leakage_current__i_L - var_membrane__i_Stim - var_potassium_channel__i_K - var_sodium_channel__i_Na) / mParameters[0]; // millivolt / millisecond + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rAlphaOrTau[1] = 1 * var_sodium_channel_m_gate__alpha_m; + rBetaOrInf[1] = var_sodium_channel_m_gate__beta_m; + rAlphaOrTau[2] = 1 * var_sodium_channel_h_gate__alpha_h; + rBetaOrInf[2] = var_sodium_channel_h_gate__beta_h; + rAlphaOrTau[3] = 1 * var_potassium_channel_n_gate__alpha_n; + rBetaOrInf[3] = var_potassium_channel_n_gate__beta_n; + } + void Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsen::ComputeOneStepExceptVoltage(const std::vector &rDY, const std::vector &rAlphaOrTau, const std::vector &rBetaOrInf) + { + std::vector& rY = rGetStateVariables(); + + { + const double tau_inv = rAlphaOrTau[1] + rBetaOrInf[1]; + const double y_inf = rAlphaOrTau[1] / tau_inv; + rY[1] = y_inf + (rY[1] - y_inf)*exp(-mDt*tau_inv); + } + { + const double tau_inv = rAlphaOrTau[2] + rBetaOrInf[2]; + const double y_inf = rAlphaOrTau[2] / tau_inv; + rY[2] = y_inf + (rY[2] - y_inf)*exp(-mDt*tau_inv); + } + { + const double tau_inv = rAlphaOrTau[3] + rBetaOrInf[3]; + const double y_inf = rAlphaOrTau[3] / tau_inv; + rY[3] = y_inf + (rY[3] - y_inf)*exp(-mDt*tau_inv); + } + } + + std::vector Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsen::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -75.0 + double var_chaste_interface__sodium_channel_m_gate__m = rY[1]; + // Units: dimensionless; Initial value: 0.05 + double var_chaste_interface__sodium_channel_h_gate__h = rY[2]; + // Units: dimensionless; Initial value: 0.6 + double var_chaste_interface__potassium_channel_n_gate__n = rY[3]; + // Units: dimensionless; Initial value: 0.325 + + // Mathematics + const double var_membrane__E_R = -75; // millivolt + const double var_leakage_current__E_L = 10.613 + var_membrane__E_R; // millivolt + const double var_leakage_current__i_L = (-var_leakage_current__E_L + var_chaste_interface__membrane__V) * mParameters[2]; // microA_per_cm2 + const double var_membrane__i_Stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // microA_per_cm2 + const double var_potassium_channel__E_K = -12 + var_membrane__E_R; // millivolt + const double var_potassium_channel__i_K = pow(var_chaste_interface__potassium_channel_n_gate__n, 4) * (-var_potassium_channel__E_K + var_chaste_interface__membrane__V) * mParameters[3]; // microA_per_cm2 + const double var_sodium_channel__E_Na = 115 + var_membrane__E_R; // millivolt + const double var_sodium_channel__i_Na = pow(var_chaste_interface__sodium_channel_m_gate__m, 3) * (-var_sodium_channel__E_Na + var_chaste_interface__membrane__V) * mParameters[1] * var_chaste_interface__sodium_channel_h_gate__h; // microA_per_cm2 + + std::vector dqs(5); + dqs[0] = var_sodium_channel__i_Na; + dqs[1] = var_leakage_current__i_L; + dqs[2] = var_potassium_channel__i_K; + dqs[3] = var_membrane__i_Stim; + dqs[4] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "hodgkin_huxley_squid_axon_model_1952_modified"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-75.0); + + // rY[1]: + this->mVariableNames.push_back("sodium_channel_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.05); + + // rY[2]: + this->mVariableNames.push_back("sodium_channel_h_gate__h"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.6); + + // rY[3]: + this->mVariableNames.push_back("potassium_channel_n_gate__n"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.325); + + // mParameters[0]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[1]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[2]: + this->mParameterNames.push_back("membrane_leakage_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_leakage_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_potassium_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsen) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 b/chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp similarity index 95% rename from chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 rename to chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp index 69982b8c..9c82e2b2 100644 --- a/chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified.cpp_python36 +++ b/chaste_codegen/data/tests/chaste_reference_models/RLopt/hodgkin_huxley_squid_axon_model_1952_modified--sympy_1_13.cpp @@ -143,7 +143,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsenOpt_L for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return (((var_chaste_interface__membrane__V >= -65.000000999999997) && (var_chaste_interface__membrane__V <= -64.999999000000003)) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (0.099999999999999992 * (-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + return (((6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (0.42499999999999999 + 0.0050000000000000001 * var_chaste_interface__membrane__V) : (-0.099999999999999992 * (6.5 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-6.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -187,7 +187,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsenOpt_L for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return 1 + exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V); + return 1 / (1 + exp(-4.5 - 0.10000000000000001 * var_chaste_interface__membrane__V)); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -198,7 +198,7 @@ class Cellhodgkin_huxley_squid_axon_model_1952_modifiedFromCellMLRushLarsenOpt_L for (unsigned i=0 ; i<_table_size_0; i++) { auto f = [](double var_chaste_interface__membrane__V) { - return (((var_chaste_interface__membrane__V >= -50.000000999999997) && (var_chaste_interface__membrane__V <= -49.999999000000003)) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : ((-5 - 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + return (((5 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (5 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (3.5 + 0.050000000000000003 * var_chaste_interface__membrane__V) : (-1 * (5 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-5 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); }; const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; double val = f(var_chaste_interface__membrane__V); @@ -384,7 +384,7 @@ std::shared_ptr= -9.9999999999999995e-8) && (var_potassium_channel_n_gate__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_potassium_channel_n_gate__U) * var_potassium_channel_n_gate__A) : (var_potassium_channel_n_gate__A * var_potassium_channel_n_gate__U / (-1 + exp(var_potassium_channel_n_gate__U)))); // per_millisecond const double var_sodium_channel_h_gate__alpha_h = 0.070000000000000007 * _lt_0_row[2]; // per_millisecond - const double var_sodium_channel_h_gate__beta_h = 1 / (_lt_0_row[3]); // per_millisecond + const double var_sodium_channel_h_gate__beta_h = 1 * _lt_0_row[3]; // per_millisecond const double var_sodium_channel_m_gate__B = -0.10000000000000001; // per_millivolt const double var_sodium_channel_m_gate__A = -0.10000000000000001 / var_sodium_channel_m_gate__B; // per_millisecond const double var_sodium_channel_m_gate__beta_m = 4 * _lt_0_row[5]; // per_millisecond @@ -410,11 +410,11 @@ std::shared_ptr &rDY, const std::vector &rAlphaOrTau, const std::vector &rBetaOrInf) From 7af23b3df7cff0b55c0b8c516c44a60d46ffbc29 Mon Sep 17 00:00:00 2001 From: Kwabena Amponsah Date: Wed, 15 Jul 2026 17:07:47 +0100 Subject: [PATCH 06/13] #285 Version jacobian references and remove version-specific excludes --- .../data/tests/test_jacobian_equations_1.txt | 2 +- .../tests/test_jacobian_equations_1.txt_alt | 1 - .../test_jacobian_equations_1.txt_python36 | 1 - .../data/tests/test_jacobian_equations_2.txt | 2 +- .../tests/test_jacobian_equations_2.txt_alt | 1 - .../test_jacobian_equations_2.txt_python36 | 1 - .../test_jacobian_matrix_1--sympy_1_11.txt | 1 + .../data/tests/test_jacobian_matrix_1.txt_alt | 1 - .../tests/test_jacobian_matrix_1.txt_python36 | 1 - .../test_jacobian_matrix_2--sympy_1_11.txt | 1 + .../test_jacobian_matrix_2--sympy_1_13.txt | 1 + .../data/tests/test_jacobian_matrix_2.txt_alt | 1 - .../tests/test_jacobian_matrix_2.txt_python36 | 1 - chaste_codegen/tests/test_jacobian.py | 29 +++++++------------ 14 files changed, 16 insertions(+), 28 deletions(-) delete mode 100644 chaste_codegen/data/tests/test_jacobian_equations_1.txt_alt delete mode 100644 chaste_codegen/data/tests/test_jacobian_equations_1.txt_python36 delete mode 100644 chaste_codegen/data/tests/test_jacobian_equations_2.txt_alt delete mode 100644 chaste_codegen/data/tests/test_jacobian_equations_2.txt_python36 create mode 100644 chaste_codegen/data/tests/test_jacobian_matrix_1--sympy_1_11.txt delete mode 100644 chaste_codegen/data/tests/test_jacobian_matrix_1.txt_alt delete mode 100644 chaste_codegen/data/tests/test_jacobian_matrix_1.txt_python36 create mode 100644 chaste_codegen/data/tests/test_jacobian_matrix_2--sympy_1_11.txt create mode 100644 chaste_codegen/data/tests/test_jacobian_matrix_2--sympy_1_13.txt delete mode 100644 chaste_codegen/data/tests/test_jacobian_matrix_2.txt_alt delete mode 100644 chaste_codegen/data/tests/test_jacobian_matrix_2.txt_python36 diff --git a/chaste_codegen/data/tests/test_jacobian_equations_1.txt b/chaste_codegen/data/tests/test_jacobian_equations_1.txt index f6aa543a..f01eadf5 100644 --- a/chaste_codegen/data/tests/test_jacobian_equations_1.txt +++ b/chaste_codegen/data/tests/test_jacobian_equations_1.txt @@ -1 +1 @@ -[Eq(x0, 120.0*_sodium_channel_m_gate$m**3.0), Eq(x1, _membrane$V - 40.0), Eq(x2, 0.10000000000000001*_membrane$V), Eq(x3, 0.10000000000000001*_membrane$V + 5.0000000000000003), Eq(x4, (0.10000000000000001*_membrane$V + 5.0000000000000003 >= -9.9999999999999995e-8) & (0.10000000000000001*_membrane$V + 5.0000000000000003 <= 9.9999999999999995e-8)), Eq(x6, exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0), Eq(x7, 1/(exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0)), Eq(x8, exp_(-0.055555555555555556*_membrane$V - 4.1666666666666667)), Eq(x9, exp_(-0.05*_membrane$V - 3.75)), Eq(x10, exp_(-0.1*_membrane$V - 4.5)), Eq(x11, exp_(-0.1*_membrane$V - 4.5) + 1.0), Eq(x12, 0.10000000000000001*_membrane$V + 6.5000000000000004), Eq(x13, (0.10000000000000001*_membrane$V + 6.5000000000000004 >= -9.9999999999999995e-8) & (0.10000000000000001*_membrane$V + 6.5000000000000004 <= 9.9999999999999995e-8)), Eq(x14, exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004)), Eq(x15, exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0), Eq(x16, 1/(exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0)), Eq(x17, exp_(0.0125*_membrane$V + 0.9375))] \ No newline at end of file +[Eq(x0, 120.0*_sodium_channel_m_gate$m**3.0), Eq(x1, _membrane$V - 40.0), Eq(x2, 0.10000000000000001*_membrane$V), Eq(x3, 0.10000000000000001*_membrane$V + 5.0000000000000003), Eq(x4, (0.10000000000000001*_membrane$V + 5.0000000000000003 >= -9.9999999999999995e-8) & (0.10000000000000001*_membrane$V + 5.0000000000000003 <= 9.9999999999999995e-8)), Eq(x5, exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003)), Eq(x6, exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0), Eq(x7, 1/(exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0)), Eq(x8, exp_(-0.055555555555555556*_membrane$V - 4.1666666666666667)), Eq(x9, exp_(-0.05*_membrane$V - 3.75)), Eq(x10, exp_(-0.1*_membrane$V - 4.5)), Eq(x11, exp_(-0.1*_membrane$V - 4.5) + 1.0), Eq(x12, 0.10000000000000001*_membrane$V + 6.5000000000000004), Eq(x13, (0.10000000000000001*_membrane$V + 6.5000000000000004 >= -9.9999999999999995e-8) & (0.10000000000000001*_membrane$V + 6.5000000000000004 <= 9.9999999999999995e-8)), Eq(x14, exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004)), Eq(x15, exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0), Eq(x16, 1/(exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0)), Eq(x17, exp_(0.0125*_membrane$V + 0.9375))] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_jacobian_equations_1.txt_alt b/chaste_codegen/data/tests/test_jacobian_equations_1.txt_alt deleted file mode 100644 index 41c05682..00000000 --- a/chaste_codegen/data/tests/test_jacobian_equations_1.txt_alt +++ /dev/null @@ -1 +0,0 @@ -[Eq(x0, 120.0*_sodium_channel_m_gate$m**3.0), Eq(x1, _membrane$V - 40.0), Eq(x2, (_membrane$V >= -50.000001) & (_membrane$V <= -49.999999)), Eq(x3, -0.10000000000000001*_membrane$V), Eq(x4, -0.10000000000000001*_membrane$V - 5.0000000000000003), Eq(x6, exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0), Eq(x7, 1/(exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0)), Eq(x8, exp_(-0.055555555555555556*_membrane$V - 4.1666666666666667)), Eq(x9, exp_(-0.05*_membrane$V - 3.75)), Eq(x10, exp_(-0.1*_membrane$V - 4.5)), Eq(x11, exp_(-0.1*_membrane$V - 4.5) + 1.0), Eq(x12, (_membrane$V >= -65.000001) & (_membrane$V <= -64.999999)), Eq(x13, -0.10000000000000001*_membrane$V - 6.5000000000000004), Eq(x14, exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004)), Eq(x15, exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0), Eq(x16, 1/(exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0)), Eq(x17, exp_(0.0125*_membrane$V + 0.9375))] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_jacobian_equations_1.txt_python36 b/chaste_codegen/data/tests/test_jacobian_equations_1.txt_python36 deleted file mode 100644 index 41c05682..00000000 --- a/chaste_codegen/data/tests/test_jacobian_equations_1.txt_python36 +++ /dev/null @@ -1 +0,0 @@ -[Eq(x0, 120.0*_sodium_channel_m_gate$m**3.0), Eq(x1, _membrane$V - 40.0), Eq(x2, (_membrane$V >= -50.000001) & (_membrane$V <= -49.999999)), Eq(x3, -0.10000000000000001*_membrane$V), Eq(x4, -0.10000000000000001*_membrane$V - 5.0000000000000003), Eq(x6, exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0), Eq(x7, 1/(exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0)), Eq(x8, exp_(-0.055555555555555556*_membrane$V - 4.1666666666666667)), Eq(x9, exp_(-0.05*_membrane$V - 3.75)), Eq(x10, exp_(-0.1*_membrane$V - 4.5)), Eq(x11, exp_(-0.1*_membrane$V - 4.5) + 1.0), Eq(x12, (_membrane$V >= -65.000001) & (_membrane$V <= -64.999999)), Eq(x13, -0.10000000000000001*_membrane$V - 6.5000000000000004), Eq(x14, exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004)), Eq(x15, exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0), Eq(x16, 1/(exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0)), Eq(x17, exp_(0.0125*_membrane$V + 0.9375))] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_jacobian_equations_2.txt b/chaste_codegen/data/tests/test_jacobian_equations_2.txt index 2bd7dc2f..1668f9f9 100644 --- a/chaste_codegen/data/tests/test_jacobian_equations_2.txt +++ b/chaste_codegen/data/tests/test_jacobian_equations_2.txt @@ -1 +1 @@ -[{'lhs': 'x0', 'rhs': 'x0120.0*_sodium_channel_m_gate$m**3.0', 'sympy_lhs': x0}, {'lhs': 'x1', 'rhs': 'x1_membrane$V - 40.0', 'sympy_lhs': x1}, {'lhs': 'x4', 'rhs': 'x4(0.10000000000000001*_membrane$V + 5.0000000000000003 >= -9.9999999999999995e-8) & (0.10000000000000001*_membrane$V + 5.0000000000000003 <= 9.9999999999999995e-8)', 'sympy_lhs': x4}, {'lhs': 'x5', 'rhs': 'x5exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003)', 'sympy_lhs': x5}, {'lhs': 'x6', 'rhs': 'x6exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0', 'sympy_lhs': x6}, {'lhs': 'x7', 'rhs': 'x71/(exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0)', 'sympy_lhs': x7}, {'lhs': 'x8', 'rhs': 'x8exp_(-0.055555555555555556*_membrane$V - 4.1666666666666667)', 'sympy_lhs': x8}, {'lhs': 'x9', 'rhs': 'x9exp_(-0.05*_membrane$V - 3.75)', 'sympy_lhs': x9}, {'lhs': 'x10', 'rhs': 'x10exp_(-0.1*_membrane$V - 4.5)', 'sympy_lhs': x10}, {'lhs': 'x11', 'rhs': 'x11exp_(-0.1*_membrane$V - 4.5) + 1.0', 'sympy_lhs': x11}, {'lhs': 'x12', 'rhs': 'x120.10000000000000001*_membrane$V + 6.5000000000000004', 'sympy_lhs': x12}, {'lhs': 'x13', 'rhs': 'x13(0.10000000000000001*_membrane$V + 6.5000000000000004 >= -9.9999999999999995e-8) & (0.10000000000000001*_membrane$V + 6.5000000000000004 <= 9.9999999999999995e-8)', 'sympy_lhs': x13}, {'lhs': 'x14', 'rhs': 'x14exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004)', 'sympy_lhs': x14}, {'lhs': 'x15', 'rhs': 'x15exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0', 'sympy_lhs': x15}, {'lhs': 'x16', 'rhs': 'x161/(exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0)', 'sympy_lhs': x16}, {'lhs': 'x17', 'rhs': 'x17exp_(0.0125*_membrane$V + 0.9375)', 'sympy_lhs': x17}] \ No newline at end of file +[{'lhs': 'x0', 'rhs': 'x0120.0*_sodium_channel_m_gate$m**3.0', 'sympy_lhs': x0}, {'lhs': 'x1', 'rhs': 'x1_membrane$V - 40.0', 'sympy_lhs': x1}, {'lhs': 'x3', 'rhs': 'x30.10000000000000001*_membrane$V + 5.0000000000000003', 'sympy_lhs': x3}, {'lhs': 'x4', 'rhs': 'x4(0.10000000000000001*_membrane$V + 5.0000000000000003 >= -9.9999999999999995e-8) & (0.10000000000000001*_membrane$V + 5.0000000000000003 <= 9.9999999999999995e-8)', 'sympy_lhs': x4}, {'lhs': 'x5', 'rhs': 'x5exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003)', 'sympy_lhs': x5}, {'lhs': 'x6', 'rhs': 'x6exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0', 'sympy_lhs': x6}, {'lhs': 'x7', 'rhs': 'x71/(exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0)', 'sympy_lhs': x7}, {'lhs': 'x8', 'rhs': 'x8exp_(-0.055555555555555556*_membrane$V - 4.1666666666666667)', 'sympy_lhs': x8}, {'lhs': 'x9', 'rhs': 'x9exp_(-0.05*_membrane$V - 3.75)', 'sympy_lhs': x9}, {'lhs': 'x10', 'rhs': 'x10exp_(-0.1*_membrane$V - 4.5)', 'sympy_lhs': x10}, {'lhs': 'x11', 'rhs': 'x11exp_(-0.1*_membrane$V - 4.5) + 1.0', 'sympy_lhs': x11}, {'lhs': 'x12', 'rhs': 'x120.10000000000000001*_membrane$V + 6.5000000000000004', 'sympy_lhs': x12}, {'lhs': 'x13', 'rhs': 'x13(0.10000000000000001*_membrane$V + 6.5000000000000004 >= -9.9999999999999995e-8) & (0.10000000000000001*_membrane$V + 6.5000000000000004 <= 9.9999999999999995e-8)', 'sympy_lhs': x13}, {'lhs': 'x14', 'rhs': 'x14exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004)', 'sympy_lhs': x14}, {'lhs': 'x15', 'rhs': 'x15exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0', 'sympy_lhs': x15}, {'lhs': 'x16', 'rhs': 'x161/(exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0)', 'sympy_lhs': x16}, {'lhs': 'x17', 'rhs': 'x17exp_(0.0125*_membrane$V + 0.9375)', 'sympy_lhs': x17}] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_jacobian_equations_2.txt_alt b/chaste_codegen/data/tests/test_jacobian_equations_2.txt_alt deleted file mode 100644 index 56c9658b..00000000 --- a/chaste_codegen/data/tests/test_jacobian_equations_2.txt_alt +++ /dev/null @@ -1 +0,0 @@ -[OrderedDict([('lhs', 'x0'), ('rhs', 'x0120.0*_sodium_channel_m_gate$m**3.0'), ('sympy_lhs', x0)]), OrderedDict([('lhs', 'x1'), ('rhs', 'x1_membrane$V - 40.0'), ('sympy_lhs', x1)]), OrderedDict([('lhs', 'x2'), ('rhs', 'x2(_membrane$V >= -50.000001) & (_membrane$V <= -49.999999)'), ('sympy_lhs', x2)]), OrderedDict([('lhs', 'x4'), ('rhs', 'x4-0.10000000000000001*_membrane$V - 5.0000000000000003'), ('sympy_lhs', x4)]), OrderedDict([('lhs', 'x5'), ('rhs', 'x5exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003)'), ('sympy_lhs', x5)]), OrderedDict([('lhs', 'x6'), ('rhs', 'x6exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0'), ('sympy_lhs', x6)]), OrderedDict([('lhs', 'x7'), ('rhs', 'x71/(exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0)'), ('sympy_lhs', x7)]), OrderedDict([('lhs', 'x8'), ('rhs', 'x8exp_(-0.055555555555555556*_membrane$V - 4.1666666666666667)'), ('sympy_lhs', x8)]), OrderedDict([('lhs', 'x9'), ('rhs', 'x9exp_(-0.05*_membrane$V - 3.75)'), ('sympy_lhs', x9)]), OrderedDict([('lhs', 'x10'), ('rhs', 'x10exp_(-0.1*_membrane$V - 4.5)'), ('sympy_lhs', x10)]), OrderedDict([('lhs', 'x11'), ('rhs', 'x11exp_(-0.1*_membrane$V - 4.5) + 1.0'), ('sympy_lhs', x11)]), OrderedDict([('lhs', 'x12'), ('rhs', 'x12(_membrane$V >= -65.000001) & (_membrane$V <= -64.999999)'), ('sympy_lhs', x12)]), OrderedDict([('lhs', 'x13'), ('rhs', 'x13-0.10000000000000001*_membrane$V - 6.5000000000000004'), ('sympy_lhs', x13)]), OrderedDict([('lhs', 'x14'), ('rhs', 'x14exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004)'), ('sympy_lhs', x14)]), OrderedDict([('lhs', 'x15'), ('rhs', 'x15exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0'), ('sympy_lhs', x15)]), OrderedDict([('lhs', 'x16'), ('rhs', 'x161/(exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0)'), ('sympy_lhs', x16)]), OrderedDict([('lhs', 'x17'), ('rhs', 'x17exp_(0.0125*_membrane$V + 0.9375)'), ('sympy_lhs', x17)])] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_jacobian_equations_2.txt_python36 b/chaste_codegen/data/tests/test_jacobian_equations_2.txt_python36 deleted file mode 100644 index 8ce18d06..00000000 --- a/chaste_codegen/data/tests/test_jacobian_equations_2.txt_python36 +++ /dev/null @@ -1 +0,0 @@ -[{'lhs': 'x0', 'rhs': 'x0120.0*_sodium_channel_m_gate$m**3.0', 'sympy_lhs': x0}, {'lhs': 'x1', 'rhs': 'x1_membrane$V - 40.0', 'sympy_lhs': x1}, {'lhs': 'x2', 'rhs': 'x2(_membrane$V >= -50.000001) & (_membrane$V <= -49.999999)', 'sympy_lhs': x2}, {'lhs': 'x4', 'rhs': 'x4-0.10000000000000001*_membrane$V - 5.0000000000000003', 'sympy_lhs': x4}, {'lhs': 'x5', 'rhs': 'x5exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003)', 'sympy_lhs': x5}, {'lhs': 'x6', 'rhs': 'x6exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0', 'sympy_lhs': x6}, {'lhs': 'x7', 'rhs': 'x71/(exp_(-0.10000000000000001*_membrane$V - 5.0000000000000003) - 1.0)', 'sympy_lhs': x7}, {'lhs': 'x8', 'rhs': 'x8exp_(-0.055555555555555556*_membrane$V - 4.1666666666666667)', 'sympy_lhs': x8}, {'lhs': 'x9', 'rhs': 'x9exp_(-0.05*_membrane$V - 3.75)', 'sympy_lhs': x9}, {'lhs': 'x10', 'rhs': 'x10exp_(-0.1*_membrane$V - 4.5)', 'sympy_lhs': x10}, {'lhs': 'x11', 'rhs': 'x11exp_(-0.1*_membrane$V - 4.5) + 1.0', 'sympy_lhs': x11}, {'lhs': 'x12', 'rhs': 'x12(_membrane$V >= -65.000001) & (_membrane$V <= -64.999999)', 'sympy_lhs': x12}, {'lhs': 'x13', 'rhs': 'x13-0.10000000000000001*_membrane$V - 6.5000000000000004', 'sympy_lhs': x13}, {'lhs': 'x14', 'rhs': 'x14exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004)', 'sympy_lhs': x14}, {'lhs': 'x15', 'rhs': 'x15exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0', 'sympy_lhs': x15}, {'lhs': 'x16', 'rhs': 'x161/(exp_(-0.10000000000000001*_membrane$V - 6.5000000000000004) - 1.0)', 'sympy_lhs': x16}, {'lhs': 'x17', 'rhs': 'x17exp_(0.0125*_membrane$V + 0.9375)', 'sympy_lhs': x17}] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_jacobian_matrix_1--sympy_1_11.txt b/chaste_codegen/data/tests/test_jacobian_matrix_1--sympy_1_11.txt new file mode 100644 index 00000000..3956151b --- /dev/null +++ b/chaste_codegen/data/tests/test_jacobian_matrix_1--sympy_1_11.txt @@ -0,0 +1 @@ +Matrix([[-x0*_sodium_channel_h_gate$h - 36.0*_potassium_channel_n_gate$n**4.0 - 0.29999999999999999, -360.0*x1*_sodium_channel_m_gate$m**2.0*_sodium_channel_h_gate$h, -x0*x1, -144.0*_potassium_channel_n_gate$n**3.0*(_membrane$V + 87.0)], [0.22222222222222222*x8*_sodium_channel_m_gate$m + (1.0 - _sodium_channel_m_gate$m)*Piecewise((0.050000000000000003, x4), (-0.10000000000000001*x3*x5/x6**2 - 0.10000000000000001*x7, True)), -4.0*x8 - Piecewise((0.050000000000000003*_membrane$V + 3.5000000000000001, x4), (-1.0*x3*x7, True)), 0, 0], [-0.1*x10*_sodium_channel_h_gate$h/x11**2 - 0.0035000000000000003*x9*(1.0 - _sodium_channel_h_gate$h), 0, -0.070000000000000007*x9 - 1.0/x11, 0], [-0.0015625*x17*_potassium_channel_n_gate$n + (1.0 - _potassium_channel_n_gate$n)*Piecewise((0.0050000000000000001, x13), (-0.01*x12*x14/x15**2 - 0.01*x16, True)), 0, 0, -0.125*x17 - Piecewise((0.0050000000000000001*_membrane$V + 0.425, x13), (-0.099999999999999997*x12*x16, True))]]) \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_jacobian_matrix_1.txt_alt b/chaste_codegen/data/tests/test_jacobian_matrix_1.txt_alt deleted file mode 100644 index aec9d223..00000000 --- a/chaste_codegen/data/tests/test_jacobian_matrix_1.txt_alt +++ /dev/null @@ -1 +0,0 @@ -Matrix([[-x0*_sodium_channel_h_gate$h - 36.0*_potassium_channel_n_gate$n**4.0 - 0.29999999999999999, -360.0*x1*_sodium_channel_m_gate$m**2.0*_sodium_channel_h_gate$h, -x0*x1, -144.0*_potassium_channel_n_gate$n**3.0*(_membrane$V + 87.0)], [0.22222222222222222*x8*_sodium_channel_m_gate$m + (1.0 - _sodium_channel_m_gate$m)*Piecewise((0.050000000000000003, x2), (0.10000000000000001*x4*x5/x6**2 - 0.10000000000000001*x7, True)), -4.0*x8 - Piecewise((0.050000000000000003*_membrane$V + 3.5000000000000001, x2), (1.0*x4*x7, True)), 0, 0], [-0.1*x10*_sodium_channel_h_gate$h/x11**2 - 0.05*x9*(0.070000000000000007 - 0.070000000000000007*_sodium_channel_h_gate$h), 0, -0.070000000000000007*x9 - 1.0/x11, 0], [-0.0015625*x17*_potassium_channel_n_gate$n + (1.0 - _potassium_channel_n_gate$n)*Piecewise((0.0050000000000000001, x12), (0.01*x13*x14/x15**2 - 0.01*x16, True)), 0, 0, -0.125*x17 - Piecewise((0.0050000000000000001*_membrane$V + 0.425, x12), (0.099999999999999997*x13*x16, True))]]) \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_jacobian_matrix_1.txt_python36 b/chaste_codegen/data/tests/test_jacobian_matrix_1.txt_python36 deleted file mode 100644 index aec9d223..00000000 --- a/chaste_codegen/data/tests/test_jacobian_matrix_1.txt_python36 +++ /dev/null @@ -1 +0,0 @@ -Matrix([[-x0*_sodium_channel_h_gate$h - 36.0*_potassium_channel_n_gate$n**4.0 - 0.29999999999999999, -360.0*x1*_sodium_channel_m_gate$m**2.0*_sodium_channel_h_gate$h, -x0*x1, -144.0*_potassium_channel_n_gate$n**3.0*(_membrane$V + 87.0)], [0.22222222222222222*x8*_sodium_channel_m_gate$m + (1.0 - _sodium_channel_m_gate$m)*Piecewise((0.050000000000000003, x2), (0.10000000000000001*x4*x5/x6**2 - 0.10000000000000001*x7, True)), -4.0*x8 - Piecewise((0.050000000000000003*_membrane$V + 3.5000000000000001, x2), (1.0*x4*x7, True)), 0, 0], [-0.1*x10*_sodium_channel_h_gate$h/x11**2 - 0.05*x9*(0.070000000000000007 - 0.070000000000000007*_sodium_channel_h_gate$h), 0, -0.070000000000000007*x9 - 1.0/x11, 0], [-0.0015625*x17*_potassium_channel_n_gate$n + (1.0 - _potassium_channel_n_gate$n)*Piecewise((0.0050000000000000001, x12), (0.01*x13*x14/x15**2 - 0.01*x16, True)), 0, 0, -0.125*x17 - Piecewise((0.0050000000000000001*_membrane$V + 0.425, x12), (0.099999999999999997*x13*x16, True))]]) \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_jacobian_matrix_2--sympy_1_11.txt b/chaste_codegen/data/tests/test_jacobian_matrix_2--sympy_1_11.txt new file mode 100644 index 00000000..970cde86 --- /dev/null +++ b/chaste_codegen/data/tests/test_jacobian_matrix_2--sympy_1_11.txt @@ -0,0 +1 @@ +[{'i': 0, 'j': 0, 'entry': '-0.29999999999999999 - 36 * pow(potassium_channel_n_gate$n, 4) - x0 * sodium_channel_h_gate$h'}, {'i': 1, 'j': 0, 'entry': '(1 - sodium_channel_m_gate$m) * ((x4) ? (0.050000000000000003) : (-0.10000000000000001 * x7 - 0.10000000000000001 * x3 * x5 / pow(x6, 2))) + 0.22222222222222221 * x8 * sodium_channel_m_gate$m'}, {'i': 2, 'j': 0, 'entry': '-0.0035000000000000005 * x9 * (1 - sodium_channel_h_gate$h) - 0.10000000000000001 * x10 * sodium_channel_h_gate$h / pow(x11, 2)'}, {'i': 3, 'j': 0, 'entry': '(1 - potassium_channel_n_gate$n) * ((x13) ? (0.0050000000000000001) : (-0.01 * x16 - 0.01 * x12 * x14 / pow(x15, 2))) - 0.0015625000000000001 * x17 * potassium_channel_n_gate$n'}, {'i': 0, 'j': 1, 'entry': '-360 * x1 * pow(sodium_channel_m_gate$m, 2) * sodium_channel_h_gate$h'}, {'i': 1, 'j': 1, 'entry': '-((x4) ? (3.5 + 0.050000000000000003 * membrane$V) : (-x3 * x7)) - 4 * x8'}, {'i': 0, 'j': 2, 'entry': '-x0 * x1'}, {'i': 2, 'j': 2, 'entry': '-1 / x11 - 0.070000000000000007 * x9'}, {'i': 0, 'j': 3, 'entry': '-144 * pow(potassium_channel_n_gate$n, 3) * (87 + membrane$V)'}, {'i': 3, 'j': 3, 'entry': '-((x13) ? (0.42499999999999999 + 0.0050000000000000001 * membrane$V) : (-0.099999999999999992 * x12 * x16)) - 0.125 * x17'}] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_jacobian_matrix_2--sympy_1_13.txt b/chaste_codegen/data/tests/test_jacobian_matrix_2--sympy_1_13.txt new file mode 100644 index 00000000..81deb2e0 --- /dev/null +++ b/chaste_codegen/data/tests/test_jacobian_matrix_2--sympy_1_13.txt @@ -0,0 +1 @@ +[{'i': 0, 'j': 0, 'entry': '-0.29999999999999999 - 36 * pow(potassium_channel_n_gate$n, 4) - x0 * sodium_channel_h_gate$h'}, {'i': 1, 'j': 0, 'entry': '(1 - sodium_channel_m_gate$m) * ((x4) ? (0.050000000000000003) : (-0.10000000000000001 * x7 - 0.10000000000000001 * x3 * x5 / pow(x6, 2))) + 0.22222222222222221 * x8 * sodium_channel_m_gate$m'}, {'i': 2, 'j': 0, 'entry': '-0.0035000000000000005 * x9 * (1 - sodium_channel_h_gate$h) - 0.10000000000000001 * x10 * sodium_channel_h_gate$h / pow(x11, 2)'}, {'i': 3, 'j': 0, 'entry': '(1 - potassium_channel_n_gate$n) * ((x13) ? (0.0050000000000000001) : (-0.01 * x16 - 0.01 * x12 * x14 / pow(x15, 2))) - 0.0015625000000000001 * x17 * potassium_channel_n_gate$n'}, {'i': 0, 'j': 1, 'entry': '-360 * x1 * pow(sodium_channel_m_gate$m, 2) * sodium_channel_h_gate$h'}, {'i': 1, 'j': 1, 'entry': '-((x4) ? (3.5 + 0.050000000000000003 * membrane$V) : (-1 * x3 * x7)) - 4 * x8'}, {'i': 0, 'j': 2, 'entry': '-x0 * x1'}, {'i': 2, 'j': 2, 'entry': '-1 / x11 - 0.070000000000000007 * x9'}, {'i': 0, 'j': 3, 'entry': '-144 * pow(potassium_channel_n_gate$n, 3) * (87 + membrane$V)'}, {'i': 3, 'j': 3, 'entry': '-((x13) ? (0.42499999999999999 + 0.0050000000000000001 * membrane$V) : (-0.099999999999999992 * x12 * x16)) - 0.125 * x17'}] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_jacobian_matrix_2.txt_alt b/chaste_codegen/data/tests/test_jacobian_matrix_2.txt_alt deleted file mode 100644 index e8a06f18..00000000 --- a/chaste_codegen/data/tests/test_jacobian_matrix_2.txt_alt +++ /dev/null @@ -1 +0,0 @@ -[OrderedDict([('i', 0), ('j', 0), ('entry', '-0.29999999999999999 - 36 * pow(potassium_channel_n_gate$n, 4) - x0 * sodium_channel_h_gate$h')]), OrderedDict([('i', 1), ('j', 0), ('entry', '(1 - sodium_channel_m_gate$m) * ((x2) ? (0.050000000000000003) : (-0.10000000000000001 * x7 + 0.10000000000000001 * x4 * x5 / pow(x6, 2))) + 0.22222222222222221 * x8 * sodium_channel_m_gate$m')]), OrderedDict([('i', 2), ('j', 0), ('entry', '-0.050000000000000003 * x9 * (0.070000000000000007 - 0.070000000000000007 * sodium_channel_h_gate$h) - 0.10000000000000001 * x10 * sodium_channel_h_gate$h / pow(x11, 2)')]), OrderedDict([('i', 3), ('j', 0), ('entry', '(1 - potassium_channel_n_gate$n) * ((x12) ? (0.0050000000000000001) : (-0.01 * x16 + 0.01 * x13 * x14 / pow(x15, 2))) - 0.0015625000000000001 * x17 * potassium_channel_n_gate$n')]), OrderedDict([('i', 0), ('j', 1), ('entry', '-360 * x1 * pow(sodium_channel_m_gate$m, 2) * sodium_channel_h_gate$h')]), OrderedDict([('i', 1), ('j', 1), ('entry', '-((x2) ? (3.5 + 0.050000000000000003 * membrane$V) : (x4 * x7)) - 4 * x8')]), OrderedDict([('i', 0), ('j', 2), ('entry', '-x0 * x1')]), OrderedDict([('i', 2), ('j', 2), ('entry', '-1 / x11 - 0.070000000000000007 * x9')]), OrderedDict([('i', 0), ('j', 3), ('entry', '-144 * pow(potassium_channel_n_gate$n, 3) * (87 + membrane$V)')]), OrderedDict([('i', 3), ('j', 3), ('entry', '-((x12) ? (0.42499999999999999 + 0.0050000000000000001 * membrane$V) : (0.099999999999999992 * x13 * x16)) - 0.125 * x17')])] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_jacobian_matrix_2.txt_python36 b/chaste_codegen/data/tests/test_jacobian_matrix_2.txt_python36 deleted file mode 100644 index 5c141c27..00000000 --- a/chaste_codegen/data/tests/test_jacobian_matrix_2.txt_python36 +++ /dev/null @@ -1 +0,0 @@ -[{'i': 0, 'j': 0, 'entry': '-0.29999999999999999 - 36 * pow(potassium_channel_n_gate$n, 4) - x0 * sodium_channel_h_gate$h'}, {'i': 1, 'j': 0, 'entry': '(1 - sodium_channel_m_gate$m) * ((x2) ? (0.050000000000000003) : (-0.10000000000000001 * x7 + 0.10000000000000001 * x4 * x5 / pow(x6, 2))) + 0.22222222222222221 * x8 * sodium_channel_m_gate$m'}, {'i': 2, 'j': 0, 'entry': '-0.050000000000000003 * x9 * (0.070000000000000007 - 0.070000000000000007 * sodium_channel_h_gate$h) - 0.10000000000000001 * x10 * sodium_channel_h_gate$h / pow(x11, 2)'}, {'i': 3, 'j': 0, 'entry': '(1 - potassium_channel_n_gate$n) * ((x12) ? (0.0050000000000000001) : (-0.01 * x16 + 0.01 * x13 * x14 / pow(x15, 2))) - 0.0015625000000000001 * x17 * potassium_channel_n_gate$n'}, {'i': 0, 'j': 1, 'entry': '-360 * x1 * pow(sodium_channel_m_gate$m, 2) * sodium_channel_h_gate$h'}, {'i': 1, 'j': 1, 'entry': '-((x2) ? (3.5 + 0.050000000000000003 * membrane$V) : (x4 * x7)) - 4 * x8'}, {'i': 0, 'j': 2, 'entry': '-x0 * x1'}, {'i': 2, 'j': 2, 'entry': '-1 / x11 - 0.070000000000000007 * x9'}, {'i': 0, 'j': 3, 'entry': '-144 * pow(potassium_channel_n_gate$n, 3) * (87 + membrane$V)'}, {'i': 3, 'j': 3, 'entry': '-((x12) ? (0.42499999999999999 + 0.0050000000000000001 * membrane$V) : (0.099999999999999992 * x13 * x16)) - 0.125 * x17'}] \ No newline at end of file diff --git a/chaste_codegen/tests/test_jacobian.py b/chaste_codegen/tests/test_jacobian.py index 74c0bbb2..43727e2c 100644 --- a/chaste_codegen/tests/test_jacobian.py +++ b/chaste_codegen/tests/test_jacobian.py @@ -6,7 +6,7 @@ from chaste_codegen._chaste_printer import ChastePrinter from chaste_codegen._jacobian import format_jacobian, get_jacobian from chaste_codegen._partial_eval import partial_eval -from chaste_codegen.tests.conftest import TESTS_FOLDER +from chaste_codegen.tests.conftest import TESTS_FOLDER, read_versioned_reference @pytest.fixture(scope='session') @@ -36,17 +36,14 @@ def test_get_jacobian_no_partial_eval(state_vars, derivatives_eqs): def test_get_jacobian(jacobian): jacobian_equations, jacobian_matrix = jacobian - expected = open(os.path.join(TESTS_FOLDER, 'test_jacobian_equations_1.txt'), 'r').read() - expected_python36 = open(os.path.join(TESTS_FOLDER, 'test_jacobian_equations_1.txt_python36'), 'r').read() - # exclude x5 due to - sign difference between sympy 1.9 and 1.10 eqs = [sp.Eq(*eq) for eq in jacobian_equations] - required = [e.lhs for e in eqs if not str(e.lhs).endswith('x5')] + required = [e.lhs for e in eqs] part_eval_jacobian_equations = partial_eval(eqs, required, keep_multiple_usages=False) - assert str(part_eval_jacobian_equations) == expected or str(part_eval_jacobian_equations) == expected_python36 - expected = open(os.path.join(TESTS_FOLDER, 'test_jacobian_matrix_1.txt'), 'r').read() - expected_python36 = open(os.path.join(TESTS_FOLDER, 'test_jacobian_matrix_1.txt_python36'), 'r').read() - assert str(jacobian_matrix) == expected or str(jacobian_matrix) == expected_python36 + assert str(part_eval_jacobian_equations) == \ + read_versioned_reference(os.path.join(TESTS_FOLDER, 'test_jacobian_equations_1.txt')) + assert str(jacobian_matrix) == \ + read_versioned_reference(os.path.join(TESTS_FOLDER, 'test_jacobian_matrix_1.txt')) def test_format_wrong_params1(): @@ -81,9 +78,8 @@ def test_format_wrong_params5(jacobian): def test_format_jacobian(jacobian): jacobian_equations, jacobian_matrix = jacobian - # exclude x5 due to - sign difference between sympy 1.9 and 1.10 eqs = [sp.Eq(*eq) for eq in jacobian_equations] - required = [e.lhs for e in eqs if not str(e.lhs).endswith('x3')] + required = [e.lhs for e in eqs] part_eval_jacobian_equations = partial_eval(eqs, required, keep_multiple_usages=False) jacobian_equations = [(e.lhs, e.rhs) for e in part_eval_jacobian_equations] @@ -96,10 +92,7 @@ def test_format_jacobian(jacobian): jacobian = [dict([('i', jac['i']), ('j', jac['j']), ('entry', jac['entry'])]) for jac in jacobian] - expected = open(os.path.join(TESTS_FOLDER, 'test_jacobian_equations_2.txt'), 'r').read() - expected_python36 = open(os.path.join(TESTS_FOLDER, 'test_jacobian_equations_2.txt_python36'), 'r').read() - assert str(equations) == expected or str(equations) == expected_python36 - - expected = open(os.path.join(TESTS_FOLDER, 'test_jacobian_matrix_2.txt'), 'r').read() - expected_python36 = open(os.path.join(TESTS_FOLDER, 'test_jacobian_matrix_2.txt_python36'), 'r').read() - assert str(jacobian) == expected or str(jacobian) == expected_python36 + assert str(equations) == \ + read_versioned_reference(os.path.join(TESTS_FOLDER, 'test_jacobian_equations_2.txt')) + assert str(jacobian) == \ + read_versioned_reference(os.path.join(TESTS_FOLDER, 'test_jacobian_matrix_2.txt')) From ffad5e34c08149777c97adeb881a4e9ef8a95949 Mon Sep 17 00:00:00 2001 From: Kwabena Amponsah Date: Wed, 15 Jul 2026 17:07:47 +0100 Subject: [PATCH 07/13] #285 Document the versioned reference scheme --- docs/index.rst | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index 800d678f..5cbb79aa 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -12,24 +12,27 @@ Updating Sympy or other python packages ================= Sympy or any other python package may need to be updated, especially as python versions evolve. To update the version: -- change the version listed in setup.py, e.g. for sympy it currently lists 'sympy>=1.9, <1.11', which means that the version is at least 1.9 and is less than 1.11. -- update dev-requirements/dev.txt if you want to also update your development pinned (fixed) versions -- create a new branch ``git checkout -b `` +- Change the version listed in setup.py, e.g. for sympy it may list 'sympy>=1.10, <1.15', which means that the version is at least 1.10 and is less than 1.15. +- Update dev-requirements/dev.txt if you want to also update your development pinned (fixed) versions +- Create a new branch ``git checkout -b `` - ``git add``, ``git commit`` and ``git push`` the changes -- make a pull request. The tests may throw up some errors that may need fixing. The tests are in the tests folder and the reference data in data/tests. In data/tests/chaste_reference_models you'll see a few reference files ending in .cpp_python36, This is as due to sympy versions supported python 3.6 leads to an equivalent but subtly different generated model. +- Make a pull request. The tests may throw up some errors that may need fixing. The tests are in the tests folder and the reference data in data/tests. +- Sympy occasionally changes the exact (but mathematically equivalent) form of the generated code between versions. +To cope with this, a reference file may have per-sympy-version variants named ``--sympy_X_Y.`` (e.g. ``--sympy_1_13.cpp``) alongside the base file. +To regenerate the reference data for a new sympy version, run the tests with the ``CHASTE_CODEGEN_REGENERATE_REFERENCES`` environment variable set (this writes the generated output to ``.regen..`` files). - Mention the changes made in the release notes ``release.txt`` - To use the changes with chaste, do a new release of chaste_codegen. Updating the ontology and including it in chaste_codegen ================= -- update the ontology according to the instructions in https://github.com/ModellingWebLab/ontologies -- the ontology is included in chaste_codegen via a submodule, update this with ``git submodule update --remote chaste_codegen/ontologies``. +- Update the ontology according to the instructions in https://github.com/ModellingWebLab/ontologies +- The ontology is included in chaste_codegen via a submodule, update this with ``git submodule update --remote chaste_codegen/ontologies``. - *Please note* this same way can be used to update the ``cellml`` in ``chaste_codegen/data/tests/cellml`` submodule if required. -- create a new branch ``git checkout -b `` +- Create a new branch ``git checkout -b `` - ``git add``, ``git commit`` and ``git push`` the changes -- make a pull run the tests and fix any issues that arise -- update the release notes ``release.txt`` with information about the updated ontology. +- Make a pull run the tests and fix any issues that arise +- Update the release notes ``release.txt`` with information about the updated ontology. - To use the changes with chaste, do a new release of chaste_codegen. From 2032a4d31b86c83102de571c38f574c8ff968726 Mon Sep 17 00:00:00 2001 From: Kwabena Amponsah Date: Wed, 15 Jul 2026 21:46:50 +0100 Subject: [PATCH 08/13] #285 Bump minimum Python to 3.10 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c7c9e1d1..8c85f3e7 100644 --- a/setup.py +++ b/setup.py @@ -42,7 +42,7 @@ include_package_data=True, # Required Python version - python_requires='>=3.6', + python_requires='>=3.10', # List of dependencies install_requires=[ From 81bb1b71b45773d82b439deee3c9b8b8db7802bc Mon Sep 17 00:00:00 2001 From: Kwabena Amponsah Date: Wed, 15 Jul 2026 21:47:37 +0100 Subject: [PATCH 09/13] #285 Fix docs grammar and formatting --- docs/index.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index 5cbb79aa..fa3266b7 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -18,8 +18,8 @@ Sympy or any other python package may need to be updated, especially as python v - ``git add``, ``git commit`` and ``git push`` the changes - Make a pull request. The tests may throw up some errors that may need fixing. The tests are in the tests folder and the reference data in data/tests. - Sympy occasionally changes the exact (but mathematically equivalent) form of the generated code between versions. -To cope with this, a reference file may have per-sympy-version variants named ``--sympy_X_Y.`` (e.g. ``--sympy_1_13.cpp``) alongside the base file. -To regenerate the reference data for a new sympy version, run the tests with the ``CHASTE_CODEGEN_REGENERATE_REFERENCES`` environment variable set (this writes the generated output to ``.regen..`` files). + To cope with this, a reference file may have per-sympy-version variants named ``--sympy_X_Y.`` (e.g. ``--sympy_1_13.cpp``) alongside the base file. + To regenerate the reference data for a new sympy version, run the tests with the ``CHASTE_CODEGEN_REGENERATE_REFERENCES`` environment variable set (this writes the generated output to ``.regen..`` files). - Mention the changes made in the release notes ``release.txt`` - To use the changes with chaste, do a new release of chaste_codegen. @@ -31,7 +31,7 @@ Updating the ontology and including it in chaste_codegen - *Please note* this same way can be used to update the ``cellml`` in ``chaste_codegen/data/tests/cellml`` submodule if required. - Create a new branch ``git checkout -b `` - ``git add``, ``git commit`` and ``git push`` the changes -- Make a pull run the tests and fix any issues that arise +- Make a pull request, run the tests and fix any issues that arise - Update the release notes ``release.txt`` with information about the updated ontology. - To use the changes with chaste, do a new release of chaste_codegen. From 1533699ce73f236383e2929ae090a00e6b9c9bc8 Mon Sep 17 00:00:00 2001 From: Kwabena Amponsah Date: Wed, 15 Jul 2026 21:58:33 +0100 Subject: [PATCH 10/13] #285 Declare Python 3.10-3.14 support in metadata and docs --- .github/workflows/pytest.yml | 4 ++-- CONTRIBUTING.md | 2 +- dev-requirements/dev.txt | 3 +-- setup.py | 5 +++++ 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index f15ea9f1..ea6bd4cd 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -5,10 +5,10 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - name: Checkout repository and submodules - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: submodules: recursive - name: Set up Python ${{ matrix.python-version }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 835095a4..310bfe41 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -53,7 +53,7 @@ $ flake8 ``` ## Python version -Python 3.5+ +Python 3.10+ ## Documentation diff --git a/dev-requirements/dev.txt b/dev-requirements/dev.txt index 3126e086..99713813 100644 --- a/dev-requirements/dev.txt +++ b/dev-requirements/dev.txt @@ -46,6 +46,5 @@ sphinxcontrib-qthelp==2.0.0 sphinxcontrib-serializinghtml==2.0.0 sympy==1.10.1 tomli==2.2.1 -urllib3<2.7; python_version < "3.10" -urllib3==2.7.0; python_version >= "3.10" +urllib3==2.7.0 zipp==3.21.0 diff --git a/setup.py b/setup.py index 8c85f3e7..1d98e383 100644 --- a/setup.py +++ b/setup.py @@ -30,6 +30,11 @@ url='https://github.com/ModellingWebLab/chaste-codegen', classifiers=[ "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", ], From fb5ce1d7441decfd18ec974ea999ef15e14bb9b1 Mon Sep 17 00:00:00 2001 From: Kwabena Amponsah Date: Thu, 16 Jul 2026 18:50:03 +0100 Subject: [PATCH 11/13] #285 Version linearity-check and lookup-table references per sympy version --- chaste_codegen/tests/conftest.py | 16 ++++++++++++ chaste_codegen/tests/test_linearity_check.py | 9 +++---- chaste_codegen/tests/test_lookup_tables.py | 27 ++++++++++++-------- 3 files changed, 36 insertions(+), 16 deletions(-) diff --git a/chaste_codegen/tests/conftest.py b/chaste_codegen/tests/conftest.py index 4442b0cd..2bdc20e1 100644 --- a/chaste_codegen/tests/conftest.py +++ b/chaste_codegen/tests/conftest.py @@ -52,6 +52,22 @@ def read_versioned_reference(reference_file, sympy_version=None): return content[:-1] if content.endswith('\n') else content +def compare_string_against_reference(actual, reference_file): + """ Check an actual string against its reference. + + The applicable reference is selected by :func:`versioned_reference_path` for + the running sympy version. Setting the ``CHASTE_CODEGEN_REGENERATE_REFERENCES`` + environment variable writes the actual string to a per-sympy-version file + (``.regen..``) instead of asserting, for later use. + """ + if os.environ.get('CHASTE_CODEGEN_REGENERATE_REFERENCES'): + version = '.'.join(sympy.__version__.split('.')[:2]) + with open(reference_file + '.regen.' + version, 'w') as out: + out.write(actual) + return + assert actual == read_versioned_reference(reference_file), reference_file + + cached_models = {} diff --git a/chaste_codegen/tests/test_linearity_check.py b/chaste_codegen/tests/test_linearity_check.py index 04d24ca4..5689658c 100644 --- a/chaste_codegen/tests/test_linearity_check.py +++ b/chaste_codegen/tests/test_linearity_check.py @@ -5,7 +5,7 @@ from chaste_codegen._linearity_check import KINDS, get_non_linear_state_vars, subst_deriv_eqs_non_linear_vars from chaste_codegen._rdf import OXMETA -from chaste_codegen.tests.conftest import TESTS_FOLDER +from chaste_codegen.tests.conftest import TESTS_FOLDER, compare_string_against_reference @pytest.fixture(scope='session') @@ -50,8 +50,8 @@ def test_wrong_params_get_non_linear_state_vars2(derivatives_eqs, membrane_volta def test_get_non_linear_state_vars(non_linear_state_vars): non_linear_state_vars = sorted(non_linear_state_vars, key=lambda s: Printer().doprint(s)) - expected = open(os.path.join(TESTS_FOLDER, 'test_linearity_check_non_linear_state_vars.txt'), 'r').read() - assert str(non_linear_state_vars) == expected, str(non_linear_state_vars) + compare_string_against_reference( + str(non_linear_state_vars), os.path.join(TESTS_FOLDER, 'test_linearity_check_non_linear_state_vars.txt')) def test_wrong_params_subst_deriv_eqs3(): @@ -84,5 +84,4 @@ def test_subst_deriv_eqs_non_linear_vars(s_model, y_derivatives, non_linear_stat deq = subst_deriv_eqs_non_linear_vars(y_derivatives, non_linear_state_vars, membrane_voltage_var, state_vars, s_model.get_equations_for) - expected = open(os.path.join(TESTS_FOLDER, 'test_linearity_check_deq.txt'), 'r').read() - assert str(deq) == expected, str(deq) + compare_string_against_reference(str(deq), os.path.join(TESTS_FOLDER, 'test_linearity_check_deq.txt')) diff --git a/chaste_codegen/tests/test_lookup_tables.py b/chaste_codegen/tests/test_lookup_tables.py index 0763bb01..6434bbd2 100644 --- a/chaste_codegen/tests/test_lookup_tables.py +++ b/chaste_codegen/tests/test_lookup_tables.py @@ -4,7 +4,7 @@ from chaste_codegen._chaste_printer import ChastePrinter from chaste_codegen._lookup_tables import _EXPENSIVE_FUNCTIONS, DEFAULT_LOOKUP_PARAMETERS, LookupTables -from chaste_codegen.tests.conftest import TESTS_FOLDER +from chaste_codegen.tests.conftest import TESTS_FOLDER, compare_string_against_reference def test_defaults(s_model): @@ -38,8 +38,9 @@ def test_no_method_printed_for(s_model): assert params_for_printing[0]['table_used_in_methods'] == set() assert params_for_printing[0]['var'] == 'cell$V' - expected = open(os.path.join(TESTS_FOLDER, 'test_lookup_tables_no_method_printed_for.txt'), 'r').read() - assert str(params_for_printing[0]['lookup_epxrs']) == expected, str(params_for_printing[0]['lookup_epxrs']) + compare_string_against_reference( + str(params_for_printing[0]['lookup_epxrs']), + os.path.join(TESTS_FOLDER, 'test_lookup_tables_no_method_printed_for.txt')) def test_method_printed_for(s_model): @@ -66,8 +67,9 @@ def test_method_printed_for(s_model): assert params_for_printing[0]['table_used_in_methods'] == set({'template_method'}) assert params_for_printing[0]['var'] == 'cell$V' - expected = open(os.path.join(TESTS_FOLDER, 'test_lookup_tables_method_printed_for.txt'), 'r').read() - assert str(params_for_printing[0]['lookup_epxrs']) == expected, str(params_for_printing[0]['lookup_epxrs']) + compare_string_against_reference( + str(params_for_printing[0]['lookup_epxrs']), + os.path.join(TESTS_FOLDER, 'test_lookup_tables_method_printed_for.txt')) def test_nested_method_printed_for(s_model): @@ -95,8 +97,9 @@ def test_nested_method_printed_for(s_model): assert params_for_printing[0]['table_used_in_methods'] == set({'outer_method'}) assert params_for_printing[0]['var'] == 'cell$V' - expected = open(os.path.join(TESTS_FOLDER, 'test_lookup_tables_nested_method_printed_for.txt'), 'r').read() - assert str(params_for_printing[0]['lookup_epxrs']) == expected, str(params_for_printing[0]['lookup_epxrs']) + compare_string_against_reference( + str(params_for_printing[0]['lookup_epxrs']), + os.path.join(TESTS_FOLDER, 'test_lookup_tables_nested_method_printed_for.txt')) def test_multiple_methods_printed_for(s_model): @@ -125,8 +128,9 @@ def test_multiple_methods_printed_for(s_model): assert params_for_printing[0]['table_used_in_methods'] == set({'method1', 'method2'}) assert params_for_printing[0]['var'] == 'cell$V' - expected = open(os.path.join(TESTS_FOLDER, 'test_lookup_tables_multiple_methods_printed_for.txt'), 'r').read() - assert str(params_for_printing[0]['lookup_epxrs']) == expected, str(params_for_printing[0]['lookup_epxrs']) + compare_string_against_reference( + str(params_for_printing[0]['lookup_epxrs']), + os.path.join(TESTS_FOLDER, 'test_lookup_tables_multiple_methods_printed_for.txt')) def test_change_lookup_table(be_model): @@ -157,8 +161,9 @@ def test_change_lookup_table(be_model): assert params_for_printing[0]['table_used_in_methods'] == set({'template_method'}) assert params_for_printing[0]['var'] == 'membrane$V' - expected = open(os.path.join(TESTS_FOLDER, 'test_lookup_tables_change_lookup_table.txt'), 'r').read() - assert str(params_for_printing[0]['lookup_epxrs']) == expected, str(params_for_printing[0]['lookup_epxrs']) + compare_string_against_reference( + str(params_for_printing[0]['lookup_epxrs']), + os.path.join(TESTS_FOLDER, 'test_lookup_tables_change_lookup_table.txt')) assert params_for_printing[1]['metadata_tag'] == 'cytosolic_calcium_concentration' assert params_for_printing[1]['mTableMins'] == 0.0 From 732fce42bae674e83a6c9f5fd5423da433bc7984 Mon Sep 17 00:00:00 2001 From: Kwabena Amponsah Date: Thu, 16 Jul 2026 18:50:03 +0100 Subject: [PATCH 12/13] #285 Add per-sympy-version console-script and string reference variants --- ...manche_ramirez_nattel_1998--sympy_1_11.cpp | 1025 ++++ ...manche_ramirez_nattel_1998--sympy_1_13.cpp | 1025 ++++ ...manche_ramirez_nattel_1998--sympy_1_14.cpp | 1025 ++++ ..._bers_2010_ssBackwardEuler--sympy_1_11.cpp | 2307 ++++++++ ..._bers_2010_ssBackwardEuler--sympy_1_13.cpp | 2307 ++++++++ ..._bers_2010_ssBackwardEuler--sympy_1_14.cpp | 2306 ++++++++ ...manche_ramirez_nattel_1998--sympy_1_11.cpp | 1459 +++++ ...manche_ramirez_nattel_1998--sympy_1_13.cpp | 1459 +++++ ...manche_ramirez_nattel_1998--sympy_1_14.cpp | 1459 +++++ ...Shannon2004_with_modifiers--sympy_1_13.cpp | 1562 +++++ ...Shannon2004_with_modifiers--sympy_1_14.cpp | 1562 +++++ .../dynamic_Shannon2004--sympy_1_13.cpp | 1448 +++++ .../dynamic_Shannon2004--sympy_1_14.cpp | 1448 +++++ ...bers_2010_ssCvodeDataClamp--sympy_1_13.cpp | 1312 +++++ ...bers_2010_ssCvodeDataClamp--sympy_1_14.cpp | 1312 +++++ ...s_2010_ssCvodeDataClampOpt--sympy_1_13.cpp | 1426 +++++ ...s_2010_ssCvodeDataClampOpt--sympy_1_14.cpp | 1426 +++++ ...amic_mahajan_shiferaw_2008--sympy_1_13.cpp | 1050 ++++ ...lanidi_Purkinje_model_2009--sympy_1_13.cpp | 1468 +++++ ...lanidi_Purkinje_model_2009--sympy_1_14.cpp | 1468 +++++ .../dynamic_Shannon2004--sympy_1_11.cpp | 2151 +++++++ .../dynamic_Shannon2004--sympy_1_13.cpp | 2151 +++++++ .../dynamic_Shannon2004--sympy_1_14.cpp | 2163 +++++++ .../dynamic_demir_model_1994--sympy_1_11.cpp | 2832 +++++++++ .../dynamic_demir_model_1994--sympy_1_13.cpp | 2832 +++++++++ .../dynamic_demir_model_1994--sympy_1_14.cpp | 2839 +++++++++ ...ynamic_matsuoka_model_2003--sympy_1_11.cpp | 5092 ++++++++++++++++ ...ynamic_matsuoka_model_2003--sympy_1_13.cpp | 5103 ++++++++++++++++ ...ynamic_matsuoka_model_2003--sympy_1_14.cpp | 5121 +++++++++++++++++ ...dynamic_winslow_model_1999--sympy_1_11.cpp | 3431 +++++++++++ ...dynamic_winslow_model_1999--sympy_1_13.cpp | 3431 +++++++++++ ...dynamic_winslow_model_1999--sympy_1_14.cpp | 3442 +++++++++++ ...viswanathan_model_1999_epi--sympy_1_11.cpp | 3454 +++++++++++ ...viswanathan_model_1999_epi--sympy_1_13.cpp | 3454 +++++++++++ ...viswanathan_model_1999_epi--sympy_1_14.cpp | 3459 +++++++++++ ...ilmour_2002_console_script--sympy_1_13.cpp | 663 +++ ...lanidi_Purkinje_model_2009--sympy_1_13.cpp | 1089 ++++ ...lanidi_Purkinje_model_2009--sympy_1_14.cpp | 1089 ++++ .../Normal/output_class--sympy_1_13.c | 828 +++ ...r_model_1977_lookup_tables--sympy_1_13.cpp | 842 +++ ...lanidi_Purkinje_model_2009--sympy_1_13.cpp | 1443 +++++ ...lanidi_Purkinje_model_2009--sympy_1_14.cpp | 1443 +++++ ...lanidi_Purkinje_model_2009--sympy_1_13.cpp | 1428 +++++ ...lanidi_Purkinje_model_2009--sympy_1_14.cpp | 1428 +++++ ...th_range_cap_dimensionless--sympy_1_13.cpp | 805 +++ ...dynamic_livshitz_rudy_2007--sympy_1_13.cpp | 796 +++ ...dynamic_livshitz_rudy_2007--sympy_1_14.cpp | 796 +++ ...aslanidi_Purkinje_model_2009--sympy_1_13.c | 816 +++ ...aslanidi_Purkinje_model_2009--sympy_1_14.c | 816 +++ ...aslanidi_atrial_model_2009--sympy_1_13.txt | 573 ++ ...aslanidi_atrial_model_2009--sympy_1_14.txt | 573 ++ ..._kim_rasmusson_2004_apical--sympy_1_13.cpp | 1545 +++++ ..._kim_rasmusson_2004_apical--sympy_1_14.cpp | 1545 +++++ .../test_linearity_check_deq--sympy_1_14.txt | 1 + ...tables_change_lookup_table--sympy_1_13.txt | 1 + 55 files changed, 99329 insertions(+) create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_11.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler--sympy_1_11.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_11.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/Shannon2004_with_modifiers--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/Shannon2004_with_modifiers--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/grandi_pasqualini_bers_2010_ssCvodeDataClamp--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/grandi_pasqualini_bers_2010_ssCvodeDataClamp--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/grandi_pasqualini_bers_2010_ssCvodeDataClampOpt--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/grandi_pasqualini_bers_2010_ssCvodeDataClampOpt--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode/dynamic_mahajan_shiferaw_2008--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004--sympy_1_11.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994--sympy_1_11.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003--sympy_1_11.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999--sympy_1_11.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi--sympy_1_11.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Normal/fox_mcharg_gilmour_2002_console_script--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Normal/output_class--sympy_1_13.c create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/Opt/test_luo_rudy_1991_with_range_cap_dimensionless--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/RL_C/aslanidi_Purkinje_model_2009--sympy_1_13.c create mode 100644 chaste_codegen/data/tests/chaste_reference_models/RL_C/aslanidi_Purkinje_model_2009--sympy_1_14.c create mode 100644 chaste_codegen/data/tests/chaste_reference_models/RL_labview/aslanidi_atrial_model_2009--sympy_1_13.txt create mode 100644 chaste_codegen/data/tests/chaste_reference_models/RL_labview/aslanidi_atrial_model_2009--sympy_1_14.txt create mode 100644 chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_13.cpp create mode 100644 chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_14.cpp create mode 100644 chaste_codegen/data/tests/test_linearity_check_deq--sympy_1_14.txt create mode 100644 chaste_codegen/data/tests/test_lookup_tables_change_lookup_table--sympy_1_13.txt diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_11.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_11.cpp new file mode 100644 index 00000000..b19e74cf --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_11.cpp @@ -0,0 +1,1025 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: courtemanche_1998 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEuler) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "dynamic_courtemanche_ramirez_nattel_1998.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractBackwardEulerCardiacCell<8>* Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(p_solver, p_stimulus); +} + +bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered = ModelFactory::Register("dynamic_courtemanche_ramirez_nattel_1998", "BackwardEuler", (ModelFactory::TCreateMethod)Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::CreateMethod); + + + + boost::shared_ptr Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_chaste_interface__membrane__stim_amplitude_converted = -0.002 * HeartConfig::Instance()->GetCapacitance() / var_membrane__Cm_converted; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 2; // millisecond + const double var_chaste_interface__membrane__stim_period = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<8>( + 21, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1; // (var_Ca_leak_current_by_the_NSR__leak_factor) [dimensionless] + this->mParameters[1] = 30; // (var_Ca_release_current_from_JSR__K_rel) [per_millisecond] + this->mParameters[2] = 0.0050000000000000001; // (var_Ca_uptake_current_by_the_NSR__I_up_max) [millimolar_per_millisecond] + this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_standard_ionic_concentrations__Ca_o) [millimolar] + this->mParameters[5] = 5.4000000000000004; // (var_standard_ionic_concentrations__K_o) [millimolar] + this->mParameters[6] = 140; // (var_standard_ionic_concentrations__Na_o) [millimolar] + this->mParameters[7] = 0.12375; // (var_L_type_Ca_channel__g_Ca_L) [nanoS_per_picoF] + this->mParameters[8] = 2; // (var_L_type_Ca_channel_f_Ca_gate__tau_f_Ca) [millisecond] + this->mParameters[9] = 100; // (var_membrane__Cm) [picoF] + this->mParameters[10] = 7.7999999999999998; // (var_fast_sodium_current__g_Na) [nanoS_per_picoF] + this->mParameters[11] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[12] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[13] = 0.089999999999999997; // (var_time_independent_potassium_current__g_K1) [nanoS_per_picoF] + this->mParameters[14] = 0.029411764999999999; // (var_rapid_delayed_rectifier_K_current__g_Kr) [nanoS_per_picoF] + this->mParameters[15] = 0.12941175999999999; // (var_slow_delayed_rectifier_K_current__g_Ks) [nanoS_per_picoF] + this->mParameters[16] = 1600; // (var_Na_Ca_exchanger_current__I_NaCa_max) [picoA_per_picoF] + this->mParameters[17] = 0.16520000000000001; // (var_transient_outward_K_current__g_to) [nanoS_per_picoF] + } + + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::~Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler() + { + } + + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 21; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_background_currents__g_B_Ca = 0.0011310000000000001; // nanoS_per_picoF + const double var_background_currents__g_B_Na = 0.00067443750000000002; // nanoS_per_picoF + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.27500000000000002; // picoA_per_picoF + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] * var_sarcolemmal_calcium_pump_current__i_CaP_max / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_sodium_potassium_pump__Km_K_o = 1.5; // millimolar + const double var_sodium_potassium_pump__Km_Na_i = 10; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.59933873999999998; // picoA_per_picoF + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Ca = (-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = mParameters[9] * var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[5] / ((1 + pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (var_sodium_potassium_pump__Km_K_o + mParameters[5])); // picoA + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_K_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 + const double var_ultrarapid_delayed_rectifier_K_current__g_Kur = 0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V)); // nanoS_per_picoF + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_ultrarapid_delayed_rectifier_K_current__g_Kur * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_exchanger_current__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_delayed_rectifier_K_current__i_Kr_converted + var_slow_delayed_rectifier_K_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_K_current__i_to_converted) * var_membrane__Cm_converted + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Ca + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Na + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump_current__i_CaP + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_ultrarapid_delayed_rectifier_K_current__i_Kur) / var_membrane__Cm_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rResidual[8]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + //output_nonlinear_state_assignments + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; + + //output_equations + const double var_Ca_buffers__CMDN_max = 0.050000000000000003; // millimolar + const double var_Ca_buffers__CSQN_max = 10; // millimolar + const double var_Ca_buffers__Km_CMDN = 0.0023800000000000002; // millimolar + const double var_Ca_buffers__Km_CSQN = 0.80000000000000004; // millimolar + const double var_Ca_buffers__Km_TRPN = 0.00050000000000000001; // millimolar + const double var_Ca_buffers__TRPN_max = 0.070000000000000007; // millimolar + const double var_Ca_leak_current_by_the_NSR__Ca_up_max = 15; // millimolar + const double var_Ca_release_current_from_JSR_u_gate__tau_u = 8; // millisecond + const double var_Ca_uptake_current_by_the_NSR__K_up = 0.00092000000000000003; // millimolar + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_background_currents__g_B_Ca = 0.0011310000000000001; // nanoS_per_picoF + const double var_background_currents__g_B_K = 0; // nanoS_per_picoF + const double var_background_currents__g_B_Na = 0.00067443750000000002; // nanoS_per_picoF + const double var_Ca_uptake_current_by_the_NSR__i_up = mParameters[2] / (1 + var_Ca_uptake_current_by_the_NSR__K_up / var_chaste_interface__intracellular_ion_concentrations__Ca_i); // millimolar_per_millisecond + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca_infinity = 1 / (1 + 2857.1428571428573 * var_chaste_interface__intracellular_ion_concentrations__Ca_i); // dimensionless + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca = (-var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca + var_L_type_Ca_channel_f_Ca_gate__f_Ca_infinity) / mParameters[8]; // 1 / millisecond + const double var_intracellular_ion_concentrations__B2 = 1 + var_Ca_buffers__CMDN_max * var_Ca_buffers__Km_CMDN / pow((var_Ca_buffers__Km_CMDN + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2) + var_Ca_buffers__Km_TRPN * var_Ca_buffers__TRPN_max / pow((var_Ca_buffers__Km_TRPN + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2); // dimensionless + const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond + const double var_Ca_leak_current_by_the_NSR__i_up_leak = mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up / var_Ca_leak_current_by_the_NSR__Ca_up_max; // millimolar_per_millisecond + const double var_intracellular_ion_concentrations__V_cell = 20100; // micrometre_3 + const double var_intracellular_ion_concentrations__V_i = 0.68000000000000005 * var_intracellular_ion_concentrations__V_cell; // micrometre_3 + const double var_intracellular_ion_concentrations__V_rel = 0.0047999999999999996 * var_intracellular_ion_concentrations__V_cell; // micrometre_3 + const double var_intracellular_ion_concentrations__V_up = 0.055199999999999999 * var_intracellular_ion_concentrations__V_cell; // micrometre_3 + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.27500000000000002; // picoA_per_picoF + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] * var_sarcolemmal_calcium_pump_current__i_CaP_max / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_sodium_potassium_pump__Km_K_o = 1.5; // millimolar + const double var_sodium_potassium_pump__Km_Na_i = 10; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.59933873999999998; // picoA_per_picoF + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Ca = (-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Ca_release_current_from_JSR__Fn = 9.9999999999999998e-13 * var_Ca_release_current_from_JSR__i_rel * var_intracellular_ion_concentrations__V_rel - 4.9999999999999999e-13 * (0.5 * var_L_type_Ca_channel__i_Ca_L - 0.20000000000000001 * var_Na_Ca_exchanger_current__i_NaCa) / var_membrane__F; // dimensionless + const double var_Ca_release_current_from_JSR_u_gate__u_infinity = 1 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)); // dimensionless + const double var_Ca_release_current_from_JSR_v_gate__tau_v = 1.9099999999999999 + 2.0899999999999999 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)); // millisecond + const double var_Ca_release_current_from_JSR_v_gate__v_infinity = 1 - 1 / (1 + exp(50 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)); // dimensionless + const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u = (-var_chaste_interface__Ca_release_current_from_JSR_u_gate__u + var_Ca_release_current_from_JSR_u_gate__u_infinity) / var_Ca_release_current_from_JSR_u_gate__tau_u; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v = (-var_chaste_interface__Ca_release_current_from_JSR_v_gate__v + var_Ca_release_current_from_JSR_v_gate__v_infinity) / var_Ca_release_current_from_JSR_v_gate__tau_v; // 1 / millisecond + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_intracellular_ion_concentrations__B1 = ((-var_Ca_uptake_current_by_the_NSR__i_up + var_Ca_leak_current_by_the_NSR__i_up_leak) * var_intracellular_ion_concentrations__V_up + var_Ca_release_current_from_JSR__i_rel * var_intracellular_ion_concentrations__V_rel) / var_intracellular_ion_concentrations__V_i + 0.5 * (-var_L_type_Ca_channel__i_Ca_L - var_background_currents__i_B_Ca - var_sarcolemmal_calcium_pump_current__i_CaP + 2 * var_Na_Ca_exchanger_current__i_NaCa) / (var_intracellular_ion_concentrations__V_i * var_membrane__F); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = var_intracellular_ion_concentrations__B1 / var_intracellular_ion_concentrations__B2; // millimolar / millisecond + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = mParameters[9] * var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[5] / ((1 + pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (var_sodium_potassium_pump__Km_K_o + mParameters[5])); // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = (-var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - 3 * var_Na_Ca_exchanger_current__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) * mParameters[3] / (var_intracellular_ion_concentrations__V_i * var_membrane__F); // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_K = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_background_currents__g_B_K * mParameters[9]; // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA + const double var_transfer_current_from_NSR_to_JSR__tau_tr = 180; // millisecond + const double var_transfer_current_from_NSR_to_JSR__i_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_up) / var_transfer_current_from_NSR_to_JSR__tau_tr; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel = (-var_Ca_release_current_from_JSR__i_rel + var_transfer_current_from_NSR_to_JSR__i_tr) / (1 + var_Ca_buffers__CSQN_max * var_Ca_buffers__Km_CSQN / pow((var_Ca_buffers__Km_CSQN + var_chaste_interface__intracellular_ion_concentrations__Ca_rel), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up = -var_Ca_leak_current_by_the_NSR__i_up_leak - var_intracellular_ion_concentrations__V_rel * var_transfer_current_from_NSR_to_JSR__i_tr / var_intracellular_ion_concentrations__V_up + var_Ca_uptake_current_by_the_NSR__i_up; // millimolar / millisecond + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_ultrarapid_delayed_rectifier_K_current__g_Kur = 0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V)); // nanoS_per_picoF + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_ultrarapid_delayed_rectifier_K_current__g_Kur * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = (-var_background_currents__i_B_K - var_rapid_delayed_rectifier_K_current__i_Kr - var_slow_delayed_rectifier_K_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur + 2 * var_sodium_potassium_pump__i_NaK) * mParameters[3] / (var_intracellular_ion_concentrations__V_i * var_membrane__F); // millimolar / millisecond + + rResidual[3] = rCurrentGuess[3] - rY[1] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i; + rResidual[2] = rCurrentGuess[2] - rY[13] - mDt*d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca; + rResidual[0] = rCurrentGuess[0] - rY[14] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u; + rResidual[1] = rCurrentGuess[1] - rY[15] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v; + rResidual[7] = rCurrentGuess[7] - rY[17] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rResidual[6] = rCurrentGuess[6] - rY[18] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rResidual[4] = rCurrentGuess[4] - rY[19] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel; + rResidual[5] = rCurrentGuess[5] - rY[20] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rJacobian[8][8]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; + + const double var_x0 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; + const double var_x1 = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2); + const double var_x2 = var_x1 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; + const double var_x3 = var_x2 * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v; + const double var_x4 = 70577.907827359188 * var_x3; + const double var_x5 = exp(-0.024332874996168673 * var_chaste_interface__membrane__V); + const double var_x6 = pow(mParameters[6], 3); + const double var_x7 = var_x5 * var_x6; + const double var_x8 = exp(0.013102317305629283 * var_chaste_interface__membrane__V); + const double var_x9 = -var_x7 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_x8 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4]; + const double var_x10 = 1 / (1 + 0.10000000000000001 * var_x5); + const double var_x11 = 1 / (669921.875 + var_x6); + const double var_x12 = 1 / (1.3799999999999999 + mParameters[4]); + const double var_x13 = var_x10 * var_x11 * var_x12 * mParameters[16] * mParameters[9]; + const double var_x14 = -65 + var_chaste_interface__membrane__V; + const double var_x15 = var_x0 * var_x4 + 0.75816552477322585 * var_x13 * var_x9 - 1.8954138119330646 * var_x14 * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; + const double var_x16 = exp(250 - var_x15); + const double var_x17 = 1 + var_x16; + const double var_x18 = var_x16 / pow(var_x17, 2); + const double var_x19 = var_x0 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_u_gate__u * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; + const double var_x20 = var_x18 * var_x19; + const double var_x21 = var_x0 * var_x2; + const double var_x22 = 8822.2384784198985 * var_x18; + const double var_x23 = var_x14 * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; + const double var_x24 = var_x18 * var_x23; + const double var_x25 = var_x13 * var_x7; + const double var_x26 = var_x4 + 0.75816552477322585 * var_x25; + const double var_x27 = var_x18 * var_x26; + const double var_x28 = var_x13 * var_x8 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2) * mParameters[4]; + const double var_x29 = 1 / var_x17; + const double var_x30 = 1 / (1.9099999999999999 + 2.0899999999999999 * var_x29); + const double var_x31 = exp(50 - var_x15); + const double var_x32 = 1 + var_x31; + const double var_x33 = var_x31 / pow(var_x32, 2); + const double var_x34 = var_x30 * var_x33; + const double var_x35 = (1 - 1 / var_x32 - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / pow((0.9138755980861244 + var_x29), 2); + const double var_x36 = var_x18 * var_x35; + const double var_x37 = 33769.333888688605 * var_x36; + const double var_x38 = 1 / mParameters[8]; + const double var_x39 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x40 = 0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x41 = pow(var_x40, (-2)); + const double var_x42 = 1 + 0.00011900000000000002 / pow(var_x39, 2) + 3.5000000000000004e-5 * var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x45 = 1.0426301393780176e-7 * mParameters[9] / var_x40; + const double var_x46 = 1 + 0.00092000000000000003 * var_x44; + const double var_x47 = mParameters[2] / (pow(var_x46, 2) * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 2)); + const double var_x48 = 0.0070588235294117632 * var_x3; + const double var_x49 = mParameters[0] * mParameters[2]; + const double var_x50 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; + const double var_x51 = pow(var_x50, (-2)); + const double var_x52 = 1 / (1 + 8 * var_x51); + const double var_x53 = 26.712831923985377 * mParameters[9] / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x54 = 7.5827646500219453e-7 * mParameters[3]; + const double var_x55 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x56 = pow(var_x55, 1.5); + const double var_x57 = var_x55 * mParameters[9]; + const double var_x58 = var_x56 * var_x57 * mParameters[5] / ((1.5 + mParameters[5]) * pow((0.031622776601683791 + var_x56), 2) * (1 + 0.1245 * exp(-0.0037435192301797956 * var_chaste_interface__membrane__V) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * exp(-0.037435192301797954 * var_chaste_interface__membrane__V))); + + + rJacobian[0][0] = 1.0 - (mDt * (-0.125 + 17644.476956839797 * var_x20)); + rJacobian[0][1] = -(mDt * (var_x21 * var_x22)); + rJacobian[0][2] = -(mDt * (-0.23692672649163307 * var_x24)); + rJacobian[0][3] = -(mDt * (-0.125 * var_x27)); + rJacobian[0][4] = -(mDt * (var_x22 * var_x3)); + rJacobian[0][5] = 0.0; + rJacobian[0][6] = 0.0; + rJacobian[0][7] = -(mDt * (0.28431207178995971 * var_x18 * var_x28)); + rJacobian[1][0] = -(mDt * (-141155.81565471838 * var_x19 * var_x34 - 67538.66777737721 * var_x20 * var_x35)); + rJacobian[1][1] = 1.0 - (mDt * (var_x30 * (-1 - 70577.907827359188 * var_x21 * var_x33) - var_x21 * var_x37)); + rJacobian[1][2] = -(mDt * (0.90689656073352376 * var_x24 * var_x35 + 1.8954138119330646 * var_x23 * var_x34)); + rJacobian[1][3] = -(mDt * (var_x26 * var_x34 + 0.47846889952153115 * var_x27 * var_x35)); + rJacobian[1][4] = -(mDt * (-var_x3 * var_x37 - var_x34 * var_x4)); + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = -(mDt * (-1.0882758728802286 * var_x28 * var_x36 - 2.2744965743196777 * var_x28 * var_x34)); + rJacobian[2][0] = 0.0; + rJacobian[2][1] = 0.0; + rJacobian[2][2] = 1.0 - (mDt * (-var_x38)); + rJacobian[2][3] = -(mDt * (-0.00035 * var_x38 / pow((0.00035 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2))); + rJacobian[2][4] = 0.0; + rJacobian[2][5] = 0.0; + rJacobian[2][6] = 0.0; + rJacobian[2][7] = 0.0; + rJacobian[3][0] = -(mDt * (0.014117647058823526 * var_x19 * var_x43)); + rJacobian[3][1] = -(mDt * (0.0070588235294117632 * var_x21 * var_x43)); + rJacobian[3][2] = -(mDt * (-3.7913823250109726e-7 * var_x23 * var_x43)); + rJacobian[3][3] = 1.0 - (mDt * (var_x43 * (-var_x45 - var_x48 - 7.4682352941176462e-5 * var_x47 - 7.5827646500219453e-7 * var_x25 - 5.7273025005690459e-9 * var_x44 * mParameters[9] + 1.0426301393780176e-7 * var_x41 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9]) + (0.00023800000000000004 / pow(var_x39, 3) + 7.0000000000000007e-5 / pow(var_x40, 3)) * (-var_x45 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.081176470588235281 * mParameters[2] / var_x46 - 3.7913823250109726e-7 * var_x23 * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca - 4.2880534095874102e-10 * (-13.356415961992688 * log(var_x44 * mParameters[4]) + var_chaste_interface__membrane__V) * mParameters[9] + 0.0054117647058823529 * mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up + 0.0070588235294117632 * var_x0 * var_x1 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + 7.5827646500219453e-7 * var_x10 * var_x11 * var_x12 * var_x9 * mParameters[16] * mParameters[9]) / pow(var_x42, 2))); + rJacobian[3][4] = -(mDt * (var_x43 * var_x48)); + rJacobian[3][5] = -(mDt * (0.0054117647058823529 * var_x43 * var_x49)); + rJacobian[3][6] = 0.0; + rJacobian[3][7] = -(mDt * (2.2748293950065834e-6 * var_x28 * var_x43)); + rJacobian[4][0] = -(mDt * (-2 * var_x19 * var_x52)); + rJacobian[4][1] = -(mDt * (-var_x21 * var_x52)); + rJacobian[4][2] = 0.0; + rJacobian[4][3] = -(mDt * (var_x3 * var_x52)); + rJacobian[4][4] = 1.0 - (mDt * (var_x52 * (-0.0055555555555555558 - var_x3) + 0.25 * (0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_rel - var_x0 * var_x3) / (pow(var_x50, 3) * pow((0.125 + var_x51), 2)))); + rJacobian[4][5] = -(mDt * (0.0055555555555555558 * var_x52)); + rJacobian[4][6] = 0.0; + rJacobian[4][7] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = 0.0; + rJacobian[5][3] = -(mDt * (0.00092000000000000003 * var_x47)); + rJacobian[5][4] = -(mDt * (0.00048309178743961351)); + rJacobian[5][5] = 1.0 - (mDt * (-0.00048309178743961351 - 0.066666666666666666 * var_x49)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (var_x54 * (-var_x53 * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)) - var_x53 * pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * mParameters[15] - var_x53 * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)) - var_x53 * pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi - var_x53 * pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V))) * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui))); + rJacobian[6][7] = -(mDt * (4.3114284380885533e-8 * var_x58 * mParameters[3])); + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = -(mDt * (2.2748293950065834e-6 * var_x25 * mParameters[3])); + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (var_x54 * (-9 * var_x28 - 0.018016135580732888 * var_x57 - 0.085287397876895904 * var_x58 - 26.712831923985377 * var_x57 * pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j))); + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_background_currents__g_B_Ca = 0.0011310000000000001; // nanoS_per_picoF + const double var_background_currents__g_B_Na = 0.00067443750000000002; // nanoS_per_picoF + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_membrane__i_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_st = 1000000 * var_membrane__Cm_converted * var_membrane__i_st_converted / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.27500000000000002; // picoA_per_picoF + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] * var_sarcolemmal_calcium_pump_current__i_CaP_max / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_sodium_potassium_pump__Km_K_o = 1.5; // millimolar + const double var_sodium_potassium_pump__Km_Na_i = 10; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.59933873999999998; // picoA_per_picoF + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Ca = (-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = mParameters[9] * var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[5] / ((1 + pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (var_sodium_potassium_pump__Km_K_o + mParameters[5])); // picoA + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_ultrarapid_delayed_rectifier_K_current__g_Kur = 0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V)); // nanoS_per_picoF + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_ultrarapid_delayed_rectifier_K_current__g_Kur * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double d_dt_chaste_interface_var_membrane__V = (-var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger_current__i_NaCa - var_background_currents__i_B_Ca - var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - var_membrane__i_st - var_rapid_delayed_rectifier_K_current__i_Kr - var_sarcolemmal_calcium_pump_current__i_CaP - var_slow_delayed_rectifier_K_current__i_Ks - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur) / mParameters[9]; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + const double var_Ca_release_current_from_JSR_w_gate__tau_w = ((fabs(-7.9000000000000004 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.92307692307692313) : (6 * (1 - exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) / ((1 + 0.29999999999999999 * exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) * (-7.9000000000000004 + var_chaste_interface__membrane__V)))); + const double var_Ca_release_current_from_JSR_w_gate__w_infinity = 1 - 1 / (1 + exp(2.3529411764705883 - 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-1.25 - 0.125 * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(10 + var_chaste_interface__membrane__V) < 1.0e-10) ? (4.5789999999999997 / (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V))) : (28.571428571428569 * (1 - exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) / ((1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) * (10 + var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_f_gate__f_infinity = exp(-4.057971014492753 - 0.14492753623188406 * var_chaste_interface__membrane__V) / (1 + exp(-4.057971014492753 - 0.14492753623188406 * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_f_gate__tau_f = 9 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); + const double var_fast_sodium_current_m_gate__alpha_m = ((var_chaste_interface__membrane__V == (-47.130000000000003)) ? (3.2000000000000002) : (0.32000000000000001 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); + const double var_fast_sodium_current_m_gate__m_inf = var_fast_sodium_current_m_gate__alpha_m / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); + const double var_fast_sodium_current_m_gate__tau_m = 1 / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); + const double var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr = ((fabs(14.1 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.0015) : (0.00029999999999999997 * (14.1 + var_chaste_interface__membrane__V) / (1 - exp(-2.8199999999999998 - 0.20000000000000001 * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr = ((fabs(-3.3328000000000002 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00037836118) : (7.3898000000000003e-5 * (-3.3328000000000002 + var_chaste_interface__membrane__V) / (-1 + exp(-0.65046743564221166 + 0.19517145812596365 * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr = 1 / (var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr + var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr); + const double var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity = 1 / (1 + exp(-2.1692307692307691 - 0.15384615384615385 * var_chaste_interface__membrane__V)); + const double var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00068000000000000005) : (4.0000000000000003e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (1 - exp(1.1705882352941175 - 0.058823529411764705 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__beta_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00031500000000000001) : (3.4999999999999997e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-2.2111111111111108 + 0.1111111111111111 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__tau_xs = 0.5 / (var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs + var_slow_delayed_rectifier_K_current_xs_gate__beta_xs); + const double var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity = pow((1 + exp(1.5669291338582676 - 0.07874015748031496 * var_chaste_interface__membrane__V)), (-0.5)); + const double var_transient_outward_K_current__K_Q10 = 3; + const double var_transient_outward_K_current_oa_gate__alpha_oa = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__beta_oa = 0.65000000000000002 / (2.5 + exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__oa_infinity = 1 / (1 + exp(-1.1670467502850628 - 0.057012542759407071 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__tau_oa = 1 / ((var_transient_outward_K_current_oa_gate__alpha_oa + var_transient_outward_K_current_oa_gate__beta_oa) * var_transient_outward_K_current__K_Q10); + const double var_transient_outward_K_current_oi_gate__alpha_oi = 1 / (18.530000000000001 + exp(10.383561643835618 + 0.091324200913242018 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__beta_oi = 1 / (35.560000000000002 + exp(-0.16935483870967738 - 0.13440860215053763 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__oi_infinity = 1 / (1 + exp(8.1320754716981138 + 0.18867924528301888 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__tau_oi = 1 / ((var_transient_outward_K_current_oi_gate__alpha_oi + var_transient_outward_K_current_oi_gate__beta_oi) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua = 0.65000000000000002 / (2.5 + exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua + var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity = 1 / (1 + exp(-3.15625 - 0.10416666666666667 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui = 1 / (21 + exp(6.6071428571428568 - 0.035714285714285712 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui = 1 / exp(9.875 - 0.0625 * var_chaste_interface__membrane__V); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui + var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity = 1 / (1 + exp(-3.6189956331877728 + 0.036390101892285295 * var_chaste_interface__membrane__V)); + + + rY[16] = (var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + ((var_Ca_release_current_from_JSR_w_gate__w_infinity / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)) / (1.0 - ((-1 / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)); + rY[11] = (var_chaste_interface__L_type_Ca_channel_d_gate__d + ((var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_d_gate__tau_d) * mDt)); + rY[12] = (var_chaste_interface__L_type_Ca_channel_f_gate__f + ((var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_f_gate__tau_f) * mDt)); + rY[3] = (var_chaste_interface__fast_sodium_current_h_gate__h + ((var_fast_sodium_current_h_gate__h_inf / var_fast_sodium_current_h_gate__tau_h) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_h_gate__tau_h) * mDt)); + rY[4] = (var_chaste_interface__fast_sodium_current_j_gate__j + ((var_fast_sodium_current_j_gate__j_inf / var_fast_sodium_current_j_gate__tau_j) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_j_gate__tau_j) * mDt)); + rY[2] = (var_chaste_interface__fast_sodium_current_m_gate__m + ((var_fast_sodium_current_m_gate__m_inf / var_fast_sodium_current_m_gate__tau_m) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_m_gate__tau_m) * mDt)); + rY[9] = (var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr + ((var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)) / (1.0 - ((-1 / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)); + rY[10] = (var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs + ((var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)) / (1.0 - ((-1 / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)); + rY[5] = (var_chaste_interface__transient_outward_K_current_oa_gate__oa + ((var_transient_outward_K_current_oa_gate__oa_infinity / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)); + rY[6] = (var_chaste_interface__transient_outward_K_current_oi_gate__oi + ((var_transient_outward_K_current_oi_gate__oi_infinity / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)); + rY[7] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua + ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)); + rY[8] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui + ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)); + + double _guess[8] = {rY[14],rY[15],rY[13],rY[1],rY[19],rY[20],rY[18],rY[17]}; + CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[14] = _guess[0]; + rY[15] = _guess[1]; + rY[13] = _guess[2]; + rY[1] = _guess[3]; + rY[19] = _guess[4]; + rY[20] = _guess[5]; + rY[18] = _guess[6]; + rY[17] = _guess[7]; + } + + std::vector Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rY[14]; + // Units: dimensionless; Initial value: 2.35e-112 + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rY[15]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rY[19]; + // Units: millimolar; Initial value: 1.488 + + // Mathematics + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_L_type_Ca_channel_f_gate__tau_f = 9 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); // millisecond + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // millisecond + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // millisecond + const double var_membrane__i_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_K_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 + + std::vector dqs(14); + dqs[0] = var_Ca_release_current_from_JSR__i_rel; + dqs[1] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[2] = var_L_type_Ca_channel_f_gate__tau_f; + dqs[3] = var_membrane__Cm_converted; + dqs[4] = var_fast_sodium_current__i_Na_converted; + dqs[5] = var_fast_sodium_current_h_gate__tau_h; + dqs[6] = var_fast_sodium_current_j_gate__tau_j; + dqs[7] = var_time_independent_potassium_current__i_K1_converted; + dqs[8] = var_rapid_delayed_rectifier_K_current__i_Kr_converted; + dqs[9] = var_slow_delayed_rectifier_K_current__i_Ks_converted; + dqs[10] = var_Na_Ca_exchanger_current__i_NaCa_converted; + dqs[11] = var_membrane__i_st_converted; + dqs[12] = var_transient_outward_K_current__i_to_converted; + dqs[13] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "courtemanche_1998"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-81.18); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0001013); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002908); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9649); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9775); + + // rY[5]: + this->mVariableNames.push_back("transient_outward_K_current_oa_gate__oa"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.03043); + + // rY[6]: + this->mVariableNames.push_back("transient_outward_K_current_oi_gate__oi"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9992); + + // rY[7]: + this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ua_gate__ua"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.004966); + + // rY[8]: + this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ui_gate__ui"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9986); + + // rY[9]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_current_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.296e-05); + + // rY[10]: + this->mVariableNames.push_back("slow_delayed_rectifier_K_current_xs_gate__xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01869); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0001367); + + // rY[12]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9996); + + // rY[13]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7755); + + // rY[14]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_u_gate__u"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.35e-112); + + // rY[15]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_v_gate__v"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[16]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_w_gate__w"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9992); + + // rY[17]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(11.17); + + // rY[18]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(139.0); + + // rY[19]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.488); + + // rY[20]: + this->mVariableNames.push_back("intracellular_ion_concentrations__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.488); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mParameterUnits.push_back("millisecond"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane__Cm"); + this->mParameterUnits.push_back("picoF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_13.cpp new file mode 100644 index 00000000..33566d26 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_13.cpp @@ -0,0 +1,1025 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: courtemanche_1998 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEuler) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "dynamic_courtemanche_ramirez_nattel_1998.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractBackwardEulerCardiacCell<8>* Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(p_solver, p_stimulus); +} + +bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered = ModelFactory::Register("dynamic_courtemanche_ramirez_nattel_1998", "BackwardEuler", (ModelFactory::TCreateMethod)Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::CreateMethod); + + + + boost::shared_ptr Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_chaste_interface__membrane__stim_amplitude_converted = -0.002 * HeartConfig::Instance()->GetCapacitance() / var_membrane__Cm_converted; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 2; // millisecond + const double var_chaste_interface__membrane__stim_period = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<8>( + 21, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1; // (var_Ca_leak_current_by_the_NSR__leak_factor) [dimensionless] + this->mParameters[1] = 30; // (var_Ca_release_current_from_JSR__K_rel) [per_millisecond] + this->mParameters[2] = 0.0050000000000000001; // (var_Ca_uptake_current_by_the_NSR__I_up_max) [millimolar_per_millisecond] + this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_standard_ionic_concentrations__Ca_o) [millimolar] + this->mParameters[5] = 5.4000000000000004; // (var_standard_ionic_concentrations__K_o) [millimolar] + this->mParameters[6] = 140; // (var_standard_ionic_concentrations__Na_o) [millimolar] + this->mParameters[7] = 0.12375; // (var_L_type_Ca_channel__g_Ca_L) [nanoS_per_picoF] + this->mParameters[8] = 2; // (var_L_type_Ca_channel_f_Ca_gate__tau_f_Ca) [millisecond] + this->mParameters[9] = 100; // (var_membrane__Cm) [picoF] + this->mParameters[10] = 7.7999999999999998; // (var_fast_sodium_current__g_Na) [nanoS_per_picoF] + this->mParameters[11] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[12] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[13] = 0.089999999999999997; // (var_time_independent_potassium_current__g_K1) [nanoS_per_picoF] + this->mParameters[14] = 0.029411764999999999; // (var_rapid_delayed_rectifier_K_current__g_Kr) [nanoS_per_picoF] + this->mParameters[15] = 0.12941175999999999; // (var_slow_delayed_rectifier_K_current__g_Ks) [nanoS_per_picoF] + this->mParameters[16] = 1600; // (var_Na_Ca_exchanger_current__I_NaCa_max) [picoA_per_picoF] + this->mParameters[17] = 0.16520000000000001; // (var_transient_outward_K_current__g_to) [nanoS_per_picoF] + } + + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::~Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler() + { + } + + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 21; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_background_currents__g_B_Ca = 0.0011310000000000001; // nanoS_per_picoF + const double var_background_currents__g_B_Na = 0.00067443750000000002; // nanoS_per_picoF + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.27500000000000002; // picoA_per_picoF + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] * var_sarcolemmal_calcium_pump_current__i_CaP_max / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_sodium_potassium_pump__Km_K_o = 1.5; // millimolar + const double var_sodium_potassium_pump__Km_Na_i = 10; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.59933873999999998; // picoA_per_picoF + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Ca = (-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * mParameters[9] * var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[5] / ((1 + pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (var_sodium_potassium_pump__Km_K_o + mParameters[5])); // picoA + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_K_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 + const double var_ultrarapid_delayed_rectifier_K_current__g_Kur = 0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V)); // nanoS_per_picoF + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_ultrarapid_delayed_rectifier_K_current__g_Kur * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_exchanger_current__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_delayed_rectifier_K_current__i_Kr_converted + var_slow_delayed_rectifier_K_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_K_current__i_to_converted) * var_membrane__Cm_converted + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Ca + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Na + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump_current__i_CaP + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_ultrarapid_delayed_rectifier_K_current__i_Kur) / var_membrane__Cm_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rResidual[8]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + //output_nonlinear_state_assignments + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; + + //output_equations + const double var_Ca_buffers__CMDN_max = 0.050000000000000003; // millimolar + const double var_Ca_buffers__CSQN_max = 10; // millimolar + const double var_Ca_buffers__Km_CMDN = 0.0023800000000000002; // millimolar + const double var_Ca_buffers__Km_CSQN = 0.80000000000000004; // millimolar + const double var_Ca_buffers__Km_TRPN = 0.00050000000000000001; // millimolar + const double var_Ca_buffers__TRPN_max = 0.070000000000000007; // millimolar + const double var_Ca_leak_current_by_the_NSR__Ca_up_max = 15; // millimolar + const double var_Ca_release_current_from_JSR_u_gate__tau_u = 8; // millisecond + const double var_Ca_uptake_current_by_the_NSR__K_up = 0.00092000000000000003; // millimolar + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_background_currents__g_B_Ca = 0.0011310000000000001; // nanoS_per_picoF + const double var_background_currents__g_B_K = 0; // nanoS_per_picoF + const double var_background_currents__g_B_Na = 0.00067443750000000002; // nanoS_per_picoF + const double var_Ca_uptake_current_by_the_NSR__i_up = mParameters[2] / (1 + var_Ca_uptake_current_by_the_NSR__K_up / var_chaste_interface__intracellular_ion_concentrations__Ca_i); // millimolar_per_millisecond + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca_infinity = 0.00035 / (0.00035 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // dimensionless + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca = (-var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca + var_L_type_Ca_channel_f_Ca_gate__f_Ca_infinity) / mParameters[8]; // 1 / millisecond + const double var_intracellular_ion_concentrations__B2 = 1 + var_Ca_buffers__CMDN_max * var_Ca_buffers__Km_CMDN / pow((var_Ca_buffers__Km_CMDN + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2) + var_Ca_buffers__Km_TRPN * var_Ca_buffers__TRPN_max / pow((var_Ca_buffers__Km_TRPN + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2); // dimensionless + const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond + const double var_Ca_leak_current_by_the_NSR__i_up_leak = mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up / var_Ca_leak_current_by_the_NSR__Ca_up_max; // millimolar_per_millisecond + const double var_intracellular_ion_concentrations__V_cell = 20100; // micrometre_3 + const double var_intracellular_ion_concentrations__V_i = 0.68000000000000005 * var_intracellular_ion_concentrations__V_cell; // micrometre_3 + const double var_intracellular_ion_concentrations__V_rel = 0.0047999999999999996 * var_intracellular_ion_concentrations__V_cell; // micrometre_3 + const double var_intracellular_ion_concentrations__V_up = 0.055199999999999999 * var_intracellular_ion_concentrations__V_cell; // micrometre_3 + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.27500000000000002; // picoA_per_picoF + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] * var_sarcolemmal_calcium_pump_current__i_CaP_max / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_sodium_potassium_pump__Km_K_o = 1.5; // millimolar + const double var_sodium_potassium_pump__Km_Na_i = 10; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.59933873999999998; // picoA_per_picoF + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Ca = (-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Ca_release_current_from_JSR__Fn = 9.9999999999999998e-13 * var_Ca_release_current_from_JSR__i_rel * var_intracellular_ion_concentrations__V_rel - 4.9999999999999999e-13 * (0.5 * var_L_type_Ca_channel__i_Ca_L - 0.20000000000000001 * var_Na_Ca_exchanger_current__i_NaCa) / var_membrane__F; // dimensionless + const double var_Ca_release_current_from_JSR_u_gate__u_infinity = 1 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)); // dimensionless + const double var_Ca_release_current_from_JSR_v_gate__tau_v = 1.9099999999999999 + 2.0899999999999999 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)); // millisecond + const double var_Ca_release_current_from_JSR_v_gate__v_infinity = 1 - 1 / (1 + exp(50 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)); // dimensionless + const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u = (-var_chaste_interface__Ca_release_current_from_JSR_u_gate__u + var_Ca_release_current_from_JSR_u_gate__u_infinity) / var_Ca_release_current_from_JSR_u_gate__tau_u; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v = (-var_chaste_interface__Ca_release_current_from_JSR_v_gate__v + var_Ca_release_current_from_JSR_v_gate__v_infinity) / var_Ca_release_current_from_JSR_v_gate__tau_v; // 1 / millisecond + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_intracellular_ion_concentrations__B1 = ((-var_Ca_uptake_current_by_the_NSR__i_up + var_Ca_leak_current_by_the_NSR__i_up_leak) * var_intracellular_ion_concentrations__V_up + var_Ca_release_current_from_JSR__i_rel * var_intracellular_ion_concentrations__V_rel) / var_intracellular_ion_concentrations__V_i + 0.5 * (-var_L_type_Ca_channel__i_Ca_L - var_background_currents__i_B_Ca - var_sarcolemmal_calcium_pump_current__i_CaP + 2 * var_Na_Ca_exchanger_current__i_NaCa) / (var_intracellular_ion_concentrations__V_i * var_membrane__F); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = var_intracellular_ion_concentrations__B1 / var_intracellular_ion_concentrations__B2; // millimolar / millisecond + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * mParameters[9] * var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[5] / ((1 + pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (var_sodium_potassium_pump__Km_K_o + mParameters[5])); // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = (-var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - 3 * var_Na_Ca_exchanger_current__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) * mParameters[3] / (var_intracellular_ion_concentrations__V_i * var_membrane__F); // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_K = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_background_currents__g_B_K * mParameters[9]; // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA + const double var_transfer_current_from_NSR_to_JSR__tau_tr = 180; // millisecond + const double var_transfer_current_from_NSR_to_JSR__i_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_up) / var_transfer_current_from_NSR_to_JSR__tau_tr; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel = (-var_Ca_release_current_from_JSR__i_rel + var_transfer_current_from_NSR_to_JSR__i_tr) / (1 + var_Ca_buffers__CSQN_max * var_Ca_buffers__Km_CSQN / pow((var_Ca_buffers__Km_CSQN + var_chaste_interface__intracellular_ion_concentrations__Ca_rel), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up = -var_Ca_leak_current_by_the_NSR__i_up_leak - var_intracellular_ion_concentrations__V_rel * var_transfer_current_from_NSR_to_JSR__i_tr / var_intracellular_ion_concentrations__V_up + var_Ca_uptake_current_by_the_NSR__i_up; // millimolar / millisecond + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_ultrarapid_delayed_rectifier_K_current__g_Kur = 0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V)); // nanoS_per_picoF + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_ultrarapid_delayed_rectifier_K_current__g_Kur * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = (-var_background_currents__i_B_K - var_rapid_delayed_rectifier_K_current__i_Kr - var_slow_delayed_rectifier_K_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur + 2 * var_sodium_potassium_pump__i_NaK) * mParameters[3] / (var_intracellular_ion_concentrations__V_i * var_membrane__F); // millimolar / millisecond + + rResidual[3] = rCurrentGuess[3] - rY[1] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i; + rResidual[2] = rCurrentGuess[2] - rY[13] - mDt*d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca; + rResidual[0] = rCurrentGuess[0] - rY[14] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u; + rResidual[1] = rCurrentGuess[1] - rY[15] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v; + rResidual[7] = rCurrentGuess[7] - rY[17] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rResidual[6] = rCurrentGuess[6] - rY[18] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rResidual[4] = rCurrentGuess[4] - rY[19] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel; + rResidual[5] = rCurrentGuess[5] - rY[20] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rJacobian[8][8]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; + + const double var_x0 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; + const double var_x1 = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2); + const double var_x2 = var_x1 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; + const double var_x3 = var_x2 * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v; + const double var_x4 = 70577.907827359188 * var_x3; + const double var_x5 = exp(-0.024332874996168673 * var_chaste_interface__membrane__V); + const double var_x6 = pow(mParameters[6], 3); + const double var_x7 = var_x5 * var_x6; + const double var_x8 = exp(0.013102317305629283 * var_chaste_interface__membrane__V); + const double var_x9 = -var_x7 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_x8 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4]; + const double var_x10 = 1 / (1 + 0.10000000000000001 * var_x5); + const double var_x11 = 1 / (669921.875 + var_x6); + const double var_x12 = 1 / (1.3799999999999999 + mParameters[4]); + const double var_x13 = var_x10 * var_x11 * var_x12 * mParameters[16] * mParameters[9]; + const double var_x14 = -65 + var_chaste_interface__membrane__V; + const double var_x15 = var_x0 * var_x4 + 0.75816552477322585 * var_x13 * var_x9 - 1.8954138119330646 * var_x14 * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; + const double var_x16 = exp(250 - var_x15); + const double var_x17 = 1 + var_x16; + const double var_x18 = var_x16 / pow(var_x17, 2); + const double var_x19 = var_x0 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_u_gate__u * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; + const double var_x20 = var_x18 * var_x19; + const double var_x21 = var_x0 * var_x2; + const double var_x22 = 8822.2384784198985 * var_x18; + const double var_x23 = var_x14 * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; + const double var_x24 = var_x18 * var_x23; + const double var_x25 = var_x13 * var_x7; + const double var_x26 = var_x4 + 0.75816552477322585 * var_x25; + const double var_x27 = var_x18 * var_x26; + const double var_x28 = var_x13 * var_x8 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2) * mParameters[4]; + const double var_x29 = 1 / var_x17; + const double var_x30 = 1 / (1.9099999999999999 + 2.0899999999999999 * var_x29); + const double var_x31 = exp(50 - var_x15); + const double var_x32 = 1 + var_x31; + const double var_x33 = var_x31 / pow(var_x32, 2); + const double var_x34 = var_x30 * var_x33; + const double var_x35 = (1 - 1 / var_x32 - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / pow((0.9138755980861244 + var_x29), 2); + const double var_x36 = var_x18 * var_x35; + const double var_x37 = 33769.333888688605 * var_x36; + const double var_x38 = 1 / mParameters[8]; + const double var_x39 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x40 = 0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x41 = pow(var_x40, (-2)); + const double var_x42 = 1 + 0.00011900000000000002 / pow(var_x39, 2) + 3.5000000000000004e-5 * var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x45 = 1.0426301393780176e-7 * mParameters[9] / var_x40; + const double var_x46 = 1 + 0.00092000000000000003 * var_x44; + const double var_x47 = mParameters[2] / (pow(var_x46, 2) * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 2)); + const double var_x48 = 0.0070588235294117632 * var_x3; + const double var_x49 = mParameters[0] * mParameters[2]; + const double var_x50 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; + const double var_x51 = pow(var_x50, (-2)); + const double var_x52 = 1 / (1 + 8 * var_x51); + const double var_x53 = 26.712831923985377 * mParameters[9] / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x54 = 7.5827646500219453e-7 * mParameters[3]; + const double var_x55 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x56 = pow(var_x55, 1.5); + const double var_x57 = var_x55 * mParameters[9]; + const double var_x58 = var_x56 * var_x57 * mParameters[5] / ((1.5 + mParameters[5]) * pow((0.031622776601683791 + var_x56), 2) * (1 + 0.1245 * exp(-0.0037435192301797956 * var_chaste_interface__membrane__V) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * exp(-0.037435192301797954 * var_chaste_interface__membrane__V))); + + + rJacobian[0][0] = 1.0 - (mDt * (-0.125 + 17644.476956839797 * var_x20)); + rJacobian[0][1] = -(mDt * (var_x21 * var_x22)); + rJacobian[0][2] = -(mDt * (-0.23692672649163307 * var_x24)); + rJacobian[0][3] = -(mDt * (-0.125 * var_x27)); + rJacobian[0][4] = -(mDt * (var_x22 * var_x3)); + rJacobian[0][5] = 0.0; + rJacobian[0][6] = 0.0; + rJacobian[0][7] = -(mDt * (0.28431207178995971 * var_x18 * var_x28)); + rJacobian[1][0] = -(mDt * (-141155.81565471838 * var_x19 * var_x34 - 67538.66777737721 * var_x20 * var_x35)); + rJacobian[1][1] = 1.0 - (mDt * (var_x30 * (-1 - 70577.907827359188 * var_x21 * var_x33) - var_x21 * var_x37)); + rJacobian[1][2] = -(mDt * (0.90689656073352376 * var_x24 * var_x35 + 1.8954138119330646 * var_x23 * var_x34)); + rJacobian[1][3] = -(mDt * (var_x26 * var_x34 + 0.47846889952153115 * var_x27 * var_x35)); + rJacobian[1][4] = -(mDt * (-var_x3 * var_x37 - var_x34 * var_x4)); + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = -(mDt * (-1.0882758728802286 * var_x28 * var_x36 - 2.2744965743196777 * var_x28 * var_x34)); + rJacobian[2][0] = 0.0; + rJacobian[2][1] = 0.0; + rJacobian[2][2] = 1.0 - (mDt * (-var_x38)); + rJacobian[2][3] = -(mDt * (-0.00035 * var_x38 / pow((0.00035 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2))); + rJacobian[2][4] = 0.0; + rJacobian[2][5] = 0.0; + rJacobian[2][6] = 0.0; + rJacobian[2][7] = 0.0; + rJacobian[3][0] = -(mDt * (0.014117647058823526 * var_x19 * var_x43)); + rJacobian[3][1] = -(mDt * (0.0070588235294117632 * var_x21 * var_x43)); + rJacobian[3][2] = -(mDt * (-3.7913823250109726e-7 * var_x23 * var_x43)); + rJacobian[3][3] = 1.0 - (mDt * (var_x43 * (-var_x45 - var_x48 - 7.4682352941176462e-5 * var_x47 - 7.5827646500219453e-7 * var_x25 - 5.7273025005690459e-9 * var_x44 * mParameters[9] + 1.0426301393780176e-7 * var_x41 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9]) + (0.00023800000000000004 / pow(var_x39, 3) + 7.0000000000000007e-5 / pow(var_x40, 3)) * (-var_x45 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.081176470588235281 * mParameters[2] / var_x46 - 3.7913823250109726e-7 * var_x23 * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca - 4.2880534095874102e-10 * (-13.356415961992688 * log(var_x44 * mParameters[4]) + var_chaste_interface__membrane__V) * mParameters[9] + 0.0054117647058823529 * mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up + 0.0070588235294117632 * var_x0 * var_x1 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + 7.5827646500219453e-7 * var_x10 * var_x11 * var_x12 * var_x9 * mParameters[16] * mParameters[9]) / pow(var_x42, 2))); + rJacobian[3][4] = -(mDt * (var_x43 * var_x48)); + rJacobian[3][5] = -(mDt * (0.0054117647058823529 * var_x43 * var_x49)); + rJacobian[3][6] = 0.0; + rJacobian[3][7] = -(mDt * (2.2748293950065834e-6 * var_x28 * var_x43)); + rJacobian[4][0] = -(mDt * (-2 * var_x19 * var_x52)); + rJacobian[4][1] = -(mDt * (-var_x21 * var_x52)); + rJacobian[4][2] = 0.0; + rJacobian[4][3] = -(mDt * (var_x3 * var_x52)); + rJacobian[4][4] = 1.0 - (mDt * (var_x52 * (-0.0055555555555555558 - var_x3) + 0.25 * (0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_rel - var_x0 * var_x3) / (pow(var_x50, 3) * pow((0.125 + var_x51), 2)))); + rJacobian[4][5] = -(mDt * (0.0055555555555555558 * var_x52)); + rJacobian[4][6] = 0.0; + rJacobian[4][7] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = 0.0; + rJacobian[5][3] = -(mDt * (0.00092000000000000003 * var_x47)); + rJacobian[5][4] = -(mDt * (0.00048309178743961351)); + rJacobian[5][5] = 1.0 - (mDt * (-0.00048309178743961351 - 0.066666666666666666 * var_x49)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (var_x54 * (-var_x53 * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)) - var_x53 * pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * mParameters[15] - var_x53 * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)) - var_x53 * pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi - var_x53 * pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V))) * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui))); + rJacobian[6][7] = -(mDt * (4.3114284380885533e-8 * var_x58 * mParameters[3])); + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = -(mDt * (2.2748293950065834e-6 * var_x25 * mParameters[3])); + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (var_x54 * (-9 * var_x28 - 0.018016135580732888 * var_x57 - 0.085287397876895904 * var_x58 - 26.712831923985377 * var_x57 * pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j))); + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_background_currents__g_B_Ca = 0.0011310000000000001; // nanoS_per_picoF + const double var_background_currents__g_B_Na = 0.00067443750000000002; // nanoS_per_picoF + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_membrane__i_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_st = 1000000 * var_membrane__Cm_converted * var_membrane__i_st_converted / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.27500000000000002; // picoA_per_picoF + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] * var_sarcolemmal_calcium_pump_current__i_CaP_max / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_sodium_potassium_pump__Km_K_o = 1.5; // millimolar + const double var_sodium_potassium_pump__Km_Na_i = 10; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.59933873999999998; // picoA_per_picoF + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Ca = (-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * mParameters[9] * var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[5] / ((1 + pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (var_sodium_potassium_pump__Km_K_o + mParameters[5])); // picoA + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_ultrarapid_delayed_rectifier_K_current__g_Kur = 0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V)); // nanoS_per_picoF + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_ultrarapid_delayed_rectifier_K_current__g_Kur * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double d_dt_chaste_interface_var_membrane__V = (-var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger_current__i_NaCa - var_background_currents__i_B_Ca - var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - var_membrane__i_st - var_rapid_delayed_rectifier_K_current__i_Kr - var_sarcolemmal_calcium_pump_current__i_CaP - var_slow_delayed_rectifier_K_current__i_Ks - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur) / mParameters[9]; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + const double var_Ca_release_current_from_JSR_w_gate__tau_w = ((fabs(-7.9000000000000004 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.92307692307692313) : (6 * (1 - exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) / ((1 + 0.29999999999999999 * exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) * (-7.9000000000000004 + var_chaste_interface__membrane__V)))); + const double var_Ca_release_current_from_JSR_w_gate__w_infinity = 1 - 1 / (1 + exp(2.3529411764705883 - 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-1.25 - 0.125 * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(10 + var_chaste_interface__membrane__V) < 1.0e-10) ? (4.5789999999999997 / (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V))) : (28.571428571428569 * (1 - exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) / ((1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) * (10 + var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_f_gate__f_infinity = exp(-4.057971014492753 - 0.14492753623188406 * var_chaste_interface__membrane__V) / (1 + exp(-4.057971014492753 - 0.14492753623188406 * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_f_gate__tau_f = 450 / (1 + 0.98499999999999988 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); + const double var_fast_sodium_current_m_gate__alpha_m = ((var_chaste_interface__membrane__V == (-47.130000000000003)) ? (3.2000000000000002) : (0.32000000000000001 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); + const double var_fast_sodium_current_m_gate__m_inf = var_fast_sodium_current_m_gate__alpha_m / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); + const double var_fast_sodium_current_m_gate__tau_m = 1 / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); + const double var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr = ((fabs(14.1 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.0015) : (0.00029999999999999997 * (14.1 + var_chaste_interface__membrane__V) / (1 - exp(-2.8199999999999998 - 0.20000000000000001 * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr = ((fabs(-3.3328000000000002 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00037836118) : (7.3898000000000003e-5 * (-3.3328000000000002 + var_chaste_interface__membrane__V) / (-1 + exp(-0.65046743564221166 + 0.19517145812596365 * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr = 1 / (var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr + var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr); + const double var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity = 1 / (1 + exp(-2.1692307692307691 - 0.15384615384615385 * var_chaste_interface__membrane__V)); + const double var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00068000000000000005) : (4.0000000000000003e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (1 - exp(1.1705882352941175 - 0.058823529411764705 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__beta_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00031500000000000001) : (3.4999999999999997e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-2.2111111111111108 + 0.1111111111111111 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__tau_xs = 0.5 / (var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs + var_slow_delayed_rectifier_K_current_xs_gate__beta_xs); + const double var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity = pow((1 + exp(1.5669291338582676 - 0.07874015748031496 * var_chaste_interface__membrane__V)), (-0.5)); + const double var_transient_outward_K_current__K_Q10 = 3; + const double var_transient_outward_K_current_oa_gate__alpha_oa = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__beta_oa = 0.26000000000000001 / (1 + 0.40000000000000002 * exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__oa_infinity = 1 / (1 + exp(-1.1670467502850628 - 0.057012542759407071 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__tau_oa = 1 / ((var_transient_outward_K_current_oa_gate__alpha_oa + var_transient_outward_K_current_oa_gate__beta_oa) * var_transient_outward_K_current__K_Q10); + const double var_transient_outward_K_current_oi_gate__alpha_oi = 0.053966540744738258 / (1 + 0.053966540744738258 * exp(10.383561643835618 + 0.091324200913242018 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__beta_oi = 0.028121484814398197 / (1 + 0.028121484814398197 * exp(-0.16935483870967738 - 0.13440860215053763 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__oi_infinity = 1 / (1 + exp(8.1320754716981138 + 0.18867924528301888 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__tau_oi = 1 / ((var_transient_outward_K_current_oi_gate__alpha_oi + var_transient_outward_K_current_oi_gate__beta_oi) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua = 0.26000000000000001 / (1 + 0.40000000000000002 * exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua + var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity = 1 / (1 + exp(-3.15625 - 0.10416666666666667 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui = 0.047619047619047616 / (1 + 0.047619047619047616 * exp(6.6071428571428568 - 0.035714285714285712 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui = 1 / exp(9.875 - 0.0625 * var_chaste_interface__membrane__V); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui + var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity = 1 / (1 + exp(-3.6189956331877728 + 0.036390101892285295 * var_chaste_interface__membrane__V)); + + + rY[16] = (var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + ((var_Ca_release_current_from_JSR_w_gate__w_infinity / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)) / (1.0 - ((-1 / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)); + rY[11] = (var_chaste_interface__L_type_Ca_channel_d_gate__d + ((var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_d_gate__tau_d) * mDt)); + rY[12] = (var_chaste_interface__L_type_Ca_channel_f_gate__f + ((var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_f_gate__tau_f) * mDt)); + rY[3] = (var_chaste_interface__fast_sodium_current_h_gate__h + ((var_fast_sodium_current_h_gate__h_inf / var_fast_sodium_current_h_gate__tau_h) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_h_gate__tau_h) * mDt)); + rY[4] = (var_chaste_interface__fast_sodium_current_j_gate__j + ((var_fast_sodium_current_j_gate__j_inf / var_fast_sodium_current_j_gate__tau_j) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_j_gate__tau_j) * mDt)); + rY[2] = (var_chaste_interface__fast_sodium_current_m_gate__m + ((var_fast_sodium_current_m_gate__m_inf / var_fast_sodium_current_m_gate__tau_m) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_m_gate__tau_m) * mDt)); + rY[9] = (var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr + ((var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)) / (1.0 - ((-1 / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)); + rY[10] = (var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs + ((var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)) / (1.0 - ((-1 / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)); + rY[5] = (var_chaste_interface__transient_outward_K_current_oa_gate__oa + ((var_transient_outward_K_current_oa_gate__oa_infinity / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)); + rY[6] = (var_chaste_interface__transient_outward_K_current_oi_gate__oi + ((var_transient_outward_K_current_oi_gate__oi_infinity / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)); + rY[7] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua + ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)); + rY[8] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui + ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)); + + double _guess[8] = {rY[14],rY[15],rY[13],rY[1],rY[19],rY[20],rY[18],rY[17]}; + CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[14] = _guess[0]; + rY[15] = _guess[1]; + rY[13] = _guess[2]; + rY[1] = _guess[3]; + rY[19] = _guess[4]; + rY[20] = _guess[5]; + rY[18] = _guess[6]; + rY[17] = _guess[7]; + } + + std::vector Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rY[14]; + // Units: dimensionless; Initial value: 2.35e-112 + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rY[15]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rY[19]; + // Units: millimolar; Initial value: 1.488 + + // Mathematics + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_L_type_Ca_channel_f_gate__tau_f = 450 / (1 + 0.98499999999999988 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); // millisecond + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // millisecond + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // millisecond + const double var_membrane__i_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_K_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 + + std::vector dqs(14); + dqs[0] = var_Ca_release_current_from_JSR__i_rel; + dqs[1] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[2] = var_L_type_Ca_channel_f_gate__tau_f; + dqs[3] = var_membrane__Cm_converted; + dqs[4] = var_fast_sodium_current__i_Na_converted; + dqs[5] = var_fast_sodium_current_h_gate__tau_h; + dqs[6] = var_fast_sodium_current_j_gate__tau_j; + dqs[7] = var_time_independent_potassium_current__i_K1_converted; + dqs[8] = var_rapid_delayed_rectifier_K_current__i_Kr_converted; + dqs[9] = var_slow_delayed_rectifier_K_current__i_Ks_converted; + dqs[10] = var_Na_Ca_exchanger_current__i_NaCa_converted; + dqs[11] = var_membrane__i_st_converted; + dqs[12] = var_transient_outward_K_current__i_to_converted; + dqs[13] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "courtemanche_1998"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-81.18); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0001013); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002908); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9649); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9775); + + // rY[5]: + this->mVariableNames.push_back("transient_outward_K_current_oa_gate__oa"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.03043); + + // rY[6]: + this->mVariableNames.push_back("transient_outward_K_current_oi_gate__oi"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9992); + + // rY[7]: + this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ua_gate__ua"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.004966); + + // rY[8]: + this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ui_gate__ui"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9986); + + // rY[9]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_current_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.296e-05); + + // rY[10]: + this->mVariableNames.push_back("slow_delayed_rectifier_K_current_xs_gate__xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01869); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0001367); + + // rY[12]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9996); + + // rY[13]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7755); + + // rY[14]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_u_gate__u"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.35e-112); + + // rY[15]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_v_gate__v"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[16]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_w_gate__w"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9992); + + // rY[17]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(11.17); + + // rY[18]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(139.0); + + // rY[19]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.488); + + // rY[20]: + this->mVariableNames.push_back("intracellular_ion_concentrations__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.488); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mParameterUnits.push_back("millisecond"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane__Cm"); + this->mParameterUnits.push_back("picoF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_14.cpp new file mode 100644 index 00000000..f3501706 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_14.cpp @@ -0,0 +1,1025 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: courtemanche_1998 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEuler) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "dynamic_courtemanche_ramirez_nattel_1998.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractBackwardEulerCardiacCell<8>* Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(p_solver, p_stimulus); +} + +bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::registered = ModelFactory::Register("dynamic_courtemanche_ramirez_nattel_1998", "BackwardEuler", (ModelFactory::TCreateMethod)Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::CreateMethod); + + + + boost::shared_ptr Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_chaste_interface__membrane__stim_amplitude_converted = -0.002 * HeartConfig::Instance()->GetCapacitance() / var_membrane__Cm_converted; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 2; // millisecond + const double var_chaste_interface__membrane__stim_period = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<8>( + 21, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1; // (var_Ca_leak_current_by_the_NSR__leak_factor) [dimensionless] + this->mParameters[1] = 30; // (var_Ca_release_current_from_JSR__K_rel) [per_millisecond] + this->mParameters[2] = 0.0050000000000000001; // (var_Ca_uptake_current_by_the_NSR__I_up_max) [millimolar_per_millisecond] + this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_standard_ionic_concentrations__Ca_o) [millimolar] + this->mParameters[5] = 5.4000000000000004; // (var_standard_ionic_concentrations__K_o) [millimolar] + this->mParameters[6] = 140; // (var_standard_ionic_concentrations__Na_o) [millimolar] + this->mParameters[7] = 0.12375; // (var_L_type_Ca_channel__g_Ca_L) [nanoS_per_picoF] + this->mParameters[8] = 2; // (var_L_type_Ca_channel_f_Ca_gate__tau_f_Ca) [millisecond] + this->mParameters[9] = 100; // (var_membrane__Cm) [picoF] + this->mParameters[10] = 7.7999999999999998; // (var_fast_sodium_current__g_Na) [nanoS_per_picoF] + this->mParameters[11] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[12] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[13] = 0.089999999999999997; // (var_time_independent_potassium_current__g_K1) [nanoS_per_picoF] + this->mParameters[14] = 0.029411764999999999; // (var_rapid_delayed_rectifier_K_current__g_Kr) [nanoS_per_picoF] + this->mParameters[15] = 0.12941175999999999; // (var_slow_delayed_rectifier_K_current__g_Ks) [nanoS_per_picoF] + this->mParameters[16] = 1600; // (var_Na_Ca_exchanger_current__I_NaCa_max) [picoA_per_picoF] + this->mParameters[17] = 0.16520000000000001; // (var_transient_outward_K_current__g_to) [nanoS_per_picoF] + } + + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::~Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler() + { + } + + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 21; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_background_currents__g_B_Ca = 0.0011310000000000001; // nanoS_per_picoF + const double var_background_currents__g_B_Na = 0.00067443750000000002; // nanoS_per_picoF + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.27500000000000002; // picoA_per_picoF + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] * var_sarcolemmal_calcium_pump_current__i_CaP_max / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_sodium_potassium_pump__Km_K_o = 1.5; // millimolar + const double var_sodium_potassium_pump__Km_Na_i = 10; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.59933873999999998; // picoA_per_picoF + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Ca = (-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * mParameters[9] * var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[5] / ((1 + pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (var_sodium_potassium_pump__Km_K_o + mParameters[5])); // picoA + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_K_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 + const double var_ultrarapid_delayed_rectifier_K_current__g_Kur = 0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V)); // nanoS_per_picoF + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_ultrarapid_delayed_rectifier_K_current__g_Kur * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_exchanger_current__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_delayed_rectifier_K_current__i_Kr_converted + var_slow_delayed_rectifier_K_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_K_current__i_to_converted) * var_membrane__Cm_converted + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Ca + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Na + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump_current__i_CaP + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_ultrarapid_delayed_rectifier_K_current__i_Kur) / var_membrane__Cm_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rResidual[8]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + //output_nonlinear_state_assignments + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; + + //output_equations + const double var_Ca_buffers__CMDN_max = 0.050000000000000003; // millimolar + const double var_Ca_buffers__CSQN_max = 10; // millimolar + const double var_Ca_buffers__Km_CMDN = 0.0023800000000000002; // millimolar + const double var_Ca_buffers__Km_CSQN = 0.80000000000000004; // millimolar + const double var_Ca_buffers__Km_TRPN = 0.00050000000000000001; // millimolar + const double var_Ca_buffers__TRPN_max = 0.070000000000000007; // millimolar + const double var_Ca_leak_current_by_the_NSR__Ca_up_max = 15; // millimolar + const double var_Ca_release_current_from_JSR_u_gate__tau_u = 8; // millisecond + const double var_Ca_uptake_current_by_the_NSR__K_up = 0.00092000000000000003; // millimolar + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_background_currents__g_B_Ca = 0.0011310000000000001; // nanoS_per_picoF + const double var_background_currents__g_B_K = 0; // nanoS_per_picoF + const double var_background_currents__g_B_Na = 0.00067443750000000002; // nanoS_per_picoF + const double var_Ca_uptake_current_by_the_NSR__i_up = mParameters[2] / (1 + var_Ca_uptake_current_by_the_NSR__K_up / var_chaste_interface__intracellular_ion_concentrations__Ca_i); // millimolar_per_millisecond + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca_infinity = 1 / (1 + 2857.1428571428573 * var_chaste_interface__intracellular_ion_concentrations__Ca_i); // dimensionless + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca = (-var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca + var_L_type_Ca_channel_f_Ca_gate__f_Ca_infinity) / mParameters[8]; // 1 / millisecond + const double var_intracellular_ion_concentrations__B2 = 1 + var_Ca_buffers__CMDN_max * var_Ca_buffers__Km_CMDN / pow((var_Ca_buffers__Km_CMDN + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2) + var_Ca_buffers__Km_TRPN * var_Ca_buffers__TRPN_max / pow((var_Ca_buffers__Km_TRPN + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2); // dimensionless + const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond + const double var_Ca_leak_current_by_the_NSR__i_up_leak = mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up / var_Ca_leak_current_by_the_NSR__Ca_up_max; // millimolar_per_millisecond + const double var_intracellular_ion_concentrations__V_cell = 20100; // micrometre_3 + const double var_intracellular_ion_concentrations__V_i = 0.68000000000000005 * var_intracellular_ion_concentrations__V_cell; // micrometre_3 + const double var_intracellular_ion_concentrations__V_rel = 0.0047999999999999996 * var_intracellular_ion_concentrations__V_cell; // micrometre_3 + const double var_intracellular_ion_concentrations__V_up = 0.055199999999999999 * var_intracellular_ion_concentrations__V_cell; // micrometre_3 + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.27500000000000002; // picoA_per_picoF + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] * var_sarcolemmal_calcium_pump_current__i_CaP_max / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_sodium_potassium_pump__Km_K_o = 1.5; // millimolar + const double var_sodium_potassium_pump__Km_Na_i = 10; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.59933873999999998; // picoA_per_picoF + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Ca = (-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Ca_release_current_from_JSR__Fn = 9.9999999999999998e-13 * var_Ca_release_current_from_JSR__i_rel * var_intracellular_ion_concentrations__V_rel - 4.9999999999999999e-13 * (0.5 * var_L_type_Ca_channel__i_Ca_L - 0.20000000000000001 * var_Na_Ca_exchanger_current__i_NaCa) / var_membrane__F; // dimensionless + const double var_Ca_release_current_from_JSR_u_gate__u_infinity = 1 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)); // dimensionless + const double var_Ca_release_current_from_JSR_v_gate__tau_v = 1.9099999999999999 + 2.0899999999999999 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)); // millisecond + const double var_Ca_release_current_from_JSR_v_gate__v_infinity = 1 - 1 / (1 + exp(50 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)); // dimensionless + const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u = (-var_chaste_interface__Ca_release_current_from_JSR_u_gate__u + var_Ca_release_current_from_JSR_u_gate__u_infinity) / var_Ca_release_current_from_JSR_u_gate__tau_u; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v = (-var_chaste_interface__Ca_release_current_from_JSR_v_gate__v + var_Ca_release_current_from_JSR_v_gate__v_infinity) / var_Ca_release_current_from_JSR_v_gate__tau_v; // 1 / millisecond + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_intracellular_ion_concentrations__B1 = ((-var_Ca_uptake_current_by_the_NSR__i_up + var_Ca_leak_current_by_the_NSR__i_up_leak) * var_intracellular_ion_concentrations__V_up + var_Ca_release_current_from_JSR__i_rel * var_intracellular_ion_concentrations__V_rel) / var_intracellular_ion_concentrations__V_i + 0.5 * (-var_L_type_Ca_channel__i_Ca_L - var_background_currents__i_B_Ca - var_sarcolemmal_calcium_pump_current__i_CaP + 2 * var_Na_Ca_exchanger_current__i_NaCa) / (var_intracellular_ion_concentrations__V_i * var_membrane__F); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = var_intracellular_ion_concentrations__B1 / var_intracellular_ion_concentrations__B2; // millimolar / millisecond + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * mParameters[9] * var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[5] / ((1 + pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (var_sodium_potassium_pump__Km_K_o + mParameters[5])); // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = (-var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - 3 * var_Na_Ca_exchanger_current__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) * mParameters[3] / (var_intracellular_ion_concentrations__V_i * var_membrane__F); // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_K = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_background_currents__g_B_K * mParameters[9]; // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA + const double var_transfer_current_from_NSR_to_JSR__tau_tr = 180; // millisecond + const double var_transfer_current_from_NSR_to_JSR__i_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_rel + var_chaste_interface__intracellular_ion_concentrations__Ca_up) / var_transfer_current_from_NSR_to_JSR__tau_tr; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel = (-var_Ca_release_current_from_JSR__i_rel + var_transfer_current_from_NSR_to_JSR__i_tr) / (1 + var_Ca_buffers__CSQN_max * var_Ca_buffers__Km_CSQN / pow((var_Ca_buffers__Km_CSQN + var_chaste_interface__intracellular_ion_concentrations__Ca_rel), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up = -var_Ca_leak_current_by_the_NSR__i_up_leak - var_intracellular_ion_concentrations__V_rel * var_transfer_current_from_NSR_to_JSR__i_tr / var_intracellular_ion_concentrations__V_up + var_Ca_uptake_current_by_the_NSR__i_up; // millimolar / millisecond + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_ultrarapid_delayed_rectifier_K_current__g_Kur = 0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V)); // nanoS_per_picoF + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_ultrarapid_delayed_rectifier_K_current__g_Kur * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = (-var_background_currents__i_B_K - var_rapid_delayed_rectifier_K_current__i_Kr - var_slow_delayed_rectifier_K_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur + 2 * var_sodium_potassium_pump__i_NaK) * mParameters[3] / (var_intracellular_ion_concentrations__V_i * var_membrane__F); // millimolar / millisecond + + rResidual[3] = rCurrentGuess[3] - rY[1] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i; + rResidual[2] = rCurrentGuess[2] - rY[13] - mDt*d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca; + rResidual[0] = rCurrentGuess[0] - rY[14] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u; + rResidual[1] = rCurrentGuess[1] - rY[15] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v; + rResidual[7] = rCurrentGuess[7] - rY[17] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rResidual[6] = rCurrentGuess[6] - rY[18] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rResidual[4] = rCurrentGuess[4] - rY[19] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel; + rResidual[5] = rCurrentGuess[5] - rY[20] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rJacobian[8][8]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; + + const double var_x0 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; + const double var_x1 = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2); + const double var_x2 = var_x1 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; + const double var_x3 = var_x2 * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v; + const double var_x4 = 70577.907827359188 * var_x3; + const double var_x5 = exp(-0.024332874996168673 * var_chaste_interface__membrane__V); + const double var_x6 = pow(mParameters[6], 3); + const double var_x7 = var_x5 * var_x6; + const double var_x8 = exp(0.013102317305629283 * var_chaste_interface__membrane__V); + const double var_x9 = -var_x7 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_x8 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4]; + const double var_x10 = 1 / (1 + 0.10000000000000001 * var_x5); + const double var_x11 = 1 / (669921.875 + var_x6); + const double var_x12 = 1 / (1.3799999999999999 + mParameters[4]); + const double var_x13 = var_x10 * var_x11 * var_x12 * mParameters[16] * mParameters[9]; + const double var_x14 = -65 + var_chaste_interface__membrane__V; + const double var_x15 = var_x0 * var_x4 + 0.75816552477322585 * var_x13 * var_x9 - 1.8954138119330646 * var_x14 * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; + const double var_x16 = exp(250 - var_x15); + const double var_x17 = 1 + var_x16; + const double var_x18 = var_x16 / pow(var_x17, 2); + const double var_x19 = var_x0 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_u_gate__u * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; + const double var_x20 = var_x18 * var_x19; + const double var_x21 = var_x0 * var_x2; + const double var_x22 = 8822.2384784198985 * var_x18; + const double var_x23 = var_x14 * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; + const double var_x24 = var_x18 * var_x23; + const double var_x25 = var_x13 * var_x7; + const double var_x26 = var_x4 + 0.75816552477322585 * var_x25; + const double var_x27 = var_x18 * var_x26; + const double var_x28 = var_x13 * var_x8 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2) * mParameters[4]; + const double var_x29 = 1.9099999999999999 + 2.0899999999999999 / var_x17; + const double var_x30 = 1 / var_x29; + const double var_x31 = exp(50 - var_x15); + const double var_x32 = 1 + var_x31; + const double var_x33 = var_x31 / pow(var_x32, 2); + const double var_x34 = var_x30 * var_x33; + const double var_x35 = (1 - 1 / var_x32 - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / pow(var_x29, 2); + const double var_x36 = var_x18 * var_x35; + const double var_x37 = 147507.82735918069 * var_x36; + const double var_x38 = 1 / mParameters[8]; + const double var_x39 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x40 = 0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x41 = pow(var_x40, (-2)); + const double var_x42 = 1 + 0.00011900000000000002 / pow(var_x39, 2) + 3.5000000000000004e-5 * var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x45 = 1.0426301393780176e-7 * mParameters[9] / var_x40; + const double var_x46 = 1 + 0.00092000000000000003 * var_x44; + const double var_x47 = mParameters[2] / (pow(var_x46, 2) * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 2)); + const double var_x48 = 0.0070588235294117632 * var_x3; + const double var_x49 = mParameters[0] * mParameters[2]; + const double var_x50 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; + const double var_x51 = 1 + 8 / pow(var_x50, 2); + const double var_x52 = 1 / var_x51; + const double var_x53 = 26.712831923985377 * mParameters[9] / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x54 = 7.5827646500219453e-7 * mParameters[3]; + const double var_x55 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x56 = pow(var_x55, 1.5); + const double var_x57 = var_x55 * mParameters[9]; + const double var_x58 = var_x56 * var_x57 * mParameters[5] / (pow((1 + 31.622776601683793 * var_x56), 2) * (1.5 + mParameters[5]) * (1 + 0.1245 * exp(-0.0037435192301797956 * var_chaste_interface__membrane__V) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * exp(-0.037435192301797954 * var_chaste_interface__membrane__V))); + + + rJacobian[0][0] = 1.0 - (mDt * (-0.125 + 17644.476956839797 * var_x20)); + rJacobian[0][1] = -(mDt * (var_x21 * var_x22)); + rJacobian[0][2] = -(mDt * (-0.23692672649163307 * var_x24)); + rJacobian[0][3] = -(mDt * (-0.125 * var_x27)); + rJacobian[0][4] = -(mDt * (var_x22 * var_x3)); + rJacobian[0][5] = 0.0; + rJacobian[0][6] = 0.0; + rJacobian[0][7] = -(mDt * (0.28431207178995971 * var_x18 * var_x28)); + rJacobian[1][0] = -(mDt * (-141155.81565471838 * var_x19 * var_x34 - 295015.65471836139 * var_x20 * var_x35)); + rJacobian[1][1] = 1.0 - (mDt * (var_x30 * (-1 - 70577.907827359188 * var_x21 * var_x33) - var_x21 * var_x37)); + rJacobian[1][2] = -(mDt * (3.9614148669401046 * var_x24 * var_x35 + 1.8954138119330646 * var_x23 * var_x34)); + rJacobian[1][3] = -(mDt * (var_x26 * var_x34 + 2.0899999999999999 * var_x27 * var_x35)); + rJacobian[1][4] = -(mDt * (-var_x3 * var_x37 - var_x34 * var_x4)); + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = -(mDt * (-2.2744965743196777 * var_x28 * var_x34 - 4.753697840328126 * var_x28 * var_x36)); + rJacobian[2][0] = 0.0; + rJacobian[2][1] = 0.0; + rJacobian[2][2] = 1.0 - (mDt * (-var_x38)); + rJacobian[2][3] = -(mDt * (-2857.1428571428573 * var_x38 / pow((1 + 2857.1428571428573 * var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2))); + rJacobian[2][4] = 0.0; + rJacobian[2][5] = 0.0; + rJacobian[2][6] = 0.0; + rJacobian[2][7] = 0.0; + rJacobian[3][0] = -(mDt * (0.014117647058823526 * var_x19 * var_x43)); + rJacobian[3][1] = -(mDt * (0.0070588235294117632 * var_x21 * var_x43)); + rJacobian[3][2] = -(mDt * (-3.7913823250109726e-7 * var_x23 * var_x43)); + rJacobian[3][3] = 1.0 - (mDt * (var_x43 * (-var_x45 - var_x48 - 7.4682352941176462e-5 * var_x47 - 7.5827646500219453e-7 * var_x25 - 5.7273025005690459e-9 * var_x44 * mParameters[9] + 1.0426301393780176e-7 * var_x41 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9]) + (0.00023800000000000004 / pow(var_x39, 3) + 7.0000000000000007e-5 / pow(var_x40, 3)) * (-var_x45 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.081176470588235281 * mParameters[2] / var_x46 - 3.7913823250109726e-7 * var_x23 * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca - 4.2880534095874102e-10 * (-13.356415961992688 * log(var_x44 * mParameters[4]) + var_chaste_interface__membrane__V) * mParameters[9] + 0.0054117647058823529 * mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up + 0.0070588235294117632 * var_x0 * var_x1 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + 7.5827646500219453e-7 * var_x10 * var_x11 * var_x12 * var_x9 * mParameters[16] * mParameters[9]) / pow(var_x42, 2))); + rJacobian[3][4] = -(mDt * (var_x43 * var_x48)); + rJacobian[3][5] = -(mDt * (0.0054117647058823529 * var_x43 * var_x49)); + rJacobian[3][6] = 0.0; + rJacobian[3][7] = -(mDt * (2.2748293950065834e-6 * var_x28 * var_x43)); + rJacobian[4][0] = -(mDt * (-2 * var_x19 * var_x52)); + rJacobian[4][1] = -(mDt * (-var_x21 * var_x52)); + rJacobian[4][2] = 0.0; + rJacobian[4][3] = -(mDt * (var_x3 * var_x52)); + rJacobian[4][4] = 1.0 - (mDt * (var_x52 * (-0.0055555555555555558 - var_x3) + 16 * (0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_rel - var_x0 * var_x3) / (pow(var_x50, 3) * pow(var_x51, 2)))); + rJacobian[4][5] = -(mDt * (0.0055555555555555558 * var_x52)); + rJacobian[4][6] = 0.0; + rJacobian[4][7] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = 0.0; + rJacobian[5][3] = -(mDt * (0.00092000000000000003 * var_x47)); + rJacobian[5][4] = -(mDt * (0.00048309178743961351)); + rJacobian[5][5] = 1.0 - (mDt * (-0.00048309178743961351 - 0.066666666666666666 * var_x49)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (var_x54 * (-var_x53 * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)) - var_x53 * pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * mParameters[15] - var_x53 * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)) - var_x53 * pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi - var_x53 * pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V))) * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui))); + rJacobian[6][7] = -(mDt * (4.3114284380885534e-5 * var_x58 * mParameters[3])); + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = -(mDt * (2.2748293950065834e-6 * var_x25 * mParameters[3])); + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (var_x54 * (-9 * var_x28 - 0.018016135580732888 * var_x57 - 85.287397876895909 * var_x58 - 26.712831923985377 * var_x57 * pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j))); + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_background_currents__g_B_Ca = 0.0011310000000000001; // nanoS_per_picoF + const double var_background_currents__g_B_Na = 0.00067443750000000002; // nanoS_per_picoF + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_membrane__i_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_st = 1000000 * var_membrane__Cm_converted * var_membrane__i_st_converted / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP_max = 0.27500000000000002; // picoA_per_picoF + const double var_sarcolemmal_calcium_pump_current__i_CaP = var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] * var_sarcolemmal_calcium_pump_current__i_CaP_max / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_sodium_potassium_pump__Km_K_o = 1.5; // millimolar + const double var_sodium_potassium_pump__Km_Na_i = 10; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.59933873999999998; // picoA_per_picoF + const double var_background_currents__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Ca = (-var_background_currents__E_Ca + var_chaste_interface__membrane__V) * var_background_currents__g_B_Ca * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_background_currents__i_B_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_B_Na * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 1 * mParameters[9] * var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[5] / ((1 + pow((var_sodium_potassium_pump__Km_Na_i / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (var_sodium_potassium_pump__Km_K_o + mParameters[5])); // picoA + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_ultrarapid_delayed_rectifier_K_current__g_Kur = 0.0050000000000000001 + 0.050000000000000003 / (1 + exp(1.1538461538461537 - 0.076923076923076927 * var_chaste_interface__membrane__V)); // nanoS_per_picoF + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_ultrarapid_delayed_rectifier_K_current__g_Kur * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double d_dt_chaste_interface_var_membrane__V = (-var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger_current__i_NaCa - var_background_currents__i_B_Ca - var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - var_membrane__i_st - var_rapid_delayed_rectifier_K_current__i_Kr - var_sarcolemmal_calcium_pump_current__i_CaP - var_slow_delayed_rectifier_K_current__i_Ks - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur) / mParameters[9]; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + const double var_Ca_release_current_from_JSR_w_gate__tau_w = ((fabs(-7.9000000000000004 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.92307692307692313) : (6 * (1 - exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) / ((1 + 0.29999999999999999 * exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) * (-7.9000000000000004 + var_chaste_interface__membrane__V)))); + const double var_Ca_release_current_from_JSR_w_gate__w_infinity = 1 - 1 / (1 + exp(2.3529411764705883 - 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-1.25 - 0.125 * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(10 + var_chaste_interface__membrane__V) < 1.0e-10) ? (4.5789999999999997 / (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V))) : (28.571428571428569 * (1 - exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) / ((1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) * (10 + var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_f_gate__f_infinity = exp(-4.057971014492753 - 0.14492753623188406 * var_chaste_interface__membrane__V) / (1 + exp(-4.057971014492753 - 0.14492753623188406 * var_chaste_interface__membrane__V)); + const double var_L_type_Ca_channel_f_gate__tau_f = 9 / (0.02 + 0.019699999999999999 * exp(-0.00113569 * pow((10 + var_chaste_interface__membrane__V), 2))); + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); + const double var_fast_sodium_current_m_gate__alpha_m = ((var_chaste_interface__membrane__V == (-47.130000000000003)) ? (3.2000000000000002) : (0.32000000000000001 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); + const double var_fast_sodium_current_m_gate__m_inf = var_fast_sodium_current_m_gate__alpha_m / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); + const double var_fast_sodium_current_m_gate__tau_m = 1 / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); + const double var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr = ((fabs(14.1 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.0015) : (0.00029999999999999997 * (14.1 + var_chaste_interface__membrane__V) / (1 - exp(-2.8199999999999998 - 0.20000000000000001 * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr = ((fabs(-3.3328000000000002 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00037836118) : (7.3898000000000003e-5 * (-3.3328000000000002 + var_chaste_interface__membrane__V) / (-1 + exp(-0.65046743564221166 + 0.19517145812596365 * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr = 1 / (var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr + var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr); + const double var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity = 1 / (1 + exp(-2.1692307692307691 - 0.15384615384615385 * var_chaste_interface__membrane__V)); + const double var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00068000000000000005) : (4.0000000000000003e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (1 - exp(1.1705882352941175 - 0.058823529411764705 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__beta_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00031500000000000001) : (3.4999999999999997e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-2.2111111111111108 + 0.1111111111111111 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__tau_xs = 0.5 / (var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs + var_slow_delayed_rectifier_K_current_xs_gate__beta_xs); + const double var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity = pow((1 + exp(1.5669291338582676 - 0.07874015748031496 * var_chaste_interface__membrane__V)), (-0.5)); + const double var_transient_outward_K_current__K_Q10 = 3; + const double var_transient_outward_K_current_oa_gate__alpha_oa = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__beta_oa = 0.65000000000000002 / (2.5 + exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__oa_infinity = 1 / (1 + exp(-1.1670467502850628 - 0.057012542759407071 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__tau_oa = 1 / ((var_transient_outward_K_current_oa_gate__alpha_oa + var_transient_outward_K_current_oa_gate__beta_oa) * var_transient_outward_K_current__K_Q10); + const double var_transient_outward_K_current_oi_gate__alpha_oi = 1 / (18.530000000000001 + 1 * exp(10.383561643835618 + 0.091324200913242018 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__beta_oi = 1 / (35.560000000000002 + 1 * exp(-0.16935483870967738 - 0.13440860215053763 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__oi_infinity = 1 / (1 + exp(8.1320754716981138 + 0.18867924528301888 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__tau_oi = 1 / ((var_transient_outward_K_current_oi_gate__alpha_oi + var_transient_outward_K_current_oi_gate__beta_oi) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua = 0.65000000000000002 / (2.5 + exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua + var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity = 1 / (1 + exp(-3.15625 - 0.10416666666666667 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui = 1 / (21 + 1 * exp(6.6071428571428568 - 0.035714285714285712 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui = 1 / exp(9.875 - 0.0625 * var_chaste_interface__membrane__V); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui + var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity = 1 / (1 + exp(-3.6189956331877728 + 0.036390101892285295 * var_chaste_interface__membrane__V)); + + + rY[16] = (var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + ((var_Ca_release_current_from_JSR_w_gate__w_infinity / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)) / (1.0 - ((-1 / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)); + rY[11] = (var_chaste_interface__L_type_Ca_channel_d_gate__d + ((var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_d_gate__tau_d) * mDt)); + rY[12] = (var_chaste_interface__L_type_Ca_channel_f_gate__f + ((var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_f_gate__tau_f) * mDt)); + rY[3] = (var_chaste_interface__fast_sodium_current_h_gate__h + ((var_fast_sodium_current_h_gate__h_inf / var_fast_sodium_current_h_gate__tau_h) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_h_gate__tau_h) * mDt)); + rY[4] = (var_chaste_interface__fast_sodium_current_j_gate__j + ((var_fast_sodium_current_j_gate__j_inf / var_fast_sodium_current_j_gate__tau_j) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_j_gate__tau_j) * mDt)); + rY[2] = (var_chaste_interface__fast_sodium_current_m_gate__m + ((var_fast_sodium_current_m_gate__m_inf / var_fast_sodium_current_m_gate__tau_m) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_m_gate__tau_m) * mDt)); + rY[9] = (var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr + ((var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)) / (1.0 - ((-1 / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)); + rY[10] = (var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs + ((var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)) / (1.0 - ((-1 / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)); + rY[5] = (var_chaste_interface__transient_outward_K_current_oa_gate__oa + ((var_transient_outward_K_current_oa_gate__oa_infinity / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)); + rY[6] = (var_chaste_interface__transient_outward_K_current_oi_gate__oi + ((var_transient_outward_K_current_oi_gate__oi_infinity / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)); + rY[7] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua + ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)); + rY[8] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui + ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)); + + double _guess[8] = {rY[14],rY[15],rY[13],rY[1],rY[19],rY[20],rY[18],rY[17]}; + CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[14] = _guess[0]; + rY[15] = _guess[1]; + rY[13] = _guess[2]; + rY[1] = _guess[3]; + rY[19] = _guess[4]; + rY[20] = _guess[5]; + rY[18] = _guess[6]; + rY[17] = _guess[7]; + } + + std::vector Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rY[14]; + // Units: dimensionless; Initial value: 2.35e-112 + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rY[15]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rY[19]; + // Units: millimolar; Initial value: 1.488 + + // Mathematics + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_L_type_Ca_channel_f_gate__tau_f = 9 / (0.02 + 0.019699999999999999 * exp(-0.00113569 * pow((10 + var_chaste_interface__membrane__V), 2))); // millisecond + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // millisecond + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // millisecond + const double var_membrane__i_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (1 + exp(0.66964285714285721 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (1 + exp(5.6000000000000005 + 0.070000000000000007 * var_chaste_interface__membrane__V)); // picoA + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_K_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 + + std::vector dqs(14); + dqs[0] = var_Ca_release_current_from_JSR__i_rel; + dqs[1] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[2] = var_L_type_Ca_channel_f_gate__tau_f; + dqs[3] = var_membrane__Cm_converted; + dqs[4] = var_fast_sodium_current__i_Na_converted; + dqs[5] = var_fast_sodium_current_h_gate__tau_h; + dqs[6] = var_fast_sodium_current_j_gate__tau_j; + dqs[7] = var_time_independent_potassium_current__i_K1_converted; + dqs[8] = var_rapid_delayed_rectifier_K_current__i_Kr_converted; + dqs[9] = var_slow_delayed_rectifier_K_current__i_Ks_converted; + dqs[10] = var_Na_Ca_exchanger_current__i_NaCa_converted; + dqs[11] = var_membrane__i_st_converted; + dqs[12] = var_transient_outward_K_current__i_to_converted; + dqs[13] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "courtemanche_1998"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-81.18); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0001013); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002908); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9649); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9775); + + // rY[5]: + this->mVariableNames.push_back("transient_outward_K_current_oa_gate__oa"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.03043); + + // rY[6]: + this->mVariableNames.push_back("transient_outward_K_current_oi_gate__oi"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9992); + + // rY[7]: + this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ua_gate__ua"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.004966); + + // rY[8]: + this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ui_gate__ui"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9986); + + // rY[9]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_current_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.296e-05); + + // rY[10]: + this->mVariableNames.push_back("slow_delayed_rectifier_K_current_xs_gate__xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01869); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0001367); + + // rY[12]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9996); + + // rY[13]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7755); + + // rY[14]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_u_gate__u"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.35e-112); + + // rY[15]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_v_gate__v"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[16]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_w_gate__w"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9992); + + // rY[17]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(11.17); + + // rY[18]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(139.0); + + // rY[19]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.488); + + // rY[20]: + this->mVariableNames.push_back("intracellular_ion_concentrations__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.488); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mParameterUnits.push_back("millisecond"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane__Cm"); + this->mParameterUnits.push_back("picoF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEuler(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler--sympy_1_11.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler--sympy_1_11.cpp new file mode 100644 index 00000000..11029676 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler--sympy_1_11.cpp @@ -0,0 +1,2307 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: grandi_pasqualini_bers_2010_epi +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEuler) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "grandi_pasqualini_bers_2010_ssBackwardEuler.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractBackwardEulerCardiacCell<27>* Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler(p_solver, p_stimulus); +} + +bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = ModelFactory::Register("grandi_pasqualini_bers_2010_ss", "BackwardEuler", (ModelFactory::TCreateMethod)Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::CreateMethod); + + + + boost::shared_ptr Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane_potential__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane_potential__stim_duration = 5; // msec + const double var_chaste_interface__membrane_potential__stim_period = 1000; // msec + const double var_chaste_interface__membrane_potential__stim_start = 100; // msec + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane_potential__stim_amplitude_converted), + var_chaste_interface__membrane_potential__stim_duration, + var_chaste_interface__membrane_potential__stim_period, + var_chaste_interface__membrane_potential__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<27>( + 39, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 5.3480000000000003e-6; // (var_SR_Fluxes__SR_leak_max) [per_msec] + this->mParameters[1] = 25; // (var_parameters__ks) [per_msec] + this->mParameters[2] = 0.0053114; // (var_parameters__Vmax_SRCaP) [mM_per_msec] + this->mParameters[3] = 1; // (var_Na_Concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 15; // (var_parameters__Cli) [mM] + this->mParameters[5] = 1.8; // (var_parameters__Cao) [mM] + this->mParameters[6] = 150; // (var_parameters__Clo) [mM] + this->mParameters[7] = 5.4000000000000004; // (var_parameters__Ko) [mM] + this->mParameters[8] = 140; // (var_parameters__Nao) [mM] + this->mParameters[9] = 96485; // (var_parameters__Frdy) [coulomb_per_mole] + this->mParameters[10] = 8314; // (var_parameters__R) [joule_per_kelvin_per_kilomole] + this->mParameters[11] = 0.5; // (var_parameters__pCa_max) [cm_per_sec] + this->mParameters[12] = 23; // (var_parameters__GNa) [mS_per_uF] + this->mParameters[13] = 0; // (var_I_Na__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[14] = 0; // (var_I_Na__shift_INa_inact) [mV] + this->mParameters[15] = 1; // (var_I_to__GtoFast_factor) [dimensionless] + this->mParameters[16] = 0.34999999999999998; // (var_I_Ki__g_ki_factor) [mS_per_uF] + this->mParameters[17] = 0.035000000000000003; // (var_I_Kr__gkr_max) [mS_per_uF] + this->mParameters[18] = 1; // (var_I_Ks__GKs_factor) [dimensionless] + this->mParameters[19] = 1; // (var_I_to__GtoSlow_factor) [dimensionless] + this->mParameters[20] = 4.5; // (var_parameters__IbarNCX) [uA_per_uF] + this->mParameters[21] = 1.8; // (var_parameters__IbarNaK) [uA_per_uF] + this->mParameters[22] = 1.3809999999999999e-10; // (var_parameters__Cmem) [farad] + this->mParameters[23] = 310; // (var_parameters__Temp) [kelvin] + } + + Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::~Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler() + { + } + + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 39; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = rY[5]; + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = rY[6]; + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = rY[7]; + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = rY[8]; + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = rY[9]; + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = rY[10]; + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = rY[13]; + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = rY[14]; + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__Na_Concentrations__Na_j = rY[33]; + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = rY[34]; + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = rY[35]; + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = rY[36]; + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = rY[37]; + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = rY[38]; + // Units: mM; Initial value: 0.000106544589194246 + + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + exp(7.4880000000000004 - 0.16722408026755853 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * mParameters[18]; // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF + const double var_parameters__GClB = 0.0089999999999999993; // mS_per_uF + const double var_parameters__GClCa = 0.0548125; // mS_per_uF + const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__KdClCa = 0.10000000000000001; // mM + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_parameters__eca_junc = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF + const double var_parameters__eca_sl = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF + const double var_parameters__ecl = log(mParameters[4] / mParameters[6]) / var_parameters__FoRT; // mV + const double var_I_ClCa__I_ClCa_junc = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_j); // uA_per_uF + const double var_I_ClCa__I_ClCa_sl = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_sl); // uA_per_uF + const double var_I_ClCa__I_ClCa = var_I_ClCa__I_ClCa_junc + var_I_ClCa__I_ClCa_sl; // uA_per_uF + const double var_I_ClCa__I_Clbk = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__GClB; // uA_per_uF + const double var_membrane_potential__I_Cl_tot = var_I_ClCa__I_ClCa + var_I_ClCa__I_Clbk; // uA_per_uF + const double var_parameters__ek = log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_parameters__ena_junc = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF + const double var_parameters__ena_sl = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * mParameters[15]) : (0.0014039999999999999 * mParameters[15])); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * mParameters[19]) : (0.037595999999999997 * mParameters[19])); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_parameters__gkp = 0.002; // mS_per_uF + const double var_I_Kp__I_kp_junc = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fjunc * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp_sl = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fsl * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp = var_I_Kp__I_kp_junc + var_I_Kp__I_kp_sl; // uA_per_uF + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_membrane_potential__I_Ca_tot = var_Ca_Concentrations__I_Ca_tot_junc + var_Ca_Concentrations__I_Ca_tot_sl; // uA_per_uF + const double var_parameters__pK = 1.35e-7; // cm_per_sec + const double var_I_Ca__ibark = (-0.75 * mParameters[7] + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pK / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * ((1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_parameters__Fjunc_CaL + (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_parameters__Fsl_CaL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibark; // uA_per_uF + const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec + const double var_I_Ca__ibarna_j = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarna_sl = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF + const double var_membrane_potential__I_Na_tot = var_Na_Concentrations__I_Na_tot_junc + var_Na_Concentrations__I_Na_tot_sl; // uA_per_uF + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = log((mParameters[8] * var_parameters__pNaK + mParameters[7]) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_K_Concentration__I_K_tot = -2 * var_I_NaK__I_nak + var_I_Ca__I_CaK + var_I_Ki__I_ki + var_I_Kp__I_kp + var_I_Kr__I_kr + var_I_Ks__I_ks + var_I_to__I_to; // uA_per_uF + const double var_membrane_potential__I_tot = var_K_Concentration__I_K_tot + var_membrane_potential__I_Ca_tot + var_membrane_potential__I_Cl_tot + var_membrane_potential__I_Na_tot; // uA_per_uF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane_potential__I_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[27], double rResidual[27]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + + //output_nonlinear_state_assignments + double var_chaste_interface__Ca_Concentrations__Ca_i = rCurrentGuess[0]; + double var_chaste_interface__Ca_Concentrations__Ca_j = rCurrentGuess[1]; + double var_chaste_interface__Ca_Concentrations__Ca_sl = rCurrentGuess[2]; + double var_chaste_interface__Cytosolic_Ca_Buffers__CaM = rCurrentGuess[3]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c = rCurrentGuess[4]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m = rCurrentGuess[5]; + double var_chaste_interface__Cytosolic_Ca_Buffers__SRB = rCurrentGuess[6]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc = rCurrentGuess[7]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm = rCurrentGuess[8]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL = rCurrentGuess[9]; + double var_chaste_interface__I_Ca__f_Ca_Bj = rCurrentGuess[10]; + double var_chaste_interface__I_Ca__f_Ca_Bsl = rCurrentGuess[11]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j = rCurrentGuess[12]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl = rCurrentGuess[13]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j = rCurrentGuess[14]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl = rCurrentGuess[15]; + double var_chaste_interface__Na_Buffers__Na_Bj = rCurrentGuess[17]; + double var_chaste_interface__Na_Buffers__Na_Bsl = rCurrentGuess[18]; + double var_chaste_interface__Na_Concentrations__Na_i = rCurrentGuess[19]; + double var_chaste_interface__Na_Concentrations__Na_j = rCurrentGuess[20]; + double var_chaste_interface__Na_Concentrations__Na_sl = rCurrentGuess[21]; + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = rCurrentGuess[22]; + double var_chaste_interface__SR_Ca_Concentrations__Csqn_b = rCurrentGuess[23]; + double var_chaste_interface__SR_Fluxes__Ry_Ri = rCurrentGuess[24]; + double var_chaste_interface__SR_Fluxes__Ry_Ro = rCurrentGuess[25]; + double var_chaste_interface__SR_Fluxes__Ry_Rr = rCurrentGuess[26]; + + //output_equations + const double d_dt_chaste_interface_var_K_Concentration__K_i = 0; // mM / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bj = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bj + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bj) * var_chaste_interface__Ca_Concentrations__Ca_j; // 1 / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bsl + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl) * var_chaste_interface__Ca_Concentrations__Ca_sl; // 1 / msec + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_SR_Fluxes__MaxSR = 15; // dimensionless + const double var_SR_Fluxes__MinSR = 1; // dimensionless + const double var_SR_Fluxes__RI = 1 - var_chaste_interface__SR_Fluxes__Ry_Ri - var_chaste_interface__SR_Fluxes__Ry_Ro - var_chaste_interface__SR_Fluxes__Ry_Rr; // mM + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * mParameters[0]; // mM_per_msec + const double var_parameters__Bmax_CaM = 0.024; // mM + const double var_parameters__Bmax_Naj = 7.5609999999999999; // mM + const double var_parameters__Bmax_Nasl = 1.6499999999999999; // mM + const double var_parameters__Bmax_SR = 0.017100000000000001; // mM + const double var_parameters__Bmax_TnChigh = 0.14000000000000001; // mM + const double var_parameters__Bmax_TnClow = 0.070000000000000007; // mM + const double var_parameters__Bmax_myosin = 0.14000000000000001; // mM + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF + const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__J_ca_juncsl = 8.2413000000000004e-13; // liters_per_msec + const double var_parameters__J_ca_slmyo = 3.2742999999999999e-12; // liters_per_msec + const double var_parameters__J_na_juncsl = 1.8312999999999999e-14; // liters_per_msec + const double var_parameters__J_na_slmyo = 1.6385999999999999e-12; // liters_per_msec + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_parameters__Kmf = 0.00024600000000000002; // mM + const double var_parameters__Kmr = 1.7; // mM + const double var_parameters__Mgi = 1; // mM + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless + const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_parameters__cellLength = 100; // um + const double var_parameters__cellRadius = 10.25; // um + const double var_parameters__Vcell = 1.0000000000000001e-15 * M_PI * pow(var_parameters__cellRadius, 2) * var_parameters__cellLength; // liter + const double var_parameters__Vjunc = 0.00053900000000000009 * var_parameters__Vcell; // liter + const double var_parameters__Vmyo = 0.65000000000000002 * var_parameters__Vcell; // liter + const double d_dt_chaste_interface_var_Na_Concentrations__Na_i = (-var_chaste_interface__Na_Concentrations__Na_i + var_chaste_interface__Na_Concentrations__Na_sl) * mParameters[3] * var_parameters__J_na_slmyo / var_parameters__Vmyo; // mM / msec + const double var_parameters__Bmax_SLhighj = 0.000165 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Bmax_SLlowj = 0.00046000000000000001 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Vsl = 0.02 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_SLhighsl = 0.0134 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Bmax_SLlowsl = 0.037400000000000003 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Vsr = 0.035000000000000003 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_Csqn = 0.14000000000000001 * var_parameters__Vmyo / var_parameters__Vsr; // mM + const double var_parameters__ec50SR = 0.45000000000000001; // mM + const double var_SR_Fluxes__kCaSR = -(-var_SR_Fluxes__MinSR + var_SR_Fluxes__MaxSR) / (1 + pow((var_parameters__ec50SR / var_chaste_interface__SR_Ca_Concentrations__Ca_sr), 2.5)) + var_SR_Fluxes__MaxSR; // dimensionless + const double var_parameters__eca_junc = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF + const double var_parameters__eca_sl = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF + const double var_parameters__ena_junc = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF + const double var_parameters__ena_sl = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF + const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless + const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * mParameters[2] / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_parameters__kiCa = 0.5; // per_mM_per_msec + const double var_SR_Fluxes__kiSRCa = var_SR_Fluxes__kCaSR * var_parameters__kiCa; // per_mM_per_msec + const double var_parameters__kim = 0.0050000000000000001; // per_msec + const double var_parameters__koCa = 10; // per_mM2_per_msec + const double var_SR_Fluxes__koSRCa = var_parameters__koCa / var_SR_Fluxes__kCaSR; // per_mM2_per_msec + const double var_parameters__koff_cam = 0.23799999999999999; // per_msec + const double var_parameters__koff_csqn = 65; // per_msec + const double var_parameters__koff_myoca = 0.00046000000000000001; // per_msec + const double var_parameters__koff_myomg = 5.7000000000000003e-5; // per_msec + const double var_parameters__koff_na = 0.001; // per_msec + const double var_parameters__koff_slh = 0.029999999999999999; // per_msec + const double var_parameters__koff_sll = 1.3; // per_msec + const double var_parameters__koff_sr = 0.059999999999999998; // per_msec + const double var_parameters__koff_tnchca = 3.1999999999999999e-5; // per_msec + const double var_parameters__koff_tnchmg = 0.0033300000000000001; // per_msec + const double var_parameters__koff_tncl = 0.019599999999999999; // per_msec + const double var_parameters__kom = 0.059999999999999998; // per_msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri = -var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kim - var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kom + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_SR_Fluxes__RI * var_SR_Fluxes__koSRCa + var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro = var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kim - var_chaste_interface__SR_Fluxes__Ry_Ro * var_parameters__kom + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr = var_SR_Fluxes__RI * var_parameters__kim + var_chaste_interface__SR_Fluxes__Ry_Ro * var_parameters__kom - pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__kiSRCa; // mM / msec + const double var_parameters__kon_cam = 34; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM = -var_chaste_interface__Cytosolic_Ca_Buffers__CaM * var_parameters__koff_cam + (-var_chaste_interface__Cytosolic_Ca_Buffers__CaM + var_parameters__Bmax_CaM) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_cam; // mM / msec + const double var_parameters__kon_csqn = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b = -var_chaste_interface__SR_Ca_Concentrations__Csqn_b * var_parameters__koff_csqn + (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr * var_parameters__kon_csqn; // mM / msec + const double var_parameters__kon_myoca = 13.800000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c = -var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c * var_parameters__koff_myoca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_myoca; // mM / msec + const double var_parameters__kon_myomg = 0.015699999999999999; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m = -var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m * var_parameters__koff_myomg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_parameters__Mgi * var_parameters__kon_myomg; // mM / msec + const double var_parameters__kon_na = 0.0001; // per_mM_per_msec + const double var_Na_Buffers__dNa_Bj_dt = -var_chaste_interface__Na_Buffers__Na_Bj * var_parameters__koff_na + (-var_chaste_interface__Na_Buffers__Na_Bj + var_parameters__Bmax_Naj) * var_chaste_interface__Na_Concentrations__Na_j * var_parameters__kon_na; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bj = var_Na_Buffers__dNa_Bj_dt; // mM / msec + const double var_Na_Buffers__dNa_Bsl_dt = -var_chaste_interface__Na_Buffers__Na_Bsl * var_parameters__koff_na + (-var_chaste_interface__Na_Buffers__Na_Bsl + var_parameters__Bmax_Nasl) * var_chaste_interface__Na_Concentrations__Na_sl * var_parameters__kon_na; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bsl = var_Na_Buffers__dNa_Bsl_dt; // mM / msec + const double var_parameters__kon_slh = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j * var_parameters__koff_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_slh; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl * var_parameters__koff_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_slh; // mM / msec + const double var_parameters__kon_sll = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_sll; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_sll; // mM / msec + const double var_Junctional_and_SL_Ca_Buffers__J_CaB_junction = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j * var_parameters__koff_slh - var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_sll; // mM_per_msec + const double var_Junctional_and_SL_Ca_Buffers__J_CaB_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl * var_parameters__koff_slh - var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_sll; // mM_per_msec + const double var_parameters__kon_sr = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB = -var_chaste_interface__Cytosolic_Ca_Buffers__SRB * var_parameters__koff_sr + (-var_chaste_interface__Cytosolic_Ca_Buffers__SRB + var_parameters__Bmax_SR) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_sr; // mM / msec + const double var_parameters__kon_tnchca = 2.3700000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc * var_parameters__koff_tnchca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tnchca; // mM / msec + const double var_parameters__kon_tnchmg = 0.0030000000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm * var_parameters__koff_tnchmg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_parameters__Mgi * var_parameters__kon_tnchmg; // mM / msec + const double var_parameters__kon_tncl = 32.700000000000003; // per_mM_per_msec + const double var_Cytosolic_Ca_Buffers__J_CaB_cytosol = -var_chaste_interface__Cytosolic_Ca_Buffers__CaM * var_parameters__koff_cam - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c * var_parameters__koff_myoca - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m * var_parameters__koff_myomg - var_chaste_interface__Cytosolic_Ca_Buffers__SRB * var_parameters__koff_sr - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc * var_parameters__koff_tnchca - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm * var_parameters__koff_tnchmg - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL * var_parameters__koff_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__CaM + var_parameters__Bmax_CaM) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_cam + (-var_chaste_interface__Cytosolic_Ca_Buffers__SRB + var_parameters__Bmax_SR) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_sr + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + var_parameters__Bmax_TnClow) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_myoca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_parameters__Mgi * var_parameters__kon_myomg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tnchca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_parameters__Mgi * var_parameters__kon_tnchmg; // mM_per_msec + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_i = -var_Cytosolic_Ca_Buffers__J_CaB_cytosol + (-var_chaste_interface__Ca_Concentrations__Ca_i + var_chaste_interface__Ca_Concentrations__Ca_sl) * var_parameters__J_ca_slmyo / var_parameters__Vmyo - var_SR_Fluxes__J_serca * var_parameters__Vsr / var_parameters__Vmyo; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL * var_parameters__koff_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + var_parameters__Bmax_TnClow) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tncl; // mM / msec + const double var_SR_Fluxes__J_SRCarel = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * mParameters[1]; // mM_per_msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr = -var_SR_Fluxes__J_SRCarel + var_chaste_interface__SR_Ca_Concentrations__Csqn_b * var_parameters__koff_csqn - var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vsr - (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr * var_parameters__kon_csqn + var_SR_Fluxes__J_serca; // mM / msec + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_j = -var_Junctional_and_SL_Ca_Buffers__J_CaB_junction + (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__Ca_Concentrations__Ca_sl) * var_parameters__J_ca_juncsl / var_parameters__Vjunc + var_SR_Fluxes__J_SRCarel * var_parameters__Vsr / var_parameters__Vjunc + var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vjunc - 0.5 * var_Ca_Concentrations__I_Ca_tot_junc * mParameters[22] / (mParameters[9] * var_parameters__Vjunc); // mM / msec + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl = -var_Junctional_and_SL_Ca_Buffers__J_CaB_sl + (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_i) * var_parameters__J_ca_slmyo / var_parameters__Vsl + (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_j) * var_parameters__J_ca_juncsl / var_parameters__Vsl - 0.5 * var_Ca_Concentrations__I_Ca_tot_sl * mParameters[22] / (mParameters[9] * var_parameters__Vsl); // mM / msec + const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec + const double var_I_Ca__ibarna_j = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarna_sl = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_j = (-var_Na_Buffers__dNa_Bj_dt + (-var_chaste_interface__Na_Concentrations__Na_j + var_chaste_interface__Na_Concentrations__Na_sl) * var_parameters__J_na_juncsl / var_parameters__Vjunc - var_Na_Concentrations__I_Na_tot_junc * mParameters[22] / (mParameters[9] * var_parameters__Vjunc)) * mParameters[3]; // mM / msec + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_sl = (-var_Na_Buffers__dNa_Bsl_dt + (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_i) * var_parameters__J_na_slmyo / var_parameters__Vsl + (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_j) * var_parameters__J_na_juncsl / var_parameters__Vsl - var_Na_Concentrations__I_Na_tot_sl * mParameters[22] / (mParameters[9] * var_parameters__Vsl)) * mParameters[3]; // mM / msec + + rResidual[0] = rCurrentGuess[0] - rY[1] - mDt*d_dt_chaste_interface_var_Ca_Concentrations__Ca_i; + rResidual[10] = rCurrentGuess[10] - rY[13] - mDt*d_dt_chaste_interface_var_I_Ca__f_Ca_Bj; + rResidual[11] = rCurrentGuess[11] - rY[14] - mDt*d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl; + rResidual[26] = rCurrentGuess[26] - rY[15] - mDt*d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr; + rResidual[25] = rCurrentGuess[25] - rY[16] - mDt*d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro; + rResidual[24] = rCurrentGuess[24] - rY[17] - mDt*d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri; + rResidual[17] = rCurrentGuess[17] - rY[18] - mDt*d_dt_chaste_interface_var_Na_Buffers__Na_Bj; + rResidual[18] = rCurrentGuess[18] - rY[19] - mDt*d_dt_chaste_interface_var_Na_Buffers__Na_Bsl; + rResidual[9] = rCurrentGuess[9] - rY[20] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL; + rResidual[7] = rCurrentGuess[7] - rY[21] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc; + rResidual[8] = rCurrentGuess[8] - rY[22] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm; + rResidual[3] = rCurrentGuess[3] - rY[23] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM; + rResidual[4] = rCurrentGuess[4] - rY[24] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c; + rResidual[5] = rCurrentGuess[5] - rY[25] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m; + rResidual[6] = rCurrentGuess[6] - rY[26] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB; + rResidual[14] = rCurrentGuess[14] - rY[27] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j; + rResidual[15] = rCurrentGuess[15] - rY[28] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl; + rResidual[12] = rCurrentGuess[12] - rY[29] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j; + rResidual[13] = rCurrentGuess[13] - rY[30] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl; + rResidual[23] = rCurrentGuess[23] - rY[31] - mDt*d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b; + rResidual[22] = rCurrentGuess[22] - rY[32] - mDt*d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr; + rResidual[20] = rCurrentGuess[20] - rY[33] - mDt*d_dt_chaste_interface_var_Na_Concentrations__Na_j; + rResidual[21] = rCurrentGuess[21] - rY[34] - mDt*d_dt_chaste_interface_var_Na_Concentrations__Na_sl; + rResidual[19] = rCurrentGuess[19] - rY[35] - mDt*d_dt_chaste_interface_var_Na_Concentrations__Na_i; + rResidual[16] = rCurrentGuess[16] - rY[36] - mDt*d_dt_chaste_interface_var_K_Concentration__K_i; + rResidual[1] = rCurrentGuess[1] - rY[37] - mDt*d_dt_chaste_interface_var_Ca_Concentrations__Ca_j; + rResidual[2] = rCurrentGuess[2] - rY[38] - mDt*d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl; + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[27], double rJacobian[27][27]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + + double var_chaste_interface__Ca_Concentrations__Ca_i = rCurrentGuess[0]; + double var_chaste_interface__Ca_Concentrations__Ca_j = rCurrentGuess[1]; + double var_chaste_interface__Ca_Concentrations__Ca_sl = rCurrentGuess[2]; + double var_chaste_interface__Cytosolic_Ca_Buffers__CaM = rCurrentGuess[3]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c = rCurrentGuess[4]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m = rCurrentGuess[5]; + double var_chaste_interface__Cytosolic_Ca_Buffers__SRB = rCurrentGuess[6]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc = rCurrentGuess[7]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm = rCurrentGuess[8]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL = rCurrentGuess[9]; + double var_chaste_interface__I_Ca__f_Ca_Bj = rCurrentGuess[10]; + double var_chaste_interface__I_Ca__f_Ca_Bsl = rCurrentGuess[11]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j = rCurrentGuess[12]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl = rCurrentGuess[13]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j = rCurrentGuess[14]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl = rCurrentGuess[15]; + double var_chaste_interface__Na_Buffers__Na_Bj = rCurrentGuess[17]; + double var_chaste_interface__Na_Buffers__Na_Bsl = rCurrentGuess[18]; + double var_chaste_interface__Na_Concentrations__Na_j = rCurrentGuess[20]; + double var_chaste_interface__Na_Concentrations__Na_sl = rCurrentGuess[21]; + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = rCurrentGuess[22]; + double var_chaste_interface__SR_Ca_Concentrations__Csqn_b = rCurrentGuess[23]; + double var_chaste_interface__SR_Fluxes__Ry_Ri = rCurrentGuess[24]; + double var_chaste_interface__SR_Fluxes__Ry_Ro = rCurrentGuess[25]; + double var_chaste_interface__SR_Fluxes__Ry_Rr = rCurrentGuess[26]; + + const double var_x0 = 34 * var_chaste_interface__Cytosolic_Ca_Buffers__CaM; + const double var_x1 = 100 * var_chaste_interface__Cytosolic_Ca_Buffers__SRB; + const double var_x2 = 32.700000000000003 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL; + const double var_x3 = 1 / M_PI; + const double var_x4 = 0.4794655196082917 * var_x3; + const double var_x5 = pow(var_chaste_interface__Ca_Concentrations__Ca_i, 0.78699999999999992); + const double var_x6 = pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, 1.7869999999999999); + const double var_x7 = 0.38742512113256738 * var_x6; + const double var_x8 = pow(var_chaste_interface__Ca_Concentrations__Ca_i, 1.7869999999999999); + const double var_x9 = 2814485.1633595936 * var_x8; + const double var_x10 = 1 / (1 + var_x7 + var_x9); + const double var_x11 = -31 + 0.10000000000000001 * mParameters[23]; + const double var_x12 = pow(2.6000000000000001, var_x11); + const double var_x13 = var_x12 * mParameters[2]; + const double var_x14 = var_x10 * var_x13; + const double var_x15 = var_x13 * (var_x9 - var_x7) / pow((3.5530476870814998e-7 + var_x8 + 1.3765399305573384e-7 * var_x6), 2); + const double var_x16 = var_x15 * var_x5; + const double var_x17 = 13.800000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c + 13.800000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m; + const double var_x18 = 2.3700000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc + 2.3700000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm; + const double var_x19 = 0.23799999999999999 + 34 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x20 = 13.800000000000001 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x21 = 0.059999999999999998 + 100 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x22 = 2.3700000000000001 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x23 = 0.019599999999999999 + 32.700000000000003 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x24 = pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, 0.78699999999999992); + const double var_x25 = var_x14 * var_x24; + const double var_x26 = var_x15 * var_x24; + const double var_x27 = 145.53224458892851 * var_x3; + const double var_x28 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j; + const double var_x29 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j; + const double var_x30 = 5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001); + const double var_x31 = pow(2.3500000000000001, var_x11); + const double var_x32 = 0.011844800000000001 * var_x31; + const double var_x33 = 1 / mParameters[9]; + const double var_x34 = var_x33 * mParameters[10] * mParameters[23]; + const double var_x35 = var_chaste_interface__membrane_potential__V_m / (mParameters[10] * mParameters[23]); + const double var_x36 = var_x35 * mParameters[9]; + const double var_x37 = exp(-0.72999999999999998 * var_x36); + const double var_x38 = pow(mParameters[8], 3); + const double var_x39 = var_x37 * var_x38; + const double var_x40 = pow(var_chaste_interface__Na_Concentrations__Na_j, 3); + const double var_x41 = var_x40 * mParameters[5]; + const double var_x42 = var_x38 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x43 = (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_j) * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x44 = var_x38 * (1 + 0.00053869674493876331 * var_x40); + const double var_x45 = 1 / (var_x41 + var_x42 + 669921.875 * var_x43 + 1.3 * var_x40 + 0.0035899999999999999 * var_x44); + const double var_x46 = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2); + const double var_x47 = 1 + 2.2499999999999996e-8 / var_x46; + const double var_x48 = pow(1.5700000000000001, var_x11) * mParameters[20] / (1 + 0.32000000000000001 * var_x37); + const double var_x49 = var_x48 / var_x47; + const double var_x50 = var_x45 * var_x49; + const double var_x51 = var_x39 * var_x50; + const double var_x52 = 669921.875 + var_x38; + const double var_x53 = -var_x52 - 373215529.24791086 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x54 = exp(0.27000000000000002 * var_x36); + const double var_x55 = -var_x37 * var_x42 + var_x40 * var_x54 * mParameters[5]; + const double var_x56 = var_x49 * var_x55 / pow((var_x43 + 1.9405247813411081e-6 * var_x40 + 5.3588338192419823e-9 * var_x44 + 1.4927113702623908e-6 * var_x41 + 1.4927113702623908e-6 * var_x42), 2); + const double var_x57 = 4.9020119168033731e-13 * var_x56; + const double var_x58 = var_x45 * var_x48 * var_x55 / (pow(var_x47, 2) * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 3)); + const double var_x59 = var_x35 * pow(mParameters[9], 2); + const double var_x60 = var_x59 * (1 - var_chaste_interface__I_Ca__f_Ca_Bj); + const double var_x61 = exp(2 * var_x36); + const double var_x62 = pow(1.8, var_x11) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f; + const double var_x63 = var_x62 * mParameters[11] / (-1 + var_x61); + const double var_x64 = var_x61 * var_x63; + const double var_x65 = var_x33 * mParameters[22]; + const double var_x66 = var_x3 * var_x65; + const double var_x67 = 88294470889864.781 * var_x66; + const double var_x68 = 64.935064935064929 * mParameters[1]; + const double var_x69 = 1205.9369202226344 * mParameters[0] + var_x68 * var_chaste_interface__SR_Fluxes__Ry_Ro; + const double var_x70 = -0.34100000000000003 * mParameters[5]; + const double var_x71 = 0.34100000000000003 * var_x61; + const double var_x72 = var_x36 * mParameters[22]; + const double var_x73 = var_x3 * var_x63 * var_x72; + const double var_x74 = 100 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x75 = 0.029999999999999999 + var_x74; + const double var_x76 = 1.3 + var_x74; + const double var_x77 = pow(var_chaste_interface__Na_Concentrations__Na_j, 2); + const double var_x78 = 3 * mParameters[5]; + const double var_x79 = 5.8017639429904805e-6 * var_x38; + const double var_x80 = -3.9000000000000004 * var_x77 - var_x77 * var_x78 - var_x77 * var_x79; + const double var_x81 = var_x54 * mParameters[5]; + const double var_x82 = var_x50 * var_x77 * var_x81; + const double var_x83 = -var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr; + const double var_x84 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl; + const double var_x85 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl; + const double var_x86 = 5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001); + const double var_x87 = 0.095835200000000009 * var_x31; + const double var_x88 = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3); + const double var_x89 = var_x88 * mParameters[5]; + const double var_x90 = var_x38 * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x91 = (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_sl) * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x92 = var_x38 * (1 + 0.00053869674493876331 * var_x88); + const double var_x93 = 1 / (var_x89 + var_x90 + 669921.875 * var_x91 + 1.3 * var_x88 + 0.0035899999999999999 * var_x92); + const double var_x94 = 1 + 2.2499999999999996e-8 / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2); + const double var_x95 = var_x48 / var_x94; + const double var_x96 = var_x93 * var_x95; + const double var_x97 = var_x39 * var_x96; + const double var_x98 = -var_x52 - 373215529.24791086 * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x99 = -var_x37 * var_x90 + var_x54 * var_x88 * mParameters[5]; + const double var_x100 = var_x95 * var_x99 / pow((var_x91 + 1.9405247813411081e-6 * var_x88 + 5.3588338192419823e-9 * var_x92 + 1.4927113702623908e-6 * var_x89 + 1.4927113702623908e-6 * var_x90), 2); + const double var_x101 = 3.9661732781409103e-12 * var_x100; + const double var_x102 = var_x48 * var_x93 * var_x99 / (pow(var_x94, 2) * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 3)); + const double var_x103 = var_x59 * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl); + const double var_x104 = 2379535990481.856 * var_x66; + const double var_x105 = 100 * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x106 = 0.029999999999999999 + var_x105; + const double var_x107 = 1.3 + var_x105; + const double var_x108 = pow(var_chaste_interface__Na_Concentrations__Na_sl, 2); + const double var_x109 = -3.9000000000000004 * var_x108 - var_x108 * var_x78 - var_x108 * var_x79; + const double var_x110 = var_x108 * var_x81 * var_x96; + const double var_x111 = 0.001 + 0.0001 * var_chaste_interface__Na_Concentrations__Na_j; + const double var_x112 = 0.0001 * var_chaste_interface__Na_Buffers__Na_Bj; + const double var_x113 = 0.001 + 0.0001 * var_chaste_interface__Na_Concentrations__Na_sl; + const double var_x114 = 0.0001 * var_chaste_interface__Na_Buffers__Na_Bsl; + const double var_x115 = var_x3 * mParameters[3]; + const double var_x116 = 0.23994508763098885 * var_x115; + const double var_x117 = 7.3530178752050587e-13 * var_x56; + const double var_x118 = var_x115 * var_x65; + const double var_x119 = -0.75 * mParameters[8]; + const double var_x120 = exp(var_x36); + const double var_x121 = 0.75 * var_x120; + const double var_x122 = var_x62 / (-1 + var_x120); + const double var_x123 = var_x115 * var_x122 * var_x72; + const double var_x124 = 3.2338732908121872 * var_x3; + const double var_x125 = var_x34 / var_chaste_interface__Na_Concentrations__Na_j; + const double var_x126 = mParameters[21] * mParameters[7] / ((1.5 + mParameters[7]) * (1 + 0.1245 * exp(-0.10000000000000001 * var_x36) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8])) * exp(-var_x36))); + const double var_x127 = pow(var_chaste_interface__I_Na__m, 3) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * mParameters[12]; + const double var_x128 = var_x120 * var_x122; + const double var_x129 = 5.9492599172113663e-12 * var_x100; + const double var_x130 = var_x34 / var_chaste_interface__Na_Concentrations__Na_sl; + const double var_x131 = mParameters[1]; + const double var_x132 = 18.571428571428569 * mParameters[0] + var_x131 * var_chaste_interface__SR_Fluxes__Ry_Ro; + const double var_x133 = 100 * var_chaste_interface__SR_Ca_Concentrations__Csqn_b; + const double var_x134 = 65 + 100 * var_chaste_interface__SR_Ca_Concentrations__Ca_sr; + const double var_x135 = 1 / var_chaste_interface__SR_Ca_Concentrations__Ca_sr; + const double var_x136 = pow(var_x135, 2.5); + const double var_x137 = 1 + 0.13584112963311223 * var_x136; + const double var_x138 = 1 / var_x137; + const double var_x139 = 7.5 - 7 * var_x138; + const double var_x140 = var_x139 * var_chaste_interface__SR_Fluxes__Ry_Ro; + const double var_x141 = 1 - var_chaste_interface__SR_Fluxes__Ry_Ri - var_chaste_interface__SR_Fluxes__Ry_Ro - var_chaste_interface__SR_Fluxes__Ry_Rr; + const double var_x142 = 1 / (15 - 14 * var_x138); + const double var_x143 = 20 * var_x142 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x144 = pow(var_x137, (-2)); + const double var_x145 = var_x135 * var_x136 * var_x144; + const double var_x146 = 2.3772197685794643 * var_x145 * var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro; + const double var_x147 = 0.21130842387373014 * var_x145 * var_x46 / pow((1 - 0.93333333333333335 * var_x138), 2); + const double var_x148 = 10 * var_x142 * var_x46; + const double var_x149 = var_x139 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x150 = var_x143 * var_chaste_interface__SR_Fluxes__Ry_Rr; + const double var_x151 = var_x147 * var_chaste_interface__SR_Fluxes__Ry_Rr; + + + rJacobian[0][0] = 1.0 - (mDt * (-7.0788000000000011 + var_x0 + var_x1 + var_x17 + var_x18 + var_x2 - var_x4 + 3.4188518090540365e-8 * var_x16 - 270818.42237280885 * var_x14 * var_x5)); + rJacobian[0][1] = 0.0; + rJacobian[0][2] = -(mDt * (var_x4)); + rJacobian[0][3] = -(mDt * (var_x19)); + rJacobian[0][4] = -(mDt * (0.016159999999999997 + var_x20)); + rJacobian[0][5] = -(mDt * (0.015757 + var_x20)); + rJacobian[0][6] = -(mDt * (var_x21)); + rJacobian[0][7] = -(mDt * (0.003032 + var_x22)); + rJacobian[0][8] = -(mDt * (0.0063300000000000006 + var_x22)); + rJacobian[0][9] = -(mDt * (var_x23)); + rJacobian[0][10] = 0.0; + rJacobian[0][11] = 0.0; + rJacobian[0][12] = 0.0; + rJacobian[0][13] = 0.0; + rJacobian[0][14] = 0.0; + rJacobian[0][15] = 0.0; + rJacobian[0][16] = 0.0; + rJacobian[0][17] = 0.0; + rJacobian[0][18] = 0.0; + rJacobian[0][19] = 0.0; + rJacobian[0][20] = 0.0; + rJacobian[0][21] = 0.0; + rJacobian[0][22] = -(mDt * (0.037279237232671424 * var_x25 + 4.7061860318210743e-15 * var_x26)); + rJacobian[0][23] = 0.0; + rJacobian[0][24] = 0.0; + rJacobian[0][25] = 0.0; + rJacobian[0][26] = 0.0; + rJacobian[1][0] = 0.0; + rJacobian[1][1] = 1.0 - (mDt * (-75.37105751391465 + var_x28 + var_x29 - var_x27 - var_x69 - var_x67 * (0.22 * var_x51 - 9.8999999999999977e-9 * var_x58 - var_x53 * var_x57 + 3.0321500000000001e-5 * var_x34 / var_chaste_interface__Ca_Concentrations__Ca_j + 0.00029830680000000003 * var_x60 * var_x64 + var_x32 * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 0.60000000000000009) / var_x30 - var_x32 * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2.2000000000000002) / pow(var_x30, 2)))); + rJacobian[1][2] = -(mDt * (var_x27)); + rJacobian[1][3] = 0.0; + rJacobian[1][4] = 0.0; + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = 0.0; + rJacobian[1][8] = 0.0; + rJacobian[1][9] = 0.0; + rJacobian[1][10] = -(mDt * (77240003134.453705 * var_x73 * (var_x70 + var_x71 * var_chaste_interface__Ca_Concentrations__Ca_j))); + rJacobian[1][11] = 0.0; + rJacobian[1][12] = -(mDt * (var_x75)); + rJacobian[1][13] = 0.0; + rJacobian[1][14] = -(mDt * (var_x76)); + rJacobian[1][15] = 0.0; + rJacobian[1][16] = 0.0; + rJacobian[1][17] = 0.0; + rJacobian[1][18] = 0.0; + rJacobian[1][19] = 0.0; + rJacobian[1][20] = -(mDt * (-var_x67 * (-0.66000000000000003 * var_x82 - var_x57 * var_x80))); + rJacobian[1][21] = 0.0; + rJacobian[1][22] = -(mDt * (var_x69)); + rJacobian[1][23] = 0.0; + rJacobian[1][24] = 0.0; + rJacobian[1][25] = -(mDt * (var_x68 * var_x83)); + rJacobian[1][26] = 0.0; + rJacobian[2][0] = -(mDt * (15.582629387269481 * var_x3)); + rJacobian[2][1] = -(mDt * (3.9220939916716238 * var_x3)); + rJacobian[2][2] = 1.0 - (mDt * (-165.10000000000002 + var_x84 + var_x85 - 19.504723378941105 * var_x3 - var_x104 * (1.78 * var_x97 - 8.0099999999999983e-8 * var_x102 - var_x101 * var_x98 + 0.00024532850000000001 * var_x34 / var_chaste_interface__Ca_Concentrations__Ca_sl + 3.3145199999999996e-5 * var_x103 * var_x64 + var_x87 * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 0.60000000000000009) / var_x86 - var_x87 * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2.2000000000000002) / pow(var_x86, 2)))); + rJacobian[2][3] = 0.0; + rJacobian[2][4] = 0.0; + rJacobian[2][5] = 0.0; + rJacobian[2][6] = 0.0; + rJacobian[2][7] = 0.0; + rJacobian[2][8] = 0.0; + rJacobian[2][9] = 0.0; + rJacobian[2][10] = 0.0; + rJacobian[2][11] = -(mDt * (231290898.27483633 * var_x73 * (var_x70 + var_x71 * var_chaste_interface__Ca_Concentrations__Ca_sl))); + rJacobian[2][12] = 0.0; + rJacobian[2][13] = -(mDt * (var_x106)); + rJacobian[2][14] = 0.0; + rJacobian[2][15] = -(mDt * (var_x107)); + rJacobian[2][16] = 0.0; + rJacobian[2][17] = 0.0; + rJacobian[2][18] = 0.0; + rJacobian[2][19] = 0.0; + rJacobian[2][20] = 0.0; + rJacobian[2][21] = -(mDt * (-var_x104 * (-5.3399999999999999 * var_x110 - var_x101 * var_x109))); + rJacobian[2][22] = 0.0; + rJacobian[2][23] = 0.0; + rJacobian[2][24] = 0.0; + rJacobian[2][25] = 0.0; + rJacobian[2][26] = 0.0; + rJacobian[3][0] = -(mDt * (0.81600000000000006 - var_x0)); + rJacobian[3][1] = 0.0; + rJacobian[3][2] = 0.0; + rJacobian[3][3] = 1.0 - (mDt * (-var_x19)); + rJacobian[3][4] = 0.0; + rJacobian[3][5] = 0.0; + rJacobian[3][6] = 0.0; + rJacobian[3][7] = 0.0; + rJacobian[3][8] = 0.0; + rJacobian[3][9] = 0.0; + rJacobian[3][10] = 0.0; + rJacobian[3][11] = 0.0; + rJacobian[3][12] = 0.0; + rJacobian[3][13] = 0.0; + rJacobian[3][14] = 0.0; + rJacobian[3][15] = 0.0; + rJacobian[3][16] = 0.0; + rJacobian[3][17] = 0.0; + rJacobian[3][18] = 0.0; + rJacobian[3][19] = 0.0; + rJacobian[3][20] = 0.0; + rJacobian[3][21] = 0.0; + rJacobian[3][22] = 0.0; + rJacobian[3][23] = 0.0; + rJacobian[3][24] = 0.0; + rJacobian[3][25] = 0.0; + rJacobian[3][26] = 0.0; + rJacobian[4][0] = -(mDt * (1.9320000000000004 - var_x17)); + rJacobian[4][1] = 0.0; + rJacobian[4][2] = 0.0; + rJacobian[4][3] = 0.0; + rJacobian[4][4] = 1.0 - (mDt * (-0.00046000000000000001 - var_x20)); + rJacobian[4][5] = -(mDt * (-var_x20)); + rJacobian[4][6] = 0.0; + rJacobian[4][7] = 0.0; + rJacobian[4][8] = 0.0; + rJacobian[4][9] = 0.0; + rJacobian[4][10] = 0.0; + rJacobian[4][11] = 0.0; + rJacobian[4][12] = 0.0; + rJacobian[4][13] = 0.0; + rJacobian[4][14] = 0.0; + rJacobian[4][15] = 0.0; + rJacobian[4][16] = 0.0; + rJacobian[4][17] = 0.0; + rJacobian[4][18] = 0.0; + rJacobian[4][19] = 0.0; + rJacobian[4][20] = 0.0; + rJacobian[4][21] = 0.0; + rJacobian[4][22] = 0.0; + rJacobian[4][23] = 0.0; + rJacobian[4][24] = 0.0; + rJacobian[4][25] = 0.0; + rJacobian[4][26] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = 0.0; + rJacobian[5][3] = 0.0; + rJacobian[5][4] = -(mDt * (-0.015699999999999999)); + rJacobian[5][5] = 1.0 - (mDt * (-0.015757)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[5][8] = 0.0; + rJacobian[5][9] = 0.0; + rJacobian[5][10] = 0.0; + rJacobian[5][11] = 0.0; + rJacobian[5][12] = 0.0; + rJacobian[5][13] = 0.0; + rJacobian[5][14] = 0.0; + rJacobian[5][15] = 0.0; + rJacobian[5][16] = 0.0; + rJacobian[5][17] = 0.0; + rJacobian[5][18] = 0.0; + rJacobian[5][19] = 0.0; + rJacobian[5][20] = 0.0; + rJacobian[5][21] = 0.0; + rJacobian[5][22] = 0.0; + rJacobian[5][23] = 0.0; + rJacobian[5][24] = 0.0; + rJacobian[5][25] = 0.0; + rJacobian[5][26] = 0.0; + rJacobian[6][0] = -(mDt * (1.71 - var_x1)); + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (-var_x21)); + rJacobian[6][7] = 0.0; + rJacobian[6][8] = 0.0; + rJacobian[6][9] = 0.0; + rJacobian[6][10] = 0.0; + rJacobian[6][11] = 0.0; + rJacobian[6][12] = 0.0; + rJacobian[6][13] = 0.0; + rJacobian[6][14] = 0.0; + rJacobian[6][15] = 0.0; + rJacobian[6][16] = 0.0; + rJacobian[6][17] = 0.0; + rJacobian[6][18] = 0.0; + rJacobian[6][19] = 0.0; + rJacobian[6][20] = 0.0; + rJacobian[6][21] = 0.0; + rJacobian[6][22] = 0.0; + rJacobian[6][23] = 0.0; + rJacobian[6][24] = 0.0; + rJacobian[6][25] = 0.0; + rJacobian[6][26] = 0.0; + rJacobian[7][0] = -(mDt * (0.33180000000000004 - var_x18)); + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = 0.0; + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (-3.1999999999999999e-5 - var_x22)); + rJacobian[7][8] = -(mDt * (-var_x22)); + rJacobian[7][9] = 0.0; + rJacobian[7][10] = 0.0; + rJacobian[7][11] = 0.0; + rJacobian[7][12] = 0.0; + rJacobian[7][13] = 0.0; + rJacobian[7][14] = 0.0; + rJacobian[7][15] = 0.0; + rJacobian[7][16] = 0.0; + rJacobian[7][17] = 0.0; + rJacobian[7][18] = 0.0; + rJacobian[7][19] = 0.0; + rJacobian[7][20] = 0.0; + rJacobian[7][21] = 0.0; + rJacobian[7][22] = 0.0; + rJacobian[7][23] = 0.0; + rJacobian[7][24] = 0.0; + rJacobian[7][25] = 0.0; + rJacobian[7][26] = 0.0; + rJacobian[8][0] = 0.0; + rJacobian[8][1] = 0.0; + rJacobian[8][2] = 0.0; + rJacobian[8][3] = 0.0; + rJacobian[8][4] = 0.0; + rJacobian[8][5] = 0.0; + rJacobian[8][6] = 0.0; + rJacobian[8][7] = -(mDt * (-0.0030000000000000001)); + rJacobian[8][8] = 1.0 - (mDt * (-0.0063300000000000006)); + rJacobian[8][9] = 0.0; + rJacobian[8][10] = 0.0; + rJacobian[8][11] = 0.0; + rJacobian[8][12] = 0.0; + rJacobian[8][13] = 0.0; + rJacobian[8][14] = 0.0; + rJacobian[8][15] = 0.0; + rJacobian[8][16] = 0.0; + rJacobian[8][17] = 0.0; + rJacobian[8][18] = 0.0; + rJacobian[8][19] = 0.0; + rJacobian[8][20] = 0.0; + rJacobian[8][21] = 0.0; + rJacobian[8][22] = 0.0; + rJacobian[8][23] = 0.0; + rJacobian[8][24] = 0.0; + rJacobian[8][25] = 0.0; + rJacobian[8][26] = 0.0; + rJacobian[9][0] = -(mDt * (2.2890000000000006 - var_x2)); + rJacobian[9][1] = 0.0; + rJacobian[9][2] = 0.0; + rJacobian[9][3] = 0.0; + rJacobian[9][4] = 0.0; + rJacobian[9][5] = 0.0; + rJacobian[9][6] = 0.0; + rJacobian[9][7] = 0.0; + rJacobian[9][8] = 0.0; + rJacobian[9][9] = 1.0 - (mDt * (-var_x23)); + rJacobian[9][10] = 0.0; + rJacobian[9][11] = 0.0; + rJacobian[9][12] = 0.0; + rJacobian[9][13] = 0.0; + rJacobian[9][14] = 0.0; + rJacobian[9][15] = 0.0; + rJacobian[9][16] = 0.0; + rJacobian[9][17] = 0.0; + rJacobian[9][18] = 0.0; + rJacobian[9][19] = 0.0; + rJacobian[9][20] = 0.0; + rJacobian[9][21] = 0.0; + rJacobian[9][22] = 0.0; + rJacobian[9][23] = 0.0; + rJacobian[9][24] = 0.0; + rJacobian[9][25] = 0.0; + rJacobian[9][26] = 0.0; + rJacobian[10][0] = 0.0; + rJacobian[10][1] = -(mDt * (1.7 - 1.7 * var_chaste_interface__I_Ca__f_Ca_Bj)); + rJacobian[10][2] = 0.0; + rJacobian[10][3] = 0.0; + rJacobian[10][4] = 0.0; + rJacobian[10][5] = 0.0; + rJacobian[10][6] = 0.0; + rJacobian[10][7] = 0.0; + rJacobian[10][8] = 0.0; + rJacobian[10][9] = 0.0; + rJacobian[10][10] = 1.0 - (mDt * (-0.011900000000000001 - 1.7 * var_chaste_interface__Ca_Concentrations__Ca_j)); + rJacobian[10][11] = 0.0; + rJacobian[10][12] = 0.0; + rJacobian[10][13] = 0.0; + rJacobian[10][14] = 0.0; + rJacobian[10][15] = 0.0; + rJacobian[10][16] = 0.0; + rJacobian[10][17] = 0.0; + rJacobian[10][18] = 0.0; + rJacobian[10][19] = 0.0; + rJacobian[10][20] = 0.0; + rJacobian[10][21] = 0.0; + rJacobian[10][22] = 0.0; + rJacobian[10][23] = 0.0; + rJacobian[10][24] = 0.0; + rJacobian[10][25] = 0.0; + rJacobian[10][26] = 0.0; + rJacobian[11][0] = 0.0; + rJacobian[11][1] = 0.0; + rJacobian[11][2] = -(mDt * (1.7 - 1.7 * var_chaste_interface__I_Ca__f_Ca_Bsl)); + rJacobian[11][3] = 0.0; + rJacobian[11][4] = 0.0; + rJacobian[11][5] = 0.0; + rJacobian[11][6] = 0.0; + rJacobian[11][7] = 0.0; + rJacobian[11][8] = 0.0; + rJacobian[11][9] = 0.0; + rJacobian[11][10] = 0.0; + rJacobian[11][11] = 1.0 - (mDt * (-0.011900000000000001 - 1.7 * var_chaste_interface__Ca_Concentrations__Ca_sl)); + rJacobian[11][12] = 0.0; + rJacobian[11][13] = 0.0; + rJacobian[11][14] = 0.0; + rJacobian[11][15] = 0.0; + rJacobian[11][16] = 0.0; + rJacobian[11][17] = 0.0; + rJacobian[11][18] = 0.0; + rJacobian[11][19] = 0.0; + rJacobian[11][20] = 0.0; + rJacobian[11][21] = 0.0; + rJacobian[11][22] = 0.0; + rJacobian[11][23] = 0.0; + rJacobian[11][24] = 0.0; + rJacobian[11][25] = 0.0; + rJacobian[11][26] = 0.0; + rJacobian[12][0] = 0.0; + rJacobian[12][1] = -(mDt * (19.897959183673468 - var_x28)); + rJacobian[12][2] = 0.0; + rJacobian[12][3] = 0.0; + rJacobian[12][4] = 0.0; + rJacobian[12][5] = 0.0; + rJacobian[12][6] = 0.0; + rJacobian[12][7] = 0.0; + rJacobian[12][8] = 0.0; + rJacobian[12][9] = 0.0; + rJacobian[12][10] = 0.0; + rJacobian[12][11] = 0.0; + rJacobian[12][12] = 1.0 - (mDt * (-var_x75)); + rJacobian[12][13] = 0.0; + rJacobian[12][14] = 0.0; + rJacobian[12][15] = 0.0; + rJacobian[12][16] = 0.0; + rJacobian[12][17] = 0.0; + rJacobian[12][18] = 0.0; + rJacobian[12][19] = 0.0; + rJacobian[12][20] = 0.0; + rJacobian[12][21] = 0.0; + rJacobian[12][22] = 0.0; + rJacobian[12][23] = 0.0; + rJacobian[12][24] = 0.0; + rJacobian[12][25] = 0.0; + rJacobian[12][26] = 0.0; + rJacobian[13][0] = 0.0; + rJacobian[13][1] = 0.0; + rJacobian[13][2] = -(mDt * (43.550000000000004 - var_x84)); + rJacobian[13][3] = 0.0; + rJacobian[13][4] = 0.0; + rJacobian[13][5] = 0.0; + rJacobian[13][6] = 0.0; + rJacobian[13][7] = 0.0; + rJacobian[13][8] = 0.0; + rJacobian[13][9] = 0.0; + rJacobian[13][10] = 0.0; + rJacobian[13][11] = 0.0; + rJacobian[13][12] = 0.0; + rJacobian[13][13] = 1.0 - (mDt * (-var_x106)); + rJacobian[13][14] = 0.0; + rJacobian[13][15] = 0.0; + rJacobian[13][16] = 0.0; + rJacobian[13][17] = 0.0; + rJacobian[13][18] = 0.0; + rJacobian[13][19] = 0.0; + rJacobian[13][20] = 0.0; + rJacobian[13][21] = 0.0; + rJacobian[13][22] = 0.0; + rJacobian[13][23] = 0.0; + rJacobian[13][24] = 0.0; + rJacobian[13][25] = 0.0; + rJacobian[13][26] = 0.0; + rJacobian[14][0] = 0.0; + rJacobian[14][1] = -(mDt * (55.473098330241186 - var_x29)); + rJacobian[14][2] = 0.0; + rJacobian[14][3] = 0.0; + rJacobian[14][4] = 0.0; + rJacobian[14][5] = 0.0; + rJacobian[14][6] = 0.0; + rJacobian[14][7] = 0.0; + rJacobian[14][8] = 0.0; + rJacobian[14][9] = 0.0; + rJacobian[14][10] = 0.0; + rJacobian[14][11] = 0.0; + rJacobian[14][12] = 0.0; + rJacobian[14][13] = 0.0; + rJacobian[14][14] = 1.0 - (mDt * (-var_x76)); + rJacobian[14][15] = 0.0; + rJacobian[14][16] = 0.0; + rJacobian[14][17] = 0.0; + rJacobian[14][18] = 0.0; + rJacobian[14][19] = 0.0; + rJacobian[14][20] = 0.0; + rJacobian[14][21] = 0.0; + rJacobian[14][22] = 0.0; + rJacobian[14][23] = 0.0; + rJacobian[14][24] = 0.0; + rJacobian[14][25] = 0.0; + rJacobian[14][26] = 0.0; + rJacobian[15][0] = 0.0; + rJacobian[15][1] = 0.0; + rJacobian[15][2] = -(mDt * (121.55000000000001 - var_x85)); + rJacobian[15][3] = 0.0; + rJacobian[15][4] = 0.0; + rJacobian[15][5] = 0.0; + rJacobian[15][6] = 0.0; + rJacobian[15][7] = 0.0; + rJacobian[15][8] = 0.0; + rJacobian[15][9] = 0.0; + rJacobian[15][10] = 0.0; + rJacobian[15][11] = 0.0; + rJacobian[15][12] = 0.0; + rJacobian[15][13] = 0.0; + rJacobian[15][14] = 0.0; + rJacobian[15][15] = 1.0 - (mDt * (-var_x107)); + rJacobian[15][16] = 0.0; + rJacobian[15][17] = 0.0; + rJacobian[15][18] = 0.0; + rJacobian[15][19] = 0.0; + rJacobian[15][20] = 0.0; + rJacobian[15][21] = 0.0; + rJacobian[15][22] = 0.0; + rJacobian[15][23] = 0.0; + rJacobian[15][24] = 0.0; + rJacobian[15][25] = 0.0; + rJacobian[15][26] = 0.0; + rJacobian[16][0] = 0.0; + rJacobian[16][1] = 0.0; + rJacobian[16][2] = 0.0; + rJacobian[16][3] = 0.0; + rJacobian[16][4] = 0.0; + rJacobian[16][5] = 0.0; + rJacobian[16][6] = 0.0; + rJacobian[16][7] = 0.0; + rJacobian[16][8] = 0.0; + rJacobian[16][9] = 0.0; + rJacobian[16][10] = 0.0; + rJacobian[16][11] = 0.0; + rJacobian[16][12] = 0.0; + rJacobian[16][13] = 0.0; + rJacobian[16][14] = 0.0; + rJacobian[16][15] = 0.0; + rJacobian[16][16] = 1.0; + rJacobian[16][17] = 0.0; + rJacobian[16][18] = 0.0; + rJacobian[16][19] = 0.0; + rJacobian[16][20] = 0.0; + rJacobian[16][21] = 0.0; + rJacobian[16][22] = 0.0; + rJacobian[16][23] = 0.0; + rJacobian[16][24] = 0.0; + rJacobian[16][25] = 0.0; + rJacobian[16][26] = 0.0; + rJacobian[17][0] = 0.0; + rJacobian[17][1] = 0.0; + rJacobian[17][2] = 0.0; + rJacobian[17][3] = 0.0; + rJacobian[17][4] = 0.0; + rJacobian[17][5] = 0.0; + rJacobian[17][6] = 0.0; + rJacobian[17][7] = 0.0; + rJacobian[17][8] = 0.0; + rJacobian[17][9] = 0.0; + rJacobian[17][10] = 0.0; + rJacobian[17][11] = 0.0; + rJacobian[17][12] = 0.0; + rJacobian[17][13] = 0.0; + rJacobian[17][14] = 0.0; + rJacobian[17][15] = 0.0; + rJacobian[17][16] = 0.0; + rJacobian[17][17] = 1.0 - (mDt * (-var_x111)); + rJacobian[17][18] = 0.0; + rJacobian[17][19] = 0.0; + rJacobian[17][20] = -(mDt * (0.0007561 - var_x112)); + rJacobian[17][21] = 0.0; + rJacobian[17][22] = 0.0; + rJacobian[17][23] = 0.0; + rJacobian[17][24] = 0.0; + rJacobian[17][25] = 0.0; + rJacobian[17][26] = 0.0; + rJacobian[18][0] = 0.0; + rJacobian[18][1] = 0.0; + rJacobian[18][2] = 0.0; + rJacobian[18][3] = 0.0; + rJacobian[18][4] = 0.0; + rJacobian[18][5] = 0.0; + rJacobian[18][6] = 0.0; + rJacobian[18][7] = 0.0; + rJacobian[18][8] = 0.0; + rJacobian[18][9] = 0.0; + rJacobian[18][10] = 0.0; + rJacobian[18][11] = 0.0; + rJacobian[18][12] = 0.0; + rJacobian[18][13] = 0.0; + rJacobian[18][14] = 0.0; + rJacobian[18][15] = 0.0; + rJacobian[18][16] = 0.0; + rJacobian[18][17] = 0.0; + rJacobian[18][18] = 1.0 - (mDt * (-var_x113)); + rJacobian[18][19] = 0.0; + rJacobian[18][20] = 0.0; + rJacobian[18][21] = -(mDt * (0.000165 - var_x114)); + rJacobian[18][22] = 0.0; + rJacobian[18][23] = 0.0; + rJacobian[18][24] = 0.0; + rJacobian[18][25] = 0.0; + rJacobian[18][26] = 0.0; + rJacobian[19][0] = 0.0; + rJacobian[19][1] = 0.0; + rJacobian[19][2] = 0.0; + rJacobian[19][3] = 0.0; + rJacobian[19][4] = 0.0; + rJacobian[19][5] = 0.0; + rJacobian[19][6] = 0.0; + rJacobian[19][7] = 0.0; + rJacobian[19][8] = 0.0; + rJacobian[19][9] = 0.0; + rJacobian[19][10] = 0.0; + rJacobian[19][11] = 0.0; + rJacobian[19][12] = 0.0; + rJacobian[19][13] = 0.0; + rJacobian[19][14] = 0.0; + rJacobian[19][15] = 0.0; + rJacobian[19][16] = 0.0; + rJacobian[19][17] = 0.0; + rJacobian[19][18] = 0.0; + rJacobian[19][19] = 1.0 - (mDt * (-var_x116)); + rJacobian[19][20] = 0.0; + rJacobian[19][21] = -(mDt * (var_x116)); + rJacobian[19][22] = 0.0; + rJacobian[19][23] = 0.0; + rJacobian[19][24] = 0.0; + rJacobian[19][25] = 0.0; + rJacobian[19][26] = 0.0; + rJacobian[20][0] = 0.0; + rJacobian[20][1] = -(mDt * (-176588941779729.56 * var_x118 * (1.4849999999999997e-8 * var_x58 - 0.33000000000000002 * var_x51 + var_x117 * var_x53))); + rJacobian[20][2] = 0.0; + rJacobian[20][3] = 0.0; + rJacobian[20][4] = 0.0; + rJacobian[20][5] = 0.0; + rJacobian[20][6] = 0.0; + rJacobian[20][7] = 0.0; + rJacobian[20][8] = 0.0; + rJacobian[20][9] = 0.0; + rJacobian[20][10] = -(mDt * (536388.91065592843 * var_x123 * (var_x119 + var_x121 * var_chaste_interface__Na_Concentrations__Na_j))); + rJacobian[20][11] = 0.0; + rJacobian[20][12] = 0.0; + rJacobian[20][13] = 0.0; + rJacobian[20][14] = 0.0; + rJacobian[20][15] = 0.0; + rJacobian[20][16] = 0.0; + rJacobian[20][17] = -(mDt * (var_x111 * mParameters[3])); + rJacobian[20][18] = 0.0; + rJacobian[20][19] = 0.0; + rJacobian[20][20] = 1.0 - (mDt * ((-0.0007561 + var_x112 - var_x124 - 176588941779729.56 * var_x66 * (0.98999999999999999 * var_x82 + 6.567e-5 * var_x125 + var_x117 * var_x80 + 0.11 * var_x125 * var_x127 + 2.2781249999999999e-9 * var_x128 * var_x60 + 9.0157776108189337e-5 * var_x126 / (pow((6.8301345536507063e-5 + pow(var_chaste_interface__Na_Concentrations__Na_j, (-4))), 2) * pow(var_chaste_interface__Na_Concentrations__Na_j, 5)))) * mParameters[3])); + rJacobian[20][21] = -(mDt * (var_x124 * mParameters[3])); + rJacobian[20][22] = 0.0; + rJacobian[20][23] = 0.0; + rJacobian[20][24] = 0.0; + rJacobian[20][25] = 0.0; + rJacobian[20][26] = 0.0; + rJacobian[21][0] = 0.0; + rJacobian[21][1] = 0.0; + rJacobian[21][2] = -(mDt * (-4759071980963.7119 * var_x118 * (1.2014999999999997e-7 * var_x102 - 2.6699999999999999 * var_x97 + var_x129 * var_x98))); + rJacobian[21][3] = 0.0; + rJacobian[21][4] = 0.0; + rJacobian[21][5] = 0.0; + rJacobian[21][6] = 0.0; + rJacobian[21][7] = 0.0; + rJacobian[21][8] = 0.0; + rJacobian[21][9] = 0.0; + rJacobian[21][10] = 0.0; + rJacobian[21][11] = -(mDt * (1606.1867935752523 * var_x123 * (var_x119 + var_x121 * var_chaste_interface__Na_Concentrations__Na_sl))); + rJacobian[21][12] = 0.0; + rJacobian[21][13] = 0.0; + rJacobian[21][14] = 0.0; + rJacobian[21][15] = 0.0; + rJacobian[21][16] = 0.0; + rJacobian[21][17] = 0.0; + rJacobian[21][18] = -(mDt * (var_x113 * mParameters[3])); + rJacobian[21][19] = -(mDt * (7.7982153480071377 * var_x115)); + rJacobian[21][20] = -(mDt * (0.087152885187388451 * var_x115)); + rJacobian[21][21] = 1.0 - (mDt * ((-0.000165 + var_x114 - 7.8853682331945256 * var_x3 - 4759071980963.7119 * var_x66 * (0.00053133 * var_x130 + 8.0099999999999998 * var_x110 + var_x109 * var_x129 + 2.5312499999999994e-10 * var_x103 * var_x128 + 0.89000000000000001 * var_x127 * var_x130 + 0.00072945837032989554 * var_x126 / (pow((6.8301345536507063e-5 + pow(var_chaste_interface__Na_Concentrations__Na_sl, (-4))), 2) * pow(var_chaste_interface__Na_Concentrations__Na_sl, 5)))) * mParameters[3])); + rJacobian[21][22] = 0.0; + rJacobian[21][23] = 0.0; + rJacobian[21][24] = 0.0; + rJacobian[21][25] = 0.0; + rJacobian[21][26] = 0.0; + rJacobian[22][0] = -(mDt * (-6.3492962168146398e-7 * var_x16 + 5029484.9869235931 * var_x10 * var_x12 * var_x5 * mParameters[2])); + rJacobian[22][1] = -(mDt * (var_x132)); + rJacobian[22][2] = 0.0; + rJacobian[22][3] = 0.0; + rJacobian[22][4] = 0.0; + rJacobian[22][5] = 0.0; + rJacobian[22][6] = 0.0; + rJacobian[22][7] = 0.0; + rJacobian[22][8] = 0.0; + rJacobian[22][9] = 0.0; + rJacobian[22][10] = 0.0; + rJacobian[22][11] = 0.0; + rJacobian[22][12] = 0.0; + rJacobian[22][13] = 0.0; + rJacobian[22][14] = 0.0; + rJacobian[22][15] = 0.0; + rJacobian[22][16] = 0.0; + rJacobian[22][17] = 0.0; + rJacobian[22][18] = 0.0; + rJacobian[22][19] = 0.0; + rJacobian[22][20] = 0.0; + rJacobian[22][21] = 0.0; + rJacobian[22][22] = 1.0 - (mDt * (-260 + var_x133 - var_x132 - 0.69232869146389786 * var_x25 - 8.7400597733819945e-14 * var_x26)); + rJacobian[22][23] = -(mDt * (var_x134)); + rJacobian[22][24] = 0.0; + rJacobian[22][25] = -(mDt * (-var_x131 * var_x83)); + rJacobian[22][26] = 0.0; + rJacobian[23][0] = 0.0; + rJacobian[23][1] = 0.0; + rJacobian[23][2] = 0.0; + rJacobian[23][3] = 0.0; + rJacobian[23][4] = 0.0; + rJacobian[23][5] = 0.0; + rJacobian[23][6] = 0.0; + rJacobian[23][7] = 0.0; + rJacobian[23][8] = 0.0; + rJacobian[23][9] = 0.0; + rJacobian[23][10] = 0.0; + rJacobian[23][11] = 0.0; + rJacobian[23][12] = 0.0; + rJacobian[23][13] = 0.0; + rJacobian[23][14] = 0.0; + rJacobian[23][15] = 0.0; + rJacobian[23][16] = 0.0; + rJacobian[23][17] = 0.0; + rJacobian[23][18] = 0.0; + rJacobian[23][19] = 0.0; + rJacobian[23][20] = 0.0; + rJacobian[23][21] = 0.0; + rJacobian[23][22] = -(mDt * (260 - var_x133)); + rJacobian[23][23] = 1.0 - (mDt * (-var_x134)); + rJacobian[23][24] = 0.0; + rJacobian[23][25] = 0.0; + rJacobian[23][26] = 0.0; + rJacobian[24][0] = 0.0; + rJacobian[24][1] = -(mDt * (var_x140 + var_x141 * var_x143)); + rJacobian[24][2] = 0.0; + rJacobian[24][3] = 0.0; + rJacobian[24][4] = 0.0; + rJacobian[24][5] = 0.0; + rJacobian[24][6] = 0.0; + rJacobian[24][7] = 0.0; + rJacobian[24][8] = 0.0; + rJacobian[24][9] = 0.0; + rJacobian[24][10] = 0.0; + rJacobian[24][11] = 0.0; + rJacobian[24][12] = 0.0; + rJacobian[24][13] = 0.0; + rJacobian[24][14] = 0.0; + rJacobian[24][15] = 0.0; + rJacobian[24][16] = 0.0; + rJacobian[24][17] = 0.0; + rJacobian[24][18] = 0.0; + rJacobian[24][19] = 0.0; + rJacobian[24][20] = 0.0; + rJacobian[24][21] = 0.0; + rJacobian[24][22] = -(mDt * (-var_x146 + var_x141 * var_x147)); + rJacobian[24][23] = 0.0; + rJacobian[24][24] = 1.0 - (mDt * (-0.065000000000000002 - var_x148)); + rJacobian[24][25] = -(mDt * (var_x149 - var_x148)); + rJacobian[24][26] = -(mDt * (-var_x148)); + rJacobian[25][0] = 0.0; + rJacobian[25][1] = -(mDt * (var_x150 - var_x140)); + rJacobian[25][2] = 0.0; + rJacobian[25][3] = 0.0; + rJacobian[25][4] = 0.0; + rJacobian[25][5] = 0.0; + rJacobian[25][6] = 0.0; + rJacobian[25][7] = 0.0; + rJacobian[25][8] = 0.0; + rJacobian[25][9] = 0.0; + rJacobian[25][10] = 0.0; + rJacobian[25][11] = 0.0; + rJacobian[25][12] = 0.0; + rJacobian[25][13] = 0.0; + rJacobian[25][14] = 0.0; + rJacobian[25][15] = 0.0; + rJacobian[25][16] = 0.0; + rJacobian[25][17] = 0.0; + rJacobian[25][18] = 0.0; + rJacobian[25][19] = 0.0; + rJacobian[25][20] = 0.0; + rJacobian[25][21] = 0.0; + rJacobian[25][22] = -(mDt * (var_x146 + var_x151)); + rJacobian[25][23] = 0.0; + rJacobian[25][24] = -(mDt * (0.0050000000000000001)); + rJacobian[25][25] = 1.0 - (mDt * (-0.059999999999999998 - var_x149)); + rJacobian[25][26] = -(mDt * (var_x148)); + rJacobian[26][0] = 0.0; + rJacobian[26][1] = -(mDt * (-var_x150 - var_x139 * var_chaste_interface__SR_Fluxes__Ry_Rr)); + rJacobian[26][2] = 0.0; + rJacobian[26][3] = 0.0; + rJacobian[26][4] = 0.0; + rJacobian[26][5] = 0.0; + rJacobian[26][6] = 0.0; + rJacobian[26][7] = 0.0; + rJacobian[26][8] = 0.0; + rJacobian[26][9] = 0.0; + rJacobian[26][10] = 0.0; + rJacobian[26][11] = 0.0; + rJacobian[26][12] = 0.0; + rJacobian[26][13] = 0.0; + rJacobian[26][14] = 0.0; + rJacobian[26][15] = 0.0; + rJacobian[26][16] = 0.0; + rJacobian[26][17] = 0.0; + rJacobian[26][18] = 0.0; + rJacobian[26][19] = 0.0; + rJacobian[26][20] = 0.0; + rJacobian[26][21] = 0.0; + rJacobian[26][22] = -(mDt * (-var_x151 + 2.3772197685794643 * var_x135 * var_x136 * var_x144 * var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Rr)); + rJacobian[26][23] = 0.0; + rJacobian[26][24] = -(mDt * (-0.0050000000000000001)); + rJacobian[26][25] = -(mDt * (0.055)); + rJacobian[26][26] = 1.0 - (mDt * (-0.0050000000000000001 - var_x148 - var_x149)); + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = rY[5]; + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = rY[6]; + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = rY[7]; + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = rY[8]; + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = rY[9]; + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = rY[10]; + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = rY[13]; + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = rY[14]; + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__Na_Concentrations__Na_j = rY[33]; + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = rY[34]; + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = rY[35]; + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = rY[36]; + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = rY[37]; + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = rY[38]; + // Units: mM; Initial value: 0.000106544589194246 + + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + exp(7.4880000000000004 - 0.16722408026755853 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane_potential__i_Stim = var_membrane_potential__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * mParameters[18]; // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF + const double var_parameters__GClB = 0.0089999999999999993; // mS_per_uF + const double var_parameters__GClCa = 0.0548125; // mS_per_uF + const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__KdClCa = 0.10000000000000001; // mM + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_parameters__eca_junc = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF + const double var_parameters__eca_sl = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF + const double var_parameters__ecl = log(mParameters[4] / mParameters[6]) / var_parameters__FoRT; // mV + const double var_I_ClCa__I_ClCa_junc = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_j); // uA_per_uF + const double var_I_ClCa__I_ClCa_sl = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_sl); // uA_per_uF + const double var_I_ClCa__I_ClCa = var_I_ClCa__I_ClCa_junc + var_I_ClCa__I_ClCa_sl; // uA_per_uF + const double var_I_ClCa__I_Clbk = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__GClB; // uA_per_uF + const double var_membrane_potential__I_Cl_tot = var_I_ClCa__I_ClCa + var_I_ClCa__I_Clbk; // uA_per_uF + const double var_parameters__ek = log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_parameters__ena_junc = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF + const double var_parameters__ena_sl = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * mParameters[15]) : (0.0014039999999999999 * mParameters[15])); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * mParameters[19]) : (0.037595999999999997 * mParameters[19])); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_parameters__gkp = 0.002; // mS_per_uF + const double var_I_Kp__I_kp_junc = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fjunc * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp_sl = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fsl * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp = var_I_Kp__I_kp_junc + var_I_Kp__I_kp_sl; // uA_per_uF + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_membrane_potential__I_Ca_tot = var_Ca_Concentrations__I_Ca_tot_junc + var_Ca_Concentrations__I_Ca_tot_sl; // uA_per_uF + const double var_parameters__pK = 1.35e-7; // cm_per_sec + const double var_I_Ca__ibark = (-0.75 * mParameters[7] + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pK / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * ((1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_parameters__Fjunc_CaL + (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_parameters__Fsl_CaL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibark; // uA_per_uF + const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec + const double var_I_Ca__ibarna_j = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarna_sl = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF + const double var_membrane_potential__I_Na_tot = var_Na_Concentrations__I_Na_tot_junc + var_Na_Concentrations__I_Na_tot_sl; // uA_per_uF + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = log((mParameters[8] * var_parameters__pNaK + mParameters[7]) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_K_Concentration__I_K_tot = -2 * var_I_NaK__I_nak + var_I_Ca__I_CaK + var_I_Ki__I_ki + var_I_Kp__I_kp + var_I_Kr__I_kr + var_I_Ks__I_ks + var_I_to__I_to; // uA_per_uF + const double var_membrane_potential__I_tot = var_K_Concentration__I_K_tot + var_membrane_potential__I_Ca_tot + var_membrane_potential__I_Cl_tot + var_membrane_potential__I_Na_tot; // uA_per_uF + const double d_dt_chaste_interface_var_membrane_potential__V_m = -var_membrane_potential__I_tot - var_membrane_potential__i_Stim; // mV / msec + + rY[0] += mDt*d_dt_chaste_interface_var_membrane_potential__V_m; + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = rY[5]; + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = rY[6]; + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = rY[7]; + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = rY[8]; + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = rY[9]; + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = rY[10]; + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + + const double var_I_Ca__dss = 1 / (1 + exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ca__fss = 1 / (1 + exp(3.8888888888888888 + 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ca__taud = 28.571428571428569 * (1 - exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m)) * var_I_Ca__dss / (5 + var_chaste_interface__membrane_potential__V_m); + const double var_I_Ca__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane_potential__V_m), 2))); + const double var_I_Kr__tauxr = 230 / (1 + exp(2 + 0.050000000000000003 * var_chaste_interface__membrane_potential__V_m)) + 3300 / ((1 + exp(1.2222222222222223 + 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m)) * (1 + exp(-2.4444444444444446 - 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m))); + const double var_I_Kr__xrss = 1 / (1 + exp(-2 - 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ks__tauxs = 990.10000000000002 / (1 + exp(-0.17252124645892353 - 0.070821529745042494 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ks__xsss = 1 / (1 + exp(-0.26666666666666666 - 0.070175438596491224 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[14] - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); + const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * mParameters[14]) - 6.9480000000000002e-6 * exp(0.043909999999999998 * mParameters[14] - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * mParameters[14])))); + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[14] - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * mParameters[14]) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * mParameters[14]))); + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * mParameters[14]) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[14] - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * mParameters[14] - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[14] - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); + const double var_I_Na__hss = 0.01 * mParameters[13] + (1 - 0.01 * mParameters[13]) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * mParameters[14])), 2); + const double var_I_Na__jss = 0.01 * mParameters[13] + (1 - 0.01 * mParameters[13]) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * mParameters[14])), 2); + const double var_I_Na__mss = 1 / pow((1 + exp(-6.2967884828349945 - 0.11074197120708749 * var_chaste_interface__membrane_potential__V_m)), 2); + const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); + const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); + const double var_I_Na__taum = 0.12920000000000001 * exp(-8.682389366752302 * pow((1 + 0.021838829438742085 * var_chaste_interface__membrane_potential__V_m), 2)) + 0.064869999999999997 * exp(-0.0089012876052174655 * pow((-1 + 0.2073398299813394 * var_chaste_interface__membrane_potential__V_m), 2)); + const double var_I_to__tauxtof = 0.5 + 8.5 * exp(-0.81000000000000005 * pow((1 + 0.022222222222222223 * var_chaste_interface__membrane_potential__V_m), 2)); + const double var_I_to__tauxtos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_to__tauytof = 7 + 85 * exp(-7.2727272727272725 * pow((1 + 0.025000000000000001 * var_chaste_interface__membrane_potential__V_m), 2)); + const double var_I_to__tauytos = 30 + 800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_to__xtoss = 1 / (1 + exp(1.4615384615384615 - 0.076923076923076927 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_to__ytoss = 1 / (1 + exp(3.8999999999999999 + 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); + + + rY[5] = (var_chaste_interface__I_Kr__x_kr + ((var_I_Kr__xrss / var_I_Kr__tauxr) * mDt)) / (1.0 - ((-1 / var_I_Kr__tauxr) * mDt)); + rY[6] = (var_chaste_interface__I_Ks__x_ks + ((var_I_Ks__xsss / var_I_Ks__tauxs) * mDt)) / (1.0 - ((-1 / var_I_Ks__tauxs) * mDt)); + rY[9] = (var_chaste_interface__I_to__x_to_f + ((var_I_to__xtoss / var_I_to__tauxtof) * mDt)) / (1.0 - ((-1 / var_I_to__tauxtof) * mDt)); + rY[7] = (var_chaste_interface__I_to__x_to_s + ((var_I_to__xtoss / var_I_to__tauxtos) * mDt)) / (1.0 - ((-1 / var_I_to__tauxtos) * mDt)); + rY[10] = (var_chaste_interface__I_to__y_to_f + ((var_I_to__ytoss / var_I_to__tauytof) * mDt)) / (1.0 - ((-1 / var_I_to__tauytof) * mDt)); + rY[8] = (var_chaste_interface__I_to__y_to_s + ((var_I_to__ytoss / var_I_to__tauytos) * mDt)) / (1.0 - ((-1 / var_I_to__tauytos) * mDt)); + rY[11] = (var_chaste_interface__I_Ca__d + ((var_I_Ca__dss / var_I_Ca__taud) * mDt)) / (1.0 - ((-1 / var_I_Ca__taud) * mDt)); + rY[12] = (var_chaste_interface__I_Ca__f + ((var_I_Ca__fss / var_I_Ca__tauf) * mDt)) / (1.0 - ((-1 / var_I_Ca__tauf) * mDt)); + rY[3] = (var_chaste_interface__I_Na__h + ((var_I_Na__hss / var_I_Na__tauh) * mDt)) / (1.0 - ((-1 / var_I_Na__tauh) * mDt)); + rY[4] = (var_chaste_interface__I_Na__j + ((var_I_Na__jss / var_I_Na__tauj) * mDt)) / (1.0 - ((-1 / var_I_Na__tauj) * mDt)); + rY[2] = (var_chaste_interface__I_Na__m + ((var_I_Na__mss / var_I_Na__taum) * mDt)) / (1.0 - ((-1 / var_I_Na__taum) * mDt)); + + double _guess[27] = {rY[1],rY[37],rY[38],rY[23],rY[24],rY[25],rY[26],rY[21],rY[22],rY[20],rY[13],rY[14],rY[29],rY[30],rY[27],rY[28],rY[36],rY[18],rY[19],rY[35],rY[33],rY[34],rY[32],rY[31],rY[17],rY[16],rY[15]}; + CardiacNewtonSolver<27,Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<27,Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[1] = _guess[0]; + rY[37] = _guess[1]; + rY[38] = _guess[2]; + rY[23] = _guess[3]; + rY[24] = _guess[4]; + rY[25] = _guess[5]; + rY[26] = _guess[6]; + rY[21] = _guess[7]; + rY[22] = _guess[8]; + rY[20] = _guess[9]; + rY[13] = _guess[10]; + rY[14] = _guess[11]; + rY[29] = _guess[12]; + rY[30] = _guess[13]; + rY[27] = _guess[14]; + rY[28] = _guess[15]; + rY[36] = _guess[16]; + rY[18] = _guess[17]; + rY[19] = _guess[18]; + rY[35] = _guess[19]; + rY[33] = _guess[20]; + rY[34] = _guess[21]; + rY[32] = _guess[22]; + rY[31] = _guess[23]; + rY[17] = _guess[24]; + rY[16] = _guess[25]; + rY[15] = _guess[26]; + } + + std::vector Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__Ca_Concentrations__Ca_i = rY[1]; + // Units: mM; Initial value: 8.72745589849657e-05 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = rY[5]; + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = rY[6]; + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = rY[7]; + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = rY[8]; + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = rY[9]; + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = rY[10]; + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = rY[13]; + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = rY[14]; + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__SR_Fluxes__Ry_Ro = rY[16]; + // Units: mM; Initial value: 7.37484660389498e-07 + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = rY[32]; + // Units: mM; Initial value: 0.555180633859957 + double var_chaste_interface__Na_Concentrations__Na_j = rY[33]; + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = rY[34]; + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = rY[35]; + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = rY[36]; + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = rY[37]; + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = rY[38]; + // Units: mM; Initial value: 0.000106544589194246 + + // Mathematics + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * mParameters[0]; // mM_per_msec + const double var_I_Ca__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane_potential__V_m), 2))); // msec + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[14] - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); // dimensionless + const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * mParameters[14]) - 6.9480000000000002e-6 * exp(0.043909999999999998 * mParameters[14] - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * mParameters[14])))); // dimensionless + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[14] - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * mParameters[14]) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * mParameters[14]))); // dimensionless + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * mParameters[14]) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[14] - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * mParameters[14] - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[14] - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); // dimensionless + const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); // msec + const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); // msec + const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_parameters__Cmem_converted = 1000000 * mParameters[22]; // uF + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * mParameters[18]; // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_parameters__Kmf = 0.00024600000000000002; // mM + const double var_parameters__Kmr = 1.7; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless + const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_I_NaK__I_nak_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NaK__I_nak; // uA_per_cm2 + const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca = var_I_PCa__I_pca_junc + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_I_PCa__I_pca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_PCa__I_pca; // uA_per_cm2 + const double var_parameters__ecl = log(mParameters[4] / mParameters[6]) / var_parameters__FoRT; // mV + const double var_parameters__ek = log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Ki__I_ki_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ki__I_ki; // uA_per_cm2 + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_I_Kr__I_kr_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Kr__I_kr; // uA_per_cm2 + const double var_parameters__ena_junc = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF + const double var_parameters__ena_sl = log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF + const double var_I_Na__I_Na = var_I_Na__I_Na_junc + var_I_Na__I_Na_sl; // uA_per_uF + const double var_I_Na__I_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Na__I_Na; // uA_per_cm2 + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * mParameters[15]) : (0.0014039999999999999 * mParameters[15])); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * mParameters[19]) : (0.037595999999999997 * mParameters[19])); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tof; // uA_per_cm2 + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_I_to__I_to_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_to; // uA_per_cm2 + const double var_I_to__I_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tos; // uA_per_cm2 + const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless + const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * mParameters[2] / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_SR_Fluxes__J_SRCarel = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * mParameters[1]; // mM_per_msec + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_I_NCX__I_ncx = var_I_NCX__I_ncx_junc + var_I_NCX__I_ncx_sl; // uA_per_uF + const double var_I_NCX__I_ncx_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NCX__I_ncx; // uA_per_cm2 + const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_I_Ca__I_Ca = var_I_Ca__I_Ca_junc + var_I_Ca__I_Ca_sl; // uA_per_uF + const double var_I_Ca__I_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ca__I_Ca; // uA_per_cm2 + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = log((mParameters[8] * var_parameters__pNaK + mParameters[7]) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_I_Ks__I_ks_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ks__I_ks; // uA_per_cm2 + + std::vector dqs(26); + dqs[0] = var_SR_Fluxes__J_SRleak; + dqs[1] = var_SR_Fluxes__J_SRCarel; + dqs[2] = var_SR_Fluxes__J_serca; + dqs[3] = var_parameters__ecl; + dqs[4] = var_I_Ca__I_Ca_converted; + dqs[5] = var_I_Ca__tauf; + dqs[6] = var_I_PCa__I_pca_converted; + dqs[7] = var_parameters__Cmem_converted; + dqs[8] = var_I_Na__I_Na_converted; + dqs[9] = var_I_Na__tauh; + dqs[10] = var_I_Na__tauj; + dqs[11] = var_I_to__I_tof_converted; + dqs[12] = var_I_to__GtoFast; + dqs[13] = var_I_Ki__I_ki_converted; + dqs[14] = var_I_Ki__g_K1; + dqs[15] = var_I_Kr__I_kr_converted; + dqs[16] = var_I_Ks__I_ks_converted; + dqs[17] = var_I_Ks__GKs_total; + dqs[18] = var_I_to__I_tos_converted; + dqs[19] = var_I_to__GtoSlow; + dqs[20] = var_I_NCX__I_ncx_converted; + dqs[21] = var_I_NaK__I_nak_converted; + dqs[22] = var_membrane_potential__i_Stim_converted; + dqs[23] = var_I_to__I_to_converted; + dqs[24] = var_parameters__ek; + dqs[25] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "grandi_pasqualini_bers_2010_epi"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "msec"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-81.4229700631461); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.72745589849657e-05); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00381858135062259); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.625086621635645); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.62332507235506); + + // rY[5]: + this->mVariableNames.push_back("I_Kr__x_kr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.021733554982663); + + // rY[6]: + this->mVariableNames.push_back("I_Ks__x_ks"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00428981903391989); + + // rY[7]: + this->mVariableNames.push_back("I_to__x_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441539203559411); + + // rY[8]: + this->mVariableNames.push_back("I_to__y_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.784875334693892); + + // rY[9]: + this->mVariableNames.push_back("I_to__x_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441531250866821); + + // rY[10]: + this->mVariableNames.push_back("I_to__y_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999995817153572); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.93982287251302e-06); + + // rY[12]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99511673495949); + + // rY[13]: + this->mVariableNames.push_back("I_Ca__f_Ca_Bj"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0246142436477748); + + // rY[14]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0152416826209301); + + // rY[15]: + this->mVariableNames.push_back("SR_Fluxes__Ry_Rr"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.891022230597263); + + // rY[16]: + this->mVariableNames.push_back("SR_Fluxes__Ry_Ro"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(7.37484660389498e-07); + + // rY[17]: + this->mVariableNames.push_back("SR_Fluxes__Ry_Ri"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(9.01984485847386e-08); + + // rY[18]: + this->mVariableNames.push_back("Na_Buffers__Na_Bj"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(3.43545459048316); + + // rY[19]: + this->mVariableNames.push_back("Na_Buffers__Na_Bsl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.749601264899653); + + // rY[20]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CL"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00893708435270205); + + // rY[21]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHc"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.117445983314504); + + // rY[22]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHm"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0105996734077994); + + // rY[23]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__CaM"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000295653619580701); + + // rY[24]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_c"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00192645052472679); + + // rY[25]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_m"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.137557201546068); + + // rY[26]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__SRB"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00217414510791738); + + // rY[27]: + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00738583890572642); + + // rY[28]: + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00988178900584875); + + // rY[29]: + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0734662466011574); + + // rY[30]: + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.114400081504523); + + // rY[31]: + this->mVariableNames.push_back("SR_Ca_Concentrations__Csqn_b"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(1.19772047585784); + + // rY[32]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.555180633859957); + + // rY[33]: + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.3215690202059); + + // rY[34]: + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32094589677861); + + // rY[35]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32114502072456); + + // rY[36]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(120.0); + + // rY[37]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000175415190830688); + + // rY[38]: + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000106544589194246); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("mM_per_msec"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[9]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[10]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kelvin_per_kilomole"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("cm_per_sec"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("mV"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_sodium_potassium_pump_current_permeability"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[22]: + this->mParameterNames.push_back("parameters__Cmem"); + this->mParameterUnits.push_back("farad"); + + // mParameters[23]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_leak_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("SR_uptake_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("membrane_sodium_potassium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [23]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [24]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [25]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("msec"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler--sympy_1_13.cpp new file mode 100644 index 00000000..1ecfce7e --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler--sympy_1_13.cpp @@ -0,0 +1,2307 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: grandi_pasqualini_bers_2010_epi +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEuler) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "grandi_pasqualini_bers_2010_ssBackwardEuler.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractBackwardEulerCardiacCell<27>* Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler(p_solver, p_stimulus); +} + +bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = ModelFactory::Register("grandi_pasqualini_bers_2010_ss", "BackwardEuler", (ModelFactory::TCreateMethod)Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::CreateMethod); + + + + boost::shared_ptr Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane_potential__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane_potential__stim_duration = 5; // msec + const double var_chaste_interface__membrane_potential__stim_period = 1000; // msec + const double var_chaste_interface__membrane_potential__stim_start = 100; // msec + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane_potential__stim_amplitude_converted), + var_chaste_interface__membrane_potential__stim_duration, + var_chaste_interface__membrane_potential__stim_period, + var_chaste_interface__membrane_potential__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<27>( + 39, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 5.3480000000000003e-6; // (var_SR_Fluxes__SR_leak_max) [per_msec] + this->mParameters[1] = 25; // (var_parameters__ks) [per_msec] + this->mParameters[2] = 0.0053114; // (var_parameters__Vmax_SRCaP) [mM_per_msec] + this->mParameters[3] = 1; // (var_Na_Concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 15; // (var_parameters__Cli) [mM] + this->mParameters[5] = 1.8; // (var_parameters__Cao) [mM] + this->mParameters[6] = 150; // (var_parameters__Clo) [mM] + this->mParameters[7] = 5.4000000000000004; // (var_parameters__Ko) [mM] + this->mParameters[8] = 140; // (var_parameters__Nao) [mM] + this->mParameters[9] = 96485; // (var_parameters__Frdy) [coulomb_per_mole] + this->mParameters[10] = 8314; // (var_parameters__R) [joule_per_kelvin_per_kilomole] + this->mParameters[11] = 0.5; // (var_parameters__pCa_max) [cm_per_sec] + this->mParameters[12] = 23; // (var_parameters__GNa) [mS_per_uF] + this->mParameters[13] = 0; // (var_I_Na__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[14] = 0; // (var_I_Na__shift_INa_inact) [mV] + this->mParameters[15] = 1; // (var_I_to__GtoFast_factor) [dimensionless] + this->mParameters[16] = 0.34999999999999998; // (var_I_Ki__g_ki_factor) [mS_per_uF] + this->mParameters[17] = 0.035000000000000003; // (var_I_Kr__gkr_max) [mS_per_uF] + this->mParameters[18] = 1; // (var_I_Ks__GKs_factor) [dimensionless] + this->mParameters[19] = 1; // (var_I_to__GtoSlow_factor) [dimensionless] + this->mParameters[20] = 4.5; // (var_parameters__IbarNCX) [uA_per_uF] + this->mParameters[21] = 1.8; // (var_parameters__IbarNaK) [uA_per_uF] + this->mParameters[22] = 1.3809999999999999e-10; // (var_parameters__Cmem) [farad] + this->mParameters[23] = 310; // (var_parameters__Temp) [kelvin] + } + + Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::~Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler() + { + } + + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 39; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = rY[5]; + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = rY[6]; + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = rY[7]; + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = rY[8]; + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = rY[9]; + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = rY[10]; + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = rY[13]; + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = rY[14]; + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__Na_Concentrations__Na_j = rY[33]; + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = rY[34]; + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = rY[35]; + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = rY[36]; + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = rY[37]; + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = rY[38]; + // Units: mM; Initial value: 0.000106544589194246 + + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + exp(7.4880000000000004 - 0.16722408026755853 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * mParameters[18]; // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF + const double var_parameters__GClB = 0.0089999999999999993; // mS_per_uF + const double var_parameters__GClCa = 0.0548125; // mS_per_uF + const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__KdClCa = 0.10000000000000001; // mM + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_parameters__eca_junc = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF + const double var_parameters__eca_sl = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF + const double var_parameters__ecl = 1 * log(mParameters[4] / mParameters[6]) / var_parameters__FoRT; // mV + const double var_I_ClCa__I_ClCa_junc = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_j); // uA_per_uF + const double var_I_ClCa__I_ClCa_sl = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_sl); // uA_per_uF + const double var_I_ClCa__I_ClCa = var_I_ClCa__I_ClCa_junc + var_I_ClCa__I_ClCa_sl; // uA_per_uF + const double var_I_ClCa__I_Clbk = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__GClB; // uA_per_uF + const double var_membrane_potential__I_Cl_tot = var_I_ClCa__I_ClCa + var_I_ClCa__I_Clbk; // uA_per_uF + const double var_parameters__ek = 1 * log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_parameters__ena_junc = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF + const double var_parameters__ena_sl = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * mParameters[15]) : (0.0014039999999999999 * mParameters[15])); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * mParameters[19]) : (0.037595999999999997 * mParameters[19])); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_parameters__gkp = 0.002; // mS_per_uF + const double var_I_Kp__I_kp_junc = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fjunc * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp_sl = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fsl * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp = var_I_Kp__I_kp_junc + var_I_Kp__I_kp_sl; // uA_per_uF + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_membrane_potential__I_Ca_tot = var_Ca_Concentrations__I_Ca_tot_junc + var_Ca_Concentrations__I_Ca_tot_sl; // uA_per_uF + const double var_parameters__pK = 1.35e-7; // cm_per_sec + const double var_I_Ca__ibark = (-0.75 * mParameters[7] + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pK / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * ((1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_parameters__Fjunc_CaL + (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_parameters__Fsl_CaL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibark; // uA_per_uF + const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec + const double var_I_Ca__ibarna_j = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarna_sl = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF + const double var_membrane_potential__I_Na_tot = var_Na_Concentrations__I_Na_tot_junc + var_Na_Concentrations__I_Na_tot_sl; // uA_per_uF + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((mParameters[8] * var_parameters__pNaK + mParameters[7]) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_K_Concentration__I_K_tot = -2 * var_I_NaK__I_nak + var_I_Ca__I_CaK + var_I_Ki__I_ki + var_I_Kp__I_kp + var_I_Kr__I_kr + var_I_Ks__I_ks + var_I_to__I_to; // uA_per_uF + const double var_membrane_potential__I_tot = var_K_Concentration__I_K_tot + var_membrane_potential__I_Ca_tot + var_membrane_potential__I_Cl_tot + var_membrane_potential__I_Na_tot; // uA_per_uF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane_potential__I_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[27], double rResidual[27]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + + //output_nonlinear_state_assignments + double var_chaste_interface__Ca_Concentrations__Ca_i = rCurrentGuess[0]; + double var_chaste_interface__Ca_Concentrations__Ca_j = rCurrentGuess[1]; + double var_chaste_interface__Ca_Concentrations__Ca_sl = rCurrentGuess[2]; + double var_chaste_interface__Cytosolic_Ca_Buffers__CaM = rCurrentGuess[3]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c = rCurrentGuess[4]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m = rCurrentGuess[5]; + double var_chaste_interface__Cytosolic_Ca_Buffers__SRB = rCurrentGuess[6]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc = rCurrentGuess[7]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm = rCurrentGuess[8]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL = rCurrentGuess[9]; + double var_chaste_interface__I_Ca__f_Ca_Bj = rCurrentGuess[10]; + double var_chaste_interface__I_Ca__f_Ca_Bsl = rCurrentGuess[11]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j = rCurrentGuess[12]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl = rCurrentGuess[13]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j = rCurrentGuess[14]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl = rCurrentGuess[15]; + double var_chaste_interface__Na_Buffers__Na_Bj = rCurrentGuess[17]; + double var_chaste_interface__Na_Buffers__Na_Bsl = rCurrentGuess[18]; + double var_chaste_interface__Na_Concentrations__Na_i = rCurrentGuess[19]; + double var_chaste_interface__Na_Concentrations__Na_j = rCurrentGuess[20]; + double var_chaste_interface__Na_Concentrations__Na_sl = rCurrentGuess[21]; + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = rCurrentGuess[22]; + double var_chaste_interface__SR_Ca_Concentrations__Csqn_b = rCurrentGuess[23]; + double var_chaste_interface__SR_Fluxes__Ry_Ri = rCurrentGuess[24]; + double var_chaste_interface__SR_Fluxes__Ry_Ro = rCurrentGuess[25]; + double var_chaste_interface__SR_Fluxes__Ry_Rr = rCurrentGuess[26]; + + //output_equations + const double d_dt_chaste_interface_var_K_Concentration__K_i = 0; // mM / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bj = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bj + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bj) * var_chaste_interface__Ca_Concentrations__Ca_j; // 1 / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bsl + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl) * var_chaste_interface__Ca_Concentrations__Ca_sl; // 1 / msec + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_SR_Fluxes__MaxSR = 15; // dimensionless + const double var_SR_Fluxes__MinSR = 1; // dimensionless + const double var_SR_Fluxes__RI = 1 - var_chaste_interface__SR_Fluxes__Ry_Ri - var_chaste_interface__SR_Fluxes__Ry_Ro - var_chaste_interface__SR_Fluxes__Ry_Rr; // mM + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * mParameters[0]; // mM_per_msec + const double var_parameters__Bmax_CaM = 0.024; // mM + const double var_parameters__Bmax_Naj = 7.5609999999999999; // mM + const double var_parameters__Bmax_Nasl = 1.6499999999999999; // mM + const double var_parameters__Bmax_SR = 0.017100000000000001; // mM + const double var_parameters__Bmax_TnChigh = 0.14000000000000001; // mM + const double var_parameters__Bmax_TnClow = 0.070000000000000007; // mM + const double var_parameters__Bmax_myosin = 0.14000000000000001; // mM + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF + const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__J_ca_juncsl = 8.2413000000000004e-13; // liters_per_msec + const double var_parameters__J_ca_slmyo = 3.2742999999999999e-12; // liters_per_msec + const double var_parameters__J_na_juncsl = 1.8312999999999999e-14; // liters_per_msec + const double var_parameters__J_na_slmyo = 1.6385999999999999e-12; // liters_per_msec + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_parameters__Kmf = 0.00024600000000000002; // mM + const double var_parameters__Kmr = 1.7; // mM + const double var_parameters__Mgi = 1; // mM + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless + const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_parameters__cellLength = 100; // um + const double var_parameters__cellRadius = 10.25; // um + const double var_parameters__Vcell = 1.0000000000000001e-15 * M_PI * pow(var_parameters__cellRadius, 2) * var_parameters__cellLength; // liter + const double var_parameters__Vjunc = 0.00053900000000000009 * var_parameters__Vcell; // liter + const double var_parameters__Vmyo = 0.65000000000000002 * var_parameters__Vcell; // liter + const double d_dt_chaste_interface_var_Na_Concentrations__Na_i = (-var_chaste_interface__Na_Concentrations__Na_i + var_chaste_interface__Na_Concentrations__Na_sl) * mParameters[3] * var_parameters__J_na_slmyo / var_parameters__Vmyo; // mM / msec + const double var_parameters__Bmax_SLhighj = 0.000165 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Bmax_SLlowj = 0.00046000000000000001 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Vsl = 0.02 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_SLhighsl = 0.0134 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Bmax_SLlowsl = 0.037400000000000003 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Vsr = 0.035000000000000003 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_Csqn = 0.14000000000000001 * var_parameters__Vmyo / var_parameters__Vsr; // mM + const double var_parameters__ec50SR = 0.45000000000000001; // mM + const double var_SR_Fluxes__kCaSR = -(-var_SR_Fluxes__MinSR + var_SR_Fluxes__MaxSR) / (1 + pow((var_parameters__ec50SR / var_chaste_interface__SR_Ca_Concentrations__Ca_sr), 2.5)) + var_SR_Fluxes__MaxSR; // dimensionless + const double var_parameters__eca_junc = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF + const double var_parameters__eca_sl = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF + const double var_parameters__ena_junc = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF + const double var_parameters__ena_sl = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF + const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless + const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * mParameters[2] / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_parameters__kiCa = 0.5; // per_mM_per_msec + const double var_SR_Fluxes__kiSRCa = var_SR_Fluxes__kCaSR * var_parameters__kiCa; // per_mM_per_msec + const double var_parameters__kim = 0.0050000000000000001; // per_msec + const double var_parameters__koCa = 10; // per_mM2_per_msec + const double var_SR_Fluxes__koSRCa = var_parameters__koCa / var_SR_Fluxes__kCaSR; // per_mM2_per_msec + const double var_parameters__koff_cam = 0.23799999999999999; // per_msec + const double var_parameters__koff_csqn = 65; // per_msec + const double var_parameters__koff_myoca = 0.00046000000000000001; // per_msec + const double var_parameters__koff_myomg = 5.7000000000000003e-5; // per_msec + const double var_parameters__koff_na = 0.001; // per_msec + const double var_parameters__koff_slh = 0.029999999999999999; // per_msec + const double var_parameters__koff_sll = 1.3; // per_msec + const double var_parameters__koff_sr = 0.059999999999999998; // per_msec + const double var_parameters__koff_tnchca = 3.1999999999999999e-5; // per_msec + const double var_parameters__koff_tnchmg = 0.0033300000000000001; // per_msec + const double var_parameters__koff_tncl = 0.019599999999999999; // per_msec + const double var_parameters__kom = 0.059999999999999998; // per_msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri = -var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kim - var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kom + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_SR_Fluxes__RI * var_SR_Fluxes__koSRCa + var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro = var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kim - var_chaste_interface__SR_Fluxes__Ry_Ro * var_parameters__kom + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr = var_SR_Fluxes__RI * var_parameters__kim + var_chaste_interface__SR_Fluxes__Ry_Ro * var_parameters__kom - pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__kiSRCa; // mM / msec + const double var_parameters__kon_cam = 34; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM = -var_chaste_interface__Cytosolic_Ca_Buffers__CaM * var_parameters__koff_cam + (-var_chaste_interface__Cytosolic_Ca_Buffers__CaM + var_parameters__Bmax_CaM) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_cam; // mM / msec + const double var_parameters__kon_csqn = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b = -var_chaste_interface__SR_Ca_Concentrations__Csqn_b * var_parameters__koff_csqn + (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr * var_parameters__kon_csqn; // mM / msec + const double var_parameters__kon_myoca = 13.800000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c = -var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c * var_parameters__koff_myoca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_myoca; // mM / msec + const double var_parameters__kon_myomg = 0.015699999999999999; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m = -var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m * var_parameters__koff_myomg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_parameters__Mgi * var_parameters__kon_myomg; // mM / msec + const double var_parameters__kon_na = 0.0001; // per_mM_per_msec + const double var_Na_Buffers__dNa_Bj_dt = -var_chaste_interface__Na_Buffers__Na_Bj * var_parameters__koff_na + (-var_chaste_interface__Na_Buffers__Na_Bj + var_parameters__Bmax_Naj) * var_chaste_interface__Na_Concentrations__Na_j * var_parameters__kon_na; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bj = var_Na_Buffers__dNa_Bj_dt; // mM / msec + const double var_Na_Buffers__dNa_Bsl_dt = -var_chaste_interface__Na_Buffers__Na_Bsl * var_parameters__koff_na + (-var_chaste_interface__Na_Buffers__Na_Bsl + var_parameters__Bmax_Nasl) * var_chaste_interface__Na_Concentrations__Na_sl * var_parameters__kon_na; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bsl = var_Na_Buffers__dNa_Bsl_dt; // mM / msec + const double var_parameters__kon_slh = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j * var_parameters__koff_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_slh; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl * var_parameters__koff_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_slh; // mM / msec + const double var_parameters__kon_sll = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_sll; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_sll; // mM / msec + const double var_Junctional_and_SL_Ca_Buffers__J_CaB_junction = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j * var_parameters__koff_slh - var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_sll; // mM_per_msec + const double var_Junctional_and_SL_Ca_Buffers__J_CaB_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl * var_parameters__koff_slh - var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_sll; // mM_per_msec + const double var_parameters__kon_sr = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB = -var_chaste_interface__Cytosolic_Ca_Buffers__SRB * var_parameters__koff_sr + (-var_chaste_interface__Cytosolic_Ca_Buffers__SRB + var_parameters__Bmax_SR) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_sr; // mM / msec + const double var_parameters__kon_tnchca = 2.3700000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc * var_parameters__koff_tnchca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tnchca; // mM / msec + const double var_parameters__kon_tnchmg = 0.0030000000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm * var_parameters__koff_tnchmg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_parameters__Mgi * var_parameters__kon_tnchmg; // mM / msec + const double var_parameters__kon_tncl = 32.700000000000003; // per_mM_per_msec + const double var_Cytosolic_Ca_Buffers__J_CaB_cytosol = -var_chaste_interface__Cytosolic_Ca_Buffers__CaM * var_parameters__koff_cam - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c * var_parameters__koff_myoca - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m * var_parameters__koff_myomg - var_chaste_interface__Cytosolic_Ca_Buffers__SRB * var_parameters__koff_sr - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc * var_parameters__koff_tnchca - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm * var_parameters__koff_tnchmg - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL * var_parameters__koff_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__CaM + var_parameters__Bmax_CaM) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_cam + (-var_chaste_interface__Cytosolic_Ca_Buffers__SRB + var_parameters__Bmax_SR) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_sr + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + var_parameters__Bmax_TnClow) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_myoca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_parameters__Mgi * var_parameters__kon_myomg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tnchca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_parameters__Mgi * var_parameters__kon_tnchmg; // mM_per_msec + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_i = -var_Cytosolic_Ca_Buffers__J_CaB_cytosol + (-var_chaste_interface__Ca_Concentrations__Ca_i + var_chaste_interface__Ca_Concentrations__Ca_sl) * var_parameters__J_ca_slmyo / var_parameters__Vmyo - var_SR_Fluxes__J_serca * var_parameters__Vsr / var_parameters__Vmyo; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL * var_parameters__koff_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + var_parameters__Bmax_TnClow) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tncl; // mM / msec + const double var_SR_Fluxes__J_SRCarel = 1 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * mParameters[1]; // mM_per_msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr = -var_SR_Fluxes__J_SRCarel + var_chaste_interface__SR_Ca_Concentrations__Csqn_b * var_parameters__koff_csqn - var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vsr - (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr * var_parameters__kon_csqn + var_SR_Fluxes__J_serca; // mM / msec + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_j = -var_Junctional_and_SL_Ca_Buffers__J_CaB_junction + (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__Ca_Concentrations__Ca_sl) * var_parameters__J_ca_juncsl / var_parameters__Vjunc + var_SR_Fluxes__J_SRCarel * var_parameters__Vsr / var_parameters__Vjunc + var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vjunc - 0.5 * var_Ca_Concentrations__I_Ca_tot_junc * mParameters[22] / (mParameters[9] * var_parameters__Vjunc); // mM / msec + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl = -var_Junctional_and_SL_Ca_Buffers__J_CaB_sl + (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_i) * var_parameters__J_ca_slmyo / var_parameters__Vsl + (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_j) * var_parameters__J_ca_juncsl / var_parameters__Vsl - 0.5 * var_Ca_Concentrations__I_Ca_tot_sl * mParameters[22] / (mParameters[9] * var_parameters__Vsl); // mM / msec + const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec + const double var_I_Ca__ibarna_j = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarna_sl = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_j = (-var_Na_Buffers__dNa_Bj_dt + (-var_chaste_interface__Na_Concentrations__Na_j + var_chaste_interface__Na_Concentrations__Na_sl) * var_parameters__J_na_juncsl / var_parameters__Vjunc - var_Na_Concentrations__I_Na_tot_junc * mParameters[22] / (mParameters[9] * var_parameters__Vjunc)) * mParameters[3]; // mM / msec + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_sl = (-var_Na_Buffers__dNa_Bsl_dt + (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_i) * var_parameters__J_na_slmyo / var_parameters__Vsl + (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_j) * var_parameters__J_na_juncsl / var_parameters__Vsl - var_Na_Concentrations__I_Na_tot_sl * mParameters[22] / (mParameters[9] * var_parameters__Vsl)) * mParameters[3]; // mM / msec + + rResidual[0] = rCurrentGuess[0] - rY[1] - mDt*d_dt_chaste_interface_var_Ca_Concentrations__Ca_i; + rResidual[10] = rCurrentGuess[10] - rY[13] - mDt*d_dt_chaste_interface_var_I_Ca__f_Ca_Bj; + rResidual[11] = rCurrentGuess[11] - rY[14] - mDt*d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl; + rResidual[26] = rCurrentGuess[26] - rY[15] - mDt*d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr; + rResidual[25] = rCurrentGuess[25] - rY[16] - mDt*d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro; + rResidual[24] = rCurrentGuess[24] - rY[17] - mDt*d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri; + rResidual[17] = rCurrentGuess[17] - rY[18] - mDt*d_dt_chaste_interface_var_Na_Buffers__Na_Bj; + rResidual[18] = rCurrentGuess[18] - rY[19] - mDt*d_dt_chaste_interface_var_Na_Buffers__Na_Bsl; + rResidual[9] = rCurrentGuess[9] - rY[20] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL; + rResidual[7] = rCurrentGuess[7] - rY[21] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc; + rResidual[8] = rCurrentGuess[8] - rY[22] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm; + rResidual[3] = rCurrentGuess[3] - rY[23] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM; + rResidual[4] = rCurrentGuess[4] - rY[24] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c; + rResidual[5] = rCurrentGuess[5] - rY[25] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m; + rResidual[6] = rCurrentGuess[6] - rY[26] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB; + rResidual[14] = rCurrentGuess[14] - rY[27] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j; + rResidual[15] = rCurrentGuess[15] - rY[28] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl; + rResidual[12] = rCurrentGuess[12] - rY[29] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j; + rResidual[13] = rCurrentGuess[13] - rY[30] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl; + rResidual[23] = rCurrentGuess[23] - rY[31] - mDt*d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b; + rResidual[22] = rCurrentGuess[22] - rY[32] - mDt*d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr; + rResidual[20] = rCurrentGuess[20] - rY[33] - mDt*d_dt_chaste_interface_var_Na_Concentrations__Na_j; + rResidual[21] = rCurrentGuess[21] - rY[34] - mDt*d_dt_chaste_interface_var_Na_Concentrations__Na_sl; + rResidual[19] = rCurrentGuess[19] - rY[35] - mDt*d_dt_chaste_interface_var_Na_Concentrations__Na_i; + rResidual[16] = rCurrentGuess[16] - rY[36] - mDt*d_dt_chaste_interface_var_K_Concentration__K_i; + rResidual[1] = rCurrentGuess[1] - rY[37] - mDt*d_dt_chaste_interface_var_Ca_Concentrations__Ca_j; + rResidual[2] = rCurrentGuess[2] - rY[38] - mDt*d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl; + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[27], double rJacobian[27][27]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + + double var_chaste_interface__Ca_Concentrations__Ca_i = rCurrentGuess[0]; + double var_chaste_interface__Ca_Concentrations__Ca_j = rCurrentGuess[1]; + double var_chaste_interface__Ca_Concentrations__Ca_sl = rCurrentGuess[2]; + double var_chaste_interface__Cytosolic_Ca_Buffers__CaM = rCurrentGuess[3]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c = rCurrentGuess[4]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m = rCurrentGuess[5]; + double var_chaste_interface__Cytosolic_Ca_Buffers__SRB = rCurrentGuess[6]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc = rCurrentGuess[7]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm = rCurrentGuess[8]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL = rCurrentGuess[9]; + double var_chaste_interface__I_Ca__f_Ca_Bj = rCurrentGuess[10]; + double var_chaste_interface__I_Ca__f_Ca_Bsl = rCurrentGuess[11]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j = rCurrentGuess[12]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl = rCurrentGuess[13]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j = rCurrentGuess[14]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl = rCurrentGuess[15]; + double var_chaste_interface__Na_Buffers__Na_Bj = rCurrentGuess[17]; + double var_chaste_interface__Na_Buffers__Na_Bsl = rCurrentGuess[18]; + double var_chaste_interface__Na_Concentrations__Na_j = rCurrentGuess[20]; + double var_chaste_interface__Na_Concentrations__Na_sl = rCurrentGuess[21]; + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = rCurrentGuess[22]; + double var_chaste_interface__SR_Ca_Concentrations__Csqn_b = rCurrentGuess[23]; + double var_chaste_interface__SR_Fluxes__Ry_Ri = rCurrentGuess[24]; + double var_chaste_interface__SR_Fluxes__Ry_Ro = rCurrentGuess[25]; + double var_chaste_interface__SR_Fluxes__Ry_Rr = rCurrentGuess[26]; + + const double var_x0 = 34 * var_chaste_interface__Cytosolic_Ca_Buffers__CaM; + const double var_x1 = 100 * var_chaste_interface__Cytosolic_Ca_Buffers__SRB; + const double var_x2 = 32.700000000000003 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL; + const double var_x3 = 1 / M_PI; + const double var_x4 = 0.4794655196082917 * var_x3; + const double var_x5 = pow(var_chaste_interface__Ca_Concentrations__Ca_i, 0.78699999999999992); + const double var_x6 = pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, 1.7869999999999999); + const double var_x7 = 0.38742512113256738 * var_x6; + const double var_x8 = pow(var_chaste_interface__Ca_Concentrations__Ca_i, 1.7869999999999999); + const double var_x9 = 2814485.1633595936 * var_x8; + const double var_x10 = 1 / (1 + var_x7 + var_x9); + const double var_x11 = -31 + 0.10000000000000001 * mParameters[23]; + const double var_x12 = pow(2.6000000000000001, var_x11); + const double var_x13 = var_x12 * mParameters[2]; + const double var_x14 = var_x10 * var_x13; + const double var_x15 = var_x13 * (var_x9 - var_x7) / pow((3.5530476870814998e-7 + var_x8 + 1.3765399305573384e-7 * var_x6), 2); + const double var_x16 = var_x15 * var_x5; + const double var_x17 = 13.800000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c + 13.800000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m; + const double var_x18 = 2.3700000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc + 2.3700000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm; + const double var_x19 = 0.23799999999999999 + 34 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x20 = 13.800000000000001 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x21 = 0.059999999999999998 + 100 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x22 = 2.3700000000000001 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x23 = 0.019599999999999999 + 32.700000000000003 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x24 = pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, 0.78699999999999992); + const double var_x25 = var_x14 * var_x24; + const double var_x26 = var_x15 * var_x24; + const double var_x27 = 145.53224458892851 * var_x3; + const double var_x28 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j; + const double var_x29 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j; + const double var_x30 = 5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001); + const double var_x31 = pow(2.3500000000000001, var_x11); + const double var_x32 = 0.011844800000000001 * var_x31; + const double var_x33 = 1 / mParameters[9]; + const double var_x34 = var_x33 * mParameters[10] * mParameters[23]; + const double var_x35 = var_chaste_interface__membrane_potential__V_m / (mParameters[10] * mParameters[23]); + const double var_x36 = var_x35 * mParameters[9]; + const double var_x37 = exp(-0.72999999999999998 * var_x36); + const double var_x38 = pow(mParameters[8], 3); + const double var_x39 = var_x37 * var_x38; + const double var_x40 = pow(var_chaste_interface__Na_Concentrations__Na_j, 3); + const double var_x41 = var_x40 * mParameters[5]; + const double var_x42 = var_x38 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x43 = (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_j) * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x44 = var_x38 * (1 + 0.00053869674493876331 * var_x40); + const double var_x45 = 1 / (var_x41 + var_x42 + 669921.875 * var_x43 + 1.3 * var_x40 + 0.0035899999999999999 * var_x44); + const double var_x46 = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2); + const double var_x47 = 1 + 2.2499999999999996e-8 / var_x46; + const double var_x48 = pow(1.5700000000000001, var_x11) * mParameters[20] / (1 + 0.32000000000000001 * var_x37); + const double var_x49 = var_x48 / var_x47; + const double var_x50 = var_x45 * var_x49; + const double var_x51 = var_x39 * var_x50; + const double var_x52 = 669921.875 + var_x38; + const double var_x53 = -var_x52 - 373215529.24791086 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x54 = exp(0.27000000000000002 * var_x36); + const double var_x55 = -var_x37 * var_x42 + var_x40 * var_x54 * mParameters[5]; + const double var_x56 = var_x49 * var_x55 / pow((var_x43 + 1.9405247813411081e-6 * var_x40 + 5.3588338192419823e-9 * var_x44 + 1.4927113702623908e-6 * var_x41 + 1.4927113702623908e-6 * var_x42), 2); + const double var_x57 = 4.9020119168033731e-13 * var_x56; + const double var_x58 = var_x45 * var_x48 * var_x55 / (pow(var_x47, 2) * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 3)); + const double var_x59 = var_x35 * pow(mParameters[9], 2); + const double var_x60 = var_x59 * (1 - var_chaste_interface__I_Ca__f_Ca_Bj); + const double var_x61 = exp(2 * var_x36); + const double var_x62 = pow(1.8, var_x11) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f; + const double var_x63 = var_x62 * mParameters[11] / (-1 + var_x61); + const double var_x64 = var_x61 * var_x63; + const double var_x65 = var_x33 * mParameters[22]; + const double var_x66 = var_x3 * var_x65; + const double var_x67 = 88294470889864.781 * var_x66; + const double var_x68 = 64.935064935064929 * mParameters[1]; + const double var_x69 = 1205.9369202226344 * mParameters[0] + var_x68 * var_chaste_interface__SR_Fluxes__Ry_Ro; + const double var_x70 = -0.34100000000000003 * mParameters[5]; + const double var_x71 = 0.34100000000000003 * var_x61; + const double var_x72 = var_x36 * mParameters[22]; + const double var_x73 = var_x3 * var_x63 * var_x72; + const double var_x74 = 100 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x75 = 0.029999999999999999 + var_x74; + const double var_x76 = 1.3 + var_x74; + const double var_x77 = pow(var_chaste_interface__Na_Concentrations__Na_j, 2); + const double var_x78 = 3 * mParameters[5]; + const double var_x79 = 5.8017639429904805e-6 * var_x38; + const double var_x80 = -3.9000000000000004 * var_x77 - var_x77 * var_x78 - var_x77 * var_x79; + const double var_x81 = var_x54 * mParameters[5]; + const double var_x82 = var_x50 * var_x77 * var_x81; + const double var_x83 = -var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr; + const double var_x84 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl; + const double var_x85 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl; + const double var_x86 = 5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001); + const double var_x87 = 0.095835200000000009 * var_x31; + const double var_x88 = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3); + const double var_x89 = var_x88 * mParameters[5]; + const double var_x90 = var_x38 * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x91 = (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_sl) * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x92 = var_x38 * (1 + 0.00053869674493876331 * var_x88); + const double var_x93 = 1 / (var_x89 + var_x90 + 669921.875 * var_x91 + 1.3 * var_x88 + 0.0035899999999999999 * var_x92); + const double var_x94 = 1 + 2.2499999999999996e-8 / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2); + const double var_x95 = var_x48 / var_x94; + const double var_x96 = var_x93 * var_x95; + const double var_x97 = var_x39 * var_x96; + const double var_x98 = -var_x52 - 373215529.24791086 * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x99 = -var_x37 * var_x90 + var_x54 * var_x88 * mParameters[5]; + const double var_x100 = var_x95 * var_x99 / pow((var_x91 + 1.9405247813411081e-6 * var_x88 + 5.3588338192419823e-9 * var_x92 + 1.4927113702623908e-6 * var_x89 + 1.4927113702623908e-6 * var_x90), 2); + const double var_x101 = 3.9661732781409103e-12 * var_x100; + const double var_x102 = var_x48 * var_x93 * var_x99 / (pow(var_x94, 2) * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 3)); + const double var_x103 = var_x59 * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl); + const double var_x104 = 2379535990481.856 * var_x66; + const double var_x105 = 100 * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x106 = 0.029999999999999999 + var_x105; + const double var_x107 = 1.3 + var_x105; + const double var_x108 = pow(var_chaste_interface__Na_Concentrations__Na_sl, 2); + const double var_x109 = -3.9000000000000004 * var_x108 - var_x108 * var_x78 - var_x108 * var_x79; + const double var_x110 = var_x108 * var_x81 * var_x96; + const double var_x111 = 0.001 + 0.0001 * var_chaste_interface__Na_Concentrations__Na_j; + const double var_x112 = 0.0001 * var_chaste_interface__Na_Buffers__Na_Bj; + const double var_x113 = 0.001 + 0.0001 * var_chaste_interface__Na_Concentrations__Na_sl; + const double var_x114 = 0.0001 * var_chaste_interface__Na_Buffers__Na_Bsl; + const double var_x115 = var_x3 * mParameters[3]; + const double var_x116 = 0.23994508763098885 * var_x115; + const double var_x117 = 7.3530178752050587e-13 * var_x56; + const double var_x118 = var_x115 * var_x65; + const double var_x119 = -0.75 * mParameters[8]; + const double var_x120 = exp(var_x36); + const double var_x121 = 0.75 * var_x120; + const double var_x122 = var_x62 / (-1 + var_x120); + const double var_x123 = var_x115 * var_x122 * var_x72; + const double var_x124 = 3.2338732908121872 * var_x3; + const double var_x125 = var_x34 / var_chaste_interface__Na_Concentrations__Na_j; + const double var_x126 = mParameters[21] * mParameters[7] / ((1.5 + mParameters[7]) * (1 + 0.1245 * exp(-0.10000000000000001 * var_x36) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8])) * exp(-var_x36))); + const double var_x127 = pow(var_chaste_interface__I_Na__m, 3) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * mParameters[12]; + const double var_x128 = var_x120 * var_x122; + const double var_x129 = 5.9492599172113663e-12 * var_x100; + const double var_x130 = var_x34 / var_chaste_interface__Na_Concentrations__Na_sl; + const double var_x131 = 1 * mParameters[1]; + const double var_x132 = 18.571428571428569 * mParameters[0] + var_x131 * var_chaste_interface__SR_Fluxes__Ry_Ro; + const double var_x133 = 100 * var_chaste_interface__SR_Ca_Concentrations__Csqn_b; + const double var_x134 = 65 + 100 * var_chaste_interface__SR_Ca_Concentrations__Ca_sr; + const double var_x135 = 1 / var_chaste_interface__SR_Ca_Concentrations__Ca_sr; + const double var_x136 = pow(var_x135, 2.5); + const double var_x137 = 1 + 0.13584112963311223 * var_x136; + const double var_x138 = 1 / var_x137; + const double var_x139 = 7.5 - 7 * var_x138; + const double var_x140 = var_x139 * var_chaste_interface__SR_Fluxes__Ry_Ro; + const double var_x141 = 1 - var_chaste_interface__SR_Fluxes__Ry_Ri - var_chaste_interface__SR_Fluxes__Ry_Ro - var_chaste_interface__SR_Fluxes__Ry_Rr; + const double var_x142 = 1 / (15 - 14 * var_x138); + const double var_x143 = 20 * var_x142 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x144 = pow(var_x137, (-2)); + const double var_x145 = var_x135 * var_x136 * var_x144; + const double var_x146 = 2.3772197685794643 * var_x145 * var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro; + const double var_x147 = 0.21130842387373014 * var_x145 * var_x46 / pow((1 - 0.93333333333333335 * var_x138), 2); + const double var_x148 = 10 * var_x142 * var_x46; + const double var_x149 = var_x139 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x150 = var_x143 * var_chaste_interface__SR_Fluxes__Ry_Rr; + const double var_x151 = var_x147 * var_chaste_interface__SR_Fluxes__Ry_Rr; + + + rJacobian[0][0] = 1.0 - (mDt * (-7.0788000000000011 + var_x0 + var_x1 + var_x17 + var_x18 + var_x2 - var_x4 + 3.4188518090540365e-8 * var_x16 - 270818.42237280885 * var_x14 * var_x5)); + rJacobian[0][1] = 0.0; + rJacobian[0][2] = -(mDt * (var_x4)); + rJacobian[0][3] = -(mDt * (var_x19)); + rJacobian[0][4] = -(mDt * (0.016159999999999997 + var_x20)); + rJacobian[0][5] = -(mDt * (0.015757 + var_x20)); + rJacobian[0][6] = -(mDt * (var_x21)); + rJacobian[0][7] = -(mDt * (0.003032 + var_x22)); + rJacobian[0][8] = -(mDt * (0.0063300000000000006 + var_x22)); + rJacobian[0][9] = -(mDt * (var_x23)); + rJacobian[0][10] = 0.0; + rJacobian[0][11] = 0.0; + rJacobian[0][12] = 0.0; + rJacobian[0][13] = 0.0; + rJacobian[0][14] = 0.0; + rJacobian[0][15] = 0.0; + rJacobian[0][16] = 0.0; + rJacobian[0][17] = 0.0; + rJacobian[0][18] = 0.0; + rJacobian[0][19] = 0.0; + rJacobian[0][20] = 0.0; + rJacobian[0][21] = 0.0; + rJacobian[0][22] = -(mDt * (0.037279237232671424 * var_x25 + 4.7061860318210743e-15 * var_x26)); + rJacobian[0][23] = 0.0; + rJacobian[0][24] = 0.0; + rJacobian[0][25] = 0.0; + rJacobian[0][26] = 0.0; + rJacobian[1][0] = 0.0; + rJacobian[1][1] = 1.0 - (mDt * (-75.37105751391465 + var_x28 + var_x29 - var_x27 - var_x69 - var_x67 * (0.22 * var_x51 - 9.8999999999999977e-9 * var_x58 - var_x53 * var_x57 + 3.0321500000000001e-5 * var_x34 / var_chaste_interface__Ca_Concentrations__Ca_j + 0.00029830680000000003 * var_x60 * var_x64 + var_x32 * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 0.60000000000000009) / var_x30 - var_x32 * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2.2000000000000002) / pow(var_x30, 2)))); + rJacobian[1][2] = -(mDt * (var_x27)); + rJacobian[1][3] = 0.0; + rJacobian[1][4] = 0.0; + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = 0.0; + rJacobian[1][8] = 0.0; + rJacobian[1][9] = 0.0; + rJacobian[1][10] = -(mDt * (77240003134.453705 * var_x73 * (var_x70 + var_x71 * var_chaste_interface__Ca_Concentrations__Ca_j))); + rJacobian[1][11] = 0.0; + rJacobian[1][12] = -(mDt * (var_x75)); + rJacobian[1][13] = 0.0; + rJacobian[1][14] = -(mDt * (var_x76)); + rJacobian[1][15] = 0.0; + rJacobian[1][16] = 0.0; + rJacobian[1][17] = 0.0; + rJacobian[1][18] = 0.0; + rJacobian[1][19] = 0.0; + rJacobian[1][20] = -(mDt * (-var_x67 * (-0.66000000000000003 * var_x82 - var_x57 * var_x80))); + rJacobian[1][21] = 0.0; + rJacobian[1][22] = -(mDt * (var_x69)); + rJacobian[1][23] = 0.0; + rJacobian[1][24] = 0.0; + rJacobian[1][25] = -(mDt * (var_x68 * var_x83)); + rJacobian[1][26] = 0.0; + rJacobian[2][0] = -(mDt * (15.582629387269481 * var_x3)); + rJacobian[2][1] = -(mDt * (3.9220939916716238 * var_x3)); + rJacobian[2][2] = 1.0 - (mDt * (-165.10000000000002 + var_x84 + var_x85 - 19.504723378941105 * var_x3 - var_x104 * (1.78 * var_x97 - 8.0099999999999983e-8 * var_x102 - var_x101 * var_x98 + 0.00024532850000000001 * var_x34 / var_chaste_interface__Ca_Concentrations__Ca_sl + 3.3145199999999996e-5 * var_x103 * var_x64 + var_x87 * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 0.60000000000000009) / var_x86 - var_x87 * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2.2000000000000002) / pow(var_x86, 2)))); + rJacobian[2][3] = 0.0; + rJacobian[2][4] = 0.0; + rJacobian[2][5] = 0.0; + rJacobian[2][6] = 0.0; + rJacobian[2][7] = 0.0; + rJacobian[2][8] = 0.0; + rJacobian[2][9] = 0.0; + rJacobian[2][10] = 0.0; + rJacobian[2][11] = -(mDt * (231290898.27483633 * var_x73 * (var_x70 + var_x71 * var_chaste_interface__Ca_Concentrations__Ca_sl))); + rJacobian[2][12] = 0.0; + rJacobian[2][13] = -(mDt * (var_x106)); + rJacobian[2][14] = 0.0; + rJacobian[2][15] = -(mDt * (var_x107)); + rJacobian[2][16] = 0.0; + rJacobian[2][17] = 0.0; + rJacobian[2][18] = 0.0; + rJacobian[2][19] = 0.0; + rJacobian[2][20] = 0.0; + rJacobian[2][21] = -(mDt * (-var_x104 * (-5.3399999999999999 * var_x110 - var_x101 * var_x109))); + rJacobian[2][22] = 0.0; + rJacobian[2][23] = 0.0; + rJacobian[2][24] = 0.0; + rJacobian[2][25] = 0.0; + rJacobian[2][26] = 0.0; + rJacobian[3][0] = -(mDt * (0.81600000000000006 - var_x0)); + rJacobian[3][1] = 0.0; + rJacobian[3][2] = 0.0; + rJacobian[3][3] = 1.0 - (mDt * (-var_x19)); + rJacobian[3][4] = 0.0; + rJacobian[3][5] = 0.0; + rJacobian[3][6] = 0.0; + rJacobian[3][7] = 0.0; + rJacobian[3][8] = 0.0; + rJacobian[3][9] = 0.0; + rJacobian[3][10] = 0.0; + rJacobian[3][11] = 0.0; + rJacobian[3][12] = 0.0; + rJacobian[3][13] = 0.0; + rJacobian[3][14] = 0.0; + rJacobian[3][15] = 0.0; + rJacobian[3][16] = 0.0; + rJacobian[3][17] = 0.0; + rJacobian[3][18] = 0.0; + rJacobian[3][19] = 0.0; + rJacobian[3][20] = 0.0; + rJacobian[3][21] = 0.0; + rJacobian[3][22] = 0.0; + rJacobian[3][23] = 0.0; + rJacobian[3][24] = 0.0; + rJacobian[3][25] = 0.0; + rJacobian[3][26] = 0.0; + rJacobian[4][0] = -(mDt * (1.9320000000000004 - var_x17)); + rJacobian[4][1] = 0.0; + rJacobian[4][2] = 0.0; + rJacobian[4][3] = 0.0; + rJacobian[4][4] = 1.0 - (mDt * (-0.00046000000000000001 - var_x20)); + rJacobian[4][5] = -(mDt * (-var_x20)); + rJacobian[4][6] = 0.0; + rJacobian[4][7] = 0.0; + rJacobian[4][8] = 0.0; + rJacobian[4][9] = 0.0; + rJacobian[4][10] = 0.0; + rJacobian[4][11] = 0.0; + rJacobian[4][12] = 0.0; + rJacobian[4][13] = 0.0; + rJacobian[4][14] = 0.0; + rJacobian[4][15] = 0.0; + rJacobian[4][16] = 0.0; + rJacobian[4][17] = 0.0; + rJacobian[4][18] = 0.0; + rJacobian[4][19] = 0.0; + rJacobian[4][20] = 0.0; + rJacobian[4][21] = 0.0; + rJacobian[4][22] = 0.0; + rJacobian[4][23] = 0.0; + rJacobian[4][24] = 0.0; + rJacobian[4][25] = 0.0; + rJacobian[4][26] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = 0.0; + rJacobian[5][3] = 0.0; + rJacobian[5][4] = -(mDt * (-0.015699999999999999)); + rJacobian[5][5] = 1.0 - (mDt * (-0.015757)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[5][8] = 0.0; + rJacobian[5][9] = 0.0; + rJacobian[5][10] = 0.0; + rJacobian[5][11] = 0.0; + rJacobian[5][12] = 0.0; + rJacobian[5][13] = 0.0; + rJacobian[5][14] = 0.0; + rJacobian[5][15] = 0.0; + rJacobian[5][16] = 0.0; + rJacobian[5][17] = 0.0; + rJacobian[5][18] = 0.0; + rJacobian[5][19] = 0.0; + rJacobian[5][20] = 0.0; + rJacobian[5][21] = 0.0; + rJacobian[5][22] = 0.0; + rJacobian[5][23] = 0.0; + rJacobian[5][24] = 0.0; + rJacobian[5][25] = 0.0; + rJacobian[5][26] = 0.0; + rJacobian[6][0] = -(mDt * (1.71 - var_x1)); + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (-var_x21)); + rJacobian[6][7] = 0.0; + rJacobian[6][8] = 0.0; + rJacobian[6][9] = 0.0; + rJacobian[6][10] = 0.0; + rJacobian[6][11] = 0.0; + rJacobian[6][12] = 0.0; + rJacobian[6][13] = 0.0; + rJacobian[6][14] = 0.0; + rJacobian[6][15] = 0.0; + rJacobian[6][16] = 0.0; + rJacobian[6][17] = 0.0; + rJacobian[6][18] = 0.0; + rJacobian[6][19] = 0.0; + rJacobian[6][20] = 0.0; + rJacobian[6][21] = 0.0; + rJacobian[6][22] = 0.0; + rJacobian[6][23] = 0.0; + rJacobian[6][24] = 0.0; + rJacobian[6][25] = 0.0; + rJacobian[6][26] = 0.0; + rJacobian[7][0] = -(mDt * (0.33180000000000004 - var_x18)); + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = 0.0; + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (-3.1999999999999999e-5 - var_x22)); + rJacobian[7][8] = -(mDt * (-var_x22)); + rJacobian[7][9] = 0.0; + rJacobian[7][10] = 0.0; + rJacobian[7][11] = 0.0; + rJacobian[7][12] = 0.0; + rJacobian[7][13] = 0.0; + rJacobian[7][14] = 0.0; + rJacobian[7][15] = 0.0; + rJacobian[7][16] = 0.0; + rJacobian[7][17] = 0.0; + rJacobian[7][18] = 0.0; + rJacobian[7][19] = 0.0; + rJacobian[7][20] = 0.0; + rJacobian[7][21] = 0.0; + rJacobian[7][22] = 0.0; + rJacobian[7][23] = 0.0; + rJacobian[7][24] = 0.0; + rJacobian[7][25] = 0.0; + rJacobian[7][26] = 0.0; + rJacobian[8][0] = 0.0; + rJacobian[8][1] = 0.0; + rJacobian[8][2] = 0.0; + rJacobian[8][3] = 0.0; + rJacobian[8][4] = 0.0; + rJacobian[8][5] = 0.0; + rJacobian[8][6] = 0.0; + rJacobian[8][7] = -(mDt * (-0.0030000000000000001)); + rJacobian[8][8] = 1.0 - (mDt * (-0.0063300000000000006)); + rJacobian[8][9] = 0.0; + rJacobian[8][10] = 0.0; + rJacobian[8][11] = 0.0; + rJacobian[8][12] = 0.0; + rJacobian[8][13] = 0.0; + rJacobian[8][14] = 0.0; + rJacobian[8][15] = 0.0; + rJacobian[8][16] = 0.0; + rJacobian[8][17] = 0.0; + rJacobian[8][18] = 0.0; + rJacobian[8][19] = 0.0; + rJacobian[8][20] = 0.0; + rJacobian[8][21] = 0.0; + rJacobian[8][22] = 0.0; + rJacobian[8][23] = 0.0; + rJacobian[8][24] = 0.0; + rJacobian[8][25] = 0.0; + rJacobian[8][26] = 0.0; + rJacobian[9][0] = -(mDt * (2.2890000000000006 - var_x2)); + rJacobian[9][1] = 0.0; + rJacobian[9][2] = 0.0; + rJacobian[9][3] = 0.0; + rJacobian[9][4] = 0.0; + rJacobian[9][5] = 0.0; + rJacobian[9][6] = 0.0; + rJacobian[9][7] = 0.0; + rJacobian[9][8] = 0.0; + rJacobian[9][9] = 1.0 - (mDt * (-var_x23)); + rJacobian[9][10] = 0.0; + rJacobian[9][11] = 0.0; + rJacobian[9][12] = 0.0; + rJacobian[9][13] = 0.0; + rJacobian[9][14] = 0.0; + rJacobian[9][15] = 0.0; + rJacobian[9][16] = 0.0; + rJacobian[9][17] = 0.0; + rJacobian[9][18] = 0.0; + rJacobian[9][19] = 0.0; + rJacobian[9][20] = 0.0; + rJacobian[9][21] = 0.0; + rJacobian[9][22] = 0.0; + rJacobian[9][23] = 0.0; + rJacobian[9][24] = 0.0; + rJacobian[9][25] = 0.0; + rJacobian[9][26] = 0.0; + rJacobian[10][0] = 0.0; + rJacobian[10][1] = -(mDt * (1.7 - 1.7 * var_chaste_interface__I_Ca__f_Ca_Bj)); + rJacobian[10][2] = 0.0; + rJacobian[10][3] = 0.0; + rJacobian[10][4] = 0.0; + rJacobian[10][5] = 0.0; + rJacobian[10][6] = 0.0; + rJacobian[10][7] = 0.0; + rJacobian[10][8] = 0.0; + rJacobian[10][9] = 0.0; + rJacobian[10][10] = 1.0 - (mDt * (-0.011900000000000001 - 1.7 * var_chaste_interface__Ca_Concentrations__Ca_j)); + rJacobian[10][11] = 0.0; + rJacobian[10][12] = 0.0; + rJacobian[10][13] = 0.0; + rJacobian[10][14] = 0.0; + rJacobian[10][15] = 0.0; + rJacobian[10][16] = 0.0; + rJacobian[10][17] = 0.0; + rJacobian[10][18] = 0.0; + rJacobian[10][19] = 0.0; + rJacobian[10][20] = 0.0; + rJacobian[10][21] = 0.0; + rJacobian[10][22] = 0.0; + rJacobian[10][23] = 0.0; + rJacobian[10][24] = 0.0; + rJacobian[10][25] = 0.0; + rJacobian[10][26] = 0.0; + rJacobian[11][0] = 0.0; + rJacobian[11][1] = 0.0; + rJacobian[11][2] = -(mDt * (1.7 - 1.7 * var_chaste_interface__I_Ca__f_Ca_Bsl)); + rJacobian[11][3] = 0.0; + rJacobian[11][4] = 0.0; + rJacobian[11][5] = 0.0; + rJacobian[11][6] = 0.0; + rJacobian[11][7] = 0.0; + rJacobian[11][8] = 0.0; + rJacobian[11][9] = 0.0; + rJacobian[11][10] = 0.0; + rJacobian[11][11] = 1.0 - (mDt * (-0.011900000000000001 - 1.7 * var_chaste_interface__Ca_Concentrations__Ca_sl)); + rJacobian[11][12] = 0.0; + rJacobian[11][13] = 0.0; + rJacobian[11][14] = 0.0; + rJacobian[11][15] = 0.0; + rJacobian[11][16] = 0.0; + rJacobian[11][17] = 0.0; + rJacobian[11][18] = 0.0; + rJacobian[11][19] = 0.0; + rJacobian[11][20] = 0.0; + rJacobian[11][21] = 0.0; + rJacobian[11][22] = 0.0; + rJacobian[11][23] = 0.0; + rJacobian[11][24] = 0.0; + rJacobian[11][25] = 0.0; + rJacobian[11][26] = 0.0; + rJacobian[12][0] = 0.0; + rJacobian[12][1] = -(mDt * (19.897959183673468 - var_x28)); + rJacobian[12][2] = 0.0; + rJacobian[12][3] = 0.0; + rJacobian[12][4] = 0.0; + rJacobian[12][5] = 0.0; + rJacobian[12][6] = 0.0; + rJacobian[12][7] = 0.0; + rJacobian[12][8] = 0.0; + rJacobian[12][9] = 0.0; + rJacobian[12][10] = 0.0; + rJacobian[12][11] = 0.0; + rJacobian[12][12] = 1.0 - (mDt * (-var_x75)); + rJacobian[12][13] = 0.0; + rJacobian[12][14] = 0.0; + rJacobian[12][15] = 0.0; + rJacobian[12][16] = 0.0; + rJacobian[12][17] = 0.0; + rJacobian[12][18] = 0.0; + rJacobian[12][19] = 0.0; + rJacobian[12][20] = 0.0; + rJacobian[12][21] = 0.0; + rJacobian[12][22] = 0.0; + rJacobian[12][23] = 0.0; + rJacobian[12][24] = 0.0; + rJacobian[12][25] = 0.0; + rJacobian[12][26] = 0.0; + rJacobian[13][0] = 0.0; + rJacobian[13][1] = 0.0; + rJacobian[13][2] = -(mDt * (43.550000000000004 - var_x84)); + rJacobian[13][3] = 0.0; + rJacobian[13][4] = 0.0; + rJacobian[13][5] = 0.0; + rJacobian[13][6] = 0.0; + rJacobian[13][7] = 0.0; + rJacobian[13][8] = 0.0; + rJacobian[13][9] = 0.0; + rJacobian[13][10] = 0.0; + rJacobian[13][11] = 0.0; + rJacobian[13][12] = 0.0; + rJacobian[13][13] = 1.0 - (mDt * (-var_x106)); + rJacobian[13][14] = 0.0; + rJacobian[13][15] = 0.0; + rJacobian[13][16] = 0.0; + rJacobian[13][17] = 0.0; + rJacobian[13][18] = 0.0; + rJacobian[13][19] = 0.0; + rJacobian[13][20] = 0.0; + rJacobian[13][21] = 0.0; + rJacobian[13][22] = 0.0; + rJacobian[13][23] = 0.0; + rJacobian[13][24] = 0.0; + rJacobian[13][25] = 0.0; + rJacobian[13][26] = 0.0; + rJacobian[14][0] = 0.0; + rJacobian[14][1] = -(mDt * (55.473098330241186 - var_x29)); + rJacobian[14][2] = 0.0; + rJacobian[14][3] = 0.0; + rJacobian[14][4] = 0.0; + rJacobian[14][5] = 0.0; + rJacobian[14][6] = 0.0; + rJacobian[14][7] = 0.0; + rJacobian[14][8] = 0.0; + rJacobian[14][9] = 0.0; + rJacobian[14][10] = 0.0; + rJacobian[14][11] = 0.0; + rJacobian[14][12] = 0.0; + rJacobian[14][13] = 0.0; + rJacobian[14][14] = 1.0 - (mDt * (-var_x76)); + rJacobian[14][15] = 0.0; + rJacobian[14][16] = 0.0; + rJacobian[14][17] = 0.0; + rJacobian[14][18] = 0.0; + rJacobian[14][19] = 0.0; + rJacobian[14][20] = 0.0; + rJacobian[14][21] = 0.0; + rJacobian[14][22] = 0.0; + rJacobian[14][23] = 0.0; + rJacobian[14][24] = 0.0; + rJacobian[14][25] = 0.0; + rJacobian[14][26] = 0.0; + rJacobian[15][0] = 0.0; + rJacobian[15][1] = 0.0; + rJacobian[15][2] = -(mDt * (121.55000000000001 - var_x85)); + rJacobian[15][3] = 0.0; + rJacobian[15][4] = 0.0; + rJacobian[15][5] = 0.0; + rJacobian[15][6] = 0.0; + rJacobian[15][7] = 0.0; + rJacobian[15][8] = 0.0; + rJacobian[15][9] = 0.0; + rJacobian[15][10] = 0.0; + rJacobian[15][11] = 0.0; + rJacobian[15][12] = 0.0; + rJacobian[15][13] = 0.0; + rJacobian[15][14] = 0.0; + rJacobian[15][15] = 1.0 - (mDt * (-var_x107)); + rJacobian[15][16] = 0.0; + rJacobian[15][17] = 0.0; + rJacobian[15][18] = 0.0; + rJacobian[15][19] = 0.0; + rJacobian[15][20] = 0.0; + rJacobian[15][21] = 0.0; + rJacobian[15][22] = 0.0; + rJacobian[15][23] = 0.0; + rJacobian[15][24] = 0.0; + rJacobian[15][25] = 0.0; + rJacobian[15][26] = 0.0; + rJacobian[16][0] = 0.0; + rJacobian[16][1] = 0.0; + rJacobian[16][2] = 0.0; + rJacobian[16][3] = 0.0; + rJacobian[16][4] = 0.0; + rJacobian[16][5] = 0.0; + rJacobian[16][6] = 0.0; + rJacobian[16][7] = 0.0; + rJacobian[16][8] = 0.0; + rJacobian[16][9] = 0.0; + rJacobian[16][10] = 0.0; + rJacobian[16][11] = 0.0; + rJacobian[16][12] = 0.0; + rJacobian[16][13] = 0.0; + rJacobian[16][14] = 0.0; + rJacobian[16][15] = 0.0; + rJacobian[16][16] = 1.0; + rJacobian[16][17] = 0.0; + rJacobian[16][18] = 0.0; + rJacobian[16][19] = 0.0; + rJacobian[16][20] = 0.0; + rJacobian[16][21] = 0.0; + rJacobian[16][22] = 0.0; + rJacobian[16][23] = 0.0; + rJacobian[16][24] = 0.0; + rJacobian[16][25] = 0.0; + rJacobian[16][26] = 0.0; + rJacobian[17][0] = 0.0; + rJacobian[17][1] = 0.0; + rJacobian[17][2] = 0.0; + rJacobian[17][3] = 0.0; + rJacobian[17][4] = 0.0; + rJacobian[17][5] = 0.0; + rJacobian[17][6] = 0.0; + rJacobian[17][7] = 0.0; + rJacobian[17][8] = 0.0; + rJacobian[17][9] = 0.0; + rJacobian[17][10] = 0.0; + rJacobian[17][11] = 0.0; + rJacobian[17][12] = 0.0; + rJacobian[17][13] = 0.0; + rJacobian[17][14] = 0.0; + rJacobian[17][15] = 0.0; + rJacobian[17][16] = 0.0; + rJacobian[17][17] = 1.0 - (mDt * (-var_x111)); + rJacobian[17][18] = 0.0; + rJacobian[17][19] = 0.0; + rJacobian[17][20] = -(mDt * (0.0007561 - var_x112)); + rJacobian[17][21] = 0.0; + rJacobian[17][22] = 0.0; + rJacobian[17][23] = 0.0; + rJacobian[17][24] = 0.0; + rJacobian[17][25] = 0.0; + rJacobian[17][26] = 0.0; + rJacobian[18][0] = 0.0; + rJacobian[18][1] = 0.0; + rJacobian[18][2] = 0.0; + rJacobian[18][3] = 0.0; + rJacobian[18][4] = 0.0; + rJacobian[18][5] = 0.0; + rJacobian[18][6] = 0.0; + rJacobian[18][7] = 0.0; + rJacobian[18][8] = 0.0; + rJacobian[18][9] = 0.0; + rJacobian[18][10] = 0.0; + rJacobian[18][11] = 0.0; + rJacobian[18][12] = 0.0; + rJacobian[18][13] = 0.0; + rJacobian[18][14] = 0.0; + rJacobian[18][15] = 0.0; + rJacobian[18][16] = 0.0; + rJacobian[18][17] = 0.0; + rJacobian[18][18] = 1.0 - (mDt * (-var_x113)); + rJacobian[18][19] = 0.0; + rJacobian[18][20] = 0.0; + rJacobian[18][21] = -(mDt * (0.000165 - var_x114)); + rJacobian[18][22] = 0.0; + rJacobian[18][23] = 0.0; + rJacobian[18][24] = 0.0; + rJacobian[18][25] = 0.0; + rJacobian[18][26] = 0.0; + rJacobian[19][0] = 0.0; + rJacobian[19][1] = 0.0; + rJacobian[19][2] = 0.0; + rJacobian[19][3] = 0.0; + rJacobian[19][4] = 0.0; + rJacobian[19][5] = 0.0; + rJacobian[19][6] = 0.0; + rJacobian[19][7] = 0.0; + rJacobian[19][8] = 0.0; + rJacobian[19][9] = 0.0; + rJacobian[19][10] = 0.0; + rJacobian[19][11] = 0.0; + rJacobian[19][12] = 0.0; + rJacobian[19][13] = 0.0; + rJacobian[19][14] = 0.0; + rJacobian[19][15] = 0.0; + rJacobian[19][16] = 0.0; + rJacobian[19][17] = 0.0; + rJacobian[19][18] = 0.0; + rJacobian[19][19] = 1.0 - (mDt * (-var_x116)); + rJacobian[19][20] = 0.0; + rJacobian[19][21] = -(mDt * (var_x116)); + rJacobian[19][22] = 0.0; + rJacobian[19][23] = 0.0; + rJacobian[19][24] = 0.0; + rJacobian[19][25] = 0.0; + rJacobian[19][26] = 0.0; + rJacobian[20][0] = 0.0; + rJacobian[20][1] = -(mDt * (-176588941779729.56 * var_x118 * (1.4849999999999997e-8 * var_x58 - 0.33000000000000002 * var_x51 + var_x117 * var_x53))); + rJacobian[20][2] = 0.0; + rJacobian[20][3] = 0.0; + rJacobian[20][4] = 0.0; + rJacobian[20][5] = 0.0; + rJacobian[20][6] = 0.0; + rJacobian[20][7] = 0.0; + rJacobian[20][8] = 0.0; + rJacobian[20][9] = 0.0; + rJacobian[20][10] = -(mDt * (536388.91065592843 * var_x123 * (var_x119 + var_x121 * var_chaste_interface__Na_Concentrations__Na_j))); + rJacobian[20][11] = 0.0; + rJacobian[20][12] = 0.0; + rJacobian[20][13] = 0.0; + rJacobian[20][14] = 0.0; + rJacobian[20][15] = 0.0; + rJacobian[20][16] = 0.0; + rJacobian[20][17] = -(mDt * (var_x111 * mParameters[3])); + rJacobian[20][18] = 0.0; + rJacobian[20][19] = 0.0; + rJacobian[20][20] = 1.0 - (mDt * ((-0.0007561 + var_x112 - var_x124 - 176588941779729.56 * var_x66 * (0.98999999999999999 * var_x82 + 6.567e-5 * var_x125 + var_x117 * var_x80 + 0.11 * var_x125 * var_x127 + 2.2781249999999999e-9 * var_x128 * var_x60 + 9.0157776108189337e-5 * var_x126 / (pow((6.8301345536507063e-5 + pow(var_chaste_interface__Na_Concentrations__Na_j, (-4))), 2) * pow(var_chaste_interface__Na_Concentrations__Na_j, 5)))) * mParameters[3])); + rJacobian[20][21] = -(mDt * (var_x124 * mParameters[3])); + rJacobian[20][22] = 0.0; + rJacobian[20][23] = 0.0; + rJacobian[20][24] = 0.0; + rJacobian[20][25] = 0.0; + rJacobian[20][26] = 0.0; + rJacobian[21][0] = 0.0; + rJacobian[21][1] = 0.0; + rJacobian[21][2] = -(mDt * (-4759071980963.7119 * var_x118 * (1.2014999999999997e-7 * var_x102 - 2.6699999999999999 * var_x97 + var_x129 * var_x98))); + rJacobian[21][3] = 0.0; + rJacobian[21][4] = 0.0; + rJacobian[21][5] = 0.0; + rJacobian[21][6] = 0.0; + rJacobian[21][7] = 0.0; + rJacobian[21][8] = 0.0; + rJacobian[21][9] = 0.0; + rJacobian[21][10] = 0.0; + rJacobian[21][11] = -(mDt * (1606.1867935752523 * var_x123 * (var_x119 + var_x121 * var_chaste_interface__Na_Concentrations__Na_sl))); + rJacobian[21][12] = 0.0; + rJacobian[21][13] = 0.0; + rJacobian[21][14] = 0.0; + rJacobian[21][15] = 0.0; + rJacobian[21][16] = 0.0; + rJacobian[21][17] = 0.0; + rJacobian[21][18] = -(mDt * (var_x113 * mParameters[3])); + rJacobian[21][19] = -(mDt * (7.7982153480071377 * var_x115)); + rJacobian[21][20] = -(mDt * (0.087152885187388451 * var_x115)); + rJacobian[21][21] = 1.0 - (mDt * ((-0.000165 + var_x114 - 7.8853682331945256 * var_x3 - 4759071980963.7119 * var_x66 * (0.00053133 * var_x130 + 8.0099999999999998 * var_x110 + var_x109 * var_x129 + 2.5312499999999994e-10 * var_x103 * var_x128 + 0.89000000000000001 * var_x127 * var_x130 + 0.00072945837032989554 * var_x126 / (pow((6.8301345536507063e-5 + pow(var_chaste_interface__Na_Concentrations__Na_sl, (-4))), 2) * pow(var_chaste_interface__Na_Concentrations__Na_sl, 5)))) * mParameters[3])); + rJacobian[21][22] = 0.0; + rJacobian[21][23] = 0.0; + rJacobian[21][24] = 0.0; + rJacobian[21][25] = 0.0; + rJacobian[21][26] = 0.0; + rJacobian[22][0] = -(mDt * (-6.3492962168146398e-7 * var_x16 + 5029484.9869235931 * var_x10 * var_x12 * var_x5 * mParameters[2])); + rJacobian[22][1] = -(mDt * (var_x132)); + rJacobian[22][2] = 0.0; + rJacobian[22][3] = 0.0; + rJacobian[22][4] = 0.0; + rJacobian[22][5] = 0.0; + rJacobian[22][6] = 0.0; + rJacobian[22][7] = 0.0; + rJacobian[22][8] = 0.0; + rJacobian[22][9] = 0.0; + rJacobian[22][10] = 0.0; + rJacobian[22][11] = 0.0; + rJacobian[22][12] = 0.0; + rJacobian[22][13] = 0.0; + rJacobian[22][14] = 0.0; + rJacobian[22][15] = 0.0; + rJacobian[22][16] = 0.0; + rJacobian[22][17] = 0.0; + rJacobian[22][18] = 0.0; + rJacobian[22][19] = 0.0; + rJacobian[22][20] = 0.0; + rJacobian[22][21] = 0.0; + rJacobian[22][22] = 1.0 - (mDt * (-260 + var_x133 - var_x132 - 0.69232869146389786 * var_x25 - 8.7400597733819945e-14 * var_x26)); + rJacobian[22][23] = -(mDt * (var_x134)); + rJacobian[22][24] = 0.0; + rJacobian[22][25] = -(mDt * (-var_x131 * var_x83)); + rJacobian[22][26] = 0.0; + rJacobian[23][0] = 0.0; + rJacobian[23][1] = 0.0; + rJacobian[23][2] = 0.0; + rJacobian[23][3] = 0.0; + rJacobian[23][4] = 0.0; + rJacobian[23][5] = 0.0; + rJacobian[23][6] = 0.0; + rJacobian[23][7] = 0.0; + rJacobian[23][8] = 0.0; + rJacobian[23][9] = 0.0; + rJacobian[23][10] = 0.0; + rJacobian[23][11] = 0.0; + rJacobian[23][12] = 0.0; + rJacobian[23][13] = 0.0; + rJacobian[23][14] = 0.0; + rJacobian[23][15] = 0.0; + rJacobian[23][16] = 0.0; + rJacobian[23][17] = 0.0; + rJacobian[23][18] = 0.0; + rJacobian[23][19] = 0.0; + rJacobian[23][20] = 0.0; + rJacobian[23][21] = 0.0; + rJacobian[23][22] = -(mDt * (260 - var_x133)); + rJacobian[23][23] = 1.0 - (mDt * (-var_x134)); + rJacobian[23][24] = 0.0; + rJacobian[23][25] = 0.0; + rJacobian[23][26] = 0.0; + rJacobian[24][0] = 0.0; + rJacobian[24][1] = -(mDt * (var_x140 + var_x141 * var_x143)); + rJacobian[24][2] = 0.0; + rJacobian[24][3] = 0.0; + rJacobian[24][4] = 0.0; + rJacobian[24][5] = 0.0; + rJacobian[24][6] = 0.0; + rJacobian[24][7] = 0.0; + rJacobian[24][8] = 0.0; + rJacobian[24][9] = 0.0; + rJacobian[24][10] = 0.0; + rJacobian[24][11] = 0.0; + rJacobian[24][12] = 0.0; + rJacobian[24][13] = 0.0; + rJacobian[24][14] = 0.0; + rJacobian[24][15] = 0.0; + rJacobian[24][16] = 0.0; + rJacobian[24][17] = 0.0; + rJacobian[24][18] = 0.0; + rJacobian[24][19] = 0.0; + rJacobian[24][20] = 0.0; + rJacobian[24][21] = 0.0; + rJacobian[24][22] = -(mDt * (-var_x146 + var_x141 * var_x147)); + rJacobian[24][23] = 0.0; + rJacobian[24][24] = 1.0 - (mDt * (-0.065000000000000002 - var_x148)); + rJacobian[24][25] = -(mDt * (var_x149 - var_x148)); + rJacobian[24][26] = -(mDt * (-var_x148)); + rJacobian[25][0] = 0.0; + rJacobian[25][1] = -(mDt * (var_x150 - var_x140)); + rJacobian[25][2] = 0.0; + rJacobian[25][3] = 0.0; + rJacobian[25][4] = 0.0; + rJacobian[25][5] = 0.0; + rJacobian[25][6] = 0.0; + rJacobian[25][7] = 0.0; + rJacobian[25][8] = 0.0; + rJacobian[25][9] = 0.0; + rJacobian[25][10] = 0.0; + rJacobian[25][11] = 0.0; + rJacobian[25][12] = 0.0; + rJacobian[25][13] = 0.0; + rJacobian[25][14] = 0.0; + rJacobian[25][15] = 0.0; + rJacobian[25][16] = 0.0; + rJacobian[25][17] = 0.0; + rJacobian[25][18] = 0.0; + rJacobian[25][19] = 0.0; + rJacobian[25][20] = 0.0; + rJacobian[25][21] = 0.0; + rJacobian[25][22] = -(mDt * (var_x146 + var_x151)); + rJacobian[25][23] = 0.0; + rJacobian[25][24] = -(mDt * (0.0050000000000000001)); + rJacobian[25][25] = 1.0 - (mDt * (-0.059999999999999998 - var_x149)); + rJacobian[25][26] = -(mDt * (var_x148)); + rJacobian[26][0] = 0.0; + rJacobian[26][1] = -(mDt * (-var_x150 - var_x139 * var_chaste_interface__SR_Fluxes__Ry_Rr)); + rJacobian[26][2] = 0.0; + rJacobian[26][3] = 0.0; + rJacobian[26][4] = 0.0; + rJacobian[26][5] = 0.0; + rJacobian[26][6] = 0.0; + rJacobian[26][7] = 0.0; + rJacobian[26][8] = 0.0; + rJacobian[26][9] = 0.0; + rJacobian[26][10] = 0.0; + rJacobian[26][11] = 0.0; + rJacobian[26][12] = 0.0; + rJacobian[26][13] = 0.0; + rJacobian[26][14] = 0.0; + rJacobian[26][15] = 0.0; + rJacobian[26][16] = 0.0; + rJacobian[26][17] = 0.0; + rJacobian[26][18] = 0.0; + rJacobian[26][19] = 0.0; + rJacobian[26][20] = 0.0; + rJacobian[26][21] = 0.0; + rJacobian[26][22] = -(mDt * (-var_x151 + 2.3772197685794643 * var_x135 * var_x136 * var_x144 * var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Rr)); + rJacobian[26][23] = 0.0; + rJacobian[26][24] = -(mDt * (-0.0050000000000000001)); + rJacobian[26][25] = -(mDt * (0.055)); + rJacobian[26][26] = 1.0 - (mDt * (-0.0050000000000000001 - var_x148 - var_x149)); + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = rY[5]; + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = rY[6]; + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = rY[7]; + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = rY[8]; + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = rY[9]; + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = rY[10]; + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = rY[13]; + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = rY[14]; + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__Na_Concentrations__Na_j = rY[33]; + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = rY[34]; + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = rY[35]; + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = rY[36]; + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = rY[37]; + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = rY[38]; + // Units: mM; Initial value: 0.000106544589194246 + + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + exp(7.4880000000000004 - 0.16722408026755853 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane_potential__i_Stim = var_membrane_potential__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * mParameters[18]; // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF + const double var_parameters__GClB = 0.0089999999999999993; // mS_per_uF + const double var_parameters__GClCa = 0.0548125; // mS_per_uF + const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__KdClCa = 0.10000000000000001; // mM + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_parameters__eca_junc = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF + const double var_parameters__eca_sl = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF + const double var_parameters__ecl = 1 * log(mParameters[4] / mParameters[6]) / var_parameters__FoRT; // mV + const double var_I_ClCa__I_ClCa_junc = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_j); // uA_per_uF + const double var_I_ClCa__I_ClCa_sl = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_sl); // uA_per_uF + const double var_I_ClCa__I_ClCa = var_I_ClCa__I_ClCa_junc + var_I_ClCa__I_ClCa_sl; // uA_per_uF + const double var_I_ClCa__I_Clbk = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__GClB; // uA_per_uF + const double var_membrane_potential__I_Cl_tot = var_I_ClCa__I_ClCa + var_I_ClCa__I_Clbk; // uA_per_uF + const double var_parameters__ek = 1 * log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_parameters__ena_junc = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF + const double var_parameters__ena_sl = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * mParameters[15]) : (0.0014039999999999999 * mParameters[15])); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * mParameters[19]) : (0.037595999999999997 * mParameters[19])); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_parameters__gkp = 0.002; // mS_per_uF + const double var_I_Kp__I_kp_junc = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fjunc * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp_sl = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fsl * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp = var_I_Kp__I_kp_junc + var_I_Kp__I_kp_sl; // uA_per_uF + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_membrane_potential__I_Ca_tot = var_Ca_Concentrations__I_Ca_tot_junc + var_Ca_Concentrations__I_Ca_tot_sl; // uA_per_uF + const double var_parameters__pK = 1.35e-7; // cm_per_sec + const double var_I_Ca__ibark = (-0.75 * mParameters[7] + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pK / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * ((1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_parameters__Fjunc_CaL + (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_parameters__Fsl_CaL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibark; // uA_per_uF + const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec + const double var_I_Ca__ibarna_j = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarna_sl = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF + const double var_membrane_potential__I_Na_tot = var_Na_Concentrations__I_Na_tot_junc + var_Na_Concentrations__I_Na_tot_sl; // uA_per_uF + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((mParameters[8] * var_parameters__pNaK + mParameters[7]) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_K_Concentration__I_K_tot = -2 * var_I_NaK__I_nak + var_I_Ca__I_CaK + var_I_Ki__I_ki + var_I_Kp__I_kp + var_I_Kr__I_kr + var_I_Ks__I_ks + var_I_to__I_to; // uA_per_uF + const double var_membrane_potential__I_tot = var_K_Concentration__I_K_tot + var_membrane_potential__I_Ca_tot + var_membrane_potential__I_Cl_tot + var_membrane_potential__I_Na_tot; // uA_per_uF + const double d_dt_chaste_interface_var_membrane_potential__V_m = -var_membrane_potential__I_tot - var_membrane_potential__i_Stim; // mV / msec + + rY[0] += mDt*d_dt_chaste_interface_var_membrane_potential__V_m; + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = rY[5]; + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = rY[6]; + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = rY[7]; + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = rY[8]; + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = rY[9]; + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = rY[10]; + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + + const double var_I_Ca__dss = 1 / (1 + exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ca__fss = 1 / (1 + exp(3.8888888888888888 + 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ca__taud = 28.571428571428569 * (1 - exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m)) * var_I_Ca__dss / (5 + var_chaste_interface__membrane_potential__V_m); + const double var_I_Ca__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane_potential__V_m), 2))); + const double var_I_Kr__tauxr = 230 / (1 + exp(2 + 0.050000000000000003 * var_chaste_interface__membrane_potential__V_m)) + 3300 / ((1 + exp(1.2222222222222223 + 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m)) * (1 + exp(-2.4444444444444446 - 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m))); + const double var_I_Kr__xrss = 1 / (1 + exp(-2 - 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ks__tauxs = 990.10000000000002 / (1 + exp(-0.17252124645892353 - 0.070821529745042494 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ks__xsss = 1 / (1 + exp(-0.26666666666666666 - 0.070175438596491224 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[14] - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); + const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * mParameters[14]) - 6.9480000000000002e-6 * exp(0.043909999999999998 * mParameters[14] - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * mParameters[14])))); + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[14] - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * mParameters[14]) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * mParameters[14]))); + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * mParameters[14]) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[14] - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * mParameters[14] - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[14] - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); + const double var_I_Na__hss = 0.01 * mParameters[13] + 1 * (1 - 0.01 * mParameters[13]) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * mParameters[14])), 2); + const double var_I_Na__jss = 0.01 * mParameters[13] + 1 * (1 - 0.01 * mParameters[13]) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * mParameters[14])), 2); + const double var_I_Na__mss = 1 / pow((1 + exp(-6.2967884828349945 - 0.11074197120708749 * var_chaste_interface__membrane_potential__V_m)), 2); + const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); + const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); + const double var_I_Na__taum = 0.12920000000000001 * exp(-8.682389366752302 * pow((1 + 0.021838829438742085 * var_chaste_interface__membrane_potential__V_m), 2)) + 0.064869999999999997 * exp(-0.0089012876052174655 * pow((-1 + 0.2073398299813394 * var_chaste_interface__membrane_potential__V_m), 2)); + const double var_I_to__tauxtof = 0.5 + 8.5 * exp(-0.81000000000000005 * pow((1 + 0.022222222222222223 * var_chaste_interface__membrane_potential__V_m), 2)); + const double var_I_to__tauxtos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_to__tauytof = 7 + 85 * exp(-7.2727272727272725 * pow((1 + 0.025000000000000001 * var_chaste_interface__membrane_potential__V_m), 2)); + const double var_I_to__tauytos = 30 + 800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_to__xtoss = 1 / (1 + exp(1.4615384615384615 - 0.076923076923076927 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_to__ytoss = 1 / (1 + exp(3.8999999999999999 + 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); + + + rY[5] = (var_chaste_interface__I_Kr__x_kr + ((var_I_Kr__xrss / var_I_Kr__tauxr) * mDt)) / (1.0 - ((-1 / var_I_Kr__tauxr) * mDt)); + rY[6] = (var_chaste_interface__I_Ks__x_ks + ((var_I_Ks__xsss / var_I_Ks__tauxs) * mDt)) / (1.0 - ((-1 / var_I_Ks__tauxs) * mDt)); + rY[9] = (var_chaste_interface__I_to__x_to_f + ((var_I_to__xtoss / var_I_to__tauxtof) * mDt)) / (1.0 - ((-1 / var_I_to__tauxtof) * mDt)); + rY[7] = (var_chaste_interface__I_to__x_to_s + ((var_I_to__xtoss / var_I_to__tauxtos) * mDt)) / (1.0 - ((-1 / var_I_to__tauxtos) * mDt)); + rY[10] = (var_chaste_interface__I_to__y_to_f + ((var_I_to__ytoss / var_I_to__tauytof) * mDt)) / (1.0 - ((-1 / var_I_to__tauytof) * mDt)); + rY[8] = (var_chaste_interface__I_to__y_to_s + ((var_I_to__ytoss / var_I_to__tauytos) * mDt)) / (1.0 - ((-1 / var_I_to__tauytos) * mDt)); + rY[11] = (var_chaste_interface__I_Ca__d + ((var_I_Ca__dss / var_I_Ca__taud) * mDt)) / (1.0 - ((-1 / var_I_Ca__taud) * mDt)); + rY[12] = (var_chaste_interface__I_Ca__f + ((var_I_Ca__fss / var_I_Ca__tauf) * mDt)) / (1.0 - ((-1 / var_I_Ca__tauf) * mDt)); + rY[3] = (var_chaste_interface__I_Na__h + ((var_I_Na__hss / var_I_Na__tauh) * mDt)) / (1.0 - ((-1 / var_I_Na__tauh) * mDt)); + rY[4] = (var_chaste_interface__I_Na__j + ((var_I_Na__jss / var_I_Na__tauj) * mDt)) / (1.0 - ((-1 / var_I_Na__tauj) * mDt)); + rY[2] = (var_chaste_interface__I_Na__m + ((var_I_Na__mss / var_I_Na__taum) * mDt)) / (1.0 - ((-1 / var_I_Na__taum) * mDt)); + + double _guess[27] = {rY[1],rY[37],rY[38],rY[23],rY[24],rY[25],rY[26],rY[21],rY[22],rY[20],rY[13],rY[14],rY[29],rY[30],rY[27],rY[28],rY[36],rY[18],rY[19],rY[35],rY[33],rY[34],rY[32],rY[31],rY[17],rY[16],rY[15]}; + CardiacNewtonSolver<27,Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<27,Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[1] = _guess[0]; + rY[37] = _guess[1]; + rY[38] = _guess[2]; + rY[23] = _guess[3]; + rY[24] = _guess[4]; + rY[25] = _guess[5]; + rY[26] = _guess[6]; + rY[21] = _guess[7]; + rY[22] = _guess[8]; + rY[20] = _guess[9]; + rY[13] = _guess[10]; + rY[14] = _guess[11]; + rY[29] = _guess[12]; + rY[30] = _guess[13]; + rY[27] = _guess[14]; + rY[28] = _guess[15]; + rY[36] = _guess[16]; + rY[18] = _guess[17]; + rY[19] = _guess[18]; + rY[35] = _guess[19]; + rY[33] = _guess[20]; + rY[34] = _guess[21]; + rY[32] = _guess[22]; + rY[31] = _guess[23]; + rY[17] = _guess[24]; + rY[16] = _guess[25]; + rY[15] = _guess[26]; + } + + std::vector Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__Ca_Concentrations__Ca_i = rY[1]; + // Units: mM; Initial value: 8.72745589849657e-05 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = rY[5]; + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = rY[6]; + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = rY[7]; + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = rY[8]; + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = rY[9]; + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = rY[10]; + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = rY[13]; + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = rY[14]; + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__SR_Fluxes__Ry_Ro = rY[16]; + // Units: mM; Initial value: 7.37484660389498e-07 + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = rY[32]; + // Units: mM; Initial value: 0.555180633859957 + double var_chaste_interface__Na_Concentrations__Na_j = rY[33]; + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = rY[34]; + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = rY[35]; + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = rY[36]; + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = rY[37]; + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = rY[38]; + // Units: mM; Initial value: 0.000106544589194246 + + // Mathematics + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * mParameters[0]; // mM_per_msec + const double var_I_Ca__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane_potential__V_m), 2))); // msec + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[14] - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); // dimensionless + const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * mParameters[14]) - 6.9480000000000002e-6 * exp(0.043909999999999998 * mParameters[14] - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * mParameters[14])))); // dimensionless + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[14] - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * mParameters[14]) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * mParameters[14]))); // dimensionless + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * mParameters[14]) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[14] - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * mParameters[14] - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[14] - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); // dimensionless + const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); // msec + const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); // msec + const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_parameters__Cmem_converted = 1000000 * mParameters[22]; // uF + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * mParameters[18]; // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_parameters__Kmf = 0.00024600000000000002; // mM + const double var_parameters__Kmr = 1.7; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless + const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_I_NaK__I_nak_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NaK__I_nak; // uA_per_cm2 + const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca = var_I_PCa__I_pca_junc + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_I_PCa__I_pca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_PCa__I_pca; // uA_per_cm2 + const double var_parameters__ecl = 1 * log(mParameters[4] / mParameters[6]) / var_parameters__FoRT; // mV + const double var_parameters__ek = 1 * log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Ki__I_ki_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ki__I_ki; // uA_per_cm2 + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_I_Kr__I_kr_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Kr__I_kr; // uA_per_cm2 + const double var_parameters__ena_junc = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF + const double var_parameters__ena_sl = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF + const double var_I_Na__I_Na = var_I_Na__I_Na_junc + var_I_Na__I_Na_sl; // uA_per_uF + const double var_I_Na__I_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Na__I_Na; // uA_per_cm2 + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * mParameters[15]) : (0.0014039999999999999 * mParameters[15])); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * mParameters[19]) : (0.037595999999999997 * mParameters[19])); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tof; // uA_per_cm2 + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_I_to__I_to_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_to; // uA_per_cm2 + const double var_I_to__I_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tos; // uA_per_cm2 + const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless + const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * mParameters[2] / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_SR_Fluxes__J_SRCarel = 1 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * mParameters[1]; // mM_per_msec + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_I_NCX__I_ncx = var_I_NCX__I_ncx_junc + var_I_NCX__I_ncx_sl; // uA_per_uF + const double var_I_NCX__I_ncx_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NCX__I_ncx; // uA_per_cm2 + const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_I_Ca__I_Ca = var_I_Ca__I_Ca_junc + var_I_Ca__I_Ca_sl; // uA_per_uF + const double var_I_Ca__I_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ca__I_Ca; // uA_per_cm2 + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((mParameters[8] * var_parameters__pNaK + mParameters[7]) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_I_Ks__I_ks_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ks__I_ks; // uA_per_cm2 + + std::vector dqs(26); + dqs[0] = var_SR_Fluxes__J_SRleak; + dqs[1] = var_SR_Fluxes__J_SRCarel; + dqs[2] = var_SR_Fluxes__J_serca; + dqs[3] = var_parameters__ecl; + dqs[4] = var_I_Ca__I_Ca_converted; + dqs[5] = var_I_Ca__tauf; + dqs[6] = var_I_PCa__I_pca_converted; + dqs[7] = var_parameters__Cmem_converted; + dqs[8] = var_I_Na__I_Na_converted; + dqs[9] = var_I_Na__tauh; + dqs[10] = var_I_Na__tauj; + dqs[11] = var_I_to__I_tof_converted; + dqs[12] = var_I_to__GtoFast; + dqs[13] = var_I_Ki__I_ki_converted; + dqs[14] = var_I_Ki__g_K1; + dqs[15] = var_I_Kr__I_kr_converted; + dqs[16] = var_I_Ks__I_ks_converted; + dqs[17] = var_I_Ks__GKs_total; + dqs[18] = var_I_to__I_tos_converted; + dqs[19] = var_I_to__GtoSlow; + dqs[20] = var_I_NCX__I_ncx_converted; + dqs[21] = var_I_NaK__I_nak_converted; + dqs[22] = var_membrane_potential__i_Stim_converted; + dqs[23] = var_I_to__I_to_converted; + dqs[24] = var_parameters__ek; + dqs[25] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "grandi_pasqualini_bers_2010_epi"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "msec"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-81.4229700631461); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.72745589849657e-05); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00381858135062259); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.625086621635645); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.62332507235506); + + // rY[5]: + this->mVariableNames.push_back("I_Kr__x_kr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.021733554982663); + + // rY[6]: + this->mVariableNames.push_back("I_Ks__x_ks"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00428981903391989); + + // rY[7]: + this->mVariableNames.push_back("I_to__x_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441539203559411); + + // rY[8]: + this->mVariableNames.push_back("I_to__y_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.784875334693892); + + // rY[9]: + this->mVariableNames.push_back("I_to__x_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441531250866821); + + // rY[10]: + this->mVariableNames.push_back("I_to__y_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999995817153572); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.93982287251302e-06); + + // rY[12]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99511673495949); + + // rY[13]: + this->mVariableNames.push_back("I_Ca__f_Ca_Bj"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0246142436477748); + + // rY[14]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0152416826209301); + + // rY[15]: + this->mVariableNames.push_back("SR_Fluxes__Ry_Rr"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.891022230597263); + + // rY[16]: + this->mVariableNames.push_back("SR_Fluxes__Ry_Ro"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(7.37484660389498e-07); + + // rY[17]: + this->mVariableNames.push_back("SR_Fluxes__Ry_Ri"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(9.01984485847386e-08); + + // rY[18]: + this->mVariableNames.push_back("Na_Buffers__Na_Bj"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(3.43545459048316); + + // rY[19]: + this->mVariableNames.push_back("Na_Buffers__Na_Bsl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.749601264899653); + + // rY[20]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CL"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00893708435270205); + + // rY[21]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHc"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.117445983314504); + + // rY[22]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHm"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0105996734077994); + + // rY[23]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__CaM"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000295653619580701); + + // rY[24]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_c"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00192645052472679); + + // rY[25]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_m"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.137557201546068); + + // rY[26]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__SRB"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00217414510791738); + + // rY[27]: + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00738583890572642); + + // rY[28]: + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00988178900584875); + + // rY[29]: + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0734662466011574); + + // rY[30]: + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.114400081504523); + + // rY[31]: + this->mVariableNames.push_back("SR_Ca_Concentrations__Csqn_b"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(1.19772047585784); + + // rY[32]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.555180633859957); + + // rY[33]: + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.3215690202059); + + // rY[34]: + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32094589677861); + + // rY[35]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32114502072456); + + // rY[36]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(120.0); + + // rY[37]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000175415190830688); + + // rY[38]: + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000106544589194246); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("mM_per_msec"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[9]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[10]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kelvin_per_kilomole"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("cm_per_sec"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("mV"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_sodium_potassium_pump_current_permeability"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[22]: + this->mParameterNames.push_back("parameters__Cmem"); + this->mParameterUnits.push_back("farad"); + + // mParameters[23]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_leak_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("SR_uptake_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("membrane_sodium_potassium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [23]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [24]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [25]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("msec"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler--sympy_1_14.cpp new file mode 100644 index 00000000..2207c681 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BE/grandi_pasqualini_bers_2010_ssBackwardEuler--sympy_1_14.cpp @@ -0,0 +1,2306 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: grandi_pasqualini_bers_2010_epi +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEuler) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "grandi_pasqualini_bers_2010_ssBackwardEuler.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractBackwardEulerCardiacCell<27>* Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler(p_solver, p_stimulus); +} + +bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::registered = ModelFactory::Register("grandi_pasqualini_bers_2010_ss", "BackwardEuler", (ModelFactory::TCreateMethod)Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::CreateMethod); + + + + boost::shared_ptr Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane_potential__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane_potential__stim_duration = 5; // msec + const double var_chaste_interface__membrane_potential__stim_period = 1000; // msec + const double var_chaste_interface__membrane_potential__stim_start = 100; // msec + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane_potential__stim_amplitude_converted), + var_chaste_interface__membrane_potential__stim_duration, + var_chaste_interface__membrane_potential__stim_period, + var_chaste_interface__membrane_potential__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<27>( + 39, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 5.3480000000000003e-6; // (var_SR_Fluxes__SR_leak_max) [per_msec] + this->mParameters[1] = 25; // (var_parameters__ks) [per_msec] + this->mParameters[2] = 0.0053114; // (var_parameters__Vmax_SRCaP) [mM_per_msec] + this->mParameters[3] = 1; // (var_Na_Concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 15; // (var_parameters__Cli) [mM] + this->mParameters[5] = 1.8; // (var_parameters__Cao) [mM] + this->mParameters[6] = 150; // (var_parameters__Clo) [mM] + this->mParameters[7] = 5.4000000000000004; // (var_parameters__Ko) [mM] + this->mParameters[8] = 140; // (var_parameters__Nao) [mM] + this->mParameters[9] = 96485; // (var_parameters__Frdy) [coulomb_per_mole] + this->mParameters[10] = 8314; // (var_parameters__R) [joule_per_kelvin_per_kilomole] + this->mParameters[11] = 0.5; // (var_parameters__pCa_max) [cm_per_sec] + this->mParameters[12] = 23; // (var_parameters__GNa) [mS_per_uF] + this->mParameters[13] = 0; // (var_I_Na__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[14] = 0; // (var_I_Na__shift_INa_inact) [mV] + this->mParameters[15] = 1; // (var_I_to__GtoFast_factor) [dimensionless] + this->mParameters[16] = 0.34999999999999998; // (var_I_Ki__g_ki_factor) [mS_per_uF] + this->mParameters[17] = 0.035000000000000003; // (var_I_Kr__gkr_max) [mS_per_uF] + this->mParameters[18] = 1; // (var_I_Ks__GKs_factor) [dimensionless] + this->mParameters[19] = 1; // (var_I_to__GtoSlow_factor) [dimensionless] + this->mParameters[20] = 4.5; // (var_parameters__IbarNCX) [uA_per_uF] + this->mParameters[21] = 1.8; // (var_parameters__IbarNaK) [uA_per_uF] + this->mParameters[22] = 1.3809999999999999e-10; // (var_parameters__Cmem) [farad] + this->mParameters[23] = 310; // (var_parameters__Temp) [kelvin] + } + + Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::~Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler() + { + } + + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 39; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = rY[5]; + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = rY[6]; + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = rY[7]; + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = rY[8]; + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = rY[9]; + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = rY[10]; + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = rY[13]; + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = rY[14]; + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__Na_Concentrations__Na_j = rY[33]; + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = rY[34]; + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = rY[35]; + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = rY[36]; + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = rY[37]; + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = rY[38]; + // Units: mM; Initial value: 0.000106544589194246 + + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + exp(7.4880000000000004 - 0.16722408026755853 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * mParameters[18]; // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF + const double var_parameters__GClB = 0.0089999999999999993; // mS_per_uF + const double var_parameters__GClCa = 0.0548125; // mS_per_uF + const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__KdClCa = 0.10000000000000001; // mM + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_parameters__eca_junc = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF + const double var_parameters__eca_sl = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF + const double var_parameters__ecl = 1 * log(mParameters[4] / mParameters[6]) / var_parameters__FoRT; // mV + const double var_I_ClCa__I_ClCa_junc = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_j); // uA_per_uF + const double var_I_ClCa__I_ClCa_sl = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_sl); // uA_per_uF + const double var_I_ClCa__I_ClCa = var_I_ClCa__I_ClCa_junc + var_I_ClCa__I_ClCa_sl; // uA_per_uF + const double var_I_ClCa__I_Clbk = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__GClB; // uA_per_uF + const double var_membrane_potential__I_Cl_tot = var_I_ClCa__I_ClCa + var_I_ClCa__I_Clbk; // uA_per_uF + const double var_parameters__ek = 1 * log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_parameters__ena_junc = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF + const double var_parameters__ena_sl = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * mParameters[15]) : (0.0014039999999999999 * mParameters[15])); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * mParameters[19]) : (0.037595999999999997 * mParameters[19])); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_parameters__gkp = 0.002; // mS_per_uF + const double var_I_Kp__I_kp_junc = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fjunc * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp_sl = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fsl * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp = var_I_Kp__I_kp_junc + var_I_Kp__I_kp_sl; // uA_per_uF + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_membrane_potential__I_Ca_tot = var_Ca_Concentrations__I_Ca_tot_junc + var_Ca_Concentrations__I_Ca_tot_sl; // uA_per_uF + const double var_parameters__pK = 1.35e-7; // cm_per_sec + const double var_I_Ca__ibark = (-0.75 * mParameters[7] + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pK / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * ((1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_parameters__Fjunc_CaL + (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_parameters__Fsl_CaL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibark; // uA_per_uF + const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec + const double var_I_Ca__ibarna_j = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarna_sl = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF + const double var_membrane_potential__I_Na_tot = var_Na_Concentrations__I_Na_tot_junc + var_Na_Concentrations__I_Na_tot_sl; // uA_per_uF + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((mParameters[8] * var_parameters__pNaK + mParameters[7]) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_K_Concentration__I_K_tot = -2 * var_I_NaK__I_nak + var_I_Ca__I_CaK + var_I_Ki__I_ki + var_I_Kp__I_kp + var_I_Kr__I_kr + var_I_Ks__I_ks + var_I_to__I_to; // uA_per_uF + const double var_membrane_potential__I_tot = var_K_Concentration__I_K_tot + var_membrane_potential__I_Ca_tot + var_membrane_potential__I_Cl_tot + var_membrane_potential__I_Na_tot; // uA_per_uF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane_potential__I_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[27], double rResidual[27]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + + //output_nonlinear_state_assignments + double var_chaste_interface__Ca_Concentrations__Ca_i = rCurrentGuess[0]; + double var_chaste_interface__Ca_Concentrations__Ca_j = rCurrentGuess[1]; + double var_chaste_interface__Ca_Concentrations__Ca_sl = rCurrentGuess[2]; + double var_chaste_interface__Cytosolic_Ca_Buffers__CaM = rCurrentGuess[3]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c = rCurrentGuess[4]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m = rCurrentGuess[5]; + double var_chaste_interface__Cytosolic_Ca_Buffers__SRB = rCurrentGuess[6]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc = rCurrentGuess[7]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm = rCurrentGuess[8]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL = rCurrentGuess[9]; + double var_chaste_interface__I_Ca__f_Ca_Bj = rCurrentGuess[10]; + double var_chaste_interface__I_Ca__f_Ca_Bsl = rCurrentGuess[11]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j = rCurrentGuess[12]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl = rCurrentGuess[13]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j = rCurrentGuess[14]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl = rCurrentGuess[15]; + double var_chaste_interface__Na_Buffers__Na_Bj = rCurrentGuess[17]; + double var_chaste_interface__Na_Buffers__Na_Bsl = rCurrentGuess[18]; + double var_chaste_interface__Na_Concentrations__Na_i = rCurrentGuess[19]; + double var_chaste_interface__Na_Concentrations__Na_j = rCurrentGuess[20]; + double var_chaste_interface__Na_Concentrations__Na_sl = rCurrentGuess[21]; + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = rCurrentGuess[22]; + double var_chaste_interface__SR_Ca_Concentrations__Csqn_b = rCurrentGuess[23]; + double var_chaste_interface__SR_Fluxes__Ry_Ri = rCurrentGuess[24]; + double var_chaste_interface__SR_Fluxes__Ry_Ro = rCurrentGuess[25]; + double var_chaste_interface__SR_Fluxes__Ry_Rr = rCurrentGuess[26]; + + //output_equations + const double d_dt_chaste_interface_var_K_Concentration__K_i = 0; // mM / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bj = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bj + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bj) * var_chaste_interface__Ca_Concentrations__Ca_j; // 1 / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bsl + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl) * var_chaste_interface__Ca_Concentrations__Ca_sl; // 1 / msec + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_SR_Fluxes__MaxSR = 15; // dimensionless + const double var_SR_Fluxes__MinSR = 1; // dimensionless + const double var_SR_Fluxes__RI = 1 - var_chaste_interface__SR_Fluxes__Ry_Ri - var_chaste_interface__SR_Fluxes__Ry_Ro - var_chaste_interface__SR_Fluxes__Ry_Rr; // mM + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * mParameters[0]; // mM_per_msec + const double var_parameters__Bmax_CaM = 0.024; // mM + const double var_parameters__Bmax_Naj = 7.5609999999999999; // mM + const double var_parameters__Bmax_Nasl = 1.6499999999999999; // mM + const double var_parameters__Bmax_SR = 0.017100000000000001; // mM + const double var_parameters__Bmax_TnChigh = 0.14000000000000001; // mM + const double var_parameters__Bmax_TnClow = 0.070000000000000007; // mM + const double var_parameters__Bmax_myosin = 0.14000000000000001; // mM + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF + const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__J_ca_juncsl = 8.2413000000000004e-13; // liters_per_msec + const double var_parameters__J_ca_slmyo = 3.2742999999999999e-12; // liters_per_msec + const double var_parameters__J_na_juncsl = 1.8312999999999999e-14; // liters_per_msec + const double var_parameters__J_na_slmyo = 1.6385999999999999e-12; // liters_per_msec + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_parameters__Kmf = 0.00024600000000000002; // mM + const double var_parameters__Kmr = 1.7; // mM + const double var_parameters__Mgi = 1; // mM + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless + const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_parameters__cellLength = 100; // um + const double var_parameters__cellRadius = 10.25; // um + const double var_parameters__Vcell = 1.0000000000000001e-15 * M_PI * pow(var_parameters__cellRadius, 2) * var_parameters__cellLength; // liter + const double var_parameters__Vjunc = 0.00053900000000000009 * var_parameters__Vcell; // liter + const double var_parameters__Vmyo = 0.65000000000000002 * var_parameters__Vcell; // liter + const double d_dt_chaste_interface_var_Na_Concentrations__Na_i = (-var_chaste_interface__Na_Concentrations__Na_i + var_chaste_interface__Na_Concentrations__Na_sl) * mParameters[3] * var_parameters__J_na_slmyo / var_parameters__Vmyo; // mM / msec + const double var_parameters__Bmax_SLhighj = 0.000165 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Bmax_SLlowj = 0.00046000000000000001 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Vsl = 0.02 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_SLhighsl = 0.0134 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Bmax_SLlowsl = 0.037400000000000003 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Vsr = 0.035000000000000003 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_Csqn = 0.14000000000000001 * var_parameters__Vmyo / var_parameters__Vsr; // mM + const double var_parameters__ec50SR = 0.45000000000000001; // mM + const double var_SR_Fluxes__kCaSR = -(-var_SR_Fluxes__MinSR + var_SR_Fluxes__MaxSR) / (1 + pow((var_parameters__ec50SR / var_chaste_interface__SR_Ca_Concentrations__Ca_sr), 2.5)) + var_SR_Fluxes__MaxSR; // dimensionless + const double var_parameters__eca_junc = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF + const double var_parameters__eca_sl = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF + const double var_parameters__ena_junc = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF + const double var_parameters__ena_sl = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF + const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless + const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * mParameters[2] / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_parameters__kiCa = 0.5; // per_mM_per_msec + const double var_SR_Fluxes__kiSRCa = var_SR_Fluxes__kCaSR * var_parameters__kiCa; // per_mM_per_msec + const double var_parameters__kim = 0.0050000000000000001; // per_msec + const double var_parameters__koCa = 10; // per_mM2_per_msec + const double var_SR_Fluxes__koSRCa = var_parameters__koCa / var_SR_Fluxes__kCaSR; // per_mM2_per_msec + const double var_parameters__koff_cam = 0.23799999999999999; // per_msec + const double var_parameters__koff_csqn = 65; // per_msec + const double var_parameters__koff_myoca = 0.00046000000000000001; // per_msec + const double var_parameters__koff_myomg = 5.7000000000000003e-5; // per_msec + const double var_parameters__koff_na = 0.001; // per_msec + const double var_parameters__koff_slh = 0.029999999999999999; // per_msec + const double var_parameters__koff_sll = 1.3; // per_msec + const double var_parameters__koff_sr = 0.059999999999999998; // per_msec + const double var_parameters__koff_tnchca = 3.1999999999999999e-5; // per_msec + const double var_parameters__koff_tnchmg = 0.0033300000000000001; // per_msec + const double var_parameters__koff_tncl = 0.019599999999999999; // per_msec + const double var_parameters__kom = 0.059999999999999998; // per_msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri = -var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kim - var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kom + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_SR_Fluxes__RI * var_SR_Fluxes__koSRCa + var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro = var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kim - var_chaste_interface__SR_Fluxes__Ry_Ro * var_parameters__kom + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr = var_SR_Fluxes__RI * var_parameters__kim + var_chaste_interface__SR_Fluxes__Ry_Ro * var_parameters__kom - pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__kiSRCa; // mM / msec + const double var_parameters__kon_cam = 34; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM = -var_chaste_interface__Cytosolic_Ca_Buffers__CaM * var_parameters__koff_cam + (-var_chaste_interface__Cytosolic_Ca_Buffers__CaM + var_parameters__Bmax_CaM) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_cam; // mM / msec + const double var_parameters__kon_csqn = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b = -var_chaste_interface__SR_Ca_Concentrations__Csqn_b * var_parameters__koff_csqn + (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr * var_parameters__kon_csqn; // mM / msec + const double var_parameters__kon_myoca = 13.800000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c = -var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c * var_parameters__koff_myoca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_myoca; // mM / msec + const double var_parameters__kon_myomg = 0.015699999999999999; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m = -var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m * var_parameters__koff_myomg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_parameters__Mgi * var_parameters__kon_myomg; // mM / msec + const double var_parameters__kon_na = 0.0001; // per_mM_per_msec + const double var_Na_Buffers__dNa_Bj_dt = -var_chaste_interface__Na_Buffers__Na_Bj * var_parameters__koff_na + (-var_chaste_interface__Na_Buffers__Na_Bj + var_parameters__Bmax_Naj) * var_chaste_interface__Na_Concentrations__Na_j * var_parameters__kon_na; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bj = var_Na_Buffers__dNa_Bj_dt; // mM / msec + const double var_Na_Buffers__dNa_Bsl_dt = -var_chaste_interface__Na_Buffers__Na_Bsl * var_parameters__koff_na + (-var_chaste_interface__Na_Buffers__Na_Bsl + var_parameters__Bmax_Nasl) * var_chaste_interface__Na_Concentrations__Na_sl * var_parameters__kon_na; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bsl = var_Na_Buffers__dNa_Bsl_dt; // mM / msec + const double var_parameters__kon_slh = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j * var_parameters__koff_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_slh; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl * var_parameters__koff_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_slh; // mM / msec + const double var_parameters__kon_sll = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_sll; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_sll; // mM / msec + const double var_Junctional_and_SL_Ca_Buffers__J_CaB_junction = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j * var_parameters__koff_slh - var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_sll; // mM_per_msec + const double var_Junctional_and_SL_Ca_Buffers__J_CaB_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl * var_parameters__koff_slh - var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_sll; // mM_per_msec + const double var_parameters__kon_sr = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB = -var_chaste_interface__Cytosolic_Ca_Buffers__SRB * var_parameters__koff_sr + (-var_chaste_interface__Cytosolic_Ca_Buffers__SRB + var_parameters__Bmax_SR) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_sr; // mM / msec + const double var_parameters__kon_tnchca = 2.3700000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc * var_parameters__koff_tnchca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tnchca; // mM / msec + const double var_parameters__kon_tnchmg = 0.0030000000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm * var_parameters__koff_tnchmg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_parameters__Mgi * var_parameters__kon_tnchmg; // mM / msec + const double var_parameters__kon_tncl = 32.700000000000003; // per_mM_per_msec + const double var_Cytosolic_Ca_Buffers__J_CaB_cytosol = -var_chaste_interface__Cytosolic_Ca_Buffers__CaM * var_parameters__koff_cam - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c * var_parameters__koff_myoca - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m * var_parameters__koff_myomg - var_chaste_interface__Cytosolic_Ca_Buffers__SRB * var_parameters__koff_sr - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc * var_parameters__koff_tnchca - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm * var_parameters__koff_tnchmg - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL * var_parameters__koff_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__CaM + var_parameters__Bmax_CaM) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_cam + (-var_chaste_interface__Cytosolic_Ca_Buffers__SRB + var_parameters__Bmax_SR) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_sr + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + var_parameters__Bmax_TnClow) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_myoca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_parameters__Mgi * var_parameters__kon_myomg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tnchca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_parameters__Mgi * var_parameters__kon_tnchmg; // mM_per_msec + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_i = -var_Cytosolic_Ca_Buffers__J_CaB_cytosol + (-var_chaste_interface__Ca_Concentrations__Ca_i + var_chaste_interface__Ca_Concentrations__Ca_sl) * var_parameters__J_ca_slmyo / var_parameters__Vmyo - var_SR_Fluxes__J_serca * var_parameters__Vsr / var_parameters__Vmyo; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL * var_parameters__koff_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + var_parameters__Bmax_TnClow) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tncl; // mM / msec + const double var_SR_Fluxes__J_SRCarel = 1 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * mParameters[1]; // mM_per_msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr = -var_SR_Fluxes__J_SRCarel + var_chaste_interface__SR_Ca_Concentrations__Csqn_b * var_parameters__koff_csqn - var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vsr - (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr * var_parameters__kon_csqn + var_SR_Fluxes__J_serca; // mM / msec + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_j = -var_Junctional_and_SL_Ca_Buffers__J_CaB_junction + (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__Ca_Concentrations__Ca_sl) * var_parameters__J_ca_juncsl / var_parameters__Vjunc + var_SR_Fluxes__J_SRCarel * var_parameters__Vsr / var_parameters__Vjunc + var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vjunc - 0.5 * var_Ca_Concentrations__I_Ca_tot_junc * mParameters[22] / (mParameters[9] * var_parameters__Vjunc); // mM / msec + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl = -var_Junctional_and_SL_Ca_Buffers__J_CaB_sl + (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_i) * var_parameters__J_ca_slmyo / var_parameters__Vsl + (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_j) * var_parameters__J_ca_juncsl / var_parameters__Vsl - 0.5 * var_Ca_Concentrations__I_Ca_tot_sl * mParameters[22] / (mParameters[9] * var_parameters__Vsl); // mM / msec + const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec + const double var_I_Ca__ibarna_j = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarna_sl = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_j = (-var_Na_Buffers__dNa_Bj_dt + (-var_chaste_interface__Na_Concentrations__Na_j + var_chaste_interface__Na_Concentrations__Na_sl) * var_parameters__J_na_juncsl / var_parameters__Vjunc - var_Na_Concentrations__I_Na_tot_junc * mParameters[22] / (mParameters[9] * var_parameters__Vjunc)) * mParameters[3]; // mM / msec + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_sl = (-var_Na_Buffers__dNa_Bsl_dt + (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_i) * var_parameters__J_na_slmyo / var_parameters__Vsl + (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_j) * var_parameters__J_na_juncsl / var_parameters__Vsl - var_Na_Concentrations__I_Na_tot_sl * mParameters[22] / (mParameters[9] * var_parameters__Vsl)) * mParameters[3]; // mM / msec + + rResidual[0] = rCurrentGuess[0] - rY[1] - mDt*d_dt_chaste_interface_var_Ca_Concentrations__Ca_i; + rResidual[10] = rCurrentGuess[10] - rY[13] - mDt*d_dt_chaste_interface_var_I_Ca__f_Ca_Bj; + rResidual[11] = rCurrentGuess[11] - rY[14] - mDt*d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl; + rResidual[26] = rCurrentGuess[26] - rY[15] - mDt*d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr; + rResidual[25] = rCurrentGuess[25] - rY[16] - mDt*d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro; + rResidual[24] = rCurrentGuess[24] - rY[17] - mDt*d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri; + rResidual[17] = rCurrentGuess[17] - rY[18] - mDt*d_dt_chaste_interface_var_Na_Buffers__Na_Bj; + rResidual[18] = rCurrentGuess[18] - rY[19] - mDt*d_dt_chaste_interface_var_Na_Buffers__Na_Bsl; + rResidual[9] = rCurrentGuess[9] - rY[20] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL; + rResidual[7] = rCurrentGuess[7] - rY[21] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc; + rResidual[8] = rCurrentGuess[8] - rY[22] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm; + rResidual[3] = rCurrentGuess[3] - rY[23] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM; + rResidual[4] = rCurrentGuess[4] - rY[24] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c; + rResidual[5] = rCurrentGuess[5] - rY[25] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m; + rResidual[6] = rCurrentGuess[6] - rY[26] - mDt*d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB; + rResidual[14] = rCurrentGuess[14] - rY[27] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j; + rResidual[15] = rCurrentGuess[15] - rY[28] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl; + rResidual[12] = rCurrentGuess[12] - rY[29] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j; + rResidual[13] = rCurrentGuess[13] - rY[30] - mDt*d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl; + rResidual[23] = rCurrentGuess[23] - rY[31] - mDt*d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b; + rResidual[22] = rCurrentGuess[22] - rY[32] - mDt*d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr; + rResidual[20] = rCurrentGuess[20] - rY[33] - mDt*d_dt_chaste_interface_var_Na_Concentrations__Na_j; + rResidual[21] = rCurrentGuess[21] - rY[34] - mDt*d_dt_chaste_interface_var_Na_Concentrations__Na_sl; + rResidual[19] = rCurrentGuess[19] - rY[35] - mDt*d_dt_chaste_interface_var_Na_Concentrations__Na_i; + rResidual[16] = rCurrentGuess[16] - rY[36] - mDt*d_dt_chaste_interface_var_K_Concentration__K_i; + rResidual[1] = rCurrentGuess[1] - rY[37] - mDt*d_dt_chaste_interface_var_Ca_Concentrations__Ca_j; + rResidual[2] = rCurrentGuess[2] - rY[38] - mDt*d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl; + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[27], double rJacobian[27][27]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + + double var_chaste_interface__Ca_Concentrations__Ca_i = rCurrentGuess[0]; + double var_chaste_interface__Ca_Concentrations__Ca_j = rCurrentGuess[1]; + double var_chaste_interface__Ca_Concentrations__Ca_sl = rCurrentGuess[2]; + double var_chaste_interface__Cytosolic_Ca_Buffers__CaM = rCurrentGuess[3]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c = rCurrentGuess[4]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m = rCurrentGuess[5]; + double var_chaste_interface__Cytosolic_Ca_Buffers__SRB = rCurrentGuess[6]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc = rCurrentGuess[7]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm = rCurrentGuess[8]; + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL = rCurrentGuess[9]; + double var_chaste_interface__I_Ca__f_Ca_Bj = rCurrentGuess[10]; + double var_chaste_interface__I_Ca__f_Ca_Bsl = rCurrentGuess[11]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j = rCurrentGuess[12]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl = rCurrentGuess[13]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j = rCurrentGuess[14]; + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl = rCurrentGuess[15]; + double var_chaste_interface__Na_Buffers__Na_Bj = rCurrentGuess[17]; + double var_chaste_interface__Na_Buffers__Na_Bsl = rCurrentGuess[18]; + double var_chaste_interface__Na_Concentrations__Na_j = rCurrentGuess[20]; + double var_chaste_interface__Na_Concentrations__Na_sl = rCurrentGuess[21]; + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = rCurrentGuess[22]; + double var_chaste_interface__SR_Ca_Concentrations__Csqn_b = rCurrentGuess[23]; + double var_chaste_interface__SR_Fluxes__Ry_Ri = rCurrentGuess[24]; + double var_chaste_interface__SR_Fluxes__Ry_Ro = rCurrentGuess[25]; + double var_chaste_interface__SR_Fluxes__Ry_Rr = rCurrentGuess[26]; + + const double var_x0 = 34 * var_chaste_interface__Cytosolic_Ca_Buffers__CaM; + const double var_x1 = 100 * var_chaste_interface__Cytosolic_Ca_Buffers__SRB; + const double var_x2 = 32.700000000000003 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL; + const double var_x3 = 1 / M_PI; + const double var_x4 = 0.4794655196082917 * var_x3; + const double var_x5 = pow(var_chaste_interface__Ca_Concentrations__Ca_i, 0.78699999999999992); + const double var_x6 = 0.38742512113256738 * pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, 1.7869999999999999); + const double var_x7 = 2814485.1633595936 * pow(var_chaste_interface__Ca_Concentrations__Ca_i, 1.7869999999999999); + const double var_x8 = 1 + var_x6 + var_x7; + const double var_x9 = 1 / var_x8; + const double var_x10 = -31 + 0.10000000000000001 * mParameters[23]; + const double var_x11 = pow(2.6000000000000001, var_x10); + const double var_x12 = var_x11 * mParameters[2]; + const double var_x13 = var_x12 * var_x9; + const double var_x14 = var_x12 * (var_x7 - var_x6) / pow(var_x8, 2); + const double var_x15 = var_x14 * var_x5; + const double var_x16 = 13.800000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c + 13.800000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m; + const double var_x17 = 2.3700000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc + 2.3700000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm; + const double var_x18 = 0.23799999999999999 + 34 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x19 = 13.800000000000001 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x20 = 0.059999999999999998 + 100 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x21 = 2.3700000000000001 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x22 = 0.019599999999999999 + 32.700000000000003 * var_chaste_interface__Ca_Concentrations__Ca_i; + const double var_x23 = pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, 0.78699999999999992); + const double var_x24 = var_x13 * var_x23; + const double var_x25 = var_x14 * var_x23; + const double var_x26 = 145.53224458892851 * var_x3; + const double var_x27 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j; + const double var_x28 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j; + const double var_x29 = 5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001); + const double var_x30 = pow(2.3500000000000001, var_x10); + const double var_x31 = 0.011844800000000001 * var_x30; + const double var_x32 = 1 / mParameters[9]; + const double var_x33 = var_x32 * mParameters[10] * mParameters[23]; + const double var_x34 = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2); + const double var_x35 = 1 + 2.2499999999999996e-8 / var_x34; + const double var_x36 = 1 / var_x35; + const double var_x37 = 0.22 * var_x36; + const double var_x38 = pow(var_chaste_interface__Na_Concentrations__Na_j, 3); + const double var_x39 = pow(mParameters[8], 3); + const double var_x40 = var_x39 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x41 = 0.0035899999999999999 * var_x39; + const double var_x42 = var_x40 + 1.3 * var_x38 + var_x38 * mParameters[5] + var_x41 * (1 + 0.00053869674493876331 * var_x38) + 669921.875 * (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_j) * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x43 = var_chaste_interface__membrane_potential__V_m / (mParameters[10] * mParameters[23]); + const double var_x44 = var_x43 * mParameters[9]; + const double var_x45 = exp(-0.72999999999999998 * var_x44); + const double var_x46 = pow(1.5700000000000001, var_x10) * mParameters[20] / (1 + 0.32000000000000001 * var_x45); + const double var_x47 = var_x46 / var_x42; + const double var_x48 = var_x39 * var_x45; + const double var_x49 = var_x47 * var_x48; + const double var_x50 = 669921.875 + var_x39; + const double var_x51 = -var_x50 - 373215529.24791086 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x52 = exp(0.27000000000000002 * var_x44); + const double var_x53 = -var_x40 * var_x45 + var_x38 * var_x52 * mParameters[5]; + const double var_x54 = var_x46 * var_x53 / pow(var_x42, 2); + const double var_x55 = var_x37 * var_x54; + const double var_x56 = var_x47 * var_x53 / (pow(var_x35, 2) * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 3)); + const double var_x57 = var_x43 * pow(mParameters[9], 2); + const double var_x58 = var_x57 * (1 - var_chaste_interface__I_Ca__f_Ca_Bj); + const double var_x59 = exp(2 * var_x44); + const double var_x60 = pow(1.8, var_x10) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f; + const double var_x61 = var_x60 * mParameters[11] / (-1 + var_x59); + const double var_x62 = var_x59 * var_x61; + const double var_x63 = var_x32 * mParameters[22]; + const double var_x64 = var_x3 * var_x63; + const double var_x65 = 88294470889864.781 * var_x64; + const double var_x66 = 64.935064935064929 * mParameters[1]; + const double var_x67 = 1205.9369202226344 * mParameters[0] + var_x66 * var_chaste_interface__SR_Fluxes__Ry_Ro; + const double var_x68 = -0.34100000000000003 * mParameters[5]; + const double var_x69 = 0.34100000000000003 * var_x59; + const double var_x70 = var_x44 * mParameters[22]; + const double var_x71 = var_x3 * var_x61 * var_x70; + const double var_x72 = 100 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x73 = 0.029999999999999999 + var_x72; + const double var_x74 = 1.3 + var_x72; + const double var_x75 = pow(var_chaste_interface__Na_Concentrations__Na_j, 2); + const double var_x76 = 3 * mParameters[5]; + const double var_x77 = 5.8017639429904805e-6 * var_x39; + const double var_x78 = -3.9000000000000004 * var_x75 - var_x75 * var_x76 - var_x75 * var_x77; + const double var_x79 = var_x52 * mParameters[5]; + const double var_x80 = var_x36 * var_x47 * var_x75 * var_x79; + const double var_x81 = -var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr; + const double var_x82 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl; + const double var_x83 = 100 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl; + const double var_x84 = 5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001); + const double var_x85 = 0.095835200000000009 * var_x30; + const double var_x86 = 1 + 2.2499999999999996e-8 / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2); + const double var_x87 = 1 / var_x86; + const double var_x88 = 1.78 * var_x87; + const double var_x89 = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3); + const double var_x90 = var_x39 * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x91 = var_x90 + 1.3 * var_x89 + var_x41 * (1 + 0.00053869674493876331 * var_x89) + var_x89 * mParameters[5] + 669921.875 * (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_sl) * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x92 = var_x46 / var_x91; + const double var_x93 = var_x48 * var_x92; + const double var_x94 = -var_x50 - 373215529.24791086 * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x95 = -var_x45 * var_x90 + var_x52 * var_x89 * mParameters[5]; + const double var_x96 = var_x46 * var_x95 / pow(var_x91, 2); + const double var_x97 = var_x88 * var_x96; + const double var_x98 = var_x92 * var_x95 / (pow(var_x86, 2) * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 3)); + const double var_x99 = var_x57 * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl); + const double var_x100 = 2379535990481.856 * var_x64; + const double var_x101 = 100 * var_chaste_interface__Ca_Concentrations__Ca_sl; + const double var_x102 = 0.029999999999999999 + var_x101; + const double var_x103 = 1.3 + var_x101; + const double var_x104 = pow(var_chaste_interface__Na_Concentrations__Na_sl, 2); + const double var_x105 = -3.9000000000000004 * var_x104 - var_x104 * var_x76 - var_x104 * var_x77; + const double var_x106 = var_x104 * var_x79 * var_x87 * var_x92; + const double var_x107 = 0.001 + 0.0001 * var_chaste_interface__Na_Concentrations__Na_j; + const double var_x108 = 0.0001 * var_chaste_interface__Na_Buffers__Na_Bj; + const double var_x109 = 0.001 + 0.0001 * var_chaste_interface__Na_Concentrations__Na_sl; + const double var_x110 = 0.0001 * var_chaste_interface__Na_Buffers__Na_Bsl; + const double var_x111 = var_x3 * mParameters[3]; + const double var_x112 = 0.23994508763098885 * var_x111; + const double var_x113 = 0.33000000000000002 * var_x36; + const double var_x114 = var_x113 * var_x54; + const double var_x115 = var_x111 * var_x63; + const double var_x116 = -0.75 * mParameters[8]; + const double var_x117 = exp(var_x44); + const double var_x118 = 0.75 * var_x117; + const double var_x119 = var_x60 / (-1 + var_x117); + const double var_x120 = var_x111 * var_x119 * var_x70; + const double var_x121 = 3.2338732908121872 * var_x3; + const double var_x122 = var_x33 / var_chaste_interface__Na_Concentrations__Na_j; + const double var_x123 = mParameters[21] * mParameters[7] / ((1.5 + mParameters[7]) * (1 + 0.1245 * exp(-0.10000000000000001 * var_x44) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8])) * exp(-var_x44))); + const double var_x124 = pow(var_chaste_interface__I_Na__m, 3) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * mParameters[12]; + const double var_x125 = var_x117 * var_x119; + const double var_x126 = 2.6699999999999999 * var_x87; + const double var_x127 = var_x126 * var_x96; + const double var_x128 = var_x33 / var_chaste_interface__Na_Concentrations__Na_sl; + const double var_x129 = 1 * mParameters[1]; + const double var_x130 = 18.571428571428569 * mParameters[0] + var_x129 * var_chaste_interface__SR_Fluxes__Ry_Ro; + const double var_x131 = 100 * var_chaste_interface__SR_Ca_Concentrations__Csqn_b; + const double var_x132 = 65 + 100 * var_chaste_interface__SR_Ca_Concentrations__Ca_sr; + const double var_x133 = 1 / var_chaste_interface__SR_Ca_Concentrations__Ca_sr; + const double var_x134 = pow(var_x133, 2.5); + const double var_x135 = 1 + 0.13584112963311223 * var_x134; + const double var_x136 = 1 / var_x135; + const double var_x137 = 7.5 - 7 * var_x136; + const double var_x138 = var_x137 * var_chaste_interface__SR_Fluxes__Ry_Ro; + const double var_x139 = 1 - var_chaste_interface__SR_Fluxes__Ry_Ri - var_chaste_interface__SR_Fluxes__Ry_Ro - var_chaste_interface__SR_Fluxes__Ry_Rr; + const double var_x140 = 15 - 14 * var_x136; + const double var_x141 = 1 / var_x140; + const double var_x142 = 20 * var_x141 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x143 = pow(var_x135, (-2)); + const double var_x144 = var_x133 * var_x134 * var_x143; + const double var_x145 = 2.3772197685794643 * var_x144 * var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro; + const double var_x146 = 47.544395371589282 * var_x144 * var_x34 / pow(var_x140, 2); + const double var_x147 = 10 * var_x141 * var_x34; + const double var_x148 = var_x137 * var_chaste_interface__Ca_Concentrations__Ca_j; + const double var_x149 = var_x142 * var_chaste_interface__SR_Fluxes__Ry_Rr; + const double var_x150 = var_x146 * var_chaste_interface__SR_Fluxes__Ry_Rr; + + + rJacobian[0][0] = 1.0 - (mDt * (-7.0788000000000011 + var_x0 + var_x1 + var_x16 + var_x17 + var_x2 - var_x4 + 270818.42237280885 * var_x15 - 270818.42237280885 * var_x13 * var_x5)); + rJacobian[0][1] = 0.0; + rJacobian[0][2] = -(mDt * (var_x4)); + rJacobian[0][3] = -(mDt * (var_x18)); + rJacobian[0][4] = -(mDt * (0.016159999999999997 + var_x19)); + rJacobian[0][5] = -(mDt * (0.015757 + var_x19)); + rJacobian[0][6] = -(mDt * (var_x20)); + rJacobian[0][7] = -(mDt * (0.003032 + var_x21)); + rJacobian[0][8] = -(mDt * (0.0063300000000000006 + var_x21)); + rJacobian[0][9] = -(mDt * (var_x22)); + rJacobian[0][10] = 0.0; + rJacobian[0][11] = 0.0; + rJacobian[0][12] = 0.0; + rJacobian[0][13] = 0.0; + rJacobian[0][14] = 0.0; + rJacobian[0][15] = 0.0; + rJacobian[0][16] = 0.0; + rJacobian[0][17] = 0.0; + rJacobian[0][18] = 0.0; + rJacobian[0][19] = 0.0; + rJacobian[0][20] = 0.0; + rJacobian[0][21] = 0.0; + rJacobian[0][22] = -(mDt * (0.037279237232671424 * var_x24 + 0.037279237232671424 * var_x25)); + rJacobian[0][23] = 0.0; + rJacobian[0][24] = 0.0; + rJacobian[0][25] = 0.0; + rJacobian[0][26] = 0.0; + rJacobian[1][0] = 0.0; + rJacobian[1][1] = 1.0 - (mDt * (-75.37105751391465 + var_x27 + var_x28 - var_x26 - var_x67 - var_x65 * (-9.8999999999999977e-9 * var_x56 + var_x37 * var_x49 - var_x51 * var_x55 + 3.0321500000000001e-5 * var_x33 / var_chaste_interface__Ca_Concentrations__Ca_j + 0.00029830680000000003 * var_x58 * var_x62 + var_x31 * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 0.60000000000000009) / var_x29 - var_x31 * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2.2000000000000002) / pow(var_x29, 2)))); + rJacobian[1][2] = -(mDt * (var_x26)); + rJacobian[1][3] = 0.0; + rJacobian[1][4] = 0.0; + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = 0.0; + rJacobian[1][8] = 0.0; + rJacobian[1][9] = 0.0; + rJacobian[1][10] = -(mDt * (77240003134.453705 * var_x71 * (var_x68 + var_x69 * var_chaste_interface__Ca_Concentrations__Ca_j))); + rJacobian[1][11] = 0.0; + rJacobian[1][12] = -(mDt * (var_x73)); + rJacobian[1][13] = 0.0; + rJacobian[1][14] = -(mDt * (var_x74)); + rJacobian[1][15] = 0.0; + rJacobian[1][16] = 0.0; + rJacobian[1][17] = 0.0; + rJacobian[1][18] = 0.0; + rJacobian[1][19] = 0.0; + rJacobian[1][20] = -(mDt * (-var_x65 * (-0.66000000000000003 * var_x80 - var_x55 * var_x78))); + rJacobian[1][21] = 0.0; + rJacobian[1][22] = -(mDt * (var_x67)); + rJacobian[1][23] = 0.0; + rJacobian[1][24] = 0.0; + rJacobian[1][25] = -(mDt * (var_x66 * var_x81)); + rJacobian[1][26] = 0.0; + rJacobian[2][0] = -(mDt * (15.582629387269481 * var_x3)); + rJacobian[2][1] = -(mDt * (3.9220939916716238 * var_x3)); + rJacobian[2][2] = 1.0 - (mDt * (-165.10000000000002 + var_x82 + var_x83 - 19.504723378941105 * var_x3 - var_x100 * (-8.0099999999999983e-8 * var_x98 + var_x88 * var_x93 - var_x94 * var_x97 + 0.00024532850000000001 * var_x33 / var_chaste_interface__Ca_Concentrations__Ca_sl + 3.3145199999999996e-5 * var_x62 * var_x99 + var_x85 * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 0.60000000000000009) / var_x84 - var_x85 * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2.2000000000000002) / pow(var_x84, 2)))); + rJacobian[2][3] = 0.0; + rJacobian[2][4] = 0.0; + rJacobian[2][5] = 0.0; + rJacobian[2][6] = 0.0; + rJacobian[2][7] = 0.0; + rJacobian[2][8] = 0.0; + rJacobian[2][9] = 0.0; + rJacobian[2][10] = 0.0; + rJacobian[2][11] = -(mDt * (231290898.27483633 * var_x71 * (var_x68 + var_x69 * var_chaste_interface__Ca_Concentrations__Ca_sl))); + rJacobian[2][12] = 0.0; + rJacobian[2][13] = -(mDt * (var_x102)); + rJacobian[2][14] = 0.0; + rJacobian[2][15] = -(mDt * (var_x103)); + rJacobian[2][16] = 0.0; + rJacobian[2][17] = 0.0; + rJacobian[2][18] = 0.0; + rJacobian[2][19] = 0.0; + rJacobian[2][20] = 0.0; + rJacobian[2][21] = -(mDt * (-var_x100 * (-5.3399999999999999 * var_x106 - var_x105 * var_x97))); + rJacobian[2][22] = 0.0; + rJacobian[2][23] = 0.0; + rJacobian[2][24] = 0.0; + rJacobian[2][25] = 0.0; + rJacobian[2][26] = 0.0; + rJacobian[3][0] = -(mDt * (0.81600000000000006 - var_x0)); + rJacobian[3][1] = 0.0; + rJacobian[3][2] = 0.0; + rJacobian[3][3] = 1.0 - (mDt * (-var_x18)); + rJacobian[3][4] = 0.0; + rJacobian[3][5] = 0.0; + rJacobian[3][6] = 0.0; + rJacobian[3][7] = 0.0; + rJacobian[3][8] = 0.0; + rJacobian[3][9] = 0.0; + rJacobian[3][10] = 0.0; + rJacobian[3][11] = 0.0; + rJacobian[3][12] = 0.0; + rJacobian[3][13] = 0.0; + rJacobian[3][14] = 0.0; + rJacobian[3][15] = 0.0; + rJacobian[3][16] = 0.0; + rJacobian[3][17] = 0.0; + rJacobian[3][18] = 0.0; + rJacobian[3][19] = 0.0; + rJacobian[3][20] = 0.0; + rJacobian[3][21] = 0.0; + rJacobian[3][22] = 0.0; + rJacobian[3][23] = 0.0; + rJacobian[3][24] = 0.0; + rJacobian[3][25] = 0.0; + rJacobian[3][26] = 0.0; + rJacobian[4][0] = -(mDt * (1.9320000000000004 - var_x16)); + rJacobian[4][1] = 0.0; + rJacobian[4][2] = 0.0; + rJacobian[4][3] = 0.0; + rJacobian[4][4] = 1.0 - (mDt * (-0.00046000000000000001 - var_x19)); + rJacobian[4][5] = -(mDt * (-var_x19)); + rJacobian[4][6] = 0.0; + rJacobian[4][7] = 0.0; + rJacobian[4][8] = 0.0; + rJacobian[4][9] = 0.0; + rJacobian[4][10] = 0.0; + rJacobian[4][11] = 0.0; + rJacobian[4][12] = 0.0; + rJacobian[4][13] = 0.0; + rJacobian[4][14] = 0.0; + rJacobian[4][15] = 0.0; + rJacobian[4][16] = 0.0; + rJacobian[4][17] = 0.0; + rJacobian[4][18] = 0.0; + rJacobian[4][19] = 0.0; + rJacobian[4][20] = 0.0; + rJacobian[4][21] = 0.0; + rJacobian[4][22] = 0.0; + rJacobian[4][23] = 0.0; + rJacobian[4][24] = 0.0; + rJacobian[4][25] = 0.0; + rJacobian[4][26] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = 0.0; + rJacobian[5][3] = 0.0; + rJacobian[5][4] = -(mDt * (-0.015699999999999999)); + rJacobian[5][5] = 1.0 - (mDt * (-0.015757)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[5][8] = 0.0; + rJacobian[5][9] = 0.0; + rJacobian[5][10] = 0.0; + rJacobian[5][11] = 0.0; + rJacobian[5][12] = 0.0; + rJacobian[5][13] = 0.0; + rJacobian[5][14] = 0.0; + rJacobian[5][15] = 0.0; + rJacobian[5][16] = 0.0; + rJacobian[5][17] = 0.0; + rJacobian[5][18] = 0.0; + rJacobian[5][19] = 0.0; + rJacobian[5][20] = 0.0; + rJacobian[5][21] = 0.0; + rJacobian[5][22] = 0.0; + rJacobian[5][23] = 0.0; + rJacobian[5][24] = 0.0; + rJacobian[5][25] = 0.0; + rJacobian[5][26] = 0.0; + rJacobian[6][0] = -(mDt * (1.71 - var_x1)); + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (-var_x20)); + rJacobian[6][7] = 0.0; + rJacobian[6][8] = 0.0; + rJacobian[6][9] = 0.0; + rJacobian[6][10] = 0.0; + rJacobian[6][11] = 0.0; + rJacobian[6][12] = 0.0; + rJacobian[6][13] = 0.0; + rJacobian[6][14] = 0.0; + rJacobian[6][15] = 0.0; + rJacobian[6][16] = 0.0; + rJacobian[6][17] = 0.0; + rJacobian[6][18] = 0.0; + rJacobian[6][19] = 0.0; + rJacobian[6][20] = 0.0; + rJacobian[6][21] = 0.0; + rJacobian[6][22] = 0.0; + rJacobian[6][23] = 0.0; + rJacobian[6][24] = 0.0; + rJacobian[6][25] = 0.0; + rJacobian[6][26] = 0.0; + rJacobian[7][0] = -(mDt * (0.33180000000000004 - var_x17)); + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = 0.0; + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (-3.1999999999999999e-5 - var_x21)); + rJacobian[7][8] = -(mDt * (-var_x21)); + rJacobian[7][9] = 0.0; + rJacobian[7][10] = 0.0; + rJacobian[7][11] = 0.0; + rJacobian[7][12] = 0.0; + rJacobian[7][13] = 0.0; + rJacobian[7][14] = 0.0; + rJacobian[7][15] = 0.0; + rJacobian[7][16] = 0.0; + rJacobian[7][17] = 0.0; + rJacobian[7][18] = 0.0; + rJacobian[7][19] = 0.0; + rJacobian[7][20] = 0.0; + rJacobian[7][21] = 0.0; + rJacobian[7][22] = 0.0; + rJacobian[7][23] = 0.0; + rJacobian[7][24] = 0.0; + rJacobian[7][25] = 0.0; + rJacobian[7][26] = 0.0; + rJacobian[8][0] = 0.0; + rJacobian[8][1] = 0.0; + rJacobian[8][2] = 0.0; + rJacobian[8][3] = 0.0; + rJacobian[8][4] = 0.0; + rJacobian[8][5] = 0.0; + rJacobian[8][6] = 0.0; + rJacobian[8][7] = -(mDt * (-0.0030000000000000001)); + rJacobian[8][8] = 1.0 - (mDt * (-0.0063300000000000006)); + rJacobian[8][9] = 0.0; + rJacobian[8][10] = 0.0; + rJacobian[8][11] = 0.0; + rJacobian[8][12] = 0.0; + rJacobian[8][13] = 0.0; + rJacobian[8][14] = 0.0; + rJacobian[8][15] = 0.0; + rJacobian[8][16] = 0.0; + rJacobian[8][17] = 0.0; + rJacobian[8][18] = 0.0; + rJacobian[8][19] = 0.0; + rJacobian[8][20] = 0.0; + rJacobian[8][21] = 0.0; + rJacobian[8][22] = 0.0; + rJacobian[8][23] = 0.0; + rJacobian[8][24] = 0.0; + rJacobian[8][25] = 0.0; + rJacobian[8][26] = 0.0; + rJacobian[9][0] = -(mDt * (2.2890000000000006 - var_x2)); + rJacobian[9][1] = 0.0; + rJacobian[9][2] = 0.0; + rJacobian[9][3] = 0.0; + rJacobian[9][4] = 0.0; + rJacobian[9][5] = 0.0; + rJacobian[9][6] = 0.0; + rJacobian[9][7] = 0.0; + rJacobian[9][8] = 0.0; + rJacobian[9][9] = 1.0 - (mDt * (-var_x22)); + rJacobian[9][10] = 0.0; + rJacobian[9][11] = 0.0; + rJacobian[9][12] = 0.0; + rJacobian[9][13] = 0.0; + rJacobian[9][14] = 0.0; + rJacobian[9][15] = 0.0; + rJacobian[9][16] = 0.0; + rJacobian[9][17] = 0.0; + rJacobian[9][18] = 0.0; + rJacobian[9][19] = 0.0; + rJacobian[9][20] = 0.0; + rJacobian[9][21] = 0.0; + rJacobian[9][22] = 0.0; + rJacobian[9][23] = 0.0; + rJacobian[9][24] = 0.0; + rJacobian[9][25] = 0.0; + rJacobian[9][26] = 0.0; + rJacobian[10][0] = 0.0; + rJacobian[10][1] = -(mDt * (1.7 - 1.7 * var_chaste_interface__I_Ca__f_Ca_Bj)); + rJacobian[10][2] = 0.0; + rJacobian[10][3] = 0.0; + rJacobian[10][4] = 0.0; + rJacobian[10][5] = 0.0; + rJacobian[10][6] = 0.0; + rJacobian[10][7] = 0.0; + rJacobian[10][8] = 0.0; + rJacobian[10][9] = 0.0; + rJacobian[10][10] = 1.0 - (mDt * (-0.011900000000000001 - 1.7 * var_chaste_interface__Ca_Concentrations__Ca_j)); + rJacobian[10][11] = 0.0; + rJacobian[10][12] = 0.0; + rJacobian[10][13] = 0.0; + rJacobian[10][14] = 0.0; + rJacobian[10][15] = 0.0; + rJacobian[10][16] = 0.0; + rJacobian[10][17] = 0.0; + rJacobian[10][18] = 0.0; + rJacobian[10][19] = 0.0; + rJacobian[10][20] = 0.0; + rJacobian[10][21] = 0.0; + rJacobian[10][22] = 0.0; + rJacobian[10][23] = 0.0; + rJacobian[10][24] = 0.0; + rJacobian[10][25] = 0.0; + rJacobian[10][26] = 0.0; + rJacobian[11][0] = 0.0; + rJacobian[11][1] = 0.0; + rJacobian[11][2] = -(mDt * (1.7 - 1.7 * var_chaste_interface__I_Ca__f_Ca_Bsl)); + rJacobian[11][3] = 0.0; + rJacobian[11][4] = 0.0; + rJacobian[11][5] = 0.0; + rJacobian[11][6] = 0.0; + rJacobian[11][7] = 0.0; + rJacobian[11][8] = 0.0; + rJacobian[11][9] = 0.0; + rJacobian[11][10] = 0.0; + rJacobian[11][11] = 1.0 - (mDt * (-0.011900000000000001 - 1.7 * var_chaste_interface__Ca_Concentrations__Ca_sl)); + rJacobian[11][12] = 0.0; + rJacobian[11][13] = 0.0; + rJacobian[11][14] = 0.0; + rJacobian[11][15] = 0.0; + rJacobian[11][16] = 0.0; + rJacobian[11][17] = 0.0; + rJacobian[11][18] = 0.0; + rJacobian[11][19] = 0.0; + rJacobian[11][20] = 0.0; + rJacobian[11][21] = 0.0; + rJacobian[11][22] = 0.0; + rJacobian[11][23] = 0.0; + rJacobian[11][24] = 0.0; + rJacobian[11][25] = 0.0; + rJacobian[11][26] = 0.0; + rJacobian[12][0] = 0.0; + rJacobian[12][1] = -(mDt * (19.897959183673468 - var_x27)); + rJacobian[12][2] = 0.0; + rJacobian[12][3] = 0.0; + rJacobian[12][4] = 0.0; + rJacobian[12][5] = 0.0; + rJacobian[12][6] = 0.0; + rJacobian[12][7] = 0.0; + rJacobian[12][8] = 0.0; + rJacobian[12][9] = 0.0; + rJacobian[12][10] = 0.0; + rJacobian[12][11] = 0.0; + rJacobian[12][12] = 1.0 - (mDt * (-var_x73)); + rJacobian[12][13] = 0.0; + rJacobian[12][14] = 0.0; + rJacobian[12][15] = 0.0; + rJacobian[12][16] = 0.0; + rJacobian[12][17] = 0.0; + rJacobian[12][18] = 0.0; + rJacobian[12][19] = 0.0; + rJacobian[12][20] = 0.0; + rJacobian[12][21] = 0.0; + rJacobian[12][22] = 0.0; + rJacobian[12][23] = 0.0; + rJacobian[12][24] = 0.0; + rJacobian[12][25] = 0.0; + rJacobian[12][26] = 0.0; + rJacobian[13][0] = 0.0; + rJacobian[13][1] = 0.0; + rJacobian[13][2] = -(mDt * (43.550000000000004 - var_x82)); + rJacobian[13][3] = 0.0; + rJacobian[13][4] = 0.0; + rJacobian[13][5] = 0.0; + rJacobian[13][6] = 0.0; + rJacobian[13][7] = 0.0; + rJacobian[13][8] = 0.0; + rJacobian[13][9] = 0.0; + rJacobian[13][10] = 0.0; + rJacobian[13][11] = 0.0; + rJacobian[13][12] = 0.0; + rJacobian[13][13] = 1.0 - (mDt * (-var_x102)); + rJacobian[13][14] = 0.0; + rJacobian[13][15] = 0.0; + rJacobian[13][16] = 0.0; + rJacobian[13][17] = 0.0; + rJacobian[13][18] = 0.0; + rJacobian[13][19] = 0.0; + rJacobian[13][20] = 0.0; + rJacobian[13][21] = 0.0; + rJacobian[13][22] = 0.0; + rJacobian[13][23] = 0.0; + rJacobian[13][24] = 0.0; + rJacobian[13][25] = 0.0; + rJacobian[13][26] = 0.0; + rJacobian[14][0] = 0.0; + rJacobian[14][1] = -(mDt * (55.473098330241186 - var_x28)); + rJacobian[14][2] = 0.0; + rJacobian[14][3] = 0.0; + rJacobian[14][4] = 0.0; + rJacobian[14][5] = 0.0; + rJacobian[14][6] = 0.0; + rJacobian[14][7] = 0.0; + rJacobian[14][8] = 0.0; + rJacobian[14][9] = 0.0; + rJacobian[14][10] = 0.0; + rJacobian[14][11] = 0.0; + rJacobian[14][12] = 0.0; + rJacobian[14][13] = 0.0; + rJacobian[14][14] = 1.0 - (mDt * (-var_x74)); + rJacobian[14][15] = 0.0; + rJacobian[14][16] = 0.0; + rJacobian[14][17] = 0.0; + rJacobian[14][18] = 0.0; + rJacobian[14][19] = 0.0; + rJacobian[14][20] = 0.0; + rJacobian[14][21] = 0.0; + rJacobian[14][22] = 0.0; + rJacobian[14][23] = 0.0; + rJacobian[14][24] = 0.0; + rJacobian[14][25] = 0.0; + rJacobian[14][26] = 0.0; + rJacobian[15][0] = 0.0; + rJacobian[15][1] = 0.0; + rJacobian[15][2] = -(mDt * (121.55000000000001 - var_x83)); + rJacobian[15][3] = 0.0; + rJacobian[15][4] = 0.0; + rJacobian[15][5] = 0.0; + rJacobian[15][6] = 0.0; + rJacobian[15][7] = 0.0; + rJacobian[15][8] = 0.0; + rJacobian[15][9] = 0.0; + rJacobian[15][10] = 0.0; + rJacobian[15][11] = 0.0; + rJacobian[15][12] = 0.0; + rJacobian[15][13] = 0.0; + rJacobian[15][14] = 0.0; + rJacobian[15][15] = 1.0 - (mDt * (-var_x103)); + rJacobian[15][16] = 0.0; + rJacobian[15][17] = 0.0; + rJacobian[15][18] = 0.0; + rJacobian[15][19] = 0.0; + rJacobian[15][20] = 0.0; + rJacobian[15][21] = 0.0; + rJacobian[15][22] = 0.0; + rJacobian[15][23] = 0.0; + rJacobian[15][24] = 0.0; + rJacobian[15][25] = 0.0; + rJacobian[15][26] = 0.0; + rJacobian[16][0] = 0.0; + rJacobian[16][1] = 0.0; + rJacobian[16][2] = 0.0; + rJacobian[16][3] = 0.0; + rJacobian[16][4] = 0.0; + rJacobian[16][5] = 0.0; + rJacobian[16][6] = 0.0; + rJacobian[16][7] = 0.0; + rJacobian[16][8] = 0.0; + rJacobian[16][9] = 0.0; + rJacobian[16][10] = 0.0; + rJacobian[16][11] = 0.0; + rJacobian[16][12] = 0.0; + rJacobian[16][13] = 0.0; + rJacobian[16][14] = 0.0; + rJacobian[16][15] = 0.0; + rJacobian[16][16] = 1.0; + rJacobian[16][17] = 0.0; + rJacobian[16][18] = 0.0; + rJacobian[16][19] = 0.0; + rJacobian[16][20] = 0.0; + rJacobian[16][21] = 0.0; + rJacobian[16][22] = 0.0; + rJacobian[16][23] = 0.0; + rJacobian[16][24] = 0.0; + rJacobian[16][25] = 0.0; + rJacobian[16][26] = 0.0; + rJacobian[17][0] = 0.0; + rJacobian[17][1] = 0.0; + rJacobian[17][2] = 0.0; + rJacobian[17][3] = 0.0; + rJacobian[17][4] = 0.0; + rJacobian[17][5] = 0.0; + rJacobian[17][6] = 0.0; + rJacobian[17][7] = 0.0; + rJacobian[17][8] = 0.0; + rJacobian[17][9] = 0.0; + rJacobian[17][10] = 0.0; + rJacobian[17][11] = 0.0; + rJacobian[17][12] = 0.0; + rJacobian[17][13] = 0.0; + rJacobian[17][14] = 0.0; + rJacobian[17][15] = 0.0; + rJacobian[17][16] = 0.0; + rJacobian[17][17] = 1.0 - (mDt * (-var_x107)); + rJacobian[17][18] = 0.0; + rJacobian[17][19] = 0.0; + rJacobian[17][20] = -(mDt * (0.0007561 - var_x108)); + rJacobian[17][21] = 0.0; + rJacobian[17][22] = 0.0; + rJacobian[17][23] = 0.0; + rJacobian[17][24] = 0.0; + rJacobian[17][25] = 0.0; + rJacobian[17][26] = 0.0; + rJacobian[18][0] = 0.0; + rJacobian[18][1] = 0.0; + rJacobian[18][2] = 0.0; + rJacobian[18][3] = 0.0; + rJacobian[18][4] = 0.0; + rJacobian[18][5] = 0.0; + rJacobian[18][6] = 0.0; + rJacobian[18][7] = 0.0; + rJacobian[18][8] = 0.0; + rJacobian[18][9] = 0.0; + rJacobian[18][10] = 0.0; + rJacobian[18][11] = 0.0; + rJacobian[18][12] = 0.0; + rJacobian[18][13] = 0.0; + rJacobian[18][14] = 0.0; + rJacobian[18][15] = 0.0; + rJacobian[18][16] = 0.0; + rJacobian[18][17] = 0.0; + rJacobian[18][18] = 1.0 - (mDt * (-var_x109)); + rJacobian[18][19] = 0.0; + rJacobian[18][20] = 0.0; + rJacobian[18][21] = -(mDt * (0.000165 - var_x110)); + rJacobian[18][22] = 0.0; + rJacobian[18][23] = 0.0; + rJacobian[18][24] = 0.0; + rJacobian[18][25] = 0.0; + rJacobian[18][26] = 0.0; + rJacobian[19][0] = 0.0; + rJacobian[19][1] = 0.0; + rJacobian[19][2] = 0.0; + rJacobian[19][3] = 0.0; + rJacobian[19][4] = 0.0; + rJacobian[19][5] = 0.0; + rJacobian[19][6] = 0.0; + rJacobian[19][7] = 0.0; + rJacobian[19][8] = 0.0; + rJacobian[19][9] = 0.0; + rJacobian[19][10] = 0.0; + rJacobian[19][11] = 0.0; + rJacobian[19][12] = 0.0; + rJacobian[19][13] = 0.0; + rJacobian[19][14] = 0.0; + rJacobian[19][15] = 0.0; + rJacobian[19][16] = 0.0; + rJacobian[19][17] = 0.0; + rJacobian[19][18] = 0.0; + rJacobian[19][19] = 1.0 - (mDt * (-var_x112)); + rJacobian[19][20] = 0.0; + rJacobian[19][21] = -(mDt * (var_x112)); + rJacobian[19][22] = 0.0; + rJacobian[19][23] = 0.0; + rJacobian[19][24] = 0.0; + rJacobian[19][25] = 0.0; + rJacobian[19][26] = 0.0; + rJacobian[20][0] = 0.0; + rJacobian[20][1] = -(mDt * (-176588941779729.56 * var_x115 * (1.4849999999999997e-8 * var_x56 + var_x114 * var_x51 - var_x113 * var_x49))); + rJacobian[20][2] = 0.0; + rJacobian[20][3] = 0.0; + rJacobian[20][4] = 0.0; + rJacobian[20][5] = 0.0; + rJacobian[20][6] = 0.0; + rJacobian[20][7] = 0.0; + rJacobian[20][8] = 0.0; + rJacobian[20][9] = 0.0; + rJacobian[20][10] = -(mDt * (536388.91065592843 * var_x120 * (var_x116 + var_x118 * var_chaste_interface__Na_Concentrations__Na_j))); + rJacobian[20][11] = 0.0; + rJacobian[20][12] = 0.0; + rJacobian[20][13] = 0.0; + rJacobian[20][14] = 0.0; + rJacobian[20][15] = 0.0; + rJacobian[20][16] = 0.0; + rJacobian[20][17] = -(mDt * (var_x107 * mParameters[3])); + rJacobian[20][18] = 0.0; + rJacobian[20][19] = 0.0; + rJacobian[20][20] = 1.0 - (mDt * ((-0.0007561 + var_x108 - var_x121 - 176588941779729.56 * var_x64 * (0.98999999999999999 * var_x80 + 6.567e-5 * var_x122 + var_x114 * var_x78 + 0.11 * var_x122 * var_x124 + 2.2781249999999999e-9 * var_x125 * var_x58 + 19326.119999999999 * var_x123 / (pow((1 + 14641 / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)), 2) * pow(var_chaste_interface__Na_Concentrations__Na_j, 5)))) * mParameters[3])); + rJacobian[20][21] = -(mDt * (var_x121 * mParameters[3])); + rJacobian[20][22] = 0.0; + rJacobian[20][23] = 0.0; + rJacobian[20][24] = 0.0; + rJacobian[20][25] = 0.0; + rJacobian[20][26] = 0.0; + rJacobian[21][0] = 0.0; + rJacobian[21][1] = 0.0; + rJacobian[21][2] = -(mDt * (-4759071980963.7119 * var_x115 * (1.2014999999999997e-7 * var_x98 + var_x127 * var_x94 - var_x126 * var_x93))); + rJacobian[21][3] = 0.0; + rJacobian[21][4] = 0.0; + rJacobian[21][5] = 0.0; + rJacobian[21][6] = 0.0; + rJacobian[21][7] = 0.0; + rJacobian[21][8] = 0.0; + rJacobian[21][9] = 0.0; + rJacobian[21][10] = 0.0; + rJacobian[21][11] = -(mDt * (1606.1867935752523 * var_x120 * (var_x116 + var_x118 * var_chaste_interface__Na_Concentrations__Na_sl))); + rJacobian[21][12] = 0.0; + rJacobian[21][13] = 0.0; + rJacobian[21][14] = 0.0; + rJacobian[21][15] = 0.0; + rJacobian[21][16] = 0.0; + rJacobian[21][17] = 0.0; + rJacobian[21][18] = -(mDt * (var_x109 * mParameters[3])); + rJacobian[21][19] = -(mDt * (7.7982153480071377 * var_x111)); + rJacobian[21][20] = -(mDt * (0.087152885187388451 * var_x111)); + rJacobian[21][21] = 1.0 - (mDt * ((-0.000165 + var_x110 - 7.8853682331945256 * var_x3 - 4759071980963.7119 * var_x64 * (0.00053133 * var_x128 + 8.0099999999999998 * var_x106 + var_x105 * var_x127 + 2.5312499999999994e-10 * var_x125 * var_x99 + 0.89000000000000001 * var_x124 * var_x128 + 156365.88 * var_x123 / (pow((1 + 14641 / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)), 2) * pow(var_chaste_interface__Na_Concentrations__Na_sl, 5)))) * mParameters[3])); + rJacobian[21][22] = 0.0; + rJacobian[21][23] = 0.0; + rJacobian[21][24] = 0.0; + rJacobian[21][25] = 0.0; + rJacobian[21][26] = 0.0; + rJacobian[22][0] = -(mDt * (-5029484.9869235931 * var_x15 + 5029484.9869235931 * var_x11 * var_x5 * var_x9 * mParameters[2])); + rJacobian[22][1] = -(mDt * (var_x130)); + rJacobian[22][2] = 0.0; + rJacobian[22][3] = 0.0; + rJacobian[22][4] = 0.0; + rJacobian[22][5] = 0.0; + rJacobian[22][6] = 0.0; + rJacobian[22][7] = 0.0; + rJacobian[22][8] = 0.0; + rJacobian[22][9] = 0.0; + rJacobian[22][10] = 0.0; + rJacobian[22][11] = 0.0; + rJacobian[22][12] = 0.0; + rJacobian[22][13] = 0.0; + rJacobian[22][14] = 0.0; + rJacobian[22][15] = 0.0; + rJacobian[22][16] = 0.0; + rJacobian[22][17] = 0.0; + rJacobian[22][18] = 0.0; + rJacobian[22][19] = 0.0; + rJacobian[22][20] = 0.0; + rJacobian[22][21] = 0.0; + rJacobian[22][22] = 1.0 - (mDt * (-260 + var_x131 - var_x130 - 0.69232869146389786 * var_x24 - 0.69232869146389786 * var_x25)); + rJacobian[22][23] = -(mDt * (var_x132)); + rJacobian[22][24] = 0.0; + rJacobian[22][25] = -(mDt * (-var_x129 * var_x81)); + rJacobian[22][26] = 0.0; + rJacobian[23][0] = 0.0; + rJacobian[23][1] = 0.0; + rJacobian[23][2] = 0.0; + rJacobian[23][3] = 0.0; + rJacobian[23][4] = 0.0; + rJacobian[23][5] = 0.0; + rJacobian[23][6] = 0.0; + rJacobian[23][7] = 0.0; + rJacobian[23][8] = 0.0; + rJacobian[23][9] = 0.0; + rJacobian[23][10] = 0.0; + rJacobian[23][11] = 0.0; + rJacobian[23][12] = 0.0; + rJacobian[23][13] = 0.0; + rJacobian[23][14] = 0.0; + rJacobian[23][15] = 0.0; + rJacobian[23][16] = 0.0; + rJacobian[23][17] = 0.0; + rJacobian[23][18] = 0.0; + rJacobian[23][19] = 0.0; + rJacobian[23][20] = 0.0; + rJacobian[23][21] = 0.0; + rJacobian[23][22] = -(mDt * (260 - var_x131)); + rJacobian[23][23] = 1.0 - (mDt * (-var_x132)); + rJacobian[23][24] = 0.0; + rJacobian[23][25] = 0.0; + rJacobian[23][26] = 0.0; + rJacobian[24][0] = 0.0; + rJacobian[24][1] = -(mDt * (var_x138 + var_x139 * var_x142)); + rJacobian[24][2] = 0.0; + rJacobian[24][3] = 0.0; + rJacobian[24][4] = 0.0; + rJacobian[24][5] = 0.0; + rJacobian[24][6] = 0.0; + rJacobian[24][7] = 0.0; + rJacobian[24][8] = 0.0; + rJacobian[24][9] = 0.0; + rJacobian[24][10] = 0.0; + rJacobian[24][11] = 0.0; + rJacobian[24][12] = 0.0; + rJacobian[24][13] = 0.0; + rJacobian[24][14] = 0.0; + rJacobian[24][15] = 0.0; + rJacobian[24][16] = 0.0; + rJacobian[24][17] = 0.0; + rJacobian[24][18] = 0.0; + rJacobian[24][19] = 0.0; + rJacobian[24][20] = 0.0; + rJacobian[24][21] = 0.0; + rJacobian[24][22] = -(mDt * (-var_x145 + var_x139 * var_x146)); + rJacobian[24][23] = 0.0; + rJacobian[24][24] = 1.0 - (mDt * (-0.065000000000000002 - var_x147)); + rJacobian[24][25] = -(mDt * (var_x148 - var_x147)); + rJacobian[24][26] = -(mDt * (-var_x147)); + rJacobian[25][0] = 0.0; + rJacobian[25][1] = -(mDt * (var_x149 - var_x138)); + rJacobian[25][2] = 0.0; + rJacobian[25][3] = 0.0; + rJacobian[25][4] = 0.0; + rJacobian[25][5] = 0.0; + rJacobian[25][6] = 0.0; + rJacobian[25][7] = 0.0; + rJacobian[25][8] = 0.0; + rJacobian[25][9] = 0.0; + rJacobian[25][10] = 0.0; + rJacobian[25][11] = 0.0; + rJacobian[25][12] = 0.0; + rJacobian[25][13] = 0.0; + rJacobian[25][14] = 0.0; + rJacobian[25][15] = 0.0; + rJacobian[25][16] = 0.0; + rJacobian[25][17] = 0.0; + rJacobian[25][18] = 0.0; + rJacobian[25][19] = 0.0; + rJacobian[25][20] = 0.0; + rJacobian[25][21] = 0.0; + rJacobian[25][22] = -(mDt * (var_x145 + var_x150)); + rJacobian[25][23] = 0.0; + rJacobian[25][24] = -(mDt * (0.0050000000000000001)); + rJacobian[25][25] = 1.0 - (mDt * (-0.059999999999999998 - var_x148)); + rJacobian[25][26] = -(mDt * (var_x147)); + rJacobian[26][0] = 0.0; + rJacobian[26][1] = -(mDt * (-var_x149 - var_x137 * var_chaste_interface__SR_Fluxes__Ry_Rr)); + rJacobian[26][2] = 0.0; + rJacobian[26][3] = 0.0; + rJacobian[26][4] = 0.0; + rJacobian[26][5] = 0.0; + rJacobian[26][6] = 0.0; + rJacobian[26][7] = 0.0; + rJacobian[26][8] = 0.0; + rJacobian[26][9] = 0.0; + rJacobian[26][10] = 0.0; + rJacobian[26][11] = 0.0; + rJacobian[26][12] = 0.0; + rJacobian[26][13] = 0.0; + rJacobian[26][14] = 0.0; + rJacobian[26][15] = 0.0; + rJacobian[26][16] = 0.0; + rJacobian[26][17] = 0.0; + rJacobian[26][18] = 0.0; + rJacobian[26][19] = 0.0; + rJacobian[26][20] = 0.0; + rJacobian[26][21] = 0.0; + rJacobian[26][22] = -(mDt * (-var_x150 + 2.3772197685794643 * var_x133 * var_x134 * var_x143 * var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Rr)); + rJacobian[26][23] = 0.0; + rJacobian[26][24] = -(mDt * (-0.0050000000000000001)); + rJacobian[26][25] = -(mDt * (0.055)); + rJacobian[26][26] = 1.0 - (mDt * (-0.0050000000000000001 - var_x147 - var_x148)); + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = rY[5]; + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = rY[6]; + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = rY[7]; + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = rY[8]; + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = rY[9]; + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = rY[10]; + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = rY[13]; + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = rY[14]; + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__Na_Concentrations__Na_j = rY[33]; + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = rY[34]; + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = rY[35]; + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = rY[36]; + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = rY[37]; + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = rY[38]; + // Units: mM; Initial value: 0.000106544589194246 + + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + exp(7.4880000000000004 - 0.16722408026755853 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane_potential__i_Stim = var_membrane_potential__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * mParameters[18]; // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF + const double var_parameters__GClB = 0.0089999999999999993; // mS_per_uF + const double var_parameters__GClCa = 0.0548125; // mS_per_uF + const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__KdClCa = 0.10000000000000001; // mM + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_parameters__eca_junc = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF + const double var_parameters__eca_sl = 0.5 * log(mParameters[5] / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF + const double var_parameters__ecl = 1 * log(mParameters[4] / mParameters[6]) / var_parameters__FoRT; // mV + const double var_I_ClCa__I_ClCa_junc = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_j); // uA_per_uF + const double var_I_ClCa__I_ClCa_sl = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_sl); // uA_per_uF + const double var_I_ClCa__I_ClCa = var_I_ClCa__I_ClCa_junc + var_I_ClCa__I_ClCa_sl; // uA_per_uF + const double var_I_ClCa__I_Clbk = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__GClB; // uA_per_uF + const double var_membrane_potential__I_Cl_tot = var_I_ClCa__I_ClCa + var_I_ClCa__I_Clbk; // uA_per_uF + const double var_parameters__ek = 1 * log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_parameters__ena_junc = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF + const double var_parameters__ena_sl = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF + const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * mParameters[15]) : (0.0014039999999999999 * mParameters[15])); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * mParameters[19]) : (0.037595999999999997 * mParameters[19])); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_parameters__gkp = 0.002; // mS_per_uF + const double var_I_Kp__I_kp_junc = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fjunc * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp_sl = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fsl * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp = var_I_Kp__I_kp_junc + var_I_Kp__I_kp_sl; // uA_per_uF + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_membrane_potential__I_Ca_tot = var_Ca_Concentrations__I_Ca_tot_junc + var_Ca_Concentrations__I_Ca_tot_sl; // uA_per_uF + const double var_parameters__pK = 1.35e-7; // cm_per_sec + const double var_I_Ca__ibark = (-0.75 * mParameters[7] + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pK / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * ((1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_parameters__Fjunc_CaL + (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_parameters__Fsl_CaL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibark; // uA_per_uF + const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec + const double var_I_Ca__ibarna_j = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarna_sl = (-0.75 * mParameters[8] + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF + const double var_membrane_potential__I_Na_tot = var_Na_Concentrations__I_Na_tot_junc + var_Na_Concentrations__I_Na_tot_sl; // uA_per_uF + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((mParameters[8] * var_parameters__pNaK + mParameters[7]) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_K_Concentration__I_K_tot = -2 * var_I_NaK__I_nak + var_I_Ca__I_CaK + var_I_Ki__I_ki + var_I_Kp__I_kp + var_I_Kr__I_kr + var_I_Ks__I_ks + var_I_to__I_to; // uA_per_uF + const double var_membrane_potential__I_tot = var_K_Concentration__I_K_tot + var_membrane_potential__I_Ca_tot + var_membrane_potential__I_Cl_tot + var_membrane_potential__I_Na_tot; // uA_per_uF + const double d_dt_chaste_interface_var_membrane_potential__V_m = -var_membrane_potential__I_tot - var_membrane_potential__i_Stim; // mV / msec + + rY[0] += mDt*d_dt_chaste_interface_var_membrane_potential__V_m; + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = rY[5]; + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = rY[6]; + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = rY[7]; + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = rY[8]; + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = rY[9]; + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = rY[10]; + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + + const double var_I_Ca__dss = 1 / (1 + exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ca__fss = 1 / (1 + exp(3.8888888888888888 + 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ca__taud = 28.571428571428569 * (1 - exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m)) * var_I_Ca__dss / (5 + var_chaste_interface__membrane_potential__V_m); + const double var_I_Ca__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-pow((0.48865000000000003 + 0.033700000000000001 * var_chaste_interface__membrane_potential__V_m), 2))); + const double var_I_Kr__tauxr = 230 / (1 + exp(2 + 0.050000000000000003 * var_chaste_interface__membrane_potential__V_m)) + 3300 / ((1 + exp(1.2222222222222223 + 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m)) * (1 + exp(-2.4444444444444446 - 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m))); + const double var_I_Kr__xrss = 1 / (1 + exp(-2 - 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ks__tauxs = 990.10000000000002 / (1 + exp(-0.17252124645892353 - 0.070821529745042494 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Ks__xsss = 1 / (1 + exp(-0.26666666666666666 - 0.070175438596491224 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[14] - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); + const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * mParameters[14]) - 6.9480000000000002e-6 * exp(0.043909999999999998 * mParameters[14] - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * mParameters[14])))); + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[14] - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * mParameters[14]) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * mParameters[14]))); + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * mParameters[14]) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[14] - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * mParameters[14] - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[14] - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); + const double var_I_Na__hss = 0.01 * mParameters[13] + 1 * (1 - 0.01 * mParameters[13]) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * mParameters[14])), 2); + const double var_I_Na__jss = 0.01 * mParameters[13] + 1 * (1 - 0.01 * mParameters[13]) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * mParameters[14])), 2); + const double var_I_Na__mss = 1 / pow((1 + exp(-6.2967884828349945 - 0.11074197120708749 * var_chaste_interface__membrane_potential__V_m)), 2); + const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); + const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); + const double var_I_Na__taum = 0.12920000000000001 * exp(-pow((2.9465894465894467 + 0.064350064350064351 * var_chaste_interface__membrane_potential__V_m), 2)) + 0.064869999999999997 * exp(-pow((-0.094346635367762138 + 0.019561815336463225 * var_chaste_interface__membrane_potential__V_m), 2)); + const double var_I_to__tauxtof = 0.5 + 8.5 * exp(-pow((0.90000000000000002 + 0.02 * var_chaste_interface__membrane_potential__V_m), 2)); + const double var_I_to__tauxtos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_to__tauytof = 7 + 85 * exp(-0.0045454545454545452 * pow((40 + var_chaste_interface__membrane_potential__V_m), 2)); + const double var_I_to__tauytos = 30 + 800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_to__xtoss = 1 / (1 + exp(1.4615384615384615 - 0.076923076923076927 * var_chaste_interface__membrane_potential__V_m)); + const double var_I_to__ytoss = 1 / (1 + exp(3.8999999999999999 + 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); + + + rY[5] = (var_chaste_interface__I_Kr__x_kr + ((var_I_Kr__xrss / var_I_Kr__tauxr) * mDt)) / (1.0 - ((-1 / var_I_Kr__tauxr) * mDt)); + rY[6] = (var_chaste_interface__I_Ks__x_ks + ((var_I_Ks__xsss / var_I_Ks__tauxs) * mDt)) / (1.0 - ((-1 / var_I_Ks__tauxs) * mDt)); + rY[9] = (var_chaste_interface__I_to__x_to_f + ((var_I_to__xtoss / var_I_to__tauxtof) * mDt)) / (1.0 - ((-1 / var_I_to__tauxtof) * mDt)); + rY[7] = (var_chaste_interface__I_to__x_to_s + ((var_I_to__xtoss / var_I_to__tauxtos) * mDt)) / (1.0 - ((-1 / var_I_to__tauxtos) * mDt)); + rY[10] = (var_chaste_interface__I_to__y_to_f + ((var_I_to__ytoss / var_I_to__tauytof) * mDt)) / (1.0 - ((-1 / var_I_to__tauytof) * mDt)); + rY[8] = (var_chaste_interface__I_to__y_to_s + ((var_I_to__ytoss / var_I_to__tauytos) * mDt)) / (1.0 - ((-1 / var_I_to__tauytos) * mDt)); + rY[11] = (var_chaste_interface__I_Ca__d + ((var_I_Ca__dss / var_I_Ca__taud) * mDt)) / (1.0 - ((-1 / var_I_Ca__taud) * mDt)); + rY[12] = (var_chaste_interface__I_Ca__f + ((var_I_Ca__fss / var_I_Ca__tauf) * mDt)) / (1.0 - ((-1 / var_I_Ca__tauf) * mDt)); + rY[3] = (var_chaste_interface__I_Na__h + ((var_I_Na__hss / var_I_Na__tauh) * mDt)) / (1.0 - ((-1 / var_I_Na__tauh) * mDt)); + rY[4] = (var_chaste_interface__I_Na__j + ((var_I_Na__jss / var_I_Na__tauj) * mDt)) / (1.0 - ((-1 / var_I_Na__tauj) * mDt)); + rY[2] = (var_chaste_interface__I_Na__m + ((var_I_Na__mss / var_I_Na__taum) * mDt)) / (1.0 - ((-1 / var_I_Na__taum) * mDt)); + + double _guess[27] = {rY[1],rY[37],rY[38],rY[23],rY[24],rY[25],rY[26],rY[21],rY[22],rY[20],rY[13],rY[14],rY[29],rY[30],rY[27],rY[28],rY[36],rY[18],rY[19],rY[35],rY[33],rY[34],rY[32],rY[31],rY[17],rY[16],rY[15]}; + CardiacNewtonSolver<27,Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler>* _p_solver = CardiacNewtonSolver<27,Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[1] = _guess[0]; + rY[37] = _guess[1]; + rY[38] = _guess[2]; + rY[23] = _guess[3]; + rY[24] = _guess[4]; + rY[25] = _guess[5]; + rY[26] = _guess[6]; + rY[21] = _guess[7]; + rY[22] = _guess[8]; + rY[20] = _guess[9]; + rY[13] = _guess[10]; + rY[14] = _guess[11]; + rY[29] = _guess[12]; + rY[30] = _guess[13]; + rY[27] = _guess[14]; + rY[28] = _guess[15]; + rY[36] = _guess[16]; + rY[18] = _guess[17]; + rY[19] = _guess[18]; + rY[35] = _guess[19]; + rY[33] = _guess[20]; + rY[34] = _guess[21]; + rY[32] = _guess[22]; + rY[31] = _guess[23]; + rY[17] = _guess[24]; + rY[16] = _guess[25]; + rY[15] = _guess[26]; + } + + std::vector Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__Ca_Concentrations__Ca_i = rY[1]; + // Units: mM; Initial value: 8.72745589849657e-05 + double var_chaste_interface__I_Na__m = rY[2]; + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = rY[3]; + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = rY[4]; + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = rY[5]; + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = rY[6]; + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = rY[7]; + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = rY[8]; + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = rY[9]; + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = rY[10]; + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = rY[11]; + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = rY[12]; + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = rY[13]; + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = rY[14]; + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__SR_Fluxes__Ry_Ro = rY[16]; + // Units: mM; Initial value: 7.37484660389498e-07 + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = rY[32]; + // Units: mM; Initial value: 0.555180633859957 + double var_chaste_interface__Na_Concentrations__Na_j = rY[33]; + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = rY[34]; + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = rY[35]; + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = rY[36]; + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = rY[37]; + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = rY[38]; + // Units: mM; Initial value: 0.000106544589194246 + + // Mathematics + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * mParameters[0]; // mM_per_msec + const double var_I_Ca__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-pow((0.48865000000000003 + 0.033700000000000001 * var_chaste_interface__membrane_potential__V_m), 2))); // msec + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[14] - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); // dimensionless + const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * mParameters[14]) - 6.9480000000000002e-6 * exp(0.043909999999999998 * mParameters[14] - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * mParameters[14])))); // dimensionless + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[14] - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * mParameters[14]) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * mParameters[14]))); // dimensionless + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * mParameters[14]) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[14] - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * mParameters[14] - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[14] - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); // dimensionless + const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); // msec + const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); // msec + const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_parameters__Cmem_converted = 1000000 * mParameters[22]; // uF + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * mParameters[18]; // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_parameters__Kmf = 0.00024600000000000002; // mM + const double var_parameters__Kmr = 1.7; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[16]; // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(mParameters[7]) * mParameters[17]; // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(mParameters[8], 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[8]); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless + const double var_parameters__FoRT = mParameters[9] / (mParameters[10] * mParameters[23]); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * mParameters[21] * mParameters[7] / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + mParameters[7])); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_I_NaK__I_nak_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NaK__I_nak; // uA_per_cm2 + const double var_parameters__Qpow = -31 + 0.10000000000000001 * mParameters[23]; // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca = var_I_PCa__I_pca_junc + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_I_PCa__I_pca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_PCa__I_pca; // uA_per_cm2 + const double var_parameters__ecl = 1 * log(mParameters[4] / mParameters[6]) / var_parameters__FoRT; // mV + const double var_parameters__ek = 1 * log(mParameters[7] / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Ki__I_ki_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ki__I_ki; // uA_per_cm2 + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_I_Kr__I_kr_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Kr__I_kr; // uA_per_cm2 + const double var_parameters__ena_junc = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * mParameters[12]; // uA_per_uF + const double var_parameters__ena_sl = 1 * log(mParameters[8] / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * mParameters[12]; // uA_per_uF + const double var_I_Na__I_Na = var_I_Na__I_Na_junc + var_I_Na__I_Na_sl; // uA_per_uF + const double var_I_Na__I_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Na__I_Na; // uA_per_cm2 + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * mParameters[15]) : (0.0014039999999999999 * mParameters[15])); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * mParameters[19]) : (0.037595999999999997 * mParameters[19])); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tof; // uA_per_cm2 + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_I_to__I_to_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_to; // uA_per_cm2 + const double var_I_to__I_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tos; // uA_per_cm2 + const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless + const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * mParameters[2] / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_SR_Fluxes__J_SRCarel = 1 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * mParameters[1]; // mM_per_msec + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * mParameters[5] * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(mParameters[8], 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * mParameters[20] / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_I_NCX__I_ncx = var_I_NCX__I_ncx_junc + var_I_NCX__I_ncx_sl; // uA_per_uF + const double var_I_NCX__I_ncx_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NCX__I_ncx; // uA_per_cm2 + const double var_parameters__pCa = 0.00054000000000000001 * mParameters[11]; // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * mParameters[5] + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * mParameters[9] * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_I_Ca__I_Ca = var_I_Ca__I_Ca_junc + var_I_Ca__I_Ca_sl; // uA_per_uF + const double var_I_Ca__I_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ca__I_Ca; // uA_per_cm2 + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((mParameters[8] * var_parameters__pNaK + mParameters[7]) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_I_Ks__I_ks_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ks__I_ks; // uA_per_cm2 + + std::vector dqs(26); + dqs[0] = var_SR_Fluxes__J_SRleak; + dqs[1] = var_SR_Fluxes__J_SRCarel; + dqs[2] = var_SR_Fluxes__J_serca; + dqs[3] = var_parameters__ecl; + dqs[4] = var_I_Ca__I_Ca_converted; + dqs[5] = var_I_Ca__tauf; + dqs[6] = var_I_PCa__I_pca_converted; + dqs[7] = var_parameters__Cmem_converted; + dqs[8] = var_I_Na__I_Na_converted; + dqs[9] = var_I_Na__tauh; + dqs[10] = var_I_Na__tauj; + dqs[11] = var_I_to__I_tof_converted; + dqs[12] = var_I_to__GtoFast; + dqs[13] = var_I_Ki__I_ki_converted; + dqs[14] = var_I_Ki__g_K1; + dqs[15] = var_I_Kr__I_kr_converted; + dqs[16] = var_I_Ks__I_ks_converted; + dqs[17] = var_I_Ks__GKs_total; + dqs[18] = var_I_to__I_tos_converted; + dqs[19] = var_I_to__GtoSlow; + dqs[20] = var_I_NCX__I_ncx_converted; + dqs[21] = var_I_NaK__I_nak_converted; + dqs[22] = var_membrane_potential__i_Stim_converted; + dqs[23] = var_I_to__I_to_converted; + dqs[24] = var_parameters__ek; + dqs[25] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "grandi_pasqualini_bers_2010_epi"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "msec"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-81.4229700631461); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.72745589849657e-05); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00381858135062259); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.625086621635645); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.62332507235506); + + // rY[5]: + this->mVariableNames.push_back("I_Kr__x_kr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.021733554982663); + + // rY[6]: + this->mVariableNames.push_back("I_Ks__x_ks"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00428981903391989); + + // rY[7]: + this->mVariableNames.push_back("I_to__x_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441539203559411); + + // rY[8]: + this->mVariableNames.push_back("I_to__y_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.784875334693892); + + // rY[9]: + this->mVariableNames.push_back("I_to__x_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441531250866821); + + // rY[10]: + this->mVariableNames.push_back("I_to__y_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999995817153572); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.93982287251302e-06); + + // rY[12]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99511673495949); + + // rY[13]: + this->mVariableNames.push_back("I_Ca__f_Ca_Bj"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0246142436477748); + + // rY[14]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0152416826209301); + + // rY[15]: + this->mVariableNames.push_back("SR_Fluxes__Ry_Rr"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.891022230597263); + + // rY[16]: + this->mVariableNames.push_back("SR_Fluxes__Ry_Ro"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(7.37484660389498e-07); + + // rY[17]: + this->mVariableNames.push_back("SR_Fluxes__Ry_Ri"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(9.01984485847386e-08); + + // rY[18]: + this->mVariableNames.push_back("Na_Buffers__Na_Bj"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(3.43545459048316); + + // rY[19]: + this->mVariableNames.push_back("Na_Buffers__Na_Bsl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.749601264899653); + + // rY[20]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CL"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00893708435270205); + + // rY[21]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHc"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.117445983314504); + + // rY[22]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHm"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0105996734077994); + + // rY[23]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__CaM"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000295653619580701); + + // rY[24]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_c"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00192645052472679); + + // rY[25]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_m"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.137557201546068); + + // rY[26]: + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__SRB"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00217414510791738); + + // rY[27]: + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00738583890572642); + + // rY[28]: + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00988178900584875); + + // rY[29]: + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0734662466011574); + + // rY[30]: + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.114400081504523); + + // rY[31]: + this->mVariableNames.push_back("SR_Ca_Concentrations__Csqn_b"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(1.19772047585784); + + // rY[32]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.555180633859957); + + // rY[33]: + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.3215690202059); + + // rY[34]: + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32094589677861); + + // rY[35]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32114502072456); + + // rY[36]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(120.0); + + // rY[37]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000175415190830688); + + // rY[38]: + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000106544589194246); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("mM_per_msec"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[9]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[10]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kelvin_per_kilomole"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("cm_per_sec"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("mV"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_sodium_potassium_pump_current_permeability"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[22]: + this->mParameterNames.push_back("parameters__Cmem"); + this->mParameterUnits.push_back("farad"); + + // mParameters[23]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_leak_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("SR_uptake_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("membrane_sodium_potassium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [23]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [24]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [25]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("msec"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellgrandi_pasqualini_bers_2010_ssFromCellMLBackwardEuler) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_11.cpp b/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_11.cpp new file mode 100644 index 00000000..30592442 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_11.cpp @@ -0,0 +1,1459 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: courtemanche_1998 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEulerOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "dynamic_courtemanche_ramirez_nattel_1998.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractBackwardEulerCardiacCell<8>* Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(p_solver, p_stimulus); +} + +bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::registered = ModelFactory::Register("dynamic_courtemanche_ramirez_nattel_1998", "BackwardEulerOpt", (ModelFactory::TCreateMethod)Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::CreateMethod); + +class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<27; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= 2){ + EXCEPTION("Lookup table 9 at ["<= 2){ + EXCEPTION("Lookup table 11 at ["<= 2){ + EXCEPTION("Lookup table 14 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[27]; + + // Lookup tables + double (*_lookup_table_0)[27]; + int _lookup_table_0_num_misshit_piecewise[27] = {0}; + +}; + +std::shared_ptr Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -2000 * HeartConfig::Instance()->GetCapacitance() / mParameters[9]; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 2; // millisecond + const double var_chaste_interface__membrane__stim_period = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<8>( + 21, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1; // (var_Ca_leak_current_by_the_NSR__leak_factor) [dimensionless] + this->mParameters[1] = 30; // (var_Ca_release_current_from_JSR__K_rel) [per_millisecond] + this->mParameters[2] = 0.0050000000000000001; // (var_Ca_uptake_current_by_the_NSR__I_up_max) [millimolar_per_millisecond] + this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_standard_ionic_concentrations__Ca_o) [millimolar] + this->mParameters[5] = 5.4000000000000004; // (var_standard_ionic_concentrations__K_o) [millimolar] + this->mParameters[6] = 140; // (var_standard_ionic_concentrations__Na_o) [millimolar] + this->mParameters[7] = 0.12375; // (var_L_type_Ca_channel__g_Ca_L) [nanoS_per_picoF] + this->mParameters[8] = 2; // (var_L_type_Ca_channel_f_Ca_gate__tau_f_Ca) [millisecond] + this->mParameters[9] = 100; // (var_membrane__Cm) [picoF] + this->mParameters[10] = 7.7999999999999998; // (var_fast_sodium_current__g_Na) [nanoS_per_picoF] + this->mParameters[11] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[12] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[13] = 0.089999999999999997; // (var_time_independent_potassium_current__g_K1) [nanoS_per_picoF] + this->mParameters[14] = 0.029411764999999999; // (var_rapid_delayed_rectifier_K_current__g_Kr) [nanoS_per_picoF] + this->mParameters[15] = 0.12941175999999999; // (var_slow_delayed_rectifier_K_current__g_Ks) [nanoS_per_picoF] + this->mParameters[16] = 1600; // (var_Na_Ca_exchanger_current__I_NaCa_max) [picoA_per_picoF] + this->mParameters[17] = 0.16520000000000001; // (var_transient_outward_K_current__g_to) [nanoS_per_picoF] + } + + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::~Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt() + { + } + + AbstractLookupTableCollection* Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::GetLookupTableCollection() + { + return Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance(); + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 21; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * (-65 + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9] / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sarcolemmal_calcium_pump_current__i_CaP = 0.27500000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_background_currents__i_B_Ca = 0.0011310000000000001 * (-13.356415961992688 * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * HeartConfig::Instance()->GetCapacitance() * mParameters[16] * mParameters[9] / ((_lt_0_row[2]) * (669921.875 + pow(mParameters[6], 3)) * (1.3799999999999999 + mParameters[4]) * var_membrane__Cm_converted); // uA_per_cm2 + const double var_fast_sodium_current__E_Na = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_background_currents__i_B_Na = 0.00067443750000000002 * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9] / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_potassium_pump__i_NaK = 0.59933873999999998 * mParameters[9] * mParameters[5] / ((1 + 31.622776601683793 * pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / ((_lt_0_row[5]) * var_membrane__Cm_converted); // uA_per_cm2 + const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[15] / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[13] / ((_lt_0_row[6]) * var_membrane__Cm_converted); // uA_per_cm2 + const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi / var_membrane__Cm_converted; // uA_per_cm2 + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_exchanger_current__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_delayed_rectifier_K_current__i_Kr_converted + var_slow_delayed_rectifier_K_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_K_current__i_to_converted) * var_membrane__Cm_converted + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Ca + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Na + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump_current__i_CaP + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_ultrarapid_delayed_rectifier_K_current__i_Kur) / var_membrane__Cm_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rResidual[8]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + //output_nonlinear_state_assignments + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + //output_equations + const double var_Ca_uptake_current_by_the_NSR__i_up = mParameters[2] / (1 + 0.00092000000000000003 / var_chaste_interface__intracellular_ion_concentrations__Ca_i); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca = (1 / (1 + 2857.1428571428573 * var_chaste_interface__intracellular_ion_concentrations__Ca_i) - var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca) / mParameters[8]; // 1 / millisecond + const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond + const double var_Ca_leak_current_by_the_NSR__i_up_leak = 0.066666666666666666 * mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up; // millimolar_per_millisecond + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP = 0.27500000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_background_currents__i_B_Ca = 0.0011310000000000001 * (-13.356415961992688 * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * mParameters[16] * mParameters[9] / ((_lt_0_row[2]) * (669921.875 + pow(mParameters[6], 3)) * (1.3799999999999999 + mParameters[4])); // picoA + const double var_Ca_release_current_from_JSR__Fn = 9.6479999999999999e-11 * var_Ca_release_current_from_JSR__i_rel + 1.0364122723649997e-15 * var_Na_Ca_exchanger_current__i_NaCa - 2.5910306809124992e-15 * var_L_type_Ca_channel__i_Ca_L; // dimensionless + const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u = 0.125 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)) - 0.125 * var_chaste_interface__Ca_release_current_from_JSR_u_gate__u; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v = (1 - 1 / (1 + exp(50 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)) - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / (1.9099999999999999 + 2.0899999999999999 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn))); // 1 / millisecond + const double var_fast_sodium_current__E_Na = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_background_currents__i_B_Na = 0.00067443750000000002 * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = (0.081176470588235281 * var_Ca_leak_current_by_the_NSR__i_up_leak + 0.0070588235294117632 * var_Ca_release_current_from_JSR__i_rel + 7.5827646500219453e-7 * var_Na_Ca_exchanger_current__i_NaCa - 0.081176470588235281 * var_Ca_uptake_current_by_the_NSR__i_up - 3.7913823250109726e-7 * var_L_type_Ca_channel__i_Ca_L - 3.7913823250109726e-7 * var_background_currents__i_B_Ca - 3.7913823250109726e-7 * var_sarcolemmal_calcium_pump_current__i_CaP) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2)); // millimolar / millisecond + const double var_sodium_potassium_pump__i_NaK = 0.59933873999999998 * mParameters[9] * mParameters[5] / ((1 + 31.622776601683793 * pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = 7.5827646500219453e-7 * (-var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - 3 * var_Na_Ca_exchanger_current__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) * mParameters[3]; // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (_lt_0_row[5]); // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (_lt_0_row[6]); // picoA + const double var_transfer_current_from_NSR_to_JSR__i_tr = 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_rel; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel = (-var_Ca_release_current_from_JSR__i_rel + var_transfer_current_from_NSR_to_JSR__i_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_rel), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up = -var_Ca_leak_current_by_the_NSR__i_up_leak - 0.086956521739130432 * var_transfer_current_from_NSR_to_JSR__i_tr + var_Ca_uptake_current_by_the_NSR__i_up; // millimolar / millisecond + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = 7.5827646500219453e-7 * (-var_rapid_delayed_rectifier_K_current__i_Kr - var_slow_delayed_rectifier_K_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur + 2 * var_sodium_potassium_pump__i_NaK) * mParameters[3]; // millimolar / millisecond + + rResidual[3] = rCurrentGuess[3] - rY[1] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i; + rResidual[2] = rCurrentGuess[2] - rY[13] - mDt*d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca; + rResidual[0] = rCurrentGuess[0] - rY[14] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u; + rResidual[1] = rCurrentGuess[1] - rY[15] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v; + rResidual[7] = rCurrentGuess[7] - rY[17] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rResidual[6] = rCurrentGuess[6] - rY[18] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rResidual[4] = rCurrentGuess[4] - rY[19] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel; + rResidual[5] = rCurrentGuess[5] - rY[20] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rJacobian[8][8]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; + + const double var_x0 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; + const double var_x1 = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2); + const double var_x2 = var_x1 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; + const double var_x3 = var_x2 * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v; + const double var_x4 = 70577.907827359188 * var_x3; + const double var_x5 = _lt_0_row[1]; + const double var_x6 = pow(mParameters[6], 3); + const double var_x7 = var_x5 * var_x6; + const double var_x8 = _lt_0_row[0]; + const double var_x9 = -var_x7 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_x8 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4]; + const double var_x10 = 1 / (1 + 0.10000000000000001 * var_x5); + const double var_x11 = 1 / (669921.875 + var_x6); + const double var_x12 = 1 / (1.3799999999999999 + mParameters[4]); + const double var_x13 = var_x10 * var_x11 * var_x12 * mParameters[16] * mParameters[9]; + const double var_x14 = -65 + var_chaste_interface__membrane__V; + const double var_x15 = var_x0 * var_x4 + 0.75816552477322585 * var_x13 * var_x9 - 1.8954138119330646 * var_x14 * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; + const double var_x16 = exp(250 - var_x15); + const double var_x17 = 1 + var_x16; + const double var_x18 = var_x16 / pow(var_x17, 2); + const double var_x19 = var_x0 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_u_gate__u * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; + const double var_x20 = var_x18 * var_x19; + const double var_x21 = var_x0 * var_x2; + const double var_x22 = 8822.2384784198985 * var_x18; + const double var_x23 = var_x14 * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; + const double var_x24 = var_x18 * var_x23; + const double var_x25 = var_x13 * var_x7; + const double var_x26 = var_x4 + 0.75816552477322585 * var_x25; + const double var_x27 = var_x18 * var_x26; + const double var_x28 = var_x13 * var_x8 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2) * mParameters[4]; + const double var_x29 = 1 / var_x17; + const double var_x30 = 1 / (1.9099999999999999 + 2.0899999999999999 * var_x29); + const double var_x31 = exp(50 - var_x15); + const double var_x32 = 1 + var_x31; + const double var_x33 = var_x31 / pow(var_x32, 2); + const double var_x34 = var_x30 * var_x33; + const double var_x35 = (1 - 1 / var_x32 - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / pow((0.9138755980861244 + var_x29), 2); + const double var_x36 = var_x18 * var_x35; + const double var_x37 = 33769.333888688605 * var_x36; + const double var_x38 = 1 / mParameters[8]; + const double var_x39 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x40 = 0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x41 = pow(var_x40, (-2)); + const double var_x42 = 1 + 0.00011900000000000002 / pow(var_x39, 2) + 3.5000000000000004e-5 * var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x45 = 1.0426301393780176e-7 * mParameters[9] / var_x40; + const double var_x46 = 1 + 0.00092000000000000003 * var_x44; + const double var_x47 = mParameters[2] / (pow(var_x46, 2) * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 2)); + const double var_x48 = 0.0070588235294117632 * var_x3; + const double var_x49 = mParameters[0] * mParameters[2]; + const double var_x50 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; + const double var_x51 = pow(var_x50, (-2)); + const double var_x52 = 1 / (1 + 8 * var_x51); + const double var_x53 = 26.712831923985377 * mParameters[9] / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x54 = 7.5827646500219453e-7 * mParameters[3]; + const double var_x55 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x56 = pow(var_x55, 1.5); + const double var_x57 = var_x55 * mParameters[9]; + const double var_x58 = var_x56 * var_x57 * mParameters[5] / ((1.5 + mParameters[5]) * pow((0.031622776601683791 + var_x56), 2) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); + + + rJacobian[0][0] = 1.0 - (mDt * (-0.125 + 17644.476956839797 * var_x20)); + rJacobian[0][1] = -(mDt * (var_x21 * var_x22)); + rJacobian[0][2] = -(mDt * (-0.23692672649163307 * var_x24)); + rJacobian[0][3] = -(mDt * (-0.125 * var_x27)); + rJacobian[0][4] = -(mDt * (var_x22 * var_x3)); + rJacobian[0][5] = 0.0; + rJacobian[0][6] = 0.0; + rJacobian[0][7] = -(mDt * (0.28431207178995971 * var_x18 * var_x28)); + rJacobian[1][0] = -(mDt * (-141155.81565471838 * var_x19 * var_x34 - 67538.66777737721 * var_x20 * var_x35)); + rJacobian[1][1] = 1.0 - (mDt * (var_x30 * (-1 - 70577.907827359188 * var_x21 * var_x33) - var_x21 * var_x37)); + rJacobian[1][2] = -(mDt * (0.90689656073352376 * var_x24 * var_x35 + 1.8954138119330646 * var_x23 * var_x34)); + rJacobian[1][3] = -(mDt * (var_x26 * var_x34 + 0.47846889952153115 * var_x27 * var_x35)); + rJacobian[1][4] = -(mDt * (-var_x3 * var_x37 - var_x34 * var_x4)); + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = -(mDt * (-1.0882758728802286 * var_x28 * var_x36 - 2.2744965743196777 * var_x28 * var_x34)); + rJacobian[2][0] = 0.0; + rJacobian[2][1] = 0.0; + rJacobian[2][2] = 1.0 - (mDt * (-var_x38)); + rJacobian[2][3] = -(mDt * (-0.00035 * var_x38 / pow((0.00035 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2))); + rJacobian[2][4] = 0.0; + rJacobian[2][5] = 0.0; + rJacobian[2][6] = 0.0; + rJacobian[2][7] = 0.0; + rJacobian[3][0] = -(mDt * (0.014117647058823526 * var_x19 * var_x43)); + rJacobian[3][1] = -(mDt * (0.0070588235294117632 * var_x21 * var_x43)); + rJacobian[3][2] = -(mDt * (-3.7913823250109726e-7 * var_x23 * var_x43)); + rJacobian[3][3] = 1.0 - (mDt * (var_x43 * (-var_x45 - var_x48 - 7.4682352941176462e-5 * var_x47 - 7.5827646500219453e-7 * var_x25 - 5.7273025005690459e-9 * var_x44 * mParameters[9] + 1.0426301393780176e-7 * var_x41 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9]) + (0.00023800000000000004 / pow(var_x39, 3) + 7.0000000000000007e-5 / pow(var_x40, 3)) * (-var_x45 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.081176470588235281 * mParameters[2] / var_x46 - 3.7913823250109726e-7 * var_x23 * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca - 4.2880534095874102e-10 * (-13.356415961992688 * log(var_x44 * mParameters[4]) + var_chaste_interface__membrane__V) * mParameters[9] + 0.0054117647058823529 * mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up + 0.0070588235294117632 * var_x0 * var_x1 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + 7.5827646500219453e-7 * var_x10 * var_x11 * var_x12 * var_x9 * mParameters[16] * mParameters[9]) / pow(var_x42, 2))); + rJacobian[3][4] = -(mDt * (var_x43 * var_x48)); + rJacobian[3][5] = -(mDt * (0.0054117647058823529 * var_x43 * var_x49)); + rJacobian[3][6] = 0.0; + rJacobian[3][7] = -(mDt * (2.2748293950065834e-6 * var_x28 * var_x43)); + rJacobian[4][0] = -(mDt * (-2 * var_x19 * var_x52)); + rJacobian[4][1] = -(mDt * (-var_x21 * var_x52)); + rJacobian[4][2] = 0.0; + rJacobian[4][3] = -(mDt * (var_x3 * var_x52)); + rJacobian[4][4] = 1.0 - (mDt * (var_x52 * (-0.0055555555555555558 - var_x3) + 0.25 * (0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_rel - var_x0 * var_x3) / (pow(var_x50, 3) * pow((0.125 + var_x51), 2)))); + rJacobian[4][5] = -(mDt * (0.0055555555555555558 * var_x52)); + rJacobian[4][6] = 0.0; + rJacobian[4][7] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = 0.0; + rJacobian[5][3] = -(mDt * (0.00092000000000000003 * var_x47)); + rJacobian[5][4] = -(mDt * (0.00048309178743961351)); + rJacobian[5][5] = 1.0 - (mDt * (-0.00048309178743961351 - 0.066666666666666666 * var_x49)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (var_x54 * (-var_x53 * mParameters[13] / (_lt_0_row[6]) - var_x53 * pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * mParameters[15] - var_x53 * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (_lt_0_row[5]) - var_x53 * pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi - var_x53 * pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui))); + rJacobian[6][7] = -(mDt * (4.3114284380885533e-8 * var_x58 * mParameters[3])); + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = -(mDt * (2.2748293950065834e-6 * var_x25 * mParameters[3])); + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (var_x54 * (-9 * var_x28 - 0.018016135580732888 * var_x57 - 0.085287397876895904 * var_x58 - 26.712831923985377 * var_x57 * pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j))); + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP = 0.27500000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_background_currents__i_B_Ca = 0.0011310000000000001 * (-13.356415961992688 * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * mParameters[16] * mParameters[9] / ((_lt_0_row[2]) * (669921.875 + pow(mParameters[6], 3)) * (1.3799999999999999 + mParameters[4])); // picoA + const double var_fast_sodium_current__E_Na = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_background_currents__i_B_Na = 0.00067443750000000002 * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_sodium_potassium_pump__i_NaK = 0.59933873999999998 * mParameters[9] * mParameters[5] / ((1 + 31.622776601683793 * pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (_lt_0_row[5]); // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (_lt_0_row[6]); // picoA + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double d_dt_chaste_interface_var_membrane__V = (-var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger_current__i_NaCa - var_background_currents__i_B_Ca - var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - var_rapid_delayed_rectifier_K_current__i_Kr - var_sarcolemmal_calcium_pump_current__i_CaP - var_slow_delayed_rectifier_K_current__i_Ks - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur - 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance()) / mParameters[9]; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_Ca_release_current_from_JSR_w_gate__tau_w = ((fabs(-7.9000000000000004 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.92307692307692313) : (6 * (1 - exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) / ((1 + 0.29999999999999999 * exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) * (-7.9000000000000004 + var_chaste_interface__membrane__V)))); + const double var_Ca_release_current_from_JSR_w_gate__w_infinity = 1 + _lt_0_row[8]; + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (_lt_0_row[10]); + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(10 + var_chaste_interface__membrane__V) < 1.0e-10) ? (4.5789999999999997 / (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V))) : (28.571428571428569 * (1 - exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) / ((1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) * (10 + var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_f_gate__f_infinity = _lt_0_row[12]; + const double var_L_type_Ca_channel_f_gate__tau_f = 9 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); + const double var_fast_sodium_current_m_gate__alpha_m = _lt_0_row[14]; + const double var_fast_sodium_current_m_gate__beta_m = _lt_0_row[15]; + const double var_fast_sodium_current_m_gate__m_inf = var_fast_sodium_current_m_gate__alpha_m / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); + const double var_fast_sodium_current_m_gate__tau_m = 1 / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); + const double var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr = ((fabs(14.1 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.0015) : (0.00029999999999999997 * (14.1 + var_chaste_interface__membrane__V) / (1 - exp(-2.8199999999999998 - 0.20000000000000001 * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr = ((fabs(-3.3328000000000002 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00037836118) : (7.3898000000000003e-5 * (-3.3328000000000002 + var_chaste_interface__membrane__V) / (-1 + exp(-0.65046743564221166 + 0.19517145812596365 * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr = 1 / (var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr + var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr); + const double var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity = 1 / (_lt_0_row[16]); + const double var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00068000000000000005) : (4.0000000000000003e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (1 - exp(1.1705882352941175 - 0.058823529411764705 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__beta_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00031500000000000001) : (3.4999999999999997e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-2.2111111111111108 + 0.1111111111111111 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__tau_xs = 0.5 / (var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs + var_slow_delayed_rectifier_K_current_xs_gate__beta_xs); + const double var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity = _lt_0_row[18]; + const double var_transient_outward_K_current__K_Q10 = 3; + const double var_transient_outward_K_current_oa_gate__alpha_oa = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__beta_oa = 0.65000000000000002 / (2.5 + exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__oa_infinity = 1 / (_lt_0_row[20]); + const double var_transient_outward_K_current_oa_gate__tau_oa = 1 / ((var_transient_outward_K_current_oa_gate__alpha_oa + var_transient_outward_K_current_oa_gate__beta_oa) * var_transient_outward_K_current__K_Q10); + const double var_transient_outward_K_current_oi_gate__alpha_oi = 1 / (18.530000000000001 + exp(10.383561643835618 + 0.091324200913242018 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__beta_oi = 1 / (35.560000000000002 + exp(-0.16935483870967738 - 0.13440860215053763 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__oi_infinity = 1 / (_lt_0_row[22]); + const double var_transient_outward_K_current_oi_gate__tau_oi = 1 / ((var_transient_outward_K_current_oi_gate__alpha_oi + var_transient_outward_K_current_oi_gate__beta_oi) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua = 0.65000000000000002 / (2.5 + exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua + var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity = 1 / (_lt_0_row[24]); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui = 1 / (21 + exp(6.6071428571428568 - 0.035714285714285712 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui = 1 / exp(9.875 - 0.0625 * var_chaste_interface__membrane__V); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui + var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity = 1 / (_lt_0_row[25]); + + + rY[16] = (var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + ((var_Ca_release_current_from_JSR_w_gate__w_infinity / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)) / (1.0 - ((-1 / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)); + rY[11] = (var_chaste_interface__L_type_Ca_channel_d_gate__d + ((var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_d_gate__tau_d) * mDt)); + rY[12] = (var_chaste_interface__L_type_Ca_channel_f_gate__f + ((var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_f_gate__tau_f) * mDt)); + rY[3] = (var_chaste_interface__fast_sodium_current_h_gate__h + ((var_fast_sodium_current_h_gate__h_inf / var_fast_sodium_current_h_gate__tau_h) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_h_gate__tau_h) * mDt)); + rY[4] = (var_chaste_interface__fast_sodium_current_j_gate__j + ((var_fast_sodium_current_j_gate__j_inf / var_fast_sodium_current_j_gate__tau_j) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_j_gate__tau_j) * mDt)); + rY[2] = (var_chaste_interface__fast_sodium_current_m_gate__m + ((var_fast_sodium_current_m_gate__m_inf / var_fast_sodium_current_m_gate__tau_m) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_m_gate__tau_m) * mDt)); + rY[9] = (var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr + ((var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)) / (1.0 - ((-1 / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)); + rY[10] = (var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs + ((var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)) / (1.0 - ((-1 / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)); + rY[5] = (var_chaste_interface__transient_outward_K_current_oa_gate__oa + ((var_transient_outward_K_current_oa_gate__oa_infinity / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)); + rY[6] = (var_chaste_interface__transient_outward_K_current_oi_gate__oi + ((var_transient_outward_K_current_oi_gate__oi_infinity / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)); + rY[7] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua + ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)); + rY[8] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui + ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)); + + double _guess[8] = {rY[14],rY[15],rY[13],rY[1],rY[19],rY[20],rY[18],rY[17]}; + CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt>* _p_solver = CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[14] = _guess[0]; + rY[15] = _guess[1]; + rY[13] = _guess[2]; + rY[1] = _guess[3]; + rY[19] = _guess[4]; + rY[20] = _guess[5]; + rY[18] = _guess[6]; + rY[17] = _guess[7]; + } + + std::vector Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rY[14]; + // Units: dimensionless; Initial value: 2.35e-112 + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rY[15]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rY[19]; + // Units: millimolar; Initial value: 1.488 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_L_type_Ca_channel_f_gate__tau_f = 9 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); // millisecond + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // millisecond + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // millisecond + const double var_membrane__i_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / (_lt_0_row[5]); // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13] / (_lt_0_row[6]); // picoA + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_K_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 + + std::vector dqs(14); + dqs[0] = var_Ca_release_current_from_JSR__i_rel; + dqs[1] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[2] = var_L_type_Ca_channel_f_gate__tau_f; + dqs[3] = var_membrane__Cm_converted; + dqs[4] = var_fast_sodium_current__i_Na_converted; + dqs[5] = var_fast_sodium_current_h_gate__tau_h; + dqs[6] = var_fast_sodium_current_j_gate__tau_j; + dqs[7] = var_time_independent_potassium_current__i_K1_converted; + dqs[8] = var_rapid_delayed_rectifier_K_current__i_Kr_converted; + dqs[9] = var_slow_delayed_rectifier_K_current__i_Ks_converted; + dqs[10] = var_Na_Ca_exchanger_current__i_NaCa_converted; + dqs[11] = var_membrane__i_st_converted; + dqs[12] = var_transient_outward_K_current__i_to_converted; + dqs[13] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "courtemanche_1998"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-81.18); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0001013); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002908); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9649); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9775); + + // rY[5]: + this->mVariableNames.push_back("transient_outward_K_current_oa_gate__oa"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.03043); + + // rY[6]: + this->mVariableNames.push_back("transient_outward_K_current_oi_gate__oi"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9992); + + // rY[7]: + this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ua_gate__ua"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.004966); + + // rY[8]: + this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ui_gate__ui"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9986); + + // rY[9]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_current_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.296e-05); + + // rY[10]: + this->mVariableNames.push_back("slow_delayed_rectifier_K_current_xs_gate__xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01869); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0001367); + + // rY[12]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9996); + + // rY[13]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7755); + + // rY[14]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_u_gate__u"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.35e-112); + + // rY[15]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_v_gate__v"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[16]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_w_gate__w"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9992); + + // rY[17]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(11.17); + + // rY[18]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(139.0); + + // rY[19]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.488); + + // rY[20]: + this->mVariableNames.push_back("intracellular_ion_concentrations__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.488); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mParameterUnits.push_back("millisecond"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane__Cm"); + this->mParameterUnits.push_back("picoF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_13.cpp new file mode 100644 index 00000000..3e0c09a4 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_13.cpp @@ -0,0 +1,1459 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: courtemanche_1998 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEulerOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "dynamic_courtemanche_ramirez_nattel_1998.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractBackwardEulerCardiacCell<8>* Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(p_solver, p_stimulus); +} + +bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::registered = ModelFactory::Register("dynamic_courtemanche_ramirez_nattel_1998", "BackwardEulerOpt", (ModelFactory::TCreateMethod)Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::CreateMethod); + +class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<27; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= 2){ + EXCEPTION("Lookup table 9 at ["<= 2){ + EXCEPTION("Lookup table 11 at ["<= 2){ + EXCEPTION("Lookup table 14 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[27]; + + // Lookup tables + double (*_lookup_table_0)[27]; + int _lookup_table_0_num_misshit_piecewise[27] = {0}; + +}; + +std::shared_ptr Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -2000 * HeartConfig::Instance()->GetCapacitance() / mParameters[9]; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 2; // millisecond + const double var_chaste_interface__membrane__stim_period = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<8>( + 21, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1; // (var_Ca_leak_current_by_the_NSR__leak_factor) [dimensionless] + this->mParameters[1] = 30; // (var_Ca_release_current_from_JSR__K_rel) [per_millisecond] + this->mParameters[2] = 0.0050000000000000001; // (var_Ca_uptake_current_by_the_NSR__I_up_max) [millimolar_per_millisecond] + this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_standard_ionic_concentrations__Ca_o) [millimolar] + this->mParameters[5] = 5.4000000000000004; // (var_standard_ionic_concentrations__K_o) [millimolar] + this->mParameters[6] = 140; // (var_standard_ionic_concentrations__Na_o) [millimolar] + this->mParameters[7] = 0.12375; // (var_L_type_Ca_channel__g_Ca_L) [nanoS_per_picoF] + this->mParameters[8] = 2; // (var_L_type_Ca_channel_f_Ca_gate__tau_f_Ca) [millisecond] + this->mParameters[9] = 100; // (var_membrane__Cm) [picoF] + this->mParameters[10] = 7.7999999999999998; // (var_fast_sodium_current__g_Na) [nanoS_per_picoF] + this->mParameters[11] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[12] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[13] = 0.089999999999999997; // (var_time_independent_potassium_current__g_K1) [nanoS_per_picoF] + this->mParameters[14] = 0.029411764999999999; // (var_rapid_delayed_rectifier_K_current__g_Kr) [nanoS_per_picoF] + this->mParameters[15] = 0.12941175999999999; // (var_slow_delayed_rectifier_K_current__g_Ks) [nanoS_per_picoF] + this->mParameters[16] = 1600; // (var_Na_Ca_exchanger_current__I_NaCa_max) [picoA_per_picoF] + this->mParameters[17] = 0.16520000000000001; // (var_transient_outward_K_current__g_to) [nanoS_per_picoF] + } + + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::~Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt() + { + } + + AbstractLookupTableCollection* Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::GetLookupTableCollection() + { + return Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance(); + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 21; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * (-65 + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9] / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sarcolemmal_calcium_pump_current__i_CaP = 0.27500000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_background_currents__i_B_Ca = 0.0011310000000000001 * (-13.356415961992688 * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * _lt_0_row[2] * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * HeartConfig::Instance()->GetCapacitance() * mParameters[16] * mParameters[9] / ((669921.875 + pow(mParameters[6], 3)) * (1.3799999999999999 + mParameters[4]) * var_membrane__Cm_converted); // uA_per_cm2 + const double var_fast_sodium_current__E_Na = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_background_currents__i_B_Na = 0.00067443750000000002 * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9] / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_potassium_pump__i_NaK = 0.59933873999999998 * mParameters[9] * mParameters[5] / ((1 + 31.622776601683793 * pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * _lt_0_row[5] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[15] / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * _lt_0_row[6] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[13] / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi / var_membrane__Cm_converted; // uA_per_cm2 + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_exchanger_current__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_delayed_rectifier_K_current__i_Kr_converted + var_slow_delayed_rectifier_K_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_K_current__i_to_converted) * var_membrane__Cm_converted + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Ca + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Na + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump_current__i_CaP + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_ultrarapid_delayed_rectifier_K_current__i_Kur) / var_membrane__Cm_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rResidual[8]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + //output_nonlinear_state_assignments + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + //output_equations + const double var_Ca_uptake_current_by_the_NSR__i_up = mParameters[2] / (1 + 0.00092000000000000003 / var_chaste_interface__intracellular_ion_concentrations__Ca_i); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca = (-var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca + 0.00035 / (0.00035 + var_chaste_interface__intracellular_ion_concentrations__Ca_i)) / mParameters[8]; // 1 / millisecond + const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond + const double var_Ca_leak_current_by_the_NSR__i_up_leak = 0.066666666666666666 * mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up; // millimolar_per_millisecond + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP = 0.27500000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_background_currents__i_B_Ca = 0.0011310000000000001 * (-13.356415961992688 * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = _lt_0_row[2] * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * mParameters[16] * mParameters[9] / ((669921.875 + pow(mParameters[6], 3)) * (1.3799999999999999 + mParameters[4])); // picoA + const double var_Ca_release_current_from_JSR__Fn = 9.6479999999999999e-11 * var_Ca_release_current_from_JSR__i_rel + 1.0364122723649997e-15 * var_Na_Ca_exchanger_current__i_NaCa - 2.5910306809124992e-15 * var_L_type_Ca_channel__i_Ca_L; // dimensionless + const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u = 0.125 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)) - 0.125 * var_chaste_interface__Ca_release_current_from_JSR_u_gate__u; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v = (1 - 1 / (1 + exp(50 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)) - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / (1.9099999999999999 + 2.0899999999999999 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn))); // 1 / millisecond + const double var_fast_sodium_current__E_Na = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_background_currents__i_B_Na = 0.00067443750000000002 * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = (0.081176470588235281 * var_Ca_leak_current_by_the_NSR__i_up_leak + 0.0070588235294117632 * var_Ca_release_current_from_JSR__i_rel + 7.5827646500219453e-7 * var_Na_Ca_exchanger_current__i_NaCa - 0.081176470588235281 * var_Ca_uptake_current_by_the_NSR__i_up - 3.7913823250109726e-7 * var_L_type_Ca_channel__i_Ca_L - 3.7913823250109726e-7 * var_background_currents__i_B_Ca - 3.7913823250109726e-7 * var_sarcolemmal_calcium_pump_current__i_CaP) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2)); // millimolar / millisecond + const double var_sodium_potassium_pump__i_NaK = 0.59933873999999998 * mParameters[9] * mParameters[5] / ((1 + 31.622776601683793 * pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = 7.5827646500219453e-7 * (-var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - 3 * var_Na_Ca_exchanger_current__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) * mParameters[3]; // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = _lt_0_row[5] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr; // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_time_independent_potassium_current__i_K1 = _lt_0_row[6] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13]; // picoA + const double var_transfer_current_from_NSR_to_JSR__i_tr = 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_rel; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel = (-var_Ca_release_current_from_JSR__i_rel + var_transfer_current_from_NSR_to_JSR__i_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_rel), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up = -var_Ca_leak_current_by_the_NSR__i_up_leak - 0.086956521739130432 * var_transfer_current_from_NSR_to_JSR__i_tr + var_Ca_uptake_current_by_the_NSR__i_up; // millimolar / millisecond + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = 7.5827646500219453e-7 * (-var_rapid_delayed_rectifier_K_current__i_Kr - var_slow_delayed_rectifier_K_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur + 2 * var_sodium_potassium_pump__i_NaK) * mParameters[3]; // millimolar / millisecond + + rResidual[3] = rCurrentGuess[3] - rY[1] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i; + rResidual[2] = rCurrentGuess[2] - rY[13] - mDt*d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca; + rResidual[0] = rCurrentGuess[0] - rY[14] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u; + rResidual[1] = rCurrentGuess[1] - rY[15] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v; + rResidual[7] = rCurrentGuess[7] - rY[17] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rResidual[6] = rCurrentGuess[6] - rY[18] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rResidual[4] = rCurrentGuess[4] - rY[19] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel; + rResidual[5] = rCurrentGuess[5] - rY[20] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rJacobian[8][8]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; + + const double var_x0 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; + const double var_x1 = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2); + const double var_x2 = var_x1 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; + const double var_x3 = var_x2 * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v; + const double var_x4 = 70577.907827359188 * var_x3; + const double var_x5 = _lt_0_row[1]; + const double var_x6 = pow(mParameters[6], 3); + const double var_x7 = var_x5 * var_x6; + const double var_x8 = _lt_0_row[0]; + const double var_x9 = -var_x7 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_x8 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4]; + const double var_x10 = 1 / (1 + 0.10000000000000001 * var_x5); + const double var_x11 = 1 / (669921.875 + var_x6); + const double var_x12 = 1 / (1.3799999999999999 + mParameters[4]); + const double var_x13 = var_x10 * var_x11 * var_x12 * mParameters[16] * mParameters[9]; + const double var_x14 = -65 + var_chaste_interface__membrane__V; + const double var_x15 = var_x0 * var_x4 + 0.75816552477322585 * var_x13 * var_x9 - 1.8954138119330646 * var_x14 * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; + const double var_x16 = exp(250 - var_x15); + const double var_x17 = 1 + var_x16; + const double var_x18 = var_x16 / pow(var_x17, 2); + const double var_x19 = var_x0 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_u_gate__u * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; + const double var_x20 = var_x18 * var_x19; + const double var_x21 = var_x0 * var_x2; + const double var_x22 = 8822.2384784198985 * var_x18; + const double var_x23 = var_x14 * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; + const double var_x24 = var_x18 * var_x23; + const double var_x25 = var_x13 * var_x7; + const double var_x26 = var_x4 + 0.75816552477322585 * var_x25; + const double var_x27 = var_x18 * var_x26; + const double var_x28 = var_x13 * var_x8 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2) * mParameters[4]; + const double var_x29 = 1 / var_x17; + const double var_x30 = 1 / (1.9099999999999999 + 2.0899999999999999 * var_x29); + const double var_x31 = exp(50 - var_x15); + const double var_x32 = 1 + var_x31; + const double var_x33 = var_x31 / pow(var_x32, 2); + const double var_x34 = var_x30 * var_x33; + const double var_x35 = (1 - 1 / var_x32 - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / pow((0.9138755980861244 + var_x29), 2); + const double var_x36 = var_x18 * var_x35; + const double var_x37 = 33769.333888688605 * var_x36; + const double var_x38 = 1 / mParameters[8]; + const double var_x39 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x40 = 0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x41 = pow(var_x40, (-2)); + const double var_x42 = 1 + 0.00011900000000000002 / pow(var_x39, 2) + 3.5000000000000004e-5 * var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x45 = 1.0426301393780176e-7 * mParameters[9] / var_x40; + const double var_x46 = 1 + 0.00092000000000000003 * var_x44; + const double var_x47 = mParameters[2] / (pow(var_x46, 2) * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 2)); + const double var_x48 = 0.0070588235294117632 * var_x3; + const double var_x49 = mParameters[0] * mParameters[2]; + const double var_x50 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; + const double var_x51 = pow(var_x50, (-2)); + const double var_x52 = 1 / (1 + 8 * var_x51); + const double var_x53 = 26.712831923985377 * mParameters[9] / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x54 = 7.5827646500219453e-7 * mParameters[3]; + const double var_x55 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x56 = pow(var_x55, 1.5); + const double var_x57 = var_x55 * mParameters[9]; + const double var_x58 = var_x56 * var_x57 * mParameters[5] / ((1.5 + mParameters[5]) * pow((0.031622776601683791 + var_x56), 2) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); + + + rJacobian[0][0] = 1.0 - (mDt * (-0.125 + 17644.476956839797 * var_x20)); + rJacobian[0][1] = -(mDt * (var_x21 * var_x22)); + rJacobian[0][2] = -(mDt * (-0.23692672649163307 * var_x24)); + rJacobian[0][3] = -(mDt * (-0.125 * var_x27)); + rJacobian[0][4] = -(mDt * (var_x22 * var_x3)); + rJacobian[0][5] = 0.0; + rJacobian[0][6] = 0.0; + rJacobian[0][7] = -(mDt * (0.28431207178995971 * var_x18 * var_x28)); + rJacobian[1][0] = -(mDt * (-141155.81565471838 * var_x19 * var_x34 - 67538.66777737721 * var_x20 * var_x35)); + rJacobian[1][1] = 1.0 - (mDt * (var_x30 * (-1 - 70577.907827359188 * var_x21 * var_x33) - var_x21 * var_x37)); + rJacobian[1][2] = -(mDt * (0.90689656073352376 * var_x24 * var_x35 + 1.8954138119330646 * var_x23 * var_x34)); + rJacobian[1][3] = -(mDt * (var_x26 * var_x34 + 0.47846889952153115 * var_x27 * var_x35)); + rJacobian[1][4] = -(mDt * (-var_x3 * var_x37 - var_x34 * var_x4)); + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = -(mDt * (-1.0882758728802286 * var_x28 * var_x36 - 2.2744965743196777 * var_x28 * var_x34)); + rJacobian[2][0] = 0.0; + rJacobian[2][1] = 0.0; + rJacobian[2][2] = 1.0 - (mDt * (-var_x38)); + rJacobian[2][3] = -(mDt * (-0.00035 * var_x38 / pow((0.00035 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2))); + rJacobian[2][4] = 0.0; + rJacobian[2][5] = 0.0; + rJacobian[2][6] = 0.0; + rJacobian[2][7] = 0.0; + rJacobian[3][0] = -(mDt * (0.014117647058823526 * var_x19 * var_x43)); + rJacobian[3][1] = -(mDt * (0.0070588235294117632 * var_x21 * var_x43)); + rJacobian[3][2] = -(mDt * (-3.7913823250109726e-7 * var_x23 * var_x43)); + rJacobian[3][3] = 1.0 - (mDt * (var_x43 * (-var_x45 - var_x48 - 7.4682352941176462e-5 * var_x47 - 7.5827646500219453e-7 * var_x25 - 5.7273025005690459e-9 * var_x44 * mParameters[9] + 1.0426301393780176e-7 * var_x41 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9]) + (0.00023800000000000004 / pow(var_x39, 3) + 7.0000000000000007e-5 / pow(var_x40, 3)) * (-var_x45 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.081176470588235281 * mParameters[2] / var_x46 - 3.7913823250109726e-7 * var_x23 * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca - 4.2880534095874102e-10 * (-13.356415961992688 * log(var_x44 * mParameters[4]) + var_chaste_interface__membrane__V) * mParameters[9] + 0.0054117647058823529 * mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up + 0.0070588235294117632 * var_x0 * var_x1 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + 7.5827646500219453e-7 * var_x10 * var_x11 * var_x12 * var_x9 * mParameters[16] * mParameters[9]) / pow(var_x42, 2))); + rJacobian[3][4] = -(mDt * (var_x43 * var_x48)); + rJacobian[3][5] = -(mDt * (0.0054117647058823529 * var_x43 * var_x49)); + rJacobian[3][6] = 0.0; + rJacobian[3][7] = -(mDt * (2.2748293950065834e-6 * var_x28 * var_x43)); + rJacobian[4][0] = -(mDt * (-2 * var_x19 * var_x52)); + rJacobian[4][1] = -(mDt * (-var_x21 * var_x52)); + rJacobian[4][2] = 0.0; + rJacobian[4][3] = -(mDt * (var_x3 * var_x52)); + rJacobian[4][4] = 1.0 - (mDt * (var_x52 * (-0.0055555555555555558 - var_x3) + 0.25 * (0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_rel - var_x0 * var_x3) / (pow(var_x50, 3) * pow((0.125 + var_x51), 2)))); + rJacobian[4][5] = -(mDt * (0.0055555555555555558 * var_x52)); + rJacobian[4][6] = 0.0; + rJacobian[4][7] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = 0.0; + rJacobian[5][3] = -(mDt * (0.00092000000000000003 * var_x47)); + rJacobian[5][4] = -(mDt * (0.00048309178743961351)); + rJacobian[5][5] = 1.0 - (mDt * (-0.00048309178743961351 - 0.066666666666666666 * var_x49)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (var_x54 * (-var_x53 * _lt_0_row[6] * mParameters[13] - var_x53 * pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * mParameters[15] - var_x53 * _lt_0_row[5] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr - var_x53 * pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi - var_x53 * pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui))); + rJacobian[6][7] = -(mDt * (4.3114284380885533e-8 * var_x58 * mParameters[3])); + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = -(mDt * (2.2748293950065834e-6 * var_x25 * mParameters[3])); + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (var_x54 * (-9 * var_x28 - 0.018016135580732888 * var_x57 - 0.085287397876895904 * var_x58 - 26.712831923985377 * var_x57 * pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j))); + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP = 0.27500000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_background_currents__i_B_Ca = 0.0011310000000000001 * (-13.356415961992688 * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = _lt_0_row[2] * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * mParameters[16] * mParameters[9] / ((669921.875 + pow(mParameters[6], 3)) * (1.3799999999999999 + mParameters[4])); // picoA + const double var_fast_sodium_current__E_Na = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_background_currents__i_B_Na = 0.00067443750000000002 * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_sodium_potassium_pump__i_NaK = 0.59933873999999998 * mParameters[9] * mParameters[5] / ((1 + 31.622776601683793 * pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = _lt_0_row[5] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr; // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_time_independent_potassium_current__i_K1 = _lt_0_row[6] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13]; // picoA + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double d_dt_chaste_interface_var_membrane__V = (-var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger_current__i_NaCa - var_background_currents__i_B_Ca - var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - var_rapid_delayed_rectifier_K_current__i_Kr - var_sarcolemmal_calcium_pump_current__i_CaP - var_slow_delayed_rectifier_K_current__i_Ks - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur - 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance()) / mParameters[9]; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_Ca_release_current_from_JSR_w_gate__tau_w = ((fabs(-7.9000000000000004 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.92307692307692313) : (6 * (1 - exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) / ((1 + 0.29999999999999999 * exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) * (-7.9000000000000004 + var_chaste_interface__membrane__V)))); + const double var_Ca_release_current_from_JSR_w_gate__w_infinity = 1 + _lt_0_row[8]; + const double var_L_type_Ca_channel_d_gate__d_infinity = _lt_0_row[10]; + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(10 + var_chaste_interface__membrane__V) < 1.0e-10) ? (4.5789999999999997 / (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V))) : (28.571428571428569 * (1 - exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) / ((1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) * (10 + var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_f_gate__f_infinity = _lt_0_row[12]; + const double var_L_type_Ca_channel_f_gate__tau_f = 450 / (1 + 0.98499999999999988 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); + const double var_fast_sodium_current_m_gate__alpha_m = _lt_0_row[14]; + const double var_fast_sodium_current_m_gate__beta_m = _lt_0_row[15]; + const double var_fast_sodium_current_m_gate__m_inf = var_fast_sodium_current_m_gate__alpha_m / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); + const double var_fast_sodium_current_m_gate__tau_m = 1 / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); + const double var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr = ((fabs(14.1 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.0015) : (0.00029999999999999997 * (14.1 + var_chaste_interface__membrane__V) / (1 - exp(-2.8199999999999998 - 0.20000000000000001 * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr = ((fabs(-3.3328000000000002 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00037836118) : (7.3898000000000003e-5 * (-3.3328000000000002 + var_chaste_interface__membrane__V) / (-1 + exp(-0.65046743564221166 + 0.19517145812596365 * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr = 1 / (var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr + var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr); + const double var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity = _lt_0_row[16]; + const double var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00068000000000000005) : (4.0000000000000003e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (1 - exp(1.1705882352941175 - 0.058823529411764705 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__beta_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00031500000000000001) : (3.4999999999999997e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-2.2111111111111108 + 0.1111111111111111 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__tau_xs = 0.5 / (var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs + var_slow_delayed_rectifier_K_current_xs_gate__beta_xs); + const double var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity = _lt_0_row[18]; + const double var_transient_outward_K_current__K_Q10 = 3; + const double var_transient_outward_K_current_oa_gate__alpha_oa = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__beta_oa = 0.26000000000000001 / (1 + 0.40000000000000002 * exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__oa_infinity = _lt_0_row[20]; + const double var_transient_outward_K_current_oa_gate__tau_oa = 1 / ((var_transient_outward_K_current_oa_gate__alpha_oa + var_transient_outward_K_current_oa_gate__beta_oa) * var_transient_outward_K_current__K_Q10); + const double var_transient_outward_K_current_oi_gate__alpha_oi = 0.053966540744738258 / (1 + 0.053966540744738258 * exp(10.383561643835618 + 0.091324200913242018 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__beta_oi = 0.028121484814398197 / (1 + 0.028121484814398197 * exp(-0.16935483870967738 - 0.13440860215053763 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__oi_infinity = _lt_0_row[22]; + const double var_transient_outward_K_current_oi_gate__tau_oi = 1 / ((var_transient_outward_K_current_oi_gate__alpha_oi + var_transient_outward_K_current_oi_gate__beta_oi) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua = 0.26000000000000001 / (1 + 0.40000000000000002 * exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua + var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity = _lt_0_row[24]; + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui = 0.047619047619047616 / (1 + 0.047619047619047616 * exp(6.6071428571428568 - 0.035714285714285712 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui = 1 / exp(9.875 - 0.0625 * var_chaste_interface__membrane__V); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui + var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity = _lt_0_row[25]; + + + rY[16] = (var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + ((var_Ca_release_current_from_JSR_w_gate__w_infinity / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)) / (1.0 - ((-1 / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)); + rY[11] = (var_chaste_interface__L_type_Ca_channel_d_gate__d + ((var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_d_gate__tau_d) * mDt)); + rY[12] = (var_chaste_interface__L_type_Ca_channel_f_gate__f + ((var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_f_gate__tau_f) * mDt)); + rY[3] = (var_chaste_interface__fast_sodium_current_h_gate__h + ((var_fast_sodium_current_h_gate__h_inf / var_fast_sodium_current_h_gate__tau_h) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_h_gate__tau_h) * mDt)); + rY[4] = (var_chaste_interface__fast_sodium_current_j_gate__j + ((var_fast_sodium_current_j_gate__j_inf / var_fast_sodium_current_j_gate__tau_j) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_j_gate__tau_j) * mDt)); + rY[2] = (var_chaste_interface__fast_sodium_current_m_gate__m + ((var_fast_sodium_current_m_gate__m_inf / var_fast_sodium_current_m_gate__tau_m) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_m_gate__tau_m) * mDt)); + rY[9] = (var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr + ((var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)) / (1.0 - ((-1 / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)); + rY[10] = (var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs + ((var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)) / (1.0 - ((-1 / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)); + rY[5] = (var_chaste_interface__transient_outward_K_current_oa_gate__oa + ((var_transient_outward_K_current_oa_gate__oa_infinity / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)); + rY[6] = (var_chaste_interface__transient_outward_K_current_oi_gate__oi + ((var_transient_outward_K_current_oi_gate__oi_infinity / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)); + rY[7] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua + ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)); + rY[8] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui + ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)); + + double _guess[8] = {rY[14],rY[15],rY[13],rY[1],rY[19],rY[20],rY[18],rY[17]}; + CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt>* _p_solver = CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[14] = _guess[0]; + rY[15] = _guess[1]; + rY[13] = _guess[2]; + rY[1] = _guess[3]; + rY[19] = _guess[4]; + rY[20] = _guess[5]; + rY[18] = _guess[6]; + rY[17] = _guess[7]; + } + + std::vector Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rY[14]; + // Units: dimensionless; Initial value: 2.35e-112 + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rY[15]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rY[19]; + // Units: millimolar; Initial value: 1.488 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_L_type_Ca_channel_f_gate__tau_f = 450 / (1 + 0.98499999999999988 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2))); // millisecond + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // millisecond + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // millisecond + const double var_membrane__i_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = _lt_0_row[5] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr; // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = _lt_0_row[6] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13]; // picoA + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_K_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 + + std::vector dqs(14); + dqs[0] = var_Ca_release_current_from_JSR__i_rel; + dqs[1] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[2] = var_L_type_Ca_channel_f_gate__tau_f; + dqs[3] = var_membrane__Cm_converted; + dqs[4] = var_fast_sodium_current__i_Na_converted; + dqs[5] = var_fast_sodium_current_h_gate__tau_h; + dqs[6] = var_fast_sodium_current_j_gate__tau_j; + dqs[7] = var_time_independent_potassium_current__i_K1_converted; + dqs[8] = var_rapid_delayed_rectifier_K_current__i_Kr_converted; + dqs[9] = var_slow_delayed_rectifier_K_current__i_Ks_converted; + dqs[10] = var_Na_Ca_exchanger_current__i_NaCa_converted; + dqs[11] = var_membrane__i_st_converted; + dqs[12] = var_transient_outward_K_current__i_to_converted; + dqs[13] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "courtemanche_1998"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-81.18); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0001013); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002908); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9649); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9775); + + // rY[5]: + this->mVariableNames.push_back("transient_outward_K_current_oa_gate__oa"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.03043); + + // rY[6]: + this->mVariableNames.push_back("transient_outward_K_current_oi_gate__oi"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9992); + + // rY[7]: + this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ua_gate__ua"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.004966); + + // rY[8]: + this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ui_gate__ui"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9986); + + // rY[9]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_current_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.296e-05); + + // rY[10]: + this->mVariableNames.push_back("slow_delayed_rectifier_K_current_xs_gate__xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01869); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0001367); + + // rY[12]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9996); + + // rY[13]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7755); + + // rY[14]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_u_gate__u"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.35e-112); + + // rY[15]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_v_gate__v"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[16]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_w_gate__w"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9992); + + // rY[17]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(11.17); + + // rY[18]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(139.0); + + // rY[19]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.488); + + // rY[20]: + this->mVariableNames.push_back("intracellular_ion_concentrations__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.488); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mParameterUnits.push_back("millisecond"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane__Cm"); + this->mParameterUnits.push_back("picoF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_14.cpp new file mode 100644 index 00000000..a250cc95 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/BEopt/dynamic_courtemanche_ramirez_nattel_1998--sympy_1_14.cpp @@ -0,0 +1,1459 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: courtemanche_1998 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: BackwardEulerOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "CardiacNewtonSolver.hpp" +#include "dynamic_courtemanche_ramirez_nattel_1998.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractBackwardEulerCardiacCell<8>* Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(p_solver, p_stimulus); +} + +bool Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::registered = ModelFactory::Register("dynamic_courtemanche_ramirez_nattel_1998", "BackwardEulerOpt", (ModelFactory::TCreateMethod)Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::CreateMethod); + +class Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<27; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= 2){ + EXCEPTION("Lookup table 9 at ["<= 2){ + EXCEPTION("Lookup table 11 at ["<= 2){ + EXCEPTION("Lookup table 14 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[27]; + + // Lookup tables + double (*_lookup_table_0)[27]; + int _lookup_table_0_num_misshit_piecewise[27] = {0}; + +}; + +std::shared_ptr Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -2000 * HeartConfig::Instance()->GetCapacitance() / mParameters[9]; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 2; // millisecond + const double var_chaste_interface__membrane__stim_period = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractBackwardEulerCardiacCell<8>( + 21, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1; // (var_Ca_leak_current_by_the_NSR__leak_factor) [dimensionless] + this->mParameters[1] = 30; // (var_Ca_release_current_from_JSR__K_rel) [per_millisecond] + this->mParameters[2] = 0.0050000000000000001; // (var_Ca_uptake_current_by_the_NSR__I_up_max) [millimolar_per_millisecond] + this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_standard_ionic_concentrations__Ca_o) [millimolar] + this->mParameters[5] = 5.4000000000000004; // (var_standard_ionic_concentrations__K_o) [millimolar] + this->mParameters[6] = 140; // (var_standard_ionic_concentrations__Na_o) [millimolar] + this->mParameters[7] = 0.12375; // (var_L_type_Ca_channel__g_Ca_L) [nanoS_per_picoF] + this->mParameters[8] = 2; // (var_L_type_Ca_channel_f_Ca_gate__tau_f_Ca) [millisecond] + this->mParameters[9] = 100; // (var_membrane__Cm) [picoF] + this->mParameters[10] = 7.7999999999999998; // (var_fast_sodium_current__g_Na) [nanoS_per_picoF] + this->mParameters[11] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[12] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[13] = 0.089999999999999997; // (var_time_independent_potassium_current__g_K1) [nanoS_per_picoF] + this->mParameters[14] = 0.029411764999999999; // (var_rapid_delayed_rectifier_K_current__g_Kr) [nanoS_per_picoF] + this->mParameters[15] = 0.12941175999999999; // (var_slow_delayed_rectifier_K_current__g_Ks) [nanoS_per_picoF] + this->mParameters[16] = 1600; // (var_Na_Ca_exchanger_current__I_NaCa_max) [picoA_per_picoF] + this->mParameters[17] = 0.16520000000000001; // (var_transient_outward_K_current__g_to) [nanoS_per_picoF] + } + + Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::~Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt() + { + } + + AbstractLookupTableCollection* Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::GetLookupTableCollection() + { + return Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance(); + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 21; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * (-65 + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9] / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sarcolemmal_calcium_pump_current__i_CaP = 0.27500000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_background_currents__i_B_Ca = 0.0011310000000000001 * (-13.356415961992688 * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * _lt_0_row[2] * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * HeartConfig::Instance()->GetCapacitance() * mParameters[16] * mParameters[9] / ((669921.875 + pow(mParameters[6], 3)) * (1.3799999999999999 + mParameters[4]) * var_membrane__Cm_converted); // uA_per_cm2 + const double var_fast_sodium_current__E_Na = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_background_currents__i_B_Na = 0.00067443750000000002 * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9] / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_potassium_pump__i_NaK = 0.59933873999999998 * mParameters[9] * mParameters[5] / ((1 + 31.622776601683793 * pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * _lt_0_row[5] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[15] / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * _lt_0_row[6] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[13] / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi / var_membrane__Cm_converted; // uA_per_cm2 + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_Na_Ca_exchanger_current__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_delayed_rectifier_K_current__i_Kr_converted + var_slow_delayed_rectifier_K_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_K_current__i_to_converted) * var_membrane__Cm_converted + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Ca + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_background_currents__i_B_Na + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump_current__i_CaP + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_ultrarapid_delayed_rectifier_K_current__i_Kur) / var_membrane__Cm_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeResidual(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rResidual[8]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + //output_nonlinear_state_assignments + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + //output_equations + const double var_Ca_uptake_current_by_the_NSR__i_up = mParameters[2] / (1 + 0.00092000000000000003 / var_chaste_interface__intracellular_ion_concentrations__Ca_i); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca = (1 / (1 + 2857.1428571428573 * var_chaste_interface__intracellular_ion_concentrations__Ca_i) - var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca) / mParameters[8]; // 1 / millisecond + const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond + const double var_Ca_leak_current_by_the_NSR__i_up_leak = 0.066666666666666666 * mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up; // millimolar_per_millisecond + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP = 0.27500000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_background_currents__i_B_Ca = 0.0011310000000000001 * (-13.356415961992688 * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = _lt_0_row[2] * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * mParameters[16] * mParameters[9] / ((669921.875 + pow(mParameters[6], 3)) * (1.3799999999999999 + mParameters[4])); // picoA + const double var_Ca_release_current_from_JSR__Fn = 9.6479999999999999e-11 * var_Ca_release_current_from_JSR__i_rel + 1.0364122723649997e-15 * var_Na_Ca_exchanger_current__i_NaCa - 2.5910306809124992e-15 * var_L_type_Ca_channel__i_Ca_L; // dimensionless + const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u = 0.125 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)) - 0.125 * var_chaste_interface__Ca_release_current_from_JSR_u_gate__u; // 1 / millisecond + const double d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v = (1 - 1 / (1 + exp(50 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn)) - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / (1.9099999999999999 + 2.0899999999999999 / (1 + exp(250 - 731528895391368.0 * var_Ca_release_current_from_JSR__Fn))); // 1 / millisecond + const double var_fast_sodium_current__E_Na = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_background_currents__i_B_Na = 0.00067443750000000002 * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i = (0.081176470588235281 * var_Ca_leak_current_by_the_NSR__i_up_leak + 0.0070588235294117632 * var_Ca_release_current_from_JSR__i_rel + 7.5827646500219453e-7 * var_Na_Ca_exchanger_current__i_NaCa - 0.081176470588235281 * var_Ca_uptake_current_by_the_NSR__i_up - 3.7913823250109726e-7 * var_L_type_Ca_channel__i_Ca_L - 3.7913823250109726e-7 * var_background_currents__i_B_Ca - 3.7913823250109726e-7 * var_sarcolemmal_calcium_pump_current__i_CaP) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2)); // millimolar / millisecond + const double var_sodium_potassium_pump__i_NaK = 0.59933873999999998 * mParameters[9] * mParameters[5] / ((1 + 31.622776601683793 * pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = 7.5827646500219453e-7 * (-var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - 3 * var_Na_Ca_exchanger_current__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) * mParameters[3]; // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = _lt_0_row[5] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr; // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_time_independent_potassium_current__i_K1 = _lt_0_row[6] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13]; // picoA + const double var_transfer_current_from_NSR_to_JSR__i_tr = 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_rel; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel = (-var_Ca_release_current_from_JSR__i_rel + var_transfer_current_from_NSR_to_JSR__i_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_rel), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up = -var_Ca_leak_current_by_the_NSR__i_up_leak - 0.086956521739130432 * var_transfer_current_from_NSR_to_JSR__i_tr + var_Ca_uptake_current_by_the_NSR__i_up; // millimolar / millisecond + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = 7.5827646500219453e-7 * (-var_rapid_delayed_rectifier_K_current__i_Kr - var_slow_delayed_rectifier_K_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur + 2 * var_sodium_potassium_pump__i_NaK) * mParameters[3]; // millimolar / millisecond + + rResidual[3] = rCurrentGuess[3] - rY[1] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_i; + rResidual[2] = rCurrentGuess[2] - rY[13] - mDt*d_dt_chaste_interface_var_L_type_Ca_channel_f_Ca_gate__f_Ca; + rResidual[0] = rCurrentGuess[0] - rY[14] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_u_gate__u; + rResidual[1] = rCurrentGuess[1] - rY[15] - mDt*d_dt_chaste_interface_var_Ca_release_current_from_JSR_v_gate__v; + rResidual[7] = rCurrentGuess[7] - rY[17] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rResidual[6] = rCurrentGuess[6] - rY[18] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rResidual[4] = rCurrentGuess[4] - rY[19] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_rel; + rResidual[5] = rCurrentGuess[5] - rY[20] - mDt*d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_up; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeJacobian(double var_chaste_interface__environment__time, const double rCurrentGuess[8], double rJacobian[8][8]) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rCurrentGuess[0]; + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rCurrentGuess[1]; + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rCurrentGuess[2]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rCurrentGuess[3]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rCurrentGuess[4]; + double var_chaste_interface__intracellular_ion_concentrations__Ca_up = rCurrentGuess[5]; + double var_chaste_interface__intracellular_ion_concentrations__K_i = rCurrentGuess[6]; + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rCurrentGuess[7]; + + const double var_x0 = -var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; + const double var_x1 = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2); + const double var_x2 = var_x1 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; + const double var_x3 = var_x2 * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v; + const double var_x4 = 70577.907827359188 * var_x3; + const double var_x5 = _lt_0_row[1]; + const double var_x6 = pow(mParameters[6], 3); + const double var_x7 = var_x5 * var_x6; + const double var_x8 = _lt_0_row[0]; + const double var_x9 = -var_x7 * var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_x8 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4]; + const double var_x10 = 1 / (1 + 0.10000000000000001 * var_x5); + const double var_x11 = 1 / (669921.875 + var_x6); + const double var_x12 = 1 / (1.3799999999999999 + mParameters[4]); + const double var_x13 = var_x10 * var_x11 * var_x12 * mParameters[16] * mParameters[9]; + const double var_x14 = -65 + var_chaste_interface__membrane__V; + const double var_x15 = var_x0 * var_x4 + 0.75816552477322585 * var_x13 * var_x9 - 1.8954138119330646 * var_x14 * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; + const double var_x16 = exp(250 - var_x15); + const double var_x17 = 1 + var_x16; + const double var_x18 = var_x16 / pow(var_x17, 2); + const double var_x19 = var_x0 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_u_gate__u * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; + const double var_x20 = var_x18 * var_x19; + const double var_x21 = var_x0 * var_x2; + const double var_x22 = 8822.2384784198985 * var_x18; + const double var_x23 = var_x14 * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; + const double var_x24 = var_x18 * var_x23; + const double var_x25 = var_x13 * var_x7; + const double var_x26 = var_x4 + 0.75816552477322585 * var_x25; + const double var_x27 = var_x18 * var_x26; + const double var_x28 = var_x13 * var_x8 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2) * mParameters[4]; + const double var_x29 = 1.9099999999999999 + 2.0899999999999999 / var_x17; + const double var_x30 = 1 / var_x29; + const double var_x31 = exp(50 - var_x15); + const double var_x32 = 1 + var_x31; + const double var_x33 = var_x31 / pow(var_x32, 2); + const double var_x34 = var_x30 * var_x33; + const double var_x35 = (1 - 1 / var_x32 - var_chaste_interface__Ca_release_current_from_JSR_v_gate__v) / pow(var_x29, 2); + const double var_x36 = var_x18 * var_x35; + const double var_x37 = 147507.82735918069 * var_x36; + const double var_x38 = 1 / mParameters[8]; + const double var_x39 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x40 = 0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x41 = pow(var_x40, (-2)); + const double var_x42 = 1 + 0.00011900000000000002 / pow(var_x39, 2) + 3.5000000000000004e-5 * var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ca_i; + const double var_x45 = 1.0426301393780176e-7 * mParameters[9] / var_x40; + const double var_x46 = 1 + 0.00092000000000000003 * var_x44; + const double var_x47 = mParameters[2] / (pow(var_x46, 2) * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_i, 2)); + const double var_x48 = 0.0070588235294117632 * var_x3; + const double var_x49 = mParameters[0] * mParameters[2]; + const double var_x50 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_rel; + const double var_x51 = 1 + 8 / pow(var_x50, 2); + const double var_x52 = 1 / var_x51; + const double var_x53 = 26.712831923985377 * mParameters[9] / var_chaste_interface__intracellular_ion_concentrations__K_i; + const double var_x54 = 7.5827646500219453e-7 * mParameters[3]; + const double var_x55 = 1 / var_chaste_interface__intracellular_ion_concentrations__Na_i; + const double var_x56 = pow(var_x55, 1.5); + const double var_x57 = var_x55 * mParameters[9]; + const double var_x58 = var_x56 * var_x57 * mParameters[5] / (pow((1 + 31.622776601683793 * var_x56), 2) * (1.5 + mParameters[5]) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); + + + rJacobian[0][0] = 1.0 - (mDt * (-0.125 + 17644.476956839797 * var_x20)); + rJacobian[0][1] = -(mDt * (var_x21 * var_x22)); + rJacobian[0][2] = -(mDt * (-0.23692672649163307 * var_x24)); + rJacobian[0][3] = -(mDt * (-0.125 * var_x27)); + rJacobian[0][4] = -(mDt * (var_x22 * var_x3)); + rJacobian[0][5] = 0.0; + rJacobian[0][6] = 0.0; + rJacobian[0][7] = -(mDt * (0.28431207178995971 * var_x18 * var_x28)); + rJacobian[1][0] = -(mDt * (-141155.81565471838 * var_x19 * var_x34 - 295015.65471836139 * var_x20 * var_x35)); + rJacobian[1][1] = 1.0 - (mDt * (var_x30 * (-1 - 70577.907827359188 * var_x21 * var_x33) - var_x21 * var_x37)); + rJacobian[1][2] = -(mDt * (3.9614148669401046 * var_x24 * var_x35 + 1.8954138119330646 * var_x23 * var_x34)); + rJacobian[1][3] = -(mDt * (var_x26 * var_x34 + 2.0899999999999999 * var_x27 * var_x35)); + rJacobian[1][4] = -(mDt * (-var_x3 * var_x37 - var_x34 * var_x4)); + rJacobian[1][5] = 0.0; + rJacobian[1][6] = 0.0; + rJacobian[1][7] = -(mDt * (-2.2744965743196777 * var_x28 * var_x34 - 4.753697840328126 * var_x28 * var_x36)); + rJacobian[2][0] = 0.0; + rJacobian[2][1] = 0.0; + rJacobian[2][2] = 1.0 - (mDt * (-var_x38)); + rJacobian[2][3] = -(mDt * (-2857.1428571428573 * var_x38 / pow((1 + 2857.1428571428573 * var_chaste_interface__intracellular_ion_concentrations__Ca_i), 2))); + rJacobian[2][4] = 0.0; + rJacobian[2][5] = 0.0; + rJacobian[2][6] = 0.0; + rJacobian[2][7] = 0.0; + rJacobian[3][0] = -(mDt * (0.014117647058823526 * var_x19 * var_x43)); + rJacobian[3][1] = -(mDt * (0.0070588235294117632 * var_x21 * var_x43)); + rJacobian[3][2] = -(mDt * (-3.7913823250109726e-7 * var_x23 * var_x43)); + rJacobian[3][3] = 1.0 - (mDt * (var_x43 * (-var_x45 - var_x48 - 7.4682352941176462e-5 * var_x47 - 7.5827646500219453e-7 * var_x25 - 5.7273025005690459e-9 * var_x44 * mParameters[9] + 1.0426301393780176e-7 * var_x41 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9]) + (0.00023800000000000004 / pow(var_x39, 3) + 7.0000000000000007e-5 / pow(var_x40, 3)) * (-var_x45 * var_chaste_interface__intracellular_ion_concentrations__Ca_i - 0.081176470588235281 * mParameters[2] / var_x46 - 3.7913823250109726e-7 * var_x23 * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca - 4.2880534095874102e-10 * (-13.356415961992688 * log(var_x44 * mParameters[4]) + var_chaste_interface__membrane__V) * mParameters[9] + 0.0054117647058823529 * mParameters[0] * mParameters[2] * var_chaste_interface__intracellular_ion_concentrations__Ca_up + 0.0070588235294117632 * var_x0 * var_x1 * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + 7.5827646500219453e-7 * var_x10 * var_x11 * var_x12 * var_x9 * mParameters[16] * mParameters[9]) / pow(var_x42, 2))); + rJacobian[3][4] = -(mDt * (var_x43 * var_x48)); + rJacobian[3][5] = -(mDt * (0.0054117647058823529 * var_x43 * var_x49)); + rJacobian[3][6] = 0.0; + rJacobian[3][7] = -(mDt * (2.2748293950065834e-6 * var_x28 * var_x43)); + rJacobian[4][0] = -(mDt * (-2 * var_x19 * var_x52)); + rJacobian[4][1] = -(mDt * (-var_x21 * var_x52)); + rJacobian[4][2] = 0.0; + rJacobian[4][3] = -(mDt * (var_x3 * var_x52)); + rJacobian[4][4] = 1.0 - (mDt * (var_x52 * (-0.0055555555555555558 - var_x3) + 16 * (0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_up - 0.0055555555555555558 * var_chaste_interface__intracellular_ion_concentrations__Ca_rel - var_x0 * var_x3) / (pow(var_x50, 3) * pow(var_x51, 2)))); + rJacobian[4][5] = -(mDt * (0.0055555555555555558 * var_x52)); + rJacobian[4][6] = 0.0; + rJacobian[4][7] = 0.0; + rJacobian[5][0] = 0.0; + rJacobian[5][1] = 0.0; + rJacobian[5][2] = 0.0; + rJacobian[5][3] = -(mDt * (0.00092000000000000003 * var_x47)); + rJacobian[5][4] = -(mDt * (0.00048309178743961351)); + rJacobian[5][5] = 1.0 - (mDt * (-0.00048309178743961351 - 0.066666666666666666 * var_x49)); + rJacobian[5][6] = 0.0; + rJacobian[5][7] = 0.0; + rJacobian[6][0] = 0.0; + rJacobian[6][1] = 0.0; + rJacobian[6][2] = 0.0; + rJacobian[6][3] = 0.0; + rJacobian[6][4] = 0.0; + rJacobian[6][5] = 0.0; + rJacobian[6][6] = 1.0 - (mDt * (var_x54 * (-var_x53 * _lt_0_row[6] * mParameters[13] - var_x53 * pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * mParameters[15] - var_x53 * _lt_0_row[5] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr - var_x53 * pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi - var_x53 * pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui))); + rJacobian[6][7] = -(mDt * (4.3114284380885534e-5 * var_x58 * mParameters[3])); + rJacobian[7][0] = 0.0; + rJacobian[7][1] = 0.0; + rJacobian[7][2] = 0.0; + rJacobian[7][3] = -(mDt * (2.2748293950065834e-6 * var_x25 * mParameters[3])); + rJacobian[7][4] = 0.0; + rJacobian[7][5] = 0.0; + rJacobian[7][6] = 0.0; + rJacobian[7][7] = 1.0 - (mDt * (var_x54 * (-9 * var_x28 - 0.018016135580732888 * var_x57 - 85.287397876895909 * var_x58 - 26.712831923985377 * var_x57 * pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j))); + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_sarcolemmal_calcium_pump_current__i_CaP = 0.27500000000000002 * var_chaste_interface__intracellular_ion_concentrations__Ca_i * mParameters[9] / (0.00050000000000000001 + var_chaste_interface__intracellular_ion_concentrations__Ca_i); // picoA + const double var_background_currents__i_B_Ca = 0.0011310000000000001 * (-13.356415961992688 * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ca_i) + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_Na_Ca_exchanger_current__i_NaCa = _lt_0_row[2] * (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * _lt_0_row[0] - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * _lt_0_row[1]) * mParameters[16] * mParameters[9] / ((669921.875 + pow(mParameters[6], 3)) * (1.3799999999999999 + mParameters[4])); // picoA + const double var_fast_sodium_current__E_Na = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_background_currents__i_B_Na = 0.00067443750000000002 * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_sodium_potassium_pump__i_NaK = 0.59933873999999998 * mParameters[9] * mParameters[5] / ((1 + 31.622776601683793 * pow((1 / var_chaste_interface__intracellular_ion_concentrations__Na_i), 1.5)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[4] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[3])); // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = _lt_0_row[5] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr; // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_time_independent_potassium_current__i_K1 = _lt_0_row[6] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13]; // picoA + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_ultrarapid_delayed_rectifier_K_current__i_Kur = pow(var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua, 3) * (_lt_0_row[7]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui; // picoA + const double d_dt_chaste_interface_var_membrane__V = (-var_L_type_Ca_channel__i_Ca_L - var_Na_Ca_exchanger_current__i_NaCa - var_background_currents__i_B_Ca - var_background_currents__i_B_Na - var_fast_sodium_current__i_Na - var_rapid_delayed_rectifier_K_current__i_Kr - var_sarcolemmal_calcium_pump_current__i_CaP - var_slow_delayed_rectifier_K_current__i_Ks - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_K_current__i_to - var_ultrarapid_delayed_rectifier_K_current__i_Kur - 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance()) / mParameters[9]; // millivolt / millisecond + + rY[0] += mDt*d_dt_chaste_interface_var_membrane__V; + } + + void Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + // Time units: millisecond + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua = rY[7]; + // Units: dimensionless; Initial value: 0.004966 + double var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui = rY[8]; + // Units: dimensionless; Initial value: 0.9986 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_Ca_release_current_from_JSR_w_gate__tau_w = ((fabs(-7.9000000000000004 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.92307692307692313) : (6 * (1 - exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) / ((1 + 0.29999999999999999 * exp(1.5800000000000001 - 0.20000000000000001 * var_chaste_interface__membrane__V)) * (-7.9000000000000004 + var_chaste_interface__membrane__V)))); + const double var_Ca_release_current_from_JSR_w_gate__w_infinity = 1 + _lt_0_row[8]; + const double var_L_type_Ca_channel_d_gate__d_infinity = _lt_0_row[10]; + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(10 + var_chaste_interface__membrane__V) < 1.0e-10) ? (4.5789999999999997 / (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V))) : (28.571428571428569 * (1 - exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) / ((1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)) * (10 + var_chaste_interface__membrane__V)))); + const double var_L_type_Ca_channel_f_gate__f_infinity = _lt_0_row[12]; + const double var_L_type_Ca_channel_f_gate__tau_f = 9 / (0.02 + 0.019699999999999999 * exp(-0.00113569 * pow((10 + var_chaste_interface__membrane__V), 2))); + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); + const double var_fast_sodium_current_m_gate__alpha_m = _lt_0_row[14]; + const double var_fast_sodium_current_m_gate__beta_m = _lt_0_row[15]; + const double var_fast_sodium_current_m_gate__m_inf = var_fast_sodium_current_m_gate__alpha_m / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); + const double var_fast_sodium_current_m_gate__tau_m = 1 / (var_fast_sodium_current_m_gate__alpha_m + var_fast_sodium_current_m_gate__beta_m); + const double var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr = ((fabs(14.1 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.0015) : (0.00029999999999999997 * (14.1 + var_chaste_interface__membrane__V) / (1 - exp(-2.8199999999999998 - 0.20000000000000001 * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr = ((fabs(-3.3328000000000002 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00037836118) : (7.3898000000000003e-5 * (-3.3328000000000002 + var_chaste_interface__membrane__V) / (-1 + exp(-0.65046743564221166 + 0.19517145812596365 * var_chaste_interface__membrane__V)))); + const double var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr = 1 / (var_rapid_delayed_rectifier_K_current_xr_gate__alpha_xr + var_rapid_delayed_rectifier_K_current_xr_gate__beta_xr); + const double var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity = _lt_0_row[16]; + const double var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00068000000000000005) : (4.0000000000000003e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (1 - exp(1.1705882352941175 - 0.058823529411764705 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__beta_xs = ((fabs(-19.899999999999999 + var_chaste_interface__membrane__V) < 1.0e-10) ? (0.00031500000000000001) : (3.4999999999999997e-5 * (-19.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-2.2111111111111108 + 0.1111111111111111 * var_chaste_interface__membrane__V)))); + const double var_slow_delayed_rectifier_K_current_xs_gate__tau_xs = 0.5 / (var_slow_delayed_rectifier_K_current_xs_gate__alpha_xs + var_slow_delayed_rectifier_K_current_xs_gate__beta_xs); + const double var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity = _lt_0_row[18]; + const double var_transient_outward_K_current__K_Q10 = 3; + const double var_transient_outward_K_current_oa_gate__alpha_oa = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__beta_oa = 0.65000000000000002 / (2.5 + exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oa_gate__oa_infinity = _lt_0_row[20]; + const double var_transient_outward_K_current_oa_gate__tau_oa = 1 / ((var_transient_outward_K_current_oa_gate__alpha_oa + var_transient_outward_K_current_oa_gate__beta_oa) * var_transient_outward_K_current__K_Q10); + const double var_transient_outward_K_current_oi_gate__alpha_oi = 1 / (18.530000000000001 + 1 * exp(10.383561643835618 + 0.091324200913242018 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__beta_oi = 1 / (35.560000000000002 + 1 * exp(-0.16935483870967738 - 0.13440860215053763 * var_chaste_interface__membrane__V)); + const double var_transient_outward_K_current_oi_gate__oi_infinity = _lt_0_row[22]; + const double var_transient_outward_K_current_oi_gate__tau_oi = 1 / ((var_transient_outward_K_current_oi_gate__alpha_oi + var_transient_outward_K_current_oi_gate__beta_oi) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua = 0.65000000000000002 / (exp(0.50847457627118642 - 0.016949152542372881 * var_chaste_interface__membrane__V) + exp(-1.1764705882352942 - 0.11764705882352941 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua = 0.65000000000000002 / (2.5 + exp(4.8235294117647056 + 0.058823529411764705 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__alpha_ua + var_ultrarapid_delayed_rectifier_K_current_ua_gate__beta_ua) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity = _lt_0_row[24]; + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui = 1 / (21 + 1 * exp(6.6071428571428568 - 0.035714285714285712 * var_chaste_interface__membrane__V)); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui = 1 / exp(9.875 - 0.0625 * var_chaste_interface__membrane__V); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui = 1 / ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__alpha_ui + var_ultrarapid_delayed_rectifier_K_current_ui_gate__beta_ui) * var_transient_outward_K_current__K_Q10); + const double var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity = _lt_0_row[25]; + + + rY[16] = (var_chaste_interface__Ca_release_current_from_JSR_w_gate__w + ((var_Ca_release_current_from_JSR_w_gate__w_infinity / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)) / (1.0 - ((-1 / var_Ca_release_current_from_JSR_w_gate__tau_w) * mDt)); + rY[11] = (var_chaste_interface__L_type_Ca_channel_d_gate__d + ((var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_d_gate__tau_d) * mDt)); + rY[12] = (var_chaste_interface__L_type_Ca_channel_f_gate__f + ((var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f) * mDt)) / (1.0 - ((-1 / var_L_type_Ca_channel_f_gate__tau_f) * mDt)); + rY[3] = (var_chaste_interface__fast_sodium_current_h_gate__h + ((var_fast_sodium_current_h_gate__h_inf / var_fast_sodium_current_h_gate__tau_h) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_h_gate__tau_h) * mDt)); + rY[4] = (var_chaste_interface__fast_sodium_current_j_gate__j + ((var_fast_sodium_current_j_gate__j_inf / var_fast_sodium_current_j_gate__tau_j) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_j_gate__tau_j) * mDt)); + rY[2] = (var_chaste_interface__fast_sodium_current_m_gate__m + ((var_fast_sodium_current_m_gate__m_inf / var_fast_sodium_current_m_gate__tau_m) * mDt)) / (1.0 - ((-1 / var_fast_sodium_current_m_gate__tau_m) * mDt)); + rY[9] = (var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr + ((var_rapid_delayed_rectifier_K_current_xr_gate__xr_infinity / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)) / (1.0 - ((-1 / var_rapid_delayed_rectifier_K_current_xr_gate__tau_xr) * mDt)); + rY[10] = (var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs + ((var_slow_delayed_rectifier_K_current_xs_gate__xs_infinity / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)) / (1.0 - ((-1 / var_slow_delayed_rectifier_K_current_xs_gate__tau_xs) * mDt)); + rY[5] = (var_chaste_interface__transient_outward_K_current_oa_gate__oa + ((var_transient_outward_K_current_oa_gate__oa_infinity / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oa_gate__tau_oa) * mDt)); + rY[6] = (var_chaste_interface__transient_outward_K_current_oi_gate__oi + ((var_transient_outward_K_current_oi_gate__oi_infinity / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)) / (1.0 - ((-1 / var_transient_outward_K_current_oi_gate__tau_oi) * mDt)); + rY[7] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ua_gate__ua + ((var_ultrarapid_delayed_rectifier_K_current_ua_gate__ua_infinity / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ua_gate__tau_ua) * mDt)); + rY[8] = (var_chaste_interface__ultrarapid_delayed_rectifier_K_current_ui_gate__ui + ((var_ultrarapid_delayed_rectifier_K_current_ui_gate__ui_infinity / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)) / (1.0 - ((-1 / var_ultrarapid_delayed_rectifier_K_current_ui_gate__tau_ui) * mDt)); + + double _guess[8] = {rY[14],rY[15],rY[13],rY[1],rY[19],rY[20],rY[18],rY[17]}; + CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt>* _p_solver = CardiacNewtonSolver<8,Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt>::Instance(); + _p_solver->Solve(*this, var_chaste_interface__environment__time, _guess); + rY[14] = _guess[0]; + rY[15] = _guess[1]; + rY[13] = _guess[2]; + rY[1] = _guess[3]; + rY[19] = _guess[4]; + rY[20] = _guess[5]; + rY[18] = _guess[6]; + rY[17] = _guess[7]; + } + + std::vector Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -81.18 + double var_chaste_interface__intracellular_ion_concentrations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0001013 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002908 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9649 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.9775 + double var_chaste_interface__transient_outward_K_current_oa_gate__oa = rY[5]; + // Units: dimensionless; Initial value: 0.03043 + double var_chaste_interface__transient_outward_K_current_oi_gate__oi = rY[6]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 3.296e-05 + double var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs = rY[10]; + // Units: dimensionless; Initial value: 0.01869 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[11]; + // Units: dimensionless; Initial value: 0.0001367 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[12]; + // Units: dimensionless; Initial value: 0.9996 + double var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca = rY[13]; + // Units: dimensionless; Initial value: 0.7755 + double var_chaste_interface__Ca_release_current_from_JSR_u_gate__u = rY[14]; + // Units: dimensionless; Initial value: 2.35e-112 + double var_chaste_interface__Ca_release_current_from_JSR_v_gate__v = rY[15]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__Ca_release_current_from_JSR_w_gate__w = rY[16]; + // Units: dimensionless; Initial value: 0.9992 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[17]; + // Units: millimolar; Initial value: 11.17 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[18]; + // Units: millimolar; Initial value: 139.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_rel = rY[19]; + // Units: millimolar; Initial value: 1.488 + + // Lookup table indexing + const bool _oob_0 = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_Na_Ca_exchanger_current__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger_current__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger_current__K_sat = 0.10000000000000001; // dimensionless + const double var_Na_Ca_exchanger_current__gamma = 0.34999999999999998; // dimensionless + const double var_Ca_release_current_from_JSR__i_rel = pow(var_chaste_interface__Ca_release_current_from_JSR_u_gate__u, 2) * (-var_chaste_interface__intracellular_ion_concentrations__Ca_i + var_chaste_interface__intracellular_ion_concentrations__Ca_rel) * mParameters[1] * var_chaste_interface__Ca_release_current_from_JSR_v_gate__v * var_chaste_interface__Ca_release_current_from_JSR_w_gate__w; // millimolar_per_millisecond + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L = (-65 + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * mParameters[9]; // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_L_type_Ca_channel_f_gate__tau_f = 9 / (0.02 + 0.019699999999999999 * exp(-0.00113569 * pow((10 + var_chaste_interface__membrane__V), 2))); // millisecond + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[12]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[12])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[12] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // millisecond + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[12]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[12] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[12]))) : (0)); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[12] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[12] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[12] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // millisecond + const double var_membrane__i_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_Na_Ca_exchanger_current__i_NaCa = (pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] * exp(var_Na_Ca_exchanger_current__gamma * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_chaste_interface__intracellular_ion_concentrations__Ca_i * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] * mParameters[9] / ((1 + var_Na_Ca_exchanger_current__K_sat * exp((-1 + var_Na_Ca_exchanger_current__gamma) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger_current__K_mNa, 3) + pow(mParameters[6], 3)) * (var_Na_Ca_exchanger_current__K_mCa + mParameters[4])); // picoA + const double var_Na_Ca_exchanger_current__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger_current__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j * mParameters[9]; // picoA + const double var_fast_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_K_current__i_Kr = _lt_0_row[5] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[14] * var_chaste_interface__rapid_delayed_rectifier_K_current_xr_gate__xr; // picoA + const double var_rapid_delayed_rectifier_K_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_K_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_slow_delayed_rectifier_K_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_K_current_xs_gate__xs, 2) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[15]; // picoA + const double var_slow_delayed_rectifier_K_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_K_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = _lt_0_row[6] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[13]; // picoA + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_K_current__i_to = pow(var_chaste_interface__transient_outward_K_current_oa_gate__oa, 3) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[9] * mParameters[17] * var_chaste_interface__transient_outward_K_current_oi_gate__oi; // picoA + const double var_transient_outward_K_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_K_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 + + std::vector dqs(14); + dqs[0] = var_Ca_release_current_from_JSR__i_rel; + dqs[1] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[2] = var_L_type_Ca_channel_f_gate__tau_f; + dqs[3] = var_membrane__Cm_converted; + dqs[4] = var_fast_sodium_current__i_Na_converted; + dqs[5] = var_fast_sodium_current_h_gate__tau_h; + dqs[6] = var_fast_sodium_current_j_gate__tau_j; + dqs[7] = var_time_independent_potassium_current__i_K1_converted; + dqs[8] = var_rapid_delayed_rectifier_K_current__i_Kr_converted; + dqs[9] = var_slow_delayed_rectifier_K_current__i_Ks_converted; + dqs[10] = var_Na_Ca_exchanger_current__i_NaCa_converted; + dqs[11] = var_membrane__i_st_converted; + dqs[12] = var_transient_outward_K_current__i_to_converted; + dqs[13] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "courtemanche_1998"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-81.18); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0001013); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002908); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9649); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9775); + + // rY[5]: + this->mVariableNames.push_back("transient_outward_K_current_oa_gate__oa"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.03043); + + // rY[6]: + this->mVariableNames.push_back("transient_outward_K_current_oi_gate__oi"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9992); + + // rY[7]: + this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ua_gate__ua"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.004966); + + // rY[8]: + this->mVariableNames.push_back("ultrarapid_delayed_rectifier_K_current_ui_gate__ui"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9986); + + // rY[9]: + this->mVariableNames.push_back("rapid_delayed_rectifier_K_current_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.296e-05); + + // rY[10]: + this->mVariableNames.push_back("slow_delayed_rectifier_K_current_xs_gate__xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01869); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0001367); + + // rY[12]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9996); + + // rY[13]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7755); + + // rY[14]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_u_gate__u"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.35e-112); + + // rY[15]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_v_gate__v"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[16]: + this->mVariableNames.push_back("Ca_release_current_from_JSR_w_gate__w"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9992); + + // rY[17]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(11.17); + + // rY[18]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(139.0); + + // rY[19]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.488); + + // rY[20]: + this->mVariableNames.push_back("intracellular_ion_concentrations__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.488); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mParameterUnits.push_back("millisecond"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane__Cm"); + this->mParameterUnits.push_back("picoF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamiccourtemanche_ramirez_nattel_1998FromCellMLBackwardEulerOpt(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/Shannon2004_with_modifiers--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/Shannon2004_with_modifiers--sympy_1_13.cpp new file mode 100644 index 00000000..9db678b7 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/Shannon2004_with_modifiers--sympy_1_13.cpp @@ -0,0 +1,1562 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: shannon_wang_puglisi_weber_bers_2004_model_updated +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: CvodeCellWithDataClamp) +//! on (date omitted as unimportant) +//! +//! + +#include "Shannon2004_with_modifiers.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + +#include "ModelFactory.hpp" + +AbstractCardiacCellWithModifiers* Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp(p_solver, p_stimulus); +} + +bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registered = ModelFactory::Register("Shannon2004_with_modifiers", "CvodeCellWithDataClamp", (ModelFactory::TCreateMethod)Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::CreateMethod); + + + + boost::shared_ptr Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 5; // millisecond + const double var_chaste_interface__cell__stim_period = 1000; // millisecond + const double var_chaste_interface__cell__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCellWithModifiers( + pOdeSolver, + 45, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + // These will get initialised to DummyModifiers in the base class method. + this->AddModifier("JSR_calcium_concentration", + mp_JSR_calcium_concentration_modifier); + this->AddModifier("SR_leak_current_max", + mp_SR_leak_current_max_modifier); + this->AddModifier("SR_release_current", + mp_SR_release_current_modifier); + this->AddModifier("SR_release_current_max", + mp_SR_release_current_max_modifier); + this->AddModifier("SR_uptake_current_max", + mp_SR_uptake_current_max_modifier); + this->AddModifier("chloride_reversal_potential", + mp_chloride_reversal_potential_modifier); + this->AddModifier("concentration_clamp_onoff", + mp_concentration_clamp_onoff_modifier); + this->AddModifier("cytosolic_calcium_concentration", + mp_cytosolic_calcium_concentration_modifier); + this->AddModifier("cytosolic_chloride_concentration", + mp_cytosolic_chloride_concentration_modifier); + this->AddModifier("cytosolic_potassium_concentration", + mp_cytosolic_potassium_concentration_modifier); + this->AddModifier("cytosolic_sodium_concentration", + mp_cytosolic_sodium_concentration_modifier); + this->AddModifier("dyadic_space_calcium_concentration", + mp_dyadic_space_calcium_concentration_modifier); + this->AddModifier("dyadic_space_sodium_concentration", + mp_dyadic_space_sodium_concentration_modifier); + this->AddModifier("extracellular_calcium_concentration", + mp_extracellular_calcium_concentration_modifier); + this->AddModifier("extracellular_chloride_concentration", + mp_extracellular_chloride_concentration_modifier); + this->AddModifier("extracellular_potassium_concentration", + mp_extracellular_potassium_concentration_modifier); + this->AddModifier("extracellular_sodium_concentration", + mp_extracellular_sodium_concentration_modifier); + this->AddModifier("faraday_constant", + mp_faraday_constant_modifier); + this->AddModifier("gas_constant", + mp_gas_constant_modifier); + this->AddModifier("membrane_L_type_calcium_current", + mp_ICaL__i_CaL_modifier); + this->AddModifier("membrane_L_type_calcium_current_conductance", + mp_membrane_L_type_calcium_current_conductance_modifier); + this->AddModifier("membrane_L_type_calcium_current_d_gate", + mp_membrane_L_type_calcium_current_d_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate", + mp_membrane_L_type_calcium_current_fCa_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate", + mp_membrane_L_type_calcium_current_f_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate_tau", + mp_membrane_L_type_calcium_current_f_gate_tau_modifier); + this->AddModifier("membrane_background_calcium_current", + mp_ICab__i_Cab_modifier); + this->AddModifier("membrane_background_chloride_current", + mp_IClb__i_Clb_modifier); + this->AddModifier("membrane_background_chloride_current_conductance", + mp_membrane_background_chloride_current_conductance_modifier); + this->AddModifier("membrane_background_sodium_current", + mp_INab__i_Nab_modifier); + this->AddModifier("membrane_calcium_pump_current", + mp_ICap__i_Cap_modifier); + this->AddModifier("membrane_capacitance", + mp_membrane_capacitance_modifier); + this->AddModifier("membrane_fast_sodium_current", + mp_INa__i_Na_modifier); + this->AddModifier("membrane_fast_sodium_current_conductance", + mp_membrane_fast_sodium_current_conductance_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate", + mp_membrane_fast_sodium_current_h_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate_tau", + mp_membrane_fast_sodium_current_h_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate", + mp_membrane_fast_sodium_current_j_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate_tau", + mp_membrane_fast_sodium_current_j_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_m_gate", + mp_membrane_fast_sodium_current_m_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_reduced_inactivation", + mp_membrane_fast_sodium_current_reduced_inactivation_modifier); + this->AddModifier("membrane_fast_sodium_current_shift_inactivation", + mp_membrane_fast_sodium_current_shift_inactivation_modifier); + this->AddModifier("membrane_fast_transient_outward_current", + mp_Itof__i_tof_modifier); + this->AddModifier("membrane_fast_transient_outward_current_conductance", + mp_membrane_fast_transient_outward_current_conductance_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current", + mp_IK1__i_K1_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current_conductance", + mp_membrane_inward_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current_conductance_scaling_factor", + mp_membrane_inward_rectifier_potassium_current_conductance_scaling_factor_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current", + mp_IKr__i_Kr_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current_conductance", + mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current", + mp_IKs__i_Ks_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current_conductance", + mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_slow_transient_outward_current", + mp_Itos__i_tos_modifier); + this->AddModifier("membrane_slow_transient_outward_current_conductance", + mp_membrane_slow_transient_outward_current_conductance_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current", + mp_INaCa__i_NaCa_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current_conductance", + mp_membrane_sodium_calcium_exchanger_current_conductance_modifier); + this->AddModifier("membrane_voltage", + mp_membrane_voltage_modifier); + this->AddModifier("potassium_reversal_potential", + mp_potassium_reversal_potential_modifier); + this->AddModifier("submembrane_space_calcium_concentration", + mp_submembrane_space_calcium_concentration_modifier); + this->AddModifier("submembrane_space_sodium_concentration", + mp_submembrane_space_sodium_concentration_modifier); + this->AddModifier("temperature", + mp_temperature_modifier); + NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_Jleak_SR__KSRleak) [per_millisecond] + NV_Ith_S(this->mParameters, 1) = 25; // (var_Jrel_SR__ks) [per_millisecond] + NV_Ith_S(this->mParameters, 2) = 0.00028600000000000001; // (var_Jpump_SR__V_max) [millimolar_per_millisecond] + NV_Ith_S(this->mParameters, 3) = 1; // (var_Na_buffer__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 15; // (var_model_parameters__Cli) [millimolar] + NV_Ith_S(this->mParameters, 5) = 135; // (var_model_parameters__Ki) [millimolar] + NV_Ith_S(this->mParameters, 6) = 1.8; // (var_model_parameters__Cao) [millimolar] + NV_Ith_S(this->mParameters, 7) = 150; // (var_model_parameters__Clo) [millimolar] + NV_Ith_S(this->mParameters, 8) = 5.4000000000000004; // (var_model_parameters__Ko) [millimolar] + NV_Ith_S(this->mParameters, 9) = 140; // (var_model_parameters__Nao) [millimolar] + NV_Ith_S(this->mParameters, 10) = 96486.699999999997; // (var_model_parameters__F) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 11) = 8314.2999999999993; // (var_model_parameters__R) [joule_per_kilomole_kelvin] + NV_Ith_S(this->mParameters, 12) = 0.00054000000000000001; // (var_ICaL__PCa) [litre_per_farad_millisecond] + NV_Ith_S(this->mParameters, 13) = 0.0089999999999999993; // (var_IClb__G_ClBk) [milliS_per_microF] + NV_Ith_S(this->mParameters, 14) = 0; // (var_membrane_data_clamp_current_conductance) [dimensionless] + NV_Ith_S(this->mParameters, 15) = 16; // (var_INa__G_INa) [milliS_per_microF] + NV_Ith_S(this->mParameters, 16) = 0; // (var_INa__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 17) = 0; // (var_INa__shift_INa_inact) [millivolt] + NV_Ith_S(this->mParameters, 18) = 0.02; // (var_Itof__G_tof) [milliS_per_microF] + NV_Ith_S(this->mParameters, 19) = 0.90000000000000002; // (var_IK1__G_K1_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 20) = 0.029999999999999999; // (var_IKr__G_IKr_const) [milliS_per_microF] + NV_Ith_S(this->mParameters, 21) = 0.070000000000000007; // (var_IKs__G_Ks_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 22) = 0.059999999999999998; // (var_Itos__G_tos) [milliS_per_microF] + NV_Ith_S(this->mParameters, 23) = 9; // (var_INaCa__V_max) [microA_per_microF] + NV_Ith_S(this->mParameters, 24) = 310; // (var_model_parameters__T) [kelvin] + } + + Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::~Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp() + { + } + + + void Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 45; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 18) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 22) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_ICl_Ca__i_Cl_Ca + HeartConfig::Instance()->GetCapacitance() * var_INaK__i_NaK + var_ICaL__i_CaL_converted + var_ICab__i_Cab_converted + var_ICap__i_Cap_converted + var_IClb__i_Clb_converted + var_IK1__i_K1_converted + var_IKr__i_Kr_converted + var_IKs__i_Ks_converted + var_INa__i_Na_converted + var_INaCa__i_NaCa_converted + var_INab__i_Nab_converted + var_Itof__i_tof_converted + var_Itos__i_tos_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(NV_Ith_S(rY, 0), var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__Ca_buffer__Cai = mp_cytosolic_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 1), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.6504944644883e-05 + double var_chaste_interface__INa_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(NV_Ith_S(rY, 2), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(NV_Ith_S(rY, 3), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(NV_Ith_S(rY, 4), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(NV_Ith_S(rY, 12), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(NV_Ith_S(rY, 13), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__R = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.890917121306535 + double var_chaste_interface__Jrel_SR__I = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 8.71752603681652e-08 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = mp_submembrane_space_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 19), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = mp_dyadic_space_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 20), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Na_SL_buf = NV_Ith_S(rY, 21); + // Units: millimolar; Initial value: 0.77606800956492 + double var_chaste_interface__Na_buffer__Na_jct_buf = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 3.55668431730337 + double var_chaste_interface__Na_buffer__Nai = mp_cytosolic_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 23), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = mp_JSR_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 24), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = mp_submembrane_space_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 25), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = mp_dyadic_space_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 26), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.000174045152623969 + double var_chaste_interface__Ca_buffer__Ca_SLB_SL = NV_Ith_S(rY, 27); + // Units: millimolar; Initial value: 0.00973710481246467 + double var_chaste_interface__Ca_buffer__Ca_SLB_jct = NV_Ith_S(rY, 28); + // Units: millimolar; Initial value: 0.00774564218017916 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_SL = NV_Ith_S(rY, 29); + // Units: millimolar; Initial value: 0.113168405274355 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_jct = NV_Ith_S(rY, 30); + // Units: millimolar; Initial value: 0.0772568134367606 + double var_chaste_interface__Ca_buffer__Ca_Calsequestrin = NV_Ith_S(rY, 31); + // Units: millimolar; Initial value: 1.18828527890062 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC = NV_Ith_S(rY, 32); + // Units: millimolar; Initial value: 0.00886665040283094 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = NV_Ith_S(rY, 33); + // Units: millimolar; Initial value: 0.117873278193472 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = NV_Ith_S(rY, 34); + // Units: millimolar; Initial value: 0.0103906683506505 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin = NV_Ith_S(rY, 35); + // Units: millimolar; Initial value: 0.000293073957804278 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin = NV_Ith_S(rY, 36); + // Units: millimolar; Initial value: 0.00195899238146509 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin = NV_Ith_S(rY, 37); + // Units: millimolar; Initial value: 0.137523520981802 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB = NV_Ith_S(rY, 38); + // Units: millimolar; Initial value: 0.00215728901718264 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = NV_Ith_S(rY, 39); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = NV_Ith_S(rY, 40); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = NV_Ith_S(rY, 41); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = NV_Ith_S(rY, 42); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = NV_Ith_S(rY, 43); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = NV_Ith_S(rY, 44); + // Units: millimolar; Initial value: 0.0 + + // Mathematics + double d_dt_chaste_interface_var_cell__V; + const double var_Ca_buffer__Bmax_Calsequestrin = 0.14000000000000001; // millimolar + const double var_Ca_buffer__Bmax_SLB_SL = 0.037400000000000003; // millimolar + const double var_Ca_buffer__Bmax_SLB_jct = 0.0045999999999999999; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_SL = 0.0134; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_jct = 0.00165; // millimolar + const double var_Ca_buffer__koff_Calsequestrin = 65; // per_millisecond + const double var_Ca_buffer__koff_SLB = 1.3; // per_millisecond + const double var_Ca_buffer__koff_SLHigh = 0.029999999999999999; // per_millisecond + const double var_Ca_buffer__kon_Calsequestrin = 100; // per_millimolar_per_millisecond + const double var_Ca_buffer__kon_SL = 100; // per_millimolar_per_millisecond + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL) * var_chaste_interface__Ca_buffer__Ca_SL; // 1 / millisecond + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct) * var_chaste_interface__Ca_buffer__Ca_jct; // 1 / millisecond + const double var_ICaL_fCa_gate__fCa_SL = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL, var_chaste_interface__environment__time); // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jleak_SR__j_leak_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * mp_SR_leak_current_max_modifier->Calc(NV_Ith_S(mParameters, 0), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double var_Jpump_SR__H = 1.7869999999999999; // dimensionless + const double var_Jpump_SR__Kmf = 0.00024600000000000002; // millimolar + const double var_Jpump_SR__Kmr = 1.7; // millimolar + const double var_Jpump_SR__Q10_SRCaP = 2.6000000000000001; // dimensionless + const double var_Jrel_SR__EC50_SR = 0.45000000000000001; // millimolar + const double var_Jrel_SR__HSR = 2.5; // dimensionless + const double var_Jrel_SR__Max_SR = 15; // dimensionless + const double var_Jrel_SR__Min_SR = 1; // dimensionless + const double var_Jrel_SR__RI = 1 - var_chaste_interface__Jrel_SR__I - var_chaste_interface__Jrel_SR__O - var_chaste_interface__Jrel_SR__R; // dimensionless + const double var_Jrel_SR__kCaSR = -(-var_Jrel_SR__Min_SR + var_Jrel_SR__Max_SR) / (1 + pow((var_Jrel_SR__EC50_SR / var_chaste_interface__Ca_buffer__Ca_SR), var_Jrel_SR__HSR)) + var_Jrel_SR__Max_SR; // dimensionless + const double var_Jrel_SR__kiCa = 0.5; // per_millimolar_per_millisecond + const double var_Jrel_SR__kiSRCa = var_Jrel_SR__kCaSR * var_Jrel_SR__kiCa; // per_millimolar_per_millisecond + const double var_Jrel_SR__kim = 0.0050000000000000001; // per_millisecond + const double var_Jrel_SR__koCa = 10; // per_millimolar2_per_millisecond + const double var_Jrel_SR__koSRCa = var_Jrel_SR__koCa / var_Jrel_SR__kCaSR; // per_millimolar2_per_millisecond + const double var_Jrel_SR__kom = 0.059999999999999998; // per_millisecond + const double d_dt_chaste_interface_var_Jrel_SR__I = -var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_Jrel_SR__RI * var_Jrel_SR__koSRCa + var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__O = var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__R = var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + var_Jrel_SR__RI * var_Jrel_SR__kim - pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double var_Jrel_SR__j_rel_SR = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * mp_SR_release_current_max_modifier->Calc(NV_Ith_S(mParameters, 1), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double var_Na_buffer__Bmax_SL = 1.6499999999999999; // millimolar + const double var_Na_buffer__Bmax_jct = 7.5609999999999999; // millimolar + const double var_Na_buffer__koff = 0.001; // per_millisecond + const double var_Na_buffer__kon = 0.0001; // per_millimolar_per_millisecond + const double var_Na_buffer__dNa_SL_buf = -var_chaste_interface__Na_buffer__Na_SL_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_SL_buf + var_Na_buffer__Bmax_SL) * var_chaste_interface__Na_buffer__Na_SL * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_SL_buf = var_Na_buffer__dNa_SL_buf; // millimolar / millisecond + const double var_Na_buffer__dNa_jct_buf = -var_chaste_interface__Na_buffer__Na_jct_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_jct_buf + var_Na_buffer__Bmax_jct) * var_chaste_interface__Na_buffer__Na_jct * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_jct_buf = var_Na_buffer__dNa_jct_buf; // millimolar / millisecond + const double var_ICaL_d_gate__d_infinity = 1 / (1 + exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_d_gate__tau_d = 28.571428571428569 * (1 - exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)) * var_ICaL_d_gate__d_infinity / (14.5 + var_chaste_interface__cell__V); // millisecond + const double d_dt_chaste_interface_var_ICaL_d_gate__d = (-var_chaste_interface__ICaL_d_gate__d + var_ICaL_d_gate__d_infinity) / var_ICaL_d_gate__tau_d; // 1 / millisecond + const double var_ICaL_f_gate__f_infinity = 1 / (1 + exp(9.7388888888888889 + 0.27777777777777779 * var_chaste_interface__cell__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2))), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_ICaL_f_gate__f = (-var_chaste_interface__ICaL_f_gate__f + var_ICaL_f_gate__f_infinity) / var_ICaL_f_gate__tau_f; // 1 / millisecond + const double var_IKr_Xr_gate__Xr_infinity = 1 / (1 + exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr_Xr_gate__tau_Xr = 1 / (0.00060999999999999997 * (10 + var_chaste_interface__cell__V) / (-1 + exp(1.45 + 0.14499999999999999 * var_chaste_interface__cell__V)) + 0.0013799999999999999 * (7 + var_chaste_interface__cell__V) / (1 - exp(-0.86099999999999999 - 0.123 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKr_Xr_gate__Xr = (-var_chaste_interface__IKr_Xr_gate__Xr + var_IKr_Xr_gate__Xr_infinity) / var_IKr_Xr_gate__tau_Xr; // 1 / millisecond + const double var_IKs_Xs_gate__Xs_infinity = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKs_Xs_gate__tau_Xs = 1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKs_Xs_gate__Xs = (-var_chaste_interface__IKs_Xs_gate__Xs + var_IKs_Xs_gate__Xs_infinity) / var_IKs_Xs_gate__tau_Xs; // 1 / millisecond + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__h_infinity = 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 16), var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 16), var_chaste_interface__environment__time)) * var_INa_h_gate__alpha_h / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // dimensionless + const double var_INa_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_INa_h_gate__h = (-var_chaste_interface__INa_h_gate__h + var_INa_h_gate__h_infinity) / var_INa_h_gate__tau_h; // 1 / millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__j_infinity = 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 16), var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 16), var_chaste_interface__environment__time)) * var_INa_j_gate__alpha_j / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // dimensionless + const double var_INa_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_INa_j_gate__j = (-var_chaste_interface__INa_j_gate__j + var_INa_j_gate__j_infinity) / var_INa_j_gate__tau_j; // 1 / millisecond + const double var_INa_m_gate__alpha_m = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__cell__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_millisecond + const double var_INa_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__cell__V); // per_millisecond + const double var_INa_m_gate__m_infinity = var_INa_m_gate__alpha_m / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // dimensionless + const double var_INa_m_gate__tau_m = 1 / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // millisecond + const double d_dt_chaste_interface_var_INa_m_gate__m = (-var_chaste_interface__INa_m_gate__m + var_INa_m_gate__m_infinity) / var_INa_m_gate__tau_m; // 1 / millisecond + const double var_Itof_X_gate__X_tof_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_X_gate__tau_X_tof = 1.5 + 3.5 * exp(-0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2)); // millisecond + const double d_dt_chaste_interface_var_Itof_X_gate__X_tof = (-var_chaste_interface__Itof_X_gate__X_tof + var_Itof_X_gate__X_tof_infinity) / var_Itof_X_gate__tau_X_tof; // 1 / millisecond + const double var_Itof_Y_gate__Y_tof_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_Y_gate__tau_Y_tof = 20 + 20 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itof_Y_gate__Y_tof = (-var_chaste_interface__Itof_Y_gate__Y_tof + var_Itof_Y_gate__Y_tof_infinity) / var_Itof_Y_gate__tau_Y_tof; // 1 / millisecond + const double var_Itos_R_gate__R_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_R_gate__tau_R_tos = 220 + 2800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_R_gate__R_tos = (-var_chaste_interface__Itos_R_gate__R_tos + var_Itos_R_gate__R_tos_infinity) / var_Itos_R_gate__tau_R_tos; // 1 / millisecond + const double var_Itos_X_gate__X_tos_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_X_gate__tau_X_tos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_X_gate__X_tos = (-var_chaste_interface__Itos_X_gate__X_tos + var_Itos_X_gate__X_tos_infinity) / var_Itos_X_gate__tau_X_tos; // 1 / millisecond + const double var_Itos_Y_gate__Y_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_Y_gate__tau_Y_tos = 30 + 3000 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_Y_gate__Y_tos = (-var_chaste_interface__Itos_Y_gate__Y_tos + var_Itos_Y_gate__Y_tos_infinity) / var_Itos_Y_gate__tau_Y_tos; // 1 / millisecond + const double var_cytosolic_Ca_buffer__Bmax_Calmodulin = 0.024; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_SRB = 0.017100000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC = 0.070000000000000007; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__koff_Calmodulin = 0.23799999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Ca = 0.00046000000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Mg = 5.7000000000000003e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_SRB = 0.059999999999999998; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC = 0.019599999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca = 3.1999999999999999e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg = 0.0033300000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__kon_Calmodulin = 34; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Calmodulin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin * var_cytosolic_Ca_buffer__koff_Calmodulin + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin + var_cytosolic_Ca_buffer__Bmax_Calmodulin) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Calmodulin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin = var_cytosolic_Ca_buffer__dCa_Calmodulin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Ca = 13.800000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Myosin_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin = var_cytosolic_Ca_buffer__dCa_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Mg = 0.015699999999999999; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__kon_SRB = 100; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_SRB = -var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB * var_cytosolic_Ca_buffer__koff_SRB + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB + var_cytosolic_Ca_buffer__Bmax_SRB) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_SRB; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB = var_cytosolic_Ca_buffer__dCa_SRB; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC = 32.700000000000003; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC * var_cytosolic_Ca_buffer__koff_TroponinC + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC + var_cytosolic_Ca_buffer__Bmax_TroponinC) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC = var_cytosolic_Ca_buffer__dCa_TroponinC; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca = 2.3700000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg = 0.0030000000000000001; // per_millimolar_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 = 0.11; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 = 0.059999999999999998; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3 = 100; // per_millimolar2_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Indo1 = 100; // per_millimolar2_per_millisecond + const double var_ion_diffusion__J_Ca_SL_cytosol = 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Ca_SL - 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Cai; // millimole_per_millisecond + const double var_ion_diffusion__J_Ca_jct_SL = 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_jct - 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_SL; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_SL_cytosol = 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Na_SL - 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Nai; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_jct_SL = 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_jct - 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_SL; // millimole_per_millisecond + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_model_parameters__Mgi = 1; // millimolar + const double var_cytosolic_Ca_buffer__dMg_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Mg) * var_cytosolic_Ca_buffer__kon_Myosin_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin = var_cytosolic_Ca_buffer__dMg_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg) * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound = var_cytosolic_Ca_buffer__dCa_Calmodulin + var_cytosolic_Ca_buffer__dCa_Myosin + var_cytosolic_Ca_buffer__dCa_SRB + var_cytosolic_Ca_buffer__dCa_TroponinC + var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__dMg_Myosin + var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar_per_millisecond + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_SL * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 12), var_chaste_interface__environment__time) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_jct * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 12), var_chaste_interface__environment__time) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) * exp(var_INaCa__eta * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))) - pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 23), var_chaste_interface__environment__time) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) * exp(var_INaCa__eta * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))) - pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 23), var_chaste_interface__environment__time) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time))); // microA_per_microF + const double var_Jpump_SR__Q_SRCaP = pow(var_Jpump_SR__Q10_SRCaP, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Vol_Cell = 3.1415926540000002e-15 * pow(var_model_parameters__cell_radius, 2) * var_model_parameters__cell_length; // liter + const double var_model_parameters__Vol_SL = 0.02 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_SR = 0.035000000000000003 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_cytosol = 0.65000000000000002 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_SL = -var_chaste_interface__Ca_buffer__Ca_SLB_SL * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_SL + var_Ca_buffer__Bmax_SLB_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_SL = -var_chaste_interface__Ca_buffer__Ca_SLHigh_SL * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_SL + var_Ca_buffer__Bmax_SLHigh_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SL_tot_bound = var_Ca_buffer__dCa_SLB_SL + var_Ca_buffer__dCa_SLHigh_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCalsequestrin = -var_chaste_interface__Ca_buffer__Ca_Calsequestrin * var_Ca_buffer__koff_Calsequestrin + (-var_chaste_interface__Ca_buffer__Ca_Calsequestrin + var_Ca_buffer__Bmax_Calsequestrin * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR) * var_chaste_interface__Ca_buffer__Ca_SR * var_Ca_buffer__kon_Calsequestrin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin = var_Ca_buffer__dCalsequestrin; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL = var_Ca_buffer__dCa_SLB_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL = var_Ca_buffer__dCa_SLHigh_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Na_buffer__Nai = mp_concentration_clamp_onoff_modifier->Calc(NV_Ith_S(mParameters, 3), var_chaste_interface__environment__time) * var_ion_diffusion__J_Na_SL_cytosol / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_Jpump_SR__j_pump_SR = (pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) - pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_Jpump_SR__Q_SRCaP * mp_SR_uptake_current_max_modifier->Calc(NV_Ith_S(mParameters, 2), var_chaste_interface__environment__time) * var_model_parameters__Vol_cytosol / ((1 + pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) + pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_model_parameters__Vol_SR); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SR = -var_Ca_buffer__dCalsequestrin - var_Jrel_SR__j_rel_SR - var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR + var_Jpump_SR__j_pump_SR; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Cai = -1 * var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound + var_ion_diffusion__J_Ca_SL_cytosol / var_model_parameters__Vol_cytosol - var_Jpump_SR__j_pump_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_model_parameters__Vol_jct = 0.00051000000000000004 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_jct = -var_chaste_interface__Ca_buffer__Ca_SLB_jct * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLB_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_jct = -var_chaste_interface__Ca_buffer__Ca_SLHigh_jct * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLHigh_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_jct_tot_bound = var_Ca_buffer__dCa_SLB_jct + var_Ca_buffer__dCa_SLHigh_jct; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct = var_Ca_buffer__dCa_SLB_jct; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct = var_Ca_buffer__dCa_SLHigh_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct; // millimolar / millisecond + const double var_reversal_potentials__E_Ca_SL = 0.5 * mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) / var_chaste_interface__Ca_buffer__Ca_SL) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_SL_tot = -2 * var_INaCa__i_NaCa_SL + var_ICaL__i_CaL_Ca_SL + var_ICab__i_Cab_SL + var_ICap__i_Cap_SL; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SL = -1 * var_Ca_buffer__dCa_SL_tot_bound + (-var_ion_diffusion__J_Ca_SL_cytosol + var_ion_diffusion__J_Ca_jct_SL) / var_model_parameters__Vol_SL - 0.5 * var_Ca_buffer__i_Ca_SL_tot * var_model_parameters__Cm / (mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) * var_model_parameters__Vol_SL); // millimolar / millisecond + const double var_reversal_potentials__E_Ca_jct = 0.5 * mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) / var_chaste_interface__Ca_buffer__Ca_jct) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_jct_tot = -2 * var_INaCa__i_NaCa_jct + var_ICaL__i_CaL_Ca_jct + var_ICab__i_Cab_jct + var_ICap__i_Cap_jct; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_jct = -1 * var_Ca_buffer__dCa_jct_tot_bound - var_ion_diffusion__J_Ca_jct_SL / var_model_parameters__Vol_jct + var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct + var_Jrel_SR__j_rel_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_jct - 0.5 * var_Ca_buffer__i_Ca_jct_tot * var_model_parameters__Cm / (mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) * var_model_parameters__Vol_jct); // millimolar / millisecond + const double var_reversal_potentials__E_Na_SL = mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) / var_chaste_interface__Na_buffer__Na_SL) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * mp_membrane_fast_sodium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 15), var_chaste_interface__environment__time) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_SL = (-var_Na_buffer__dNa_SL_buf + (-var_ion_diffusion__J_Na_SL_cytosol + var_ion_diffusion__J_Na_jct_SL) / var_model_parameters__Vol_SL - (3 * var_INaCa__i_NaCa_SL + 3 * var_INaK__i_NaK_SL + var_ICaL__i_CaL_Na_SL + var_INa__i_Na_SL + var_INab__i_Nab_SL) * var_model_parameters__Cm / (mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) * var_model_parameters__Vol_SL)) * mp_concentration_clamp_onoff_modifier->Calc(NV_Ith_S(mParameters, 3), var_chaste_interface__environment__time); // millimolar / millisecond + const double var_reversal_potentials__E_Na_jct = mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) / var_chaste_interface__Na_buffer__Na_jct) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * mp_membrane_fast_sodium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 15), var_chaste_interface__environment__time) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_jct = (-var_Na_buffer__dNa_jct_buf - var_ion_diffusion__J_Na_jct_SL / var_model_parameters__Vol_jct - (3 * var_INaCa__i_NaCa_jct + 3 * var_INaK__i_NaK_jct + var_ICaL__i_CaL_Na_jct + var_INa__i_Na_jct + var_INab__i_Nab_jct) * var_model_parameters__Cm / (mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) * var_model_parameters__Vol_jct)) * mp_concentration_clamp_onoff_modifier->Calc(NV_Ith_S(mParameters, 3), var_chaste_interface__environment__time); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_cell__V = 0.0; + } + else + { + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 21), var_chaste_interface__environment__time); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 21), var_chaste_interface__environment__time); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_IK1__G_K1 = mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_scaling_factor_modifier->Calc(NV_Ith_S(mParameters, 19), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 20), var_chaste_interface__environment__time); // milliS_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time) + var_ICaL__gamma_Ki * mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time) * exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL = mp_ICaL__i_CaL_modifier->Calc(var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_ICap__i_Cap = mp_ICap__i_Cap_modifier->Calc(var_ICap__i_Cap_SL + var_ICap__i_Cap_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_IKs__E_Ks = mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log((var_IKs__pKNa * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time))) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = mp_IKs__i_Ks_modifier->Calc(var_IKs__i_Ks_SL + var_IKs__i_Ks_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_INaCa__i_NaCa = mp_INaCa__i_NaCa_modifier->Calc(var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_ICab__i_Cab = mp_ICab__i_Cab_modifier->Calc(var_ICab__i_Cab_SL + var_ICab__i_Cab_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_reversal_potentials__E_Cl = mp_chloride_reversal_potential_modifier->Calc(-mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_chloride_concentration_modifier->Calc(NV_Ith_S(mParameters, 7), var_chaste_interface__environment__time) / mp_cytosolic_chloride_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time)) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = mp_IClb__i_Clb_modifier->Calc((-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * mp_membrane_background_chloride_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 13), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_reversal_potentials__E_K = mp_potassium_reversal_potential_modifier->Calc(mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time) / mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = mp_IK1__i_K1_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity, var_chaste_interface__environment__time); // microA_per_microF + const double var_IKr__i_Kr = mp_IKr__i_Kr_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_Itof__i_tof = mp_Itof__i_tof_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * mp_membrane_fast_transient_outward_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 18), var_chaste_interface__environment__time) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof, var_chaste_interface__environment__time); // microA_per_microF + const double var_Itos__i_tos = mp_Itos__i_tos_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * mp_membrane_slow_transient_outward_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 22), var_chaste_interface__environment__time) * var_chaste_interface__Itos_X_gate__X_tos, var_chaste_interface__environment__time); // microA_per_microF + const double var_INa__i_Na = mp_INa__i_Na_modifier->Calc(var_INa__i_Na_SL + var_INa__i_Na_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_INab__i_Nab = mp_INab__i_Nab_modifier->Calc(var_INab__i_Nab_SL + var_INab__i_Nab_jct, var_chaste_interface__environment__time); // microA_per_microF + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 14); // uA_per_cm2 + } + d_dt_chaste_interface_var_cell__V = -var_ICaL__i_CaL - var_ICab__i_Cab - var_ICap__i_Cap - var_ICl_Ca__i_Cl_Ca - var_IClb__i_Clb - var_IK1__i_K1 - var_IKr__i_Kr - var_IKs__i_Ks - var_INa__i_Na - var_INaCa__i_NaCa - var_INaK__i_NaK - var_INab__i_Nab - var_Itof__i_tof - var_Itos__i_tos - var_cell__i_Stim - var_chaste_interface__membrane_data_clamp_current; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_cell__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_buffer__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_INa_h_gate__h; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_INa_j_gate__j; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_INa_m_gate__m; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_IKr_Xr_gate__Xr; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_IKs_Xs_gate__Xs; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_Itos_X_gate__X_tos; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_Itos_Y_gate__Y_tos; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_Itos_R_gate__R_tos; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_Itof_X_gate__X_tof; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_Itof_Y_gate__Y_tof; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_ICaL_d_gate__d; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_ICaL_f_gate__f; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_Jrel_SR__R; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_Jrel_SR__I; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_Jrel_SR__O; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_Na_buffer__Na_SL; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_Na_buffer__Na_jct; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_Na_buffer__Na_SL_buf; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_Na_buffer__Na_jct_buf; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Na_buffer__Nai; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Ca_buffer__Ca_SR; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Ca_buffer__Ca_SL; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Ca_buffer__Ca_jct; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct; + NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL; + NV_Ith_S(rDY,30) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct; + NV_Ith_S(rDY,31) = d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin; + NV_Ith_S(rDY,32) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC; + NV_Ith_S(rDY,33) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg; + NV_Ith_S(rDY,34) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg; + NV_Ith_S(rDY,35) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin; + NV_Ith_S(rDY,36) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin; + NV_Ith_S(rDY,37) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin; + NV_Ith_S(rDY,38) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB; + NV_Ith_S(rDY,39) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; + NV_Ith_S(rDY,40) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; + NV_Ith_S(rDY,41) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + NV_Ith_S(rDY,42) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; + NV_Ith_S(rDY,43) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; + NV_Ith_S(rDY,44) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + } + + N_Vector Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(NV_Ith_S(rY, 0), var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(NV_Ith_S(rY, 2), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(NV_Ith_S(rY, 3), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(NV_Ith_S(rY, 4), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(NV_Ith_S(rY, 12), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(NV_Ith_S(rY, 13), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = mp_submembrane_space_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 19), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = mp_dyadic_space_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 20), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = mp_cytosolic_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 23), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = mp_JSR_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 24), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = mp_submembrane_space_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 25), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = mp_dyadic_space_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 26), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.000174045152623969 + + // Mathematics + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL, var_chaste_interface__environment__time); // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 21), var_chaste_interface__environment__time); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 21), var_chaste_interface__environment__time); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jrel_SR__j_rel_SR = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * mp_SR_release_current_max_modifier->Calc(NV_Ith_S(mParameters, 1), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double var_ICaL_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2))), var_chaste_interface__environment__time); // millisecond + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 14); // uA_per_cm2 + } + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_IK1__G_K1 = mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_scaling_factor_modifier->Calc(NV_Ith_S(mParameters, 19), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 20), var_chaste_interface__environment__time); // milliS_per_microF + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_SL * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 12), var_chaste_interface__environment__time) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_jct * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 12), var_chaste_interface__environment__time) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time) + var_ICaL__gamma_Ki * mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time) * exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL = mp_ICaL__i_CaL_modifier->Calc(var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = mp_ICap__i_Cap_modifier->Calc(var_ICap__i_Cap_SL + var_ICap__i_Cap_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log((var_IKs__pKNa * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time))) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = mp_IKs__i_Ks_modifier->Calc(var_IKs__i_Ks_SL + var_IKs__i_Ks_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) * exp(var_INaCa__eta * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))) - pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 23), var_chaste_interface__environment__time) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) * exp(var_INaCa__eta * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))) - pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 23), var_chaste_interface__environment__time) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = mp_INaCa__i_NaCa_modifier->Calc(var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Cm_converted = mp_membrane_capacitance_modifier->Calc(1000000 * var_model_parameters__Cm, var_chaste_interface__environment__time); // uF + const double var_reversal_potentials__E_Ca_SL = 0.5 * mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) / var_chaste_interface__Ca_buffer__Ca_SL) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) / var_chaste_interface__Ca_buffer__Ca_jct) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = mp_ICab__i_Cab_modifier->Calc(var_ICab__i_Cab_SL + var_ICab__i_Cab_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = mp_chloride_reversal_potential_modifier->Calc(-mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_chloride_concentration_modifier->Calc(NV_Ith_S(mParameters, 7), var_chaste_interface__environment__time) / mp_cytosolic_chloride_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time)) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // millivolt + const double var_IClb__i_Clb = mp_IClb__i_Clb_modifier->Calc((-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * mp_membrane_background_chloride_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 13), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = mp_potassium_reversal_potential_modifier->Calc(mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time) / mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = mp_IK1__i_K1_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity, var_chaste_interface__environment__time); // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = mp_IKr__i_Kr_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = mp_Itof__i_tof_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * mp_membrane_fast_transient_outward_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 18), var_chaste_interface__environment__time) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof, var_chaste_interface__environment__time); // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = mp_Itos__i_tos_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * mp_membrane_slow_transient_outward_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 22), var_chaste_interface__environment__time) * var_chaste_interface__Itos_X_gate__X_tos, var_chaste_interface__environment__time); // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) / var_chaste_interface__Na_buffer__Na_SL) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * mp_membrane_fast_sodium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 15), var_chaste_interface__environment__time) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) / var_chaste_interface__Na_buffer__Na_jct) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * mp_membrane_fast_sodium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 15), var_chaste_interface__environment__time) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = mp_INa__i_Na_modifier->Calc(var_INa__i_Na_SL + var_INa__i_Na_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = mp_INab__i_Nab_modifier->Calc(var_INab__i_Nab_SL + var_INab__i_Nab_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(24, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(24); +#endif + NV_Ith_S(dqs, 0) = var_Jrel_SR__j_rel_SR; + NV_Ith_S(dqs, 1) = var_reversal_potentials__E_Cl; + NV_Ith_S(dqs, 2) = var_ICaL__i_CaL_converted; + NV_Ith_S(dqs, 3) = var_ICaL_fCa_gate__fCa_SL; + NV_Ith_S(dqs, 4) = var_ICaL_f_gate__tau_f; + NV_Ith_S(dqs, 5) = var_ICab__i_Cab_converted; + NV_Ith_S(dqs, 6) = var_IClb__i_Clb_converted; + NV_Ith_S(dqs, 7) = var_INab__i_Nab_converted; + NV_Ith_S(dqs, 8) = var_ICap__i_Cap_converted; + NV_Ith_S(dqs, 9) = var_model_parameters__Cm_converted; + NV_Ith_S(dqs, 10) = var_chaste_interface__membrane_data_clamp_current; + NV_Ith_S(dqs, 11) = var_INa__i_Na_converted; + NV_Ith_S(dqs, 12) = var_INa_h_gate__tau_h; + NV_Ith_S(dqs, 13) = var_INa_j_gate__tau_j; + NV_Ith_S(dqs, 14) = var_Itof__i_tof_converted; + NV_Ith_S(dqs, 15) = var_IK1__i_K1_converted; + NV_Ith_S(dqs, 16) = var_IK1__G_K1; + NV_Ith_S(dqs, 17) = var_IKr__i_Kr_converted; + NV_Ith_S(dqs, 18) = var_IKs__i_Ks_converted; + NV_Ith_S(dqs, 19) = var_Itos__i_tos_converted; + NV_Ith_S(dqs, 20) = var_INaCa__i_NaCa_converted; + NV_Ith_S(dqs, 21) = var_cell__i_Stim_converted; + NV_Ith_S(dqs, 22) = var_reversal_potentials__E_K; + NV_Ith_S(dqs, 23) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "shannon_wang_puglisi_weber_bers_2004_model_updated"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-85.721630473733); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.6504944644883e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.98714602875678); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.991826348770428); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0013702407736465); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("IKr_Xr_gate__Xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00846906175020028); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("IKs_Xs_gate__Xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00613557812033723); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("Itos_X_gate__X_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401072468238921); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("Itos_Y_gate__Y_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.31555225368514); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("Itos_R_gate__R_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.402577243036347); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("Itof_X_gate__X_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401068798369438); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("Itof_Y_gate__Y_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.994632857675454); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.99526086177479e-06); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.00067601563206); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_SL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0150193299768419); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_jct"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0244048782575591); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("Jrel_SR__R"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.890917121306535); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("Jrel_SR__I"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.71752603681652e-08); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("Jrel_SR__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.1199533741995e-07); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87161932058707); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87031835089116); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("Na_buffer__Na_SL_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.77606800956492); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("Na_buffer__Na_jct_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(3.55668431730337); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87200572571131); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.547125831028543); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000104971310105451); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000174045152623969); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00973710481246467); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00774564218017916); + + // NV_Ith_S(rY, 29): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.113168405274355); + + // NV_Ith_S(rY, 30): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0772568134367606); + + // NV_Ith_S(rY, 31): + this->mVariableNames.push_back("Ca_buffer__Ca_Calsequestrin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.18828527890062); + + // NV_Ith_S(rY, 32): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00886665040283094); + + // NV_Ith_S(rY, 33): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.117873278193472); + + // NV_Ith_S(rY, 34): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0103906683506505); + + // NV_Ith_S(rY, 35): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Calmodulin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000293073957804278); + + // NV_Ith_S(rY, 36): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00195899238146509); + + // NV_Ith_S(rY, 37): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.137523520981802); + + // NV_Ith_S(rY, 38): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_SRB"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00215728901718264); + + // NV_Ith_S(rY, 39): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 40): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 41): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 42): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 43): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 44): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("cytosolic_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[9]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[10]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[11]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kilomole_kelvin"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("litre_per_farad_millisecond"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_background_chloride_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_data_clamp_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[22]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[23]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[24]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mDerivedQuantityUnits.push_back("dimensionless"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_background_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_background_chloride_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_background_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_data_clamp_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [23]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/Shannon2004_with_modifiers--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/Shannon2004_with_modifiers--sympy_1_14.cpp new file mode 100644 index 00000000..55b3ea9c --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/Shannon2004_with_modifiers--sympy_1_14.cpp @@ -0,0 +1,1562 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: shannon_wang_puglisi_weber_bers_2004_model_updated +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: CvodeCellWithDataClamp) +//! on (date omitted as unimportant) +//! +//! + +#include "Shannon2004_with_modifiers.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + +#include "ModelFactory.hpp" + +AbstractCardiacCellWithModifiers* Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp(p_solver, p_stimulus); +} + +bool Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::registered = ModelFactory::Register("Shannon2004_with_modifiers", "CvodeCellWithDataClamp", (ModelFactory::TCreateMethod)Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::CreateMethod); + + + + boost::shared_ptr Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 5; // millisecond + const double var_chaste_interface__cell__stim_period = 1000; // millisecond + const double var_chaste_interface__cell__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCellWithModifiers( + pOdeSolver, + 45, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + // These will get initialised to DummyModifiers in the base class method. + this->AddModifier("JSR_calcium_concentration", + mp_JSR_calcium_concentration_modifier); + this->AddModifier("SR_leak_current_max", + mp_SR_leak_current_max_modifier); + this->AddModifier("SR_release_current", + mp_SR_release_current_modifier); + this->AddModifier("SR_release_current_max", + mp_SR_release_current_max_modifier); + this->AddModifier("SR_uptake_current_max", + mp_SR_uptake_current_max_modifier); + this->AddModifier("chloride_reversal_potential", + mp_chloride_reversal_potential_modifier); + this->AddModifier("concentration_clamp_onoff", + mp_concentration_clamp_onoff_modifier); + this->AddModifier("cytosolic_calcium_concentration", + mp_cytosolic_calcium_concentration_modifier); + this->AddModifier("cytosolic_chloride_concentration", + mp_cytosolic_chloride_concentration_modifier); + this->AddModifier("cytosolic_potassium_concentration", + mp_cytosolic_potassium_concentration_modifier); + this->AddModifier("cytosolic_sodium_concentration", + mp_cytosolic_sodium_concentration_modifier); + this->AddModifier("dyadic_space_calcium_concentration", + mp_dyadic_space_calcium_concentration_modifier); + this->AddModifier("dyadic_space_sodium_concentration", + mp_dyadic_space_sodium_concentration_modifier); + this->AddModifier("extracellular_calcium_concentration", + mp_extracellular_calcium_concentration_modifier); + this->AddModifier("extracellular_chloride_concentration", + mp_extracellular_chloride_concentration_modifier); + this->AddModifier("extracellular_potassium_concentration", + mp_extracellular_potassium_concentration_modifier); + this->AddModifier("extracellular_sodium_concentration", + mp_extracellular_sodium_concentration_modifier); + this->AddModifier("faraday_constant", + mp_faraday_constant_modifier); + this->AddModifier("gas_constant", + mp_gas_constant_modifier); + this->AddModifier("membrane_L_type_calcium_current", + mp_ICaL__i_CaL_modifier); + this->AddModifier("membrane_L_type_calcium_current_conductance", + mp_membrane_L_type_calcium_current_conductance_modifier); + this->AddModifier("membrane_L_type_calcium_current_d_gate", + mp_membrane_L_type_calcium_current_d_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate", + mp_membrane_L_type_calcium_current_fCa_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate", + mp_membrane_L_type_calcium_current_f_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate_tau", + mp_membrane_L_type_calcium_current_f_gate_tau_modifier); + this->AddModifier("membrane_background_calcium_current", + mp_ICab__i_Cab_modifier); + this->AddModifier("membrane_background_chloride_current", + mp_IClb__i_Clb_modifier); + this->AddModifier("membrane_background_chloride_current_conductance", + mp_membrane_background_chloride_current_conductance_modifier); + this->AddModifier("membrane_background_sodium_current", + mp_INab__i_Nab_modifier); + this->AddModifier("membrane_calcium_pump_current", + mp_ICap__i_Cap_modifier); + this->AddModifier("membrane_capacitance", + mp_membrane_capacitance_modifier); + this->AddModifier("membrane_fast_sodium_current", + mp_INa__i_Na_modifier); + this->AddModifier("membrane_fast_sodium_current_conductance", + mp_membrane_fast_sodium_current_conductance_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate", + mp_membrane_fast_sodium_current_h_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate_tau", + mp_membrane_fast_sodium_current_h_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate", + mp_membrane_fast_sodium_current_j_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate_tau", + mp_membrane_fast_sodium_current_j_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_m_gate", + mp_membrane_fast_sodium_current_m_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_reduced_inactivation", + mp_membrane_fast_sodium_current_reduced_inactivation_modifier); + this->AddModifier("membrane_fast_sodium_current_shift_inactivation", + mp_membrane_fast_sodium_current_shift_inactivation_modifier); + this->AddModifier("membrane_fast_transient_outward_current", + mp_Itof__i_tof_modifier); + this->AddModifier("membrane_fast_transient_outward_current_conductance", + mp_membrane_fast_transient_outward_current_conductance_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current", + mp_IK1__i_K1_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current_conductance", + mp_membrane_inward_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current_conductance_scaling_factor", + mp_membrane_inward_rectifier_potassium_current_conductance_scaling_factor_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current", + mp_IKr__i_Kr_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current_conductance", + mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current", + mp_IKs__i_Ks_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current_conductance", + mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_slow_transient_outward_current", + mp_Itos__i_tos_modifier); + this->AddModifier("membrane_slow_transient_outward_current_conductance", + mp_membrane_slow_transient_outward_current_conductance_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current", + mp_INaCa__i_NaCa_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current_conductance", + mp_membrane_sodium_calcium_exchanger_current_conductance_modifier); + this->AddModifier("membrane_voltage", + mp_membrane_voltage_modifier); + this->AddModifier("potassium_reversal_potential", + mp_potassium_reversal_potential_modifier); + this->AddModifier("submembrane_space_calcium_concentration", + mp_submembrane_space_calcium_concentration_modifier); + this->AddModifier("submembrane_space_sodium_concentration", + mp_submembrane_space_sodium_concentration_modifier); + this->AddModifier("temperature", + mp_temperature_modifier); + NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_Jleak_SR__KSRleak) [per_millisecond] + NV_Ith_S(this->mParameters, 1) = 25; // (var_Jrel_SR__ks) [per_millisecond] + NV_Ith_S(this->mParameters, 2) = 0.00028600000000000001; // (var_Jpump_SR__V_max) [millimolar_per_millisecond] + NV_Ith_S(this->mParameters, 3) = 1; // (var_Na_buffer__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 15; // (var_model_parameters__Cli) [millimolar] + NV_Ith_S(this->mParameters, 5) = 135; // (var_model_parameters__Ki) [millimolar] + NV_Ith_S(this->mParameters, 6) = 1.8; // (var_model_parameters__Cao) [millimolar] + NV_Ith_S(this->mParameters, 7) = 150; // (var_model_parameters__Clo) [millimolar] + NV_Ith_S(this->mParameters, 8) = 5.4000000000000004; // (var_model_parameters__Ko) [millimolar] + NV_Ith_S(this->mParameters, 9) = 140; // (var_model_parameters__Nao) [millimolar] + NV_Ith_S(this->mParameters, 10) = 96486.699999999997; // (var_model_parameters__F) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 11) = 8314.2999999999993; // (var_model_parameters__R) [joule_per_kilomole_kelvin] + NV_Ith_S(this->mParameters, 12) = 0.00054000000000000001; // (var_ICaL__PCa) [litre_per_farad_millisecond] + NV_Ith_S(this->mParameters, 13) = 0.0089999999999999993; // (var_IClb__G_ClBk) [milliS_per_microF] + NV_Ith_S(this->mParameters, 14) = 0; // (var_membrane_data_clamp_current_conductance) [dimensionless] + NV_Ith_S(this->mParameters, 15) = 16; // (var_INa__G_INa) [milliS_per_microF] + NV_Ith_S(this->mParameters, 16) = 0; // (var_INa__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 17) = 0; // (var_INa__shift_INa_inact) [millivolt] + NV_Ith_S(this->mParameters, 18) = 0.02; // (var_Itof__G_tof) [milliS_per_microF] + NV_Ith_S(this->mParameters, 19) = 0.90000000000000002; // (var_IK1__G_K1_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 20) = 0.029999999999999999; // (var_IKr__G_IKr_const) [milliS_per_microF] + NV_Ith_S(this->mParameters, 21) = 0.070000000000000007; // (var_IKs__G_Ks_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 22) = 0.059999999999999998; // (var_Itos__G_tos) [milliS_per_microF] + NV_Ith_S(this->mParameters, 23) = 9; // (var_INaCa__V_max) [microA_per_microF] + NV_Ith_S(this->mParameters, 24) = 310; // (var_model_parameters__T) [kelvin] + } + + Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::~Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp() + { + } + + + void Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 45; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 18) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 22) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_ICl_Ca__i_Cl_Ca + HeartConfig::Instance()->GetCapacitance() * var_INaK__i_NaK + var_ICaL__i_CaL_converted + var_ICab__i_Cab_converted + var_ICap__i_Cap_converted + var_IClb__i_Clb_converted + var_IK1__i_K1_converted + var_IKr__i_Kr_converted + var_IKs__i_Ks_converted + var_INa__i_Na_converted + var_INaCa__i_NaCa_converted + var_INab__i_Nab_converted + var_Itof__i_tof_converted + var_Itos__i_tos_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(NV_Ith_S(rY, 0), var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__Ca_buffer__Cai = mp_cytosolic_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 1), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.6504944644883e-05 + double var_chaste_interface__INa_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(NV_Ith_S(rY, 2), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(NV_Ith_S(rY, 3), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(NV_Ith_S(rY, 4), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(NV_Ith_S(rY, 12), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(NV_Ith_S(rY, 13), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__R = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.890917121306535 + double var_chaste_interface__Jrel_SR__I = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 8.71752603681652e-08 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = mp_submembrane_space_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 19), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = mp_dyadic_space_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 20), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Na_SL_buf = NV_Ith_S(rY, 21); + // Units: millimolar; Initial value: 0.77606800956492 + double var_chaste_interface__Na_buffer__Na_jct_buf = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 3.55668431730337 + double var_chaste_interface__Na_buffer__Nai = mp_cytosolic_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 23), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = mp_JSR_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 24), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = mp_submembrane_space_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 25), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = mp_dyadic_space_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 26), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.000174045152623969 + double var_chaste_interface__Ca_buffer__Ca_SLB_SL = NV_Ith_S(rY, 27); + // Units: millimolar; Initial value: 0.00973710481246467 + double var_chaste_interface__Ca_buffer__Ca_SLB_jct = NV_Ith_S(rY, 28); + // Units: millimolar; Initial value: 0.00774564218017916 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_SL = NV_Ith_S(rY, 29); + // Units: millimolar; Initial value: 0.113168405274355 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_jct = NV_Ith_S(rY, 30); + // Units: millimolar; Initial value: 0.0772568134367606 + double var_chaste_interface__Ca_buffer__Ca_Calsequestrin = NV_Ith_S(rY, 31); + // Units: millimolar; Initial value: 1.18828527890062 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC = NV_Ith_S(rY, 32); + // Units: millimolar; Initial value: 0.00886665040283094 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = NV_Ith_S(rY, 33); + // Units: millimolar; Initial value: 0.117873278193472 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = NV_Ith_S(rY, 34); + // Units: millimolar; Initial value: 0.0103906683506505 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin = NV_Ith_S(rY, 35); + // Units: millimolar; Initial value: 0.000293073957804278 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin = NV_Ith_S(rY, 36); + // Units: millimolar; Initial value: 0.00195899238146509 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin = NV_Ith_S(rY, 37); + // Units: millimolar; Initial value: 0.137523520981802 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB = NV_Ith_S(rY, 38); + // Units: millimolar; Initial value: 0.00215728901718264 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = NV_Ith_S(rY, 39); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = NV_Ith_S(rY, 40); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = NV_Ith_S(rY, 41); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = NV_Ith_S(rY, 42); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = NV_Ith_S(rY, 43); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = NV_Ith_S(rY, 44); + // Units: millimolar; Initial value: 0.0 + + // Mathematics + double d_dt_chaste_interface_var_cell__V; + const double var_Ca_buffer__Bmax_Calsequestrin = 0.14000000000000001; // millimolar + const double var_Ca_buffer__Bmax_SLB_SL = 0.037400000000000003; // millimolar + const double var_Ca_buffer__Bmax_SLB_jct = 0.0045999999999999999; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_SL = 0.0134; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_jct = 0.00165; // millimolar + const double var_Ca_buffer__koff_Calsequestrin = 65; // per_millisecond + const double var_Ca_buffer__koff_SLB = 1.3; // per_millisecond + const double var_Ca_buffer__koff_SLHigh = 0.029999999999999999; // per_millisecond + const double var_Ca_buffer__kon_Calsequestrin = 100; // per_millimolar_per_millisecond + const double var_Ca_buffer__kon_SL = 100; // per_millimolar_per_millisecond + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL) * var_chaste_interface__Ca_buffer__Ca_SL; // 1 / millisecond + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct) * var_chaste_interface__Ca_buffer__Ca_jct; // 1 / millisecond + const double var_ICaL_fCa_gate__fCa_SL = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL, var_chaste_interface__environment__time); // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jleak_SR__j_leak_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * mp_SR_leak_current_max_modifier->Calc(NV_Ith_S(mParameters, 0), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double var_Jpump_SR__H = 1.7869999999999999; // dimensionless + const double var_Jpump_SR__Kmf = 0.00024600000000000002; // millimolar + const double var_Jpump_SR__Kmr = 1.7; // millimolar + const double var_Jpump_SR__Q10_SRCaP = 2.6000000000000001; // dimensionless + const double var_Jrel_SR__EC50_SR = 0.45000000000000001; // millimolar + const double var_Jrel_SR__HSR = 2.5; // dimensionless + const double var_Jrel_SR__Max_SR = 15; // dimensionless + const double var_Jrel_SR__Min_SR = 1; // dimensionless + const double var_Jrel_SR__RI = 1 - var_chaste_interface__Jrel_SR__I - var_chaste_interface__Jrel_SR__O - var_chaste_interface__Jrel_SR__R; // dimensionless + const double var_Jrel_SR__kCaSR = -(-var_Jrel_SR__Min_SR + var_Jrel_SR__Max_SR) / (1 + pow((var_Jrel_SR__EC50_SR / var_chaste_interface__Ca_buffer__Ca_SR), var_Jrel_SR__HSR)) + var_Jrel_SR__Max_SR; // dimensionless + const double var_Jrel_SR__kiCa = 0.5; // per_millimolar_per_millisecond + const double var_Jrel_SR__kiSRCa = var_Jrel_SR__kCaSR * var_Jrel_SR__kiCa; // per_millimolar_per_millisecond + const double var_Jrel_SR__kim = 0.0050000000000000001; // per_millisecond + const double var_Jrel_SR__koCa = 10; // per_millimolar2_per_millisecond + const double var_Jrel_SR__koSRCa = var_Jrel_SR__koCa / var_Jrel_SR__kCaSR; // per_millimolar2_per_millisecond + const double var_Jrel_SR__kom = 0.059999999999999998; // per_millisecond + const double d_dt_chaste_interface_var_Jrel_SR__I = -var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_Jrel_SR__RI * var_Jrel_SR__koSRCa + var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__O = var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__R = var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + var_Jrel_SR__RI * var_Jrel_SR__kim - pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double var_Jrel_SR__j_rel_SR = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * mp_SR_release_current_max_modifier->Calc(NV_Ith_S(mParameters, 1), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double var_Na_buffer__Bmax_SL = 1.6499999999999999; // millimolar + const double var_Na_buffer__Bmax_jct = 7.5609999999999999; // millimolar + const double var_Na_buffer__koff = 0.001; // per_millisecond + const double var_Na_buffer__kon = 0.0001; // per_millimolar_per_millisecond + const double var_Na_buffer__dNa_SL_buf = -var_chaste_interface__Na_buffer__Na_SL_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_SL_buf + var_Na_buffer__Bmax_SL) * var_chaste_interface__Na_buffer__Na_SL * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_SL_buf = var_Na_buffer__dNa_SL_buf; // millimolar / millisecond + const double var_Na_buffer__dNa_jct_buf = -var_chaste_interface__Na_buffer__Na_jct_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_jct_buf + var_Na_buffer__Bmax_jct) * var_chaste_interface__Na_buffer__Na_jct * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_jct_buf = var_Na_buffer__dNa_jct_buf; // millimolar / millisecond + const double var_ICaL_d_gate__d_infinity = 1 / (1 + exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_d_gate__tau_d = 28.571428571428569 * (1 - exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)) * var_ICaL_d_gate__d_infinity / (14.5 + var_chaste_interface__cell__V); // millisecond + const double d_dt_chaste_interface_var_ICaL_d_gate__d = (-var_chaste_interface__ICaL_d_gate__d + var_ICaL_d_gate__d_infinity) / var_ICaL_d_gate__tau_d; // 1 / millisecond + const double var_ICaL_f_gate__f_infinity = 1 / (1 + exp(9.7388888888888889 + 0.27777777777777779 * var_chaste_interface__cell__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(1 / (0.02 + 0.019699999999999999 * exp(-pow((0.48865000000000003 + 0.033700000000000001 * var_chaste_interface__cell__V), 2))), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_ICaL_f_gate__f = (-var_chaste_interface__ICaL_f_gate__f + var_ICaL_f_gate__f_infinity) / var_ICaL_f_gate__tau_f; // 1 / millisecond + const double var_IKr_Xr_gate__Xr_infinity = 1 / (1 + exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr_Xr_gate__tau_Xr = 1 / (0.00060999999999999997 * (10 + var_chaste_interface__cell__V) / (-1 + exp(1.45 + 0.14499999999999999 * var_chaste_interface__cell__V)) + 0.0013799999999999999 * (7 + var_chaste_interface__cell__V) / (1 - exp(-0.86099999999999999 - 0.123 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKr_Xr_gate__Xr = (-var_chaste_interface__IKr_Xr_gate__Xr + var_IKr_Xr_gate__Xr_infinity) / var_IKr_Xr_gate__tau_Xr; // 1 / millisecond + const double var_IKs_Xs_gate__Xs_infinity = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKs_Xs_gate__tau_Xs = 1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKs_Xs_gate__Xs = (-var_chaste_interface__IKs_Xs_gate__Xs + var_IKs_Xs_gate__Xs_infinity) / var_IKs_Xs_gate__tau_Xs; // 1 / millisecond + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__h_infinity = 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 16), var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 16), var_chaste_interface__environment__time)) * var_INa_h_gate__alpha_h / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // dimensionless + const double var_INa_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_INa_h_gate__h = (-var_chaste_interface__INa_h_gate__h + var_INa_h_gate__h_infinity) / var_INa_h_gate__tau_h; // 1 / millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__j_infinity = 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 16), var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 16), var_chaste_interface__environment__time)) * var_INa_j_gate__alpha_j / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // dimensionless + const double var_INa_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_INa_j_gate__j = (-var_chaste_interface__INa_j_gate__j + var_INa_j_gate__j_infinity) / var_INa_j_gate__tau_j; // 1 / millisecond + const double var_INa_m_gate__alpha_m = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__cell__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_millisecond + const double var_INa_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__cell__V); // per_millisecond + const double var_INa_m_gate__m_infinity = var_INa_m_gate__alpha_m / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // dimensionless + const double var_INa_m_gate__tau_m = 1 / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // millisecond + const double d_dt_chaste_interface_var_INa_m_gate__m = (-var_chaste_interface__INa_m_gate__m + var_INa_m_gate__m_infinity) / var_INa_m_gate__tau_m; // 1 / millisecond + const double var_Itof_X_gate__X_tof_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_X_gate__tau_X_tof = 1.5 + 3.5 * exp(-0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2)); // millisecond + const double d_dt_chaste_interface_var_Itof_X_gate__X_tof = (-var_chaste_interface__Itof_X_gate__X_tof + var_Itof_X_gate__X_tof_infinity) / var_Itof_X_gate__tau_X_tof; // 1 / millisecond + const double var_Itof_Y_gate__Y_tof_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_Y_gate__tau_Y_tof = 20 + 20 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itof_Y_gate__Y_tof = (-var_chaste_interface__Itof_Y_gate__Y_tof + var_Itof_Y_gate__Y_tof_infinity) / var_Itof_Y_gate__tau_Y_tof; // 1 / millisecond + const double var_Itos_R_gate__R_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_R_gate__tau_R_tos = 220 + 2800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_R_gate__R_tos = (-var_chaste_interface__Itos_R_gate__R_tos + var_Itos_R_gate__R_tos_infinity) / var_Itos_R_gate__tau_R_tos; // 1 / millisecond + const double var_Itos_X_gate__X_tos_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_X_gate__tau_X_tos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_X_gate__X_tos = (-var_chaste_interface__Itos_X_gate__X_tos + var_Itos_X_gate__X_tos_infinity) / var_Itos_X_gate__tau_X_tos; // 1 / millisecond + const double var_Itos_Y_gate__Y_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_Y_gate__tau_Y_tos = 30 + 3000 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_Y_gate__Y_tos = (-var_chaste_interface__Itos_Y_gate__Y_tos + var_Itos_Y_gate__Y_tos_infinity) / var_Itos_Y_gate__tau_Y_tos; // 1 / millisecond + const double var_cytosolic_Ca_buffer__Bmax_Calmodulin = 0.024; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_SRB = 0.017100000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC = 0.070000000000000007; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__koff_Calmodulin = 0.23799999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Ca = 0.00046000000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Mg = 5.7000000000000003e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_SRB = 0.059999999999999998; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC = 0.019599999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca = 3.1999999999999999e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg = 0.0033300000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__kon_Calmodulin = 34; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Calmodulin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin * var_cytosolic_Ca_buffer__koff_Calmodulin + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin + var_cytosolic_Ca_buffer__Bmax_Calmodulin) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Calmodulin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin = var_cytosolic_Ca_buffer__dCa_Calmodulin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Ca = 13.800000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Myosin_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin = var_cytosolic_Ca_buffer__dCa_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Mg = 0.015699999999999999; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__kon_SRB = 100; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_SRB = -var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB * var_cytosolic_Ca_buffer__koff_SRB + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB + var_cytosolic_Ca_buffer__Bmax_SRB) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_SRB; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB = var_cytosolic_Ca_buffer__dCa_SRB; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC = 32.700000000000003; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC * var_cytosolic_Ca_buffer__koff_TroponinC + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC + var_cytosolic_Ca_buffer__Bmax_TroponinC) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC = var_cytosolic_Ca_buffer__dCa_TroponinC; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca = 2.3700000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg = 0.0030000000000000001; // per_millimolar_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 = 0.11; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 = 0.059999999999999998; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3 = 100; // per_millimolar2_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Indo1 = 100; // per_millimolar2_per_millisecond + const double var_ion_diffusion__J_Ca_SL_cytosol = 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Ca_SL - 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Cai; // millimole_per_millisecond + const double var_ion_diffusion__J_Ca_jct_SL = 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_jct - 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_SL; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_SL_cytosol = 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Na_SL - 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Nai; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_jct_SL = 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_jct - 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_SL; // millimole_per_millisecond + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_model_parameters__Mgi = 1; // millimolar + const double var_cytosolic_Ca_buffer__dMg_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Mg) * var_cytosolic_Ca_buffer__kon_Myosin_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin = var_cytosolic_Ca_buffer__dMg_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg) * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound = var_cytosolic_Ca_buffer__dCa_Calmodulin + var_cytosolic_Ca_buffer__dCa_Myosin + var_cytosolic_Ca_buffer__dCa_SRB + var_cytosolic_Ca_buffer__dCa_TroponinC + var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__dMg_Myosin + var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar_per_millisecond + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_SL * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 12), var_chaste_interface__environment__time) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_jct * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 12), var_chaste_interface__environment__time) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) * exp(var_INaCa__eta * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))) - pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 23), var_chaste_interface__environment__time) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) * exp(var_INaCa__eta * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))) - pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 23), var_chaste_interface__environment__time) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time))); // microA_per_microF + const double var_Jpump_SR__Q_SRCaP = pow(var_Jpump_SR__Q10_SRCaP, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Vol_Cell = 3.1415926540000002e-15 * pow(var_model_parameters__cell_radius, 2) * var_model_parameters__cell_length; // liter + const double var_model_parameters__Vol_SL = 0.02 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_SR = 0.035000000000000003 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_cytosol = 0.65000000000000002 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_SL = -var_chaste_interface__Ca_buffer__Ca_SLB_SL * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_SL + var_Ca_buffer__Bmax_SLB_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_SL = -var_chaste_interface__Ca_buffer__Ca_SLHigh_SL * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_SL + var_Ca_buffer__Bmax_SLHigh_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SL_tot_bound = var_Ca_buffer__dCa_SLB_SL + var_Ca_buffer__dCa_SLHigh_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCalsequestrin = -var_chaste_interface__Ca_buffer__Ca_Calsequestrin * var_Ca_buffer__koff_Calsequestrin + (-var_chaste_interface__Ca_buffer__Ca_Calsequestrin + var_Ca_buffer__Bmax_Calsequestrin * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR) * var_chaste_interface__Ca_buffer__Ca_SR * var_Ca_buffer__kon_Calsequestrin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin = var_Ca_buffer__dCalsequestrin; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL = var_Ca_buffer__dCa_SLB_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL = var_Ca_buffer__dCa_SLHigh_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Na_buffer__Nai = mp_concentration_clamp_onoff_modifier->Calc(NV_Ith_S(mParameters, 3), var_chaste_interface__environment__time) * var_ion_diffusion__J_Na_SL_cytosol / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_Jpump_SR__j_pump_SR = (pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) - pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_Jpump_SR__Q_SRCaP * mp_SR_uptake_current_max_modifier->Calc(NV_Ith_S(mParameters, 2), var_chaste_interface__environment__time) * var_model_parameters__Vol_cytosol / ((1 + pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) + pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_model_parameters__Vol_SR); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SR = -var_Ca_buffer__dCalsequestrin - var_Jrel_SR__j_rel_SR - var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR + var_Jpump_SR__j_pump_SR; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Cai = -1 * var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound + var_ion_diffusion__J_Ca_SL_cytosol / var_model_parameters__Vol_cytosol - var_Jpump_SR__j_pump_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_model_parameters__Vol_jct = 0.00051000000000000004 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_jct = -var_chaste_interface__Ca_buffer__Ca_SLB_jct * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLB_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_jct = -var_chaste_interface__Ca_buffer__Ca_SLHigh_jct * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLHigh_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_jct_tot_bound = var_Ca_buffer__dCa_SLB_jct + var_Ca_buffer__dCa_SLHigh_jct; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct = var_Ca_buffer__dCa_SLB_jct; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct = var_Ca_buffer__dCa_SLHigh_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct; // millimolar / millisecond + const double var_reversal_potentials__E_Ca_SL = 0.5 * mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) / var_chaste_interface__Ca_buffer__Ca_SL) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_SL_tot = -2 * var_INaCa__i_NaCa_SL + var_ICaL__i_CaL_Ca_SL + var_ICab__i_Cab_SL + var_ICap__i_Cap_SL; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SL = -1 * var_Ca_buffer__dCa_SL_tot_bound + (-var_ion_diffusion__J_Ca_SL_cytosol + var_ion_diffusion__J_Ca_jct_SL) / var_model_parameters__Vol_SL - 0.5 * var_Ca_buffer__i_Ca_SL_tot * var_model_parameters__Cm / (mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) * var_model_parameters__Vol_SL); // millimolar / millisecond + const double var_reversal_potentials__E_Ca_jct = 0.5 * mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) / var_chaste_interface__Ca_buffer__Ca_jct) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_jct_tot = -2 * var_INaCa__i_NaCa_jct + var_ICaL__i_CaL_Ca_jct + var_ICab__i_Cab_jct + var_ICap__i_Cap_jct; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_jct = -1 * var_Ca_buffer__dCa_jct_tot_bound - var_ion_diffusion__J_Ca_jct_SL / var_model_parameters__Vol_jct + var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct + var_Jrel_SR__j_rel_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_jct - 0.5 * var_Ca_buffer__i_Ca_jct_tot * var_model_parameters__Cm / (mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) * var_model_parameters__Vol_jct); // millimolar / millisecond + const double var_reversal_potentials__E_Na_SL = mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) / var_chaste_interface__Na_buffer__Na_SL) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * mp_membrane_fast_sodium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 15), var_chaste_interface__environment__time) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_SL = (-var_Na_buffer__dNa_SL_buf + (-var_ion_diffusion__J_Na_SL_cytosol + var_ion_diffusion__J_Na_jct_SL) / var_model_parameters__Vol_SL - (3 * var_INaCa__i_NaCa_SL + 3 * var_INaK__i_NaK_SL + var_ICaL__i_CaL_Na_SL + var_INa__i_Na_SL + var_INab__i_Nab_SL) * var_model_parameters__Cm / (mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) * var_model_parameters__Vol_SL)) * mp_concentration_clamp_onoff_modifier->Calc(NV_Ith_S(mParameters, 3), var_chaste_interface__environment__time); // millimolar / millisecond + const double var_reversal_potentials__E_Na_jct = mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) / var_chaste_interface__Na_buffer__Na_jct) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * mp_membrane_fast_sodium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 15), var_chaste_interface__environment__time) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_jct = (-var_Na_buffer__dNa_jct_buf - var_ion_diffusion__J_Na_jct_SL / var_model_parameters__Vol_jct - (3 * var_INaCa__i_NaCa_jct + 3 * var_INaK__i_NaK_jct + var_ICaL__i_CaL_Na_jct + var_INa__i_Na_jct + var_INab__i_Nab_jct) * var_model_parameters__Cm / (mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) * var_model_parameters__Vol_jct)) * mp_concentration_clamp_onoff_modifier->Calc(NV_Ith_S(mParameters, 3), var_chaste_interface__environment__time); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_cell__V = 0.0; + } + else + { + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 21), var_chaste_interface__environment__time); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 21), var_chaste_interface__environment__time); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_IK1__G_K1 = mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_scaling_factor_modifier->Calc(NV_Ith_S(mParameters, 19), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 20), var_chaste_interface__environment__time); // milliS_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time) + var_ICaL__gamma_Ki * mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time) * exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL = mp_ICaL__i_CaL_modifier->Calc(var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_ICap__i_Cap = mp_ICap__i_Cap_modifier->Calc(var_ICap__i_Cap_SL + var_ICap__i_Cap_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_IKs__E_Ks = mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log((var_IKs__pKNa * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time))) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = mp_IKs__i_Ks_modifier->Calc(var_IKs__i_Ks_SL + var_IKs__i_Ks_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_INaCa__i_NaCa = mp_INaCa__i_NaCa_modifier->Calc(var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_ICab__i_Cab = mp_ICab__i_Cab_modifier->Calc(var_ICab__i_Cab_SL + var_ICab__i_Cab_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_reversal_potentials__E_Cl = mp_chloride_reversal_potential_modifier->Calc(-mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_chloride_concentration_modifier->Calc(NV_Ith_S(mParameters, 7), var_chaste_interface__environment__time) / mp_cytosolic_chloride_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time)) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = mp_IClb__i_Clb_modifier->Calc((-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * mp_membrane_background_chloride_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 13), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_reversal_potentials__E_K = mp_potassium_reversal_potential_modifier->Calc(mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time) / mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = mp_IK1__i_K1_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity, var_chaste_interface__environment__time); // microA_per_microF + const double var_IKr__i_Kr = mp_IKr__i_Kr_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_Itof__i_tof = mp_Itof__i_tof_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * mp_membrane_fast_transient_outward_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 18), var_chaste_interface__environment__time) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof, var_chaste_interface__environment__time); // microA_per_microF + const double var_Itos__i_tos = mp_Itos__i_tos_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * mp_membrane_slow_transient_outward_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 22), var_chaste_interface__environment__time) * var_chaste_interface__Itos_X_gate__X_tos, var_chaste_interface__environment__time); // microA_per_microF + const double var_INa__i_Na = mp_INa__i_Na_modifier->Calc(var_INa__i_Na_SL + var_INa__i_Na_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_INab__i_Nab = mp_INab__i_Nab_modifier->Calc(var_INab__i_Nab_SL + var_INab__i_Nab_jct, var_chaste_interface__environment__time); // microA_per_microF + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 14); // uA_per_cm2 + } + d_dt_chaste_interface_var_cell__V = -var_ICaL__i_CaL - var_ICab__i_Cab - var_ICap__i_Cap - var_ICl_Ca__i_Cl_Ca - var_IClb__i_Clb - var_IK1__i_K1 - var_IKr__i_Kr - var_IKs__i_Ks - var_INa__i_Na - var_INaCa__i_NaCa - var_INaK__i_NaK - var_INab__i_Nab - var_Itof__i_tof - var_Itos__i_tos - var_cell__i_Stim - var_chaste_interface__membrane_data_clamp_current; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_cell__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_buffer__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_INa_h_gate__h; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_INa_j_gate__j; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_INa_m_gate__m; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_IKr_Xr_gate__Xr; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_IKs_Xs_gate__Xs; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_Itos_X_gate__X_tos; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_Itos_Y_gate__Y_tos; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_Itos_R_gate__R_tos; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_Itof_X_gate__X_tof; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_Itof_Y_gate__Y_tof; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_ICaL_d_gate__d; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_ICaL_f_gate__f; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_Jrel_SR__R; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_Jrel_SR__I; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_Jrel_SR__O; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_Na_buffer__Na_SL; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_Na_buffer__Na_jct; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_Na_buffer__Na_SL_buf; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_Na_buffer__Na_jct_buf; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Na_buffer__Nai; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Ca_buffer__Ca_SR; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Ca_buffer__Ca_SL; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Ca_buffer__Ca_jct; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct; + NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL; + NV_Ith_S(rDY,30) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct; + NV_Ith_S(rDY,31) = d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin; + NV_Ith_S(rDY,32) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC; + NV_Ith_S(rDY,33) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg; + NV_Ith_S(rDY,34) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg; + NV_Ith_S(rDY,35) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin; + NV_Ith_S(rDY,36) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin; + NV_Ith_S(rDY,37) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin; + NV_Ith_S(rDY,38) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB; + NV_Ith_S(rDY,39) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; + NV_Ith_S(rDY,40) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; + NV_Ith_S(rDY,41) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + NV_Ith_S(rDY,42) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; + NV_Ith_S(rDY,43) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; + NV_Ith_S(rDY,44) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + } + + N_Vector Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(NV_Ith_S(rY, 0), var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(NV_Ith_S(rY, 2), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(NV_Ith_S(rY, 3), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(NV_Ith_S(rY, 4), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(NV_Ith_S(rY, 12), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(NV_Ith_S(rY, 13), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = mp_submembrane_space_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 19), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = mp_dyadic_space_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 20), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = mp_cytosolic_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 23), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = mp_JSR_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 24), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = mp_submembrane_space_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 25), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = mp_dyadic_space_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 26), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.000174045152623969 + + // Mathematics + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL, var_chaste_interface__environment__time); // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 21), var_chaste_interface__environment__time); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 21), var_chaste_interface__environment__time); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jrel_SR__j_rel_SR = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * mp_SR_release_current_max_modifier->Calc(NV_Ith_S(mParameters, 1), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double var_ICaL_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(1 / (0.02 + 0.019699999999999999 * exp(-pow((0.48865000000000003 + 0.033700000000000001 * var_chaste_interface__cell__V), 2))), var_chaste_interface__environment__time); // millisecond + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 17), var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 14); // uA_per_cm2 + } + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_IK1__G_K1 = mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_scaling_factor_modifier->Calc(NV_Ith_S(mParameters, 19), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 20), var_chaste_interface__environment__time); // milliS_per_microF + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_SL * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 12), var_chaste_interface__environment__time) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_jct * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 12), var_chaste_interface__environment__time) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time) + var_ICaL__gamma_Ki * mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time) * exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // microA_per_microF + const double var_ICaL__i_CaL = mp_ICaL__i_CaL_modifier->Calc(var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = mp_ICap__i_Cap_modifier->Calc(var_ICap__i_Cap_SL + var_ICap__i_Cap_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log((var_IKs__pKNa * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time))) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = mp_IKs__i_Ks_modifier->Calc(var_IKs__i_Ks_SL + var_IKs__i_Ks_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) * exp(var_INaCa__eta * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))) - pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 23), var_chaste_interface__environment__time) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) * exp(var_INaCa__eta * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time))) - pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) / (mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 23), var_chaste_interface__environment__time) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = mp_INaCa__i_NaCa_modifier->Calc(var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Cm_converted = mp_membrane_capacitance_modifier->Calc(1000000 * var_model_parameters__Cm, var_chaste_interface__environment__time); // uF + const double var_reversal_potentials__E_Ca_SL = 0.5 * mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) / var_chaste_interface__Ca_buffer__Ca_SL) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) / var_chaste_interface__Ca_buffer__Ca_jct) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = mp_ICab__i_Cab_modifier->Calc(var_ICab__i_Cab_SL + var_ICab__i_Cab_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = mp_chloride_reversal_potential_modifier->Calc(-mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_chloride_concentration_modifier->Calc(NV_Ith_S(mParameters, 7), var_chaste_interface__environment__time) / mp_cytosolic_chloride_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time)) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // millivolt + const double var_IClb__i_Clb = mp_IClb__i_Clb_modifier->Calc((-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * mp_membrane_background_chloride_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 13), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = mp_potassium_reversal_potential_modifier->Calc(mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time) / mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = mp_IK1__i_K1_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity, var_chaste_interface__environment__time); // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = mp_IKr__i_Kr_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = mp_Itof__i_tof_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * mp_membrane_fast_transient_outward_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 18), var_chaste_interface__environment__time) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof, var_chaste_interface__environment__time); // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = mp_Itos__i_tos_modifier->Calc((-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * mp_membrane_slow_transient_outward_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 22), var_chaste_interface__environment__time) * var_chaste_interface__Itos_X_gate__X_tos, var_chaste_interface__environment__time); // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) / var_chaste_interface__Na_buffer__Na_SL) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * mp_membrane_fast_sodium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 15), var_chaste_interface__environment__time) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = mp_gas_constant_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) * mp_temperature_modifier->Calc(NV_Ith_S(mParameters, 24), var_chaste_interface__environment__time) * log(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) / var_chaste_interface__Na_buffer__Na_jct) / mp_faraday_constant_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * mp_membrane_fast_sodium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 15), var_chaste_interface__environment__time) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = mp_INa__i_Na_modifier->Calc(var_INa__i_Na_SL + var_INa__i_Na_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = mp_INab__i_Nab_modifier->Calc(var_INab__i_Nab_SL + var_INab__i_Nab_jct, var_chaste_interface__environment__time); // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(24, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(24); +#endif + NV_Ith_S(dqs, 0) = var_Jrel_SR__j_rel_SR; + NV_Ith_S(dqs, 1) = var_reversal_potentials__E_Cl; + NV_Ith_S(dqs, 2) = var_ICaL__i_CaL_converted; + NV_Ith_S(dqs, 3) = var_ICaL_fCa_gate__fCa_SL; + NV_Ith_S(dqs, 4) = var_ICaL_f_gate__tau_f; + NV_Ith_S(dqs, 5) = var_ICab__i_Cab_converted; + NV_Ith_S(dqs, 6) = var_IClb__i_Clb_converted; + NV_Ith_S(dqs, 7) = var_INab__i_Nab_converted; + NV_Ith_S(dqs, 8) = var_ICap__i_Cap_converted; + NV_Ith_S(dqs, 9) = var_model_parameters__Cm_converted; + NV_Ith_S(dqs, 10) = var_chaste_interface__membrane_data_clamp_current; + NV_Ith_S(dqs, 11) = var_INa__i_Na_converted; + NV_Ith_S(dqs, 12) = var_INa_h_gate__tau_h; + NV_Ith_S(dqs, 13) = var_INa_j_gate__tau_j; + NV_Ith_S(dqs, 14) = var_Itof__i_tof_converted; + NV_Ith_S(dqs, 15) = var_IK1__i_K1_converted; + NV_Ith_S(dqs, 16) = var_IK1__G_K1; + NV_Ith_S(dqs, 17) = var_IKr__i_Kr_converted; + NV_Ith_S(dqs, 18) = var_IKs__i_Ks_converted; + NV_Ith_S(dqs, 19) = var_Itos__i_tos_converted; + NV_Ith_S(dqs, 20) = var_INaCa__i_NaCa_converted; + NV_Ith_S(dqs, 21) = var_cell__i_Stim_converted; + NV_Ith_S(dqs, 22) = var_reversal_potentials__E_K; + NV_Ith_S(dqs, 23) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "shannon_wang_puglisi_weber_bers_2004_model_updated"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-85.721630473733); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.6504944644883e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.98714602875678); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.991826348770428); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0013702407736465); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("IKr_Xr_gate__Xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00846906175020028); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("IKs_Xs_gate__Xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00613557812033723); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("Itos_X_gate__X_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401072468238921); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("Itos_Y_gate__Y_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.31555225368514); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("Itos_R_gate__R_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.402577243036347); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("Itof_X_gate__X_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401068798369438); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("Itof_Y_gate__Y_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.994632857675454); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.99526086177479e-06); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.00067601563206); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_SL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0150193299768419); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_jct"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0244048782575591); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("Jrel_SR__R"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.890917121306535); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("Jrel_SR__I"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.71752603681652e-08); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("Jrel_SR__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.1199533741995e-07); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87161932058707); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87031835089116); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("Na_buffer__Na_SL_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.77606800956492); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("Na_buffer__Na_jct_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(3.55668431730337); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87200572571131); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.547125831028543); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000104971310105451); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000174045152623969); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00973710481246467); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00774564218017916); + + // NV_Ith_S(rY, 29): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.113168405274355); + + // NV_Ith_S(rY, 30): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0772568134367606); + + // NV_Ith_S(rY, 31): + this->mVariableNames.push_back("Ca_buffer__Ca_Calsequestrin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.18828527890062); + + // NV_Ith_S(rY, 32): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00886665040283094); + + // NV_Ith_S(rY, 33): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.117873278193472); + + // NV_Ith_S(rY, 34): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0103906683506505); + + // NV_Ith_S(rY, 35): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Calmodulin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000293073957804278); + + // NV_Ith_S(rY, 36): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00195899238146509); + + // NV_Ith_S(rY, 37): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.137523520981802); + + // NV_Ith_S(rY, 38): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_SRB"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00215728901718264); + + // NV_Ith_S(rY, 39): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 40): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 41): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 42): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 43): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 44): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("cytosolic_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[9]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[10]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[11]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kilomole_kelvin"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("litre_per_farad_millisecond"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_background_chloride_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_data_clamp_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[22]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[23]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[24]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mDerivedQuantityUnits.push_back("dimensionless"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_background_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_background_chloride_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_background_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_data_clamp_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [23]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004--sympy_1_13.cpp new file mode 100644 index 00000000..45c36bdf --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004--sympy_1_13.cpp @@ -0,0 +1,1448 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: shannon_wang_puglisi_weber_bers_2004_model_updated +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: CvodeCellWithDataClamp) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_Shannon2004.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + + + + boost::shared_ptr Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 5; // millisecond + const double var_chaste_interface__cell__stim_period = 1000; // millisecond + const double var_chaste_interface__cell__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCellWithDataClamp( + pOdeSolver, + 45, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_Jleak_SR__KSRleak) [per_millisecond] + NV_Ith_S(this->mParameters, 1) = 25; // (var_Jrel_SR__ks) [per_millisecond] + NV_Ith_S(this->mParameters, 2) = 0.00028600000000000001; // (var_Jpump_SR__V_max) [millimolar_per_millisecond] + NV_Ith_S(this->mParameters, 3) = 1; // (var_Na_buffer__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 15; // (var_model_parameters__Cli) [millimolar] + NV_Ith_S(this->mParameters, 5) = 135; // (var_model_parameters__Ki) [millimolar] + NV_Ith_S(this->mParameters, 6) = 1.8; // (var_model_parameters__Cao) [millimolar] + NV_Ith_S(this->mParameters, 7) = 150; // (var_model_parameters__Clo) [millimolar] + NV_Ith_S(this->mParameters, 8) = 5.4000000000000004; // (var_model_parameters__Ko) [millimolar] + NV_Ith_S(this->mParameters, 9) = 140; // (var_model_parameters__Nao) [millimolar] + NV_Ith_S(this->mParameters, 10) = 96486.699999999997; // (var_model_parameters__F) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 11) = 8314.2999999999993; // (var_model_parameters__R) [joule_per_kilomole_kelvin] + NV_Ith_S(this->mParameters, 12) = 0.00054000000000000001; // (var_ICaL__PCa) [litre_per_farad_millisecond] + NV_Ith_S(this->mParameters, 13) = 0.0089999999999999993; // (var_IClb__G_ClBk) [milliS_per_microF] + NV_Ith_S(this->mParameters, 14) = 0; // (var_membrane_data_clamp_current_conductance) [dimensionless] + NV_Ith_S(this->mParameters, 15) = 16; // (var_INa__G_INa) [milliS_per_microF] + NV_Ith_S(this->mParameters, 16) = 0; // (var_INa__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 17) = 0; // (var_INa__shift_INa_inact) [millivolt] + NV_Ith_S(this->mParameters, 18) = 0.02; // (var_Itof__G_tof) [milliS_per_microF] + NV_Ith_S(this->mParameters, 19) = 0.90000000000000002; // (var_IK1__G_K1_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 20) = 0.029999999999999999; // (var_IKr__G_IKr_const) [milliS_per_microF] + NV_Ith_S(this->mParameters, 21) = 0.070000000000000007; // (var_IKs__G_Ks_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 22) = 0.059999999999999998; // (var_Itos__G_tos) [milliS_per_microF] + NV_Ith_S(this->mParameters, 23) = 9; // (var_INaCa__V_max) [microA_per_microF] + NV_Ith_S(this->mParameters, 24) = 310; // (var_model_parameters__T) [kelvin] + } + + Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::~Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp() + { + } + + + void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 45; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 18) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 22) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_ICl_Ca__i_Cl_Ca + HeartConfig::Instance()->GetCapacitance() * var_INaK__i_NaK + var_ICaL__i_CaL_converted + var_ICab__i_Cab_converted + var_ICap__i_Cap_converted + var_IClb__i_Clb_converted + var_IK1__i_K1_converted + var_IKr__i_Kr_converted + var_IKs__i_Ks_converted + var_INa__i_Na_converted + var_INaCa__i_NaCa_converted + var_INab__i_Nab_converted + var_Itof__i_tof_converted + var_Itos__i_tos_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__Ca_buffer__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 8.6504944644883e-05 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__R = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.890917121306535 + double var_chaste_interface__Jrel_SR__I = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 8.71752603681652e-08 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Na_SL_buf = NV_Ith_S(rY, 21); + // Units: millimolar; Initial value: 0.77606800956492 + double var_chaste_interface__Na_buffer__Na_jct_buf = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 3.55668431730337 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + double var_chaste_interface__Ca_buffer__Ca_SLB_SL = NV_Ith_S(rY, 27); + // Units: millimolar; Initial value: 0.00973710481246467 + double var_chaste_interface__Ca_buffer__Ca_SLB_jct = NV_Ith_S(rY, 28); + // Units: millimolar; Initial value: 0.00774564218017916 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_SL = NV_Ith_S(rY, 29); + // Units: millimolar; Initial value: 0.113168405274355 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_jct = NV_Ith_S(rY, 30); + // Units: millimolar; Initial value: 0.0772568134367606 + double var_chaste_interface__Ca_buffer__Ca_Calsequestrin = NV_Ith_S(rY, 31); + // Units: millimolar; Initial value: 1.18828527890062 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC = NV_Ith_S(rY, 32); + // Units: millimolar; Initial value: 0.00886665040283094 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = NV_Ith_S(rY, 33); + // Units: millimolar; Initial value: 0.117873278193472 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = NV_Ith_S(rY, 34); + // Units: millimolar; Initial value: 0.0103906683506505 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin = NV_Ith_S(rY, 35); + // Units: millimolar; Initial value: 0.000293073957804278 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin = NV_Ith_S(rY, 36); + // Units: millimolar; Initial value: 0.00195899238146509 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin = NV_Ith_S(rY, 37); + // Units: millimolar; Initial value: 0.137523520981802 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB = NV_Ith_S(rY, 38); + // Units: millimolar; Initial value: 0.00215728901718264 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = NV_Ith_S(rY, 39); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = NV_Ith_S(rY, 40); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = NV_Ith_S(rY, 41); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = NV_Ith_S(rY, 42); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = NV_Ith_S(rY, 43); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = NV_Ith_S(rY, 44); + // Units: millimolar; Initial value: 0.0 + + // Mathematics + double d_dt_chaste_interface_var_cell__V; + const double var_Ca_buffer__Bmax_Calsequestrin = 0.14000000000000001; // millimolar + const double var_Ca_buffer__Bmax_SLB_SL = 0.037400000000000003; // millimolar + const double var_Ca_buffer__Bmax_SLB_jct = 0.0045999999999999999; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_SL = 0.0134; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_jct = 0.00165; // millimolar + const double var_Ca_buffer__koff_Calsequestrin = 65; // per_millisecond + const double var_Ca_buffer__koff_SLB = 1.3; // per_millisecond + const double var_Ca_buffer__koff_SLHigh = 0.029999999999999999; // per_millisecond + const double var_Ca_buffer__kon_Calsequestrin = 100; // per_millimolar_per_millisecond + const double var_Ca_buffer__kon_SL = 100; // per_millimolar_per_millisecond + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL) * var_chaste_interface__Ca_buffer__Ca_SL; // 1 / millisecond + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct) * var_chaste_interface__Ca_buffer__Ca_jct; // 1 / millisecond + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jleak_SR__j_leak_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * NV_Ith_S(mParameters, 0); // millimolar_per_millisecond + const double var_Jpump_SR__H = 1.7869999999999999; // dimensionless + const double var_Jpump_SR__Kmf = 0.00024600000000000002; // millimolar + const double var_Jpump_SR__Kmr = 1.7; // millimolar + const double var_Jpump_SR__Q10_SRCaP = 2.6000000000000001; // dimensionless + const double var_Jrel_SR__EC50_SR = 0.45000000000000001; // millimolar + const double var_Jrel_SR__HSR = 2.5; // dimensionless + const double var_Jrel_SR__Max_SR = 15; // dimensionless + const double var_Jrel_SR__Min_SR = 1; // dimensionless + const double var_Jrel_SR__RI = 1 - var_chaste_interface__Jrel_SR__I - var_chaste_interface__Jrel_SR__O - var_chaste_interface__Jrel_SR__R; // dimensionless + const double var_Jrel_SR__kCaSR = -(-var_Jrel_SR__Min_SR + var_Jrel_SR__Max_SR) / (1 + pow((var_Jrel_SR__EC50_SR / var_chaste_interface__Ca_buffer__Ca_SR), var_Jrel_SR__HSR)) + var_Jrel_SR__Max_SR; // dimensionless + const double var_Jrel_SR__kiCa = 0.5; // per_millimolar_per_millisecond + const double var_Jrel_SR__kiSRCa = var_Jrel_SR__kCaSR * var_Jrel_SR__kiCa; // per_millimolar_per_millisecond + const double var_Jrel_SR__kim = 0.0050000000000000001; // per_millisecond + const double var_Jrel_SR__koCa = 10; // per_millimolar2_per_millisecond + const double var_Jrel_SR__koSRCa = var_Jrel_SR__koCa / var_Jrel_SR__kCaSR; // per_millimolar2_per_millisecond + const double var_Jrel_SR__kom = 0.059999999999999998; // per_millisecond + const double d_dt_chaste_interface_var_Jrel_SR__I = -var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_Jrel_SR__RI * var_Jrel_SR__koSRCa + var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__O = var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__R = var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + var_Jrel_SR__RI * var_Jrel_SR__kim - pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double var_Jrel_SR__j_rel_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); // millimolar_per_millisecond + const double var_Na_buffer__Bmax_SL = 1.6499999999999999; // millimolar + const double var_Na_buffer__Bmax_jct = 7.5609999999999999; // millimolar + const double var_Na_buffer__koff = 0.001; // per_millisecond + const double var_Na_buffer__kon = 0.0001; // per_millimolar_per_millisecond + const double var_Na_buffer__dNa_SL_buf = -var_chaste_interface__Na_buffer__Na_SL_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_SL_buf + var_Na_buffer__Bmax_SL) * var_chaste_interface__Na_buffer__Na_SL * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_SL_buf = var_Na_buffer__dNa_SL_buf; // millimolar / millisecond + const double var_Na_buffer__dNa_jct_buf = -var_chaste_interface__Na_buffer__Na_jct_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_jct_buf + var_Na_buffer__Bmax_jct) * var_chaste_interface__Na_buffer__Na_jct * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_jct_buf = var_Na_buffer__dNa_jct_buf; // millimolar / millisecond + const double var_ICaL_d_gate__d_infinity = 1 / (1 + exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_d_gate__tau_d = 28.571428571428569 * (1 - exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)) * var_ICaL_d_gate__d_infinity / (14.5 + var_chaste_interface__cell__V); // millisecond + const double d_dt_chaste_interface_var_ICaL_d_gate__d = (-var_chaste_interface__ICaL_d_gate__d + var_ICaL_d_gate__d_infinity) / var_ICaL_d_gate__tau_d; // 1 / millisecond + const double var_ICaL_f_gate__f_infinity = 1 / (1 + exp(9.7388888888888889 + 0.27777777777777779 * var_chaste_interface__cell__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2))); // millisecond + const double d_dt_chaste_interface_var_ICaL_f_gate__f = (-var_chaste_interface__ICaL_f_gate__f + var_ICaL_f_gate__f_infinity) / var_ICaL_f_gate__tau_f; // 1 / millisecond + const double var_IKr_Xr_gate__Xr_infinity = 1 / (1 + exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr_Xr_gate__tau_Xr = 1 / (0.00060999999999999997 * (10 + var_chaste_interface__cell__V) / (-1 + exp(1.45 + 0.14499999999999999 * var_chaste_interface__cell__V)) + 0.0013799999999999999 * (7 + var_chaste_interface__cell__V) / (1 - exp(-0.86099999999999999 - 0.123 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKr_Xr_gate__Xr = (-var_chaste_interface__IKr_Xr_gate__Xr + var_IKr_Xr_gate__Xr_infinity) / var_IKr_Xr_gate__tau_Xr; // 1 / millisecond + const double var_IKs_Xs_gate__Xs_infinity = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKs_Xs_gate__tau_Xs = 1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKs_Xs_gate__Xs = (-var_chaste_interface__IKs_Xs_gate__Xs + var_IKs_Xs_gate__Xs_infinity) / var_IKs_Xs_gate__tau_Xs; // 1 / millisecond + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 17) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 17)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 17))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 17) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__h_infinity = 0.01 * NV_Ith_S(mParameters, 16) + (1 - 0.01 * NV_Ith_S(mParameters, 16)) * var_INa_h_gate__alpha_h / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // dimensionless + const double var_INa_h_gate__tau_h = 1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // millisecond + const double d_dt_chaste_interface_var_INa_h_gate__h = (-var_chaste_interface__INa_h_gate__h + var_INa_h_gate__h_infinity) / var_INa_h_gate__tau_h; // 1 / millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 17)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 17) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 17)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 17) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 17) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 17) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 17) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__j_infinity = 0.01 * NV_Ith_S(mParameters, 16) + (1 - 0.01 * NV_Ith_S(mParameters, 16)) * var_INa_j_gate__alpha_j / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // dimensionless + const double var_INa_j_gate__tau_j = 1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // millisecond + const double d_dt_chaste_interface_var_INa_j_gate__j = (-var_chaste_interface__INa_j_gate__j + var_INa_j_gate__j_infinity) / var_INa_j_gate__tau_j; // 1 / millisecond + const double var_INa_m_gate__alpha_m = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__cell__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_millisecond + const double var_INa_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__cell__V); // per_millisecond + const double var_INa_m_gate__m_infinity = var_INa_m_gate__alpha_m / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // dimensionless + const double var_INa_m_gate__tau_m = 1 / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // millisecond + const double d_dt_chaste_interface_var_INa_m_gate__m = (-var_chaste_interface__INa_m_gate__m + var_INa_m_gate__m_infinity) / var_INa_m_gate__tau_m; // 1 / millisecond + const double var_Itof_X_gate__X_tof_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_X_gate__tau_X_tof = 1.5 + 3.5 * exp(-0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2)); // millisecond + const double d_dt_chaste_interface_var_Itof_X_gate__X_tof = (-var_chaste_interface__Itof_X_gate__X_tof + var_Itof_X_gate__X_tof_infinity) / var_Itof_X_gate__tau_X_tof; // 1 / millisecond + const double var_Itof_Y_gate__Y_tof_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_Y_gate__tau_Y_tof = 20 + 20 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itof_Y_gate__Y_tof = (-var_chaste_interface__Itof_Y_gate__Y_tof + var_Itof_Y_gate__Y_tof_infinity) / var_Itof_Y_gate__tau_Y_tof; // 1 / millisecond + const double var_Itos_R_gate__R_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_R_gate__tau_R_tos = 220 + 2800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_R_gate__R_tos = (-var_chaste_interface__Itos_R_gate__R_tos + var_Itos_R_gate__R_tos_infinity) / var_Itos_R_gate__tau_R_tos; // 1 / millisecond + const double var_Itos_X_gate__X_tos_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_X_gate__tau_X_tos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_X_gate__X_tos = (-var_chaste_interface__Itos_X_gate__X_tos + var_Itos_X_gate__X_tos_infinity) / var_Itos_X_gate__tau_X_tos; // 1 / millisecond + const double var_Itos_Y_gate__Y_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_Y_gate__tau_Y_tos = 30 + 3000 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_Y_gate__Y_tos = (-var_chaste_interface__Itos_Y_gate__Y_tos + var_Itos_Y_gate__Y_tos_infinity) / var_Itos_Y_gate__tau_Y_tos; // 1 / millisecond + const double var_cytosolic_Ca_buffer__Bmax_Calmodulin = 0.024; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_SRB = 0.017100000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC = 0.070000000000000007; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__koff_Calmodulin = 0.23799999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Ca = 0.00046000000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Mg = 5.7000000000000003e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_SRB = 0.059999999999999998; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC = 0.019599999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca = 3.1999999999999999e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg = 0.0033300000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__kon_Calmodulin = 34; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Calmodulin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin * var_cytosolic_Ca_buffer__koff_Calmodulin + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin + var_cytosolic_Ca_buffer__Bmax_Calmodulin) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Calmodulin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin = var_cytosolic_Ca_buffer__dCa_Calmodulin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Ca = 13.800000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Myosin_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin = var_cytosolic_Ca_buffer__dCa_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Mg = 0.015699999999999999; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__kon_SRB = 100; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_SRB = -var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB * var_cytosolic_Ca_buffer__koff_SRB + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB + var_cytosolic_Ca_buffer__Bmax_SRB) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_SRB; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB = var_cytosolic_Ca_buffer__dCa_SRB; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC = 32.700000000000003; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC * var_cytosolic_Ca_buffer__koff_TroponinC + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC + var_cytosolic_Ca_buffer__Bmax_TroponinC) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC = var_cytosolic_Ca_buffer__dCa_TroponinC; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca = 2.3700000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg = 0.0030000000000000001; // per_millimolar_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 = 0.11; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 = 0.059999999999999998; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3 = 100; // per_millimolar2_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Indo1 = 100; // per_millimolar2_per_millisecond + const double var_ion_diffusion__J_Ca_SL_cytosol = 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Ca_SL - 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Cai; // millimole_per_millisecond + const double var_ion_diffusion__J_Ca_jct_SL = 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_jct - 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_SL; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_SL_cytosol = 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Na_SL - 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Nai; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_jct_SL = 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_jct - 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_SL; // millimole_per_millisecond + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_model_parameters__Mgi = 1; // millimolar + const double var_cytosolic_Ca_buffer__dMg_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Mg) * var_cytosolic_Ca_buffer__kon_Myosin_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin = var_cytosolic_Ca_buffer__dMg_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg) * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound = var_cytosolic_Ca_buffer__dCa_Calmodulin + var_cytosolic_Ca_buffer__dCa_Myosin + var_cytosolic_Ca_buffer__dCa_SRB + var_cytosolic_Ca_buffer__dCa_TroponinC + var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__dMg_Myosin + var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar_per_millisecond + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_Jpump_SR__Q_SRCaP = pow(var_Jpump_SR__Q10_SRCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Vol_Cell = 3.1415926540000002e-15 * pow(var_model_parameters__cell_radius, 2) * var_model_parameters__cell_length; // liter + const double var_model_parameters__Vol_SL = 0.02 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_SR = 0.035000000000000003 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_cytosol = 0.65000000000000002 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_SL = -var_chaste_interface__Ca_buffer__Ca_SLB_SL * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_SL + var_Ca_buffer__Bmax_SLB_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_SL = -var_chaste_interface__Ca_buffer__Ca_SLHigh_SL * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_SL + var_Ca_buffer__Bmax_SLHigh_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SL_tot_bound = var_Ca_buffer__dCa_SLB_SL + var_Ca_buffer__dCa_SLHigh_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCalsequestrin = -var_chaste_interface__Ca_buffer__Ca_Calsequestrin * var_Ca_buffer__koff_Calsequestrin + (-var_chaste_interface__Ca_buffer__Ca_Calsequestrin + var_Ca_buffer__Bmax_Calsequestrin * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR) * var_chaste_interface__Ca_buffer__Ca_SR * var_Ca_buffer__kon_Calsequestrin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin = var_Ca_buffer__dCalsequestrin; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL = var_Ca_buffer__dCa_SLB_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL = var_Ca_buffer__dCa_SLHigh_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Na_buffer__Nai = NV_Ith_S(mParameters, 3) * var_ion_diffusion__J_Na_SL_cytosol / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_Jpump_SR__j_pump_SR = (pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) - pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_Jpump_SR__Q_SRCaP * NV_Ith_S(mParameters, 2) * var_model_parameters__Vol_cytosol / ((1 + pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) + pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_model_parameters__Vol_SR); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SR = -var_Ca_buffer__dCalsequestrin - var_Jrel_SR__j_rel_SR - var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR + var_Jpump_SR__j_pump_SR; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Cai = -1 * var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound + var_ion_diffusion__J_Ca_SL_cytosol / var_model_parameters__Vol_cytosol - var_Jpump_SR__j_pump_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_model_parameters__Vol_jct = 0.00051000000000000004 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_jct = -var_chaste_interface__Ca_buffer__Ca_SLB_jct * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLB_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_jct = -var_chaste_interface__Ca_buffer__Ca_SLHigh_jct * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLHigh_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_jct_tot_bound = var_Ca_buffer__dCa_SLB_jct + var_Ca_buffer__dCa_SLHigh_jct; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct = var_Ca_buffer__dCa_SLB_jct; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct = var_Ca_buffer__dCa_SLHigh_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct; // millimolar / millisecond + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_SL_tot = -2 * var_INaCa__i_NaCa_SL + var_ICaL__i_CaL_Ca_SL + var_ICab__i_Cab_SL + var_ICap__i_Cap_SL; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SL = -1 * var_Ca_buffer__dCa_SL_tot_bound + (-var_ion_diffusion__J_Ca_SL_cytosol + var_ion_diffusion__J_Ca_jct_SL) / var_model_parameters__Vol_SL - 0.5 * var_Ca_buffer__i_Ca_SL_tot * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_SL); // millimolar / millisecond + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_jct_tot = -2 * var_INaCa__i_NaCa_jct + var_ICaL__i_CaL_Ca_jct + var_ICab__i_Cab_jct + var_ICap__i_Cap_jct; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_jct = -1 * var_Ca_buffer__dCa_jct_tot_bound - var_ion_diffusion__J_Ca_jct_SL / var_model_parameters__Vol_jct + var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct + var_Jrel_SR__j_rel_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_jct - 0.5 * var_Ca_buffer__i_Ca_jct_tot * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_jct); // millimolar / millisecond + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_SL = (-var_Na_buffer__dNa_SL_buf + (-var_ion_diffusion__J_Na_SL_cytosol + var_ion_diffusion__J_Na_jct_SL) / var_model_parameters__Vol_SL - (3 * var_INaCa__i_NaCa_SL + 3 * var_INaK__i_NaK_SL + var_ICaL__i_CaL_Na_SL + var_INa__i_Na_SL + var_INab__i_Nab_SL) * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_SL)) * NV_Ith_S(mParameters, 3); // millimolar / millisecond + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_jct = (-var_Na_buffer__dNa_jct_buf - var_ion_diffusion__J_Na_jct_SL / var_model_parameters__Vol_jct - (3 * var_INaCa__i_NaCa_jct + 3 * var_INaK__i_NaK_jct + var_ICaL__i_CaL_Na_jct + var_INa__i_Na_jct + var_INab__i_Nab_jct) * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_jct)) * NV_Ith_S(mParameters, 3); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_cell__V = 0.0; + } + else + { + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 18) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 22) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 14); // uA_per_cm2 + } + d_dt_chaste_interface_var_cell__V = -var_ICaL__i_CaL - var_ICab__i_Cab - var_ICap__i_Cap - var_ICl_Ca__i_Cl_Ca - var_IClb__i_Clb - var_IK1__i_K1 - var_IKr__i_Kr - var_IKs__i_Ks - var_INa__i_Na - var_INaCa__i_NaCa - var_INaK__i_NaK - var_INab__i_Nab - var_Itof__i_tof - var_Itos__i_tos - var_cell__i_Stim - var_chaste_interface__membrane_data_clamp_current; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_cell__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_buffer__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_INa_h_gate__h; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_INa_j_gate__j; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_INa_m_gate__m; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_IKr_Xr_gate__Xr; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_IKs_Xs_gate__Xs; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_Itos_X_gate__X_tos; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_Itos_Y_gate__Y_tos; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_Itos_R_gate__R_tos; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_Itof_X_gate__X_tof; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_Itof_Y_gate__Y_tof; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_ICaL_d_gate__d; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_ICaL_f_gate__f; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_Jrel_SR__R; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_Jrel_SR__I; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_Jrel_SR__O; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_Na_buffer__Na_SL; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_Na_buffer__Na_jct; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_Na_buffer__Na_SL_buf; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_Na_buffer__Na_jct_buf; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Na_buffer__Nai; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Ca_buffer__Ca_SR; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Ca_buffer__Ca_SL; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Ca_buffer__Ca_jct; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct; + NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL; + NV_Ith_S(rDY,30) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct; + NV_Ith_S(rDY,31) = d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin; + NV_Ith_S(rDY,32) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC; + NV_Ith_S(rDY,33) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg; + NV_Ith_S(rDY,34) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg; + NV_Ith_S(rDY,35) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin; + NV_Ith_S(rDY,36) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin; + NV_Ith_S(rDY,37) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin; + NV_Ith_S(rDY,38) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB; + NV_Ith_S(rDY,39) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; + NV_Ith_S(rDY,40) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; + NV_Ith_S(rDY,41) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + NV_Ith_S(rDY,42) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; + NV_Ith_S(rDY,43) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; + NV_Ith_S(rDY,44) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + } + + N_Vector Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + + // Mathematics + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jrel_SR__j_rel_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); // millimolar_per_millisecond + const double var_ICaL_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2))); // millisecond + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 17) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 17)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 17))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 17) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__tau_h = 1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 17)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 17) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 17)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 17) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 17) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 17) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 17) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__tau_j = 1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // millisecond + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 14); // uA_per_cm2 + } + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Cm_converted = 1000000 * var_model_parameters__Cm; // uF + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 18) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 22) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(24, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(24); +#endif + NV_Ith_S(dqs, 0) = var_Jrel_SR__j_rel_SR; + NV_Ith_S(dqs, 1) = var_reversal_potentials__E_Cl; + NV_Ith_S(dqs, 2) = var_ICaL__i_CaL_converted; + NV_Ith_S(dqs, 3) = var_ICaL_fCa_gate__fCa_SL; + NV_Ith_S(dqs, 4) = var_ICaL_f_gate__tau_f; + NV_Ith_S(dqs, 5) = var_ICab__i_Cab_converted; + NV_Ith_S(dqs, 6) = var_IClb__i_Clb_converted; + NV_Ith_S(dqs, 7) = var_INab__i_Nab_converted; + NV_Ith_S(dqs, 8) = var_ICap__i_Cap_converted; + NV_Ith_S(dqs, 9) = var_model_parameters__Cm_converted; + NV_Ith_S(dqs, 10) = var_chaste_interface__membrane_data_clamp_current; + NV_Ith_S(dqs, 11) = var_INa__i_Na_converted; + NV_Ith_S(dqs, 12) = var_INa_h_gate__tau_h; + NV_Ith_S(dqs, 13) = var_INa_j_gate__tau_j; + NV_Ith_S(dqs, 14) = var_Itof__i_tof_converted; + NV_Ith_S(dqs, 15) = var_IK1__i_K1_converted; + NV_Ith_S(dqs, 16) = var_IK1__G_K1; + NV_Ith_S(dqs, 17) = var_IKr__i_Kr_converted; + NV_Ith_S(dqs, 18) = var_IKs__i_Ks_converted; + NV_Ith_S(dqs, 19) = var_Itos__i_tos_converted; + NV_Ith_S(dqs, 20) = var_INaCa__i_NaCa_converted; + NV_Ith_S(dqs, 21) = var_cell__i_Stim_converted; + NV_Ith_S(dqs, 22) = var_reversal_potentials__E_K; + NV_Ith_S(dqs, 23) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "shannon_wang_puglisi_weber_bers_2004_model_updated"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-85.721630473733); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.6504944644883e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.98714602875678); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.991826348770428); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0013702407736465); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("IKr_Xr_gate__Xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00846906175020028); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("IKs_Xs_gate__Xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00613557812033723); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("Itos_X_gate__X_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401072468238921); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("Itos_Y_gate__Y_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.31555225368514); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("Itos_R_gate__R_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.402577243036347); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("Itof_X_gate__X_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401068798369438); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("Itof_Y_gate__Y_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.994632857675454); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.99526086177479e-06); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.00067601563206); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_SL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0150193299768419); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_jct"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0244048782575591); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("Jrel_SR__R"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.890917121306535); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("Jrel_SR__I"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.71752603681652e-08); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("Jrel_SR__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.1199533741995e-07); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87161932058707); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87031835089116); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("Na_buffer__Na_SL_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.77606800956492); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("Na_buffer__Na_jct_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(3.55668431730337); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87200572571131); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.547125831028543); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000104971310105451); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000174045152623969); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00973710481246467); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00774564218017916); + + // NV_Ith_S(rY, 29): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.113168405274355); + + // NV_Ith_S(rY, 30): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0772568134367606); + + // NV_Ith_S(rY, 31): + this->mVariableNames.push_back("Ca_buffer__Ca_Calsequestrin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.18828527890062); + + // NV_Ith_S(rY, 32): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00886665040283094); + + // NV_Ith_S(rY, 33): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.117873278193472); + + // NV_Ith_S(rY, 34): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0103906683506505); + + // NV_Ith_S(rY, 35): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Calmodulin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000293073957804278); + + // NV_Ith_S(rY, 36): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00195899238146509); + + // NV_Ith_S(rY, 37): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.137523520981802); + + // NV_Ith_S(rY, 38): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_SRB"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00215728901718264); + + // NV_Ith_S(rY, 39): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 40): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 41): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 42): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 43): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 44): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("cytosolic_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[9]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[10]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[11]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kilomole_kelvin"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("litre_per_farad_millisecond"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_background_chloride_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_data_clamp_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[22]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[23]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[24]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mDerivedQuantityUnits.push_back("dimensionless"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_background_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_background_chloride_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_background_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_data_clamp_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [23]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp(pSolver, pStimulus); + } + +} +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004--sympy_1_14.cpp new file mode 100644 index 00000000..3d63d251 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/dynamic_Shannon2004--sympy_1_14.cpp @@ -0,0 +1,1448 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: shannon_wang_puglisi_weber_bers_2004_model_updated +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: CvodeCellWithDataClamp) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_Shannon2004.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + + + + boost::shared_ptr Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 5; // millisecond + const double var_chaste_interface__cell__stim_period = 1000; // millisecond + const double var_chaste_interface__cell__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCellWithDataClamp( + pOdeSolver, + 45, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_Jleak_SR__KSRleak) [per_millisecond] + NV_Ith_S(this->mParameters, 1) = 25; // (var_Jrel_SR__ks) [per_millisecond] + NV_Ith_S(this->mParameters, 2) = 0.00028600000000000001; // (var_Jpump_SR__V_max) [millimolar_per_millisecond] + NV_Ith_S(this->mParameters, 3) = 1; // (var_Na_buffer__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 15; // (var_model_parameters__Cli) [millimolar] + NV_Ith_S(this->mParameters, 5) = 135; // (var_model_parameters__Ki) [millimolar] + NV_Ith_S(this->mParameters, 6) = 1.8; // (var_model_parameters__Cao) [millimolar] + NV_Ith_S(this->mParameters, 7) = 150; // (var_model_parameters__Clo) [millimolar] + NV_Ith_S(this->mParameters, 8) = 5.4000000000000004; // (var_model_parameters__Ko) [millimolar] + NV_Ith_S(this->mParameters, 9) = 140; // (var_model_parameters__Nao) [millimolar] + NV_Ith_S(this->mParameters, 10) = 96486.699999999997; // (var_model_parameters__F) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 11) = 8314.2999999999993; // (var_model_parameters__R) [joule_per_kilomole_kelvin] + NV_Ith_S(this->mParameters, 12) = 0.00054000000000000001; // (var_ICaL__PCa) [litre_per_farad_millisecond] + NV_Ith_S(this->mParameters, 13) = 0.0089999999999999993; // (var_IClb__G_ClBk) [milliS_per_microF] + NV_Ith_S(this->mParameters, 14) = 0; // (var_membrane_data_clamp_current_conductance) [dimensionless] + NV_Ith_S(this->mParameters, 15) = 16; // (var_INa__G_INa) [milliS_per_microF] + NV_Ith_S(this->mParameters, 16) = 0; // (var_INa__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 17) = 0; // (var_INa__shift_INa_inact) [millivolt] + NV_Ith_S(this->mParameters, 18) = 0.02; // (var_Itof__G_tof) [milliS_per_microF] + NV_Ith_S(this->mParameters, 19) = 0.90000000000000002; // (var_IK1__G_K1_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 20) = 0.029999999999999999; // (var_IKr__G_IKr_const) [milliS_per_microF] + NV_Ith_S(this->mParameters, 21) = 0.070000000000000007; // (var_IKs__G_Ks_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 22) = 0.059999999999999998; // (var_Itos__G_tos) [milliS_per_microF] + NV_Ith_S(this->mParameters, 23) = 9; // (var_INaCa__V_max) [microA_per_microF] + NV_Ith_S(this->mParameters, 24) = 310; // (var_model_parameters__T) [kelvin] + } + + Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::~Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp() + { + } + + + void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 45; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 18) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 22) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_ICl_Ca__i_Cl_Ca + HeartConfig::Instance()->GetCapacitance() * var_INaK__i_NaK + var_ICaL__i_CaL_converted + var_ICab__i_Cab_converted + var_ICap__i_Cap_converted + var_IClb__i_Clb_converted + var_IK1__i_K1_converted + var_IKr__i_Kr_converted + var_IKs__i_Ks_converted + var_INa__i_Na_converted + var_INaCa__i_NaCa_converted + var_INab__i_Nab_converted + var_Itof__i_tof_converted + var_Itos__i_tos_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__Ca_buffer__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 8.6504944644883e-05 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__R = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.890917121306535 + double var_chaste_interface__Jrel_SR__I = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 8.71752603681652e-08 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Na_SL_buf = NV_Ith_S(rY, 21); + // Units: millimolar; Initial value: 0.77606800956492 + double var_chaste_interface__Na_buffer__Na_jct_buf = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 3.55668431730337 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + double var_chaste_interface__Ca_buffer__Ca_SLB_SL = NV_Ith_S(rY, 27); + // Units: millimolar; Initial value: 0.00973710481246467 + double var_chaste_interface__Ca_buffer__Ca_SLB_jct = NV_Ith_S(rY, 28); + // Units: millimolar; Initial value: 0.00774564218017916 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_SL = NV_Ith_S(rY, 29); + // Units: millimolar; Initial value: 0.113168405274355 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_jct = NV_Ith_S(rY, 30); + // Units: millimolar; Initial value: 0.0772568134367606 + double var_chaste_interface__Ca_buffer__Ca_Calsequestrin = NV_Ith_S(rY, 31); + // Units: millimolar; Initial value: 1.18828527890062 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC = NV_Ith_S(rY, 32); + // Units: millimolar; Initial value: 0.00886665040283094 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = NV_Ith_S(rY, 33); + // Units: millimolar; Initial value: 0.117873278193472 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = NV_Ith_S(rY, 34); + // Units: millimolar; Initial value: 0.0103906683506505 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin = NV_Ith_S(rY, 35); + // Units: millimolar; Initial value: 0.000293073957804278 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin = NV_Ith_S(rY, 36); + // Units: millimolar; Initial value: 0.00195899238146509 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin = NV_Ith_S(rY, 37); + // Units: millimolar; Initial value: 0.137523520981802 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB = NV_Ith_S(rY, 38); + // Units: millimolar; Initial value: 0.00215728901718264 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = NV_Ith_S(rY, 39); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = NV_Ith_S(rY, 40); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = NV_Ith_S(rY, 41); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = NV_Ith_S(rY, 42); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = NV_Ith_S(rY, 43); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = NV_Ith_S(rY, 44); + // Units: millimolar; Initial value: 0.0 + + // Mathematics + double d_dt_chaste_interface_var_cell__V; + const double var_Ca_buffer__Bmax_Calsequestrin = 0.14000000000000001; // millimolar + const double var_Ca_buffer__Bmax_SLB_SL = 0.037400000000000003; // millimolar + const double var_Ca_buffer__Bmax_SLB_jct = 0.0045999999999999999; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_SL = 0.0134; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_jct = 0.00165; // millimolar + const double var_Ca_buffer__koff_Calsequestrin = 65; // per_millisecond + const double var_Ca_buffer__koff_SLB = 1.3; // per_millisecond + const double var_Ca_buffer__koff_SLHigh = 0.029999999999999999; // per_millisecond + const double var_Ca_buffer__kon_Calsequestrin = 100; // per_millimolar_per_millisecond + const double var_Ca_buffer__kon_SL = 100; // per_millimolar_per_millisecond + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL) * var_chaste_interface__Ca_buffer__Ca_SL; // 1 / millisecond + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct) * var_chaste_interface__Ca_buffer__Ca_jct; // 1 / millisecond + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jleak_SR__j_leak_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * NV_Ith_S(mParameters, 0); // millimolar_per_millisecond + const double var_Jpump_SR__H = 1.7869999999999999; // dimensionless + const double var_Jpump_SR__Kmf = 0.00024600000000000002; // millimolar + const double var_Jpump_SR__Kmr = 1.7; // millimolar + const double var_Jpump_SR__Q10_SRCaP = 2.6000000000000001; // dimensionless + const double var_Jrel_SR__EC50_SR = 0.45000000000000001; // millimolar + const double var_Jrel_SR__HSR = 2.5; // dimensionless + const double var_Jrel_SR__Max_SR = 15; // dimensionless + const double var_Jrel_SR__Min_SR = 1; // dimensionless + const double var_Jrel_SR__RI = 1 - var_chaste_interface__Jrel_SR__I - var_chaste_interface__Jrel_SR__O - var_chaste_interface__Jrel_SR__R; // dimensionless + const double var_Jrel_SR__kCaSR = -(-var_Jrel_SR__Min_SR + var_Jrel_SR__Max_SR) / (1 + pow((var_Jrel_SR__EC50_SR / var_chaste_interface__Ca_buffer__Ca_SR), var_Jrel_SR__HSR)) + var_Jrel_SR__Max_SR; // dimensionless + const double var_Jrel_SR__kiCa = 0.5; // per_millimolar_per_millisecond + const double var_Jrel_SR__kiSRCa = var_Jrel_SR__kCaSR * var_Jrel_SR__kiCa; // per_millimolar_per_millisecond + const double var_Jrel_SR__kim = 0.0050000000000000001; // per_millisecond + const double var_Jrel_SR__koCa = 10; // per_millimolar2_per_millisecond + const double var_Jrel_SR__koSRCa = var_Jrel_SR__koCa / var_Jrel_SR__kCaSR; // per_millimolar2_per_millisecond + const double var_Jrel_SR__kom = 0.059999999999999998; // per_millisecond + const double d_dt_chaste_interface_var_Jrel_SR__I = -var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_Jrel_SR__RI * var_Jrel_SR__koSRCa + var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__O = var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__R = var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + var_Jrel_SR__RI * var_Jrel_SR__kim - pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double var_Jrel_SR__j_rel_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); // millimolar_per_millisecond + const double var_Na_buffer__Bmax_SL = 1.6499999999999999; // millimolar + const double var_Na_buffer__Bmax_jct = 7.5609999999999999; // millimolar + const double var_Na_buffer__koff = 0.001; // per_millisecond + const double var_Na_buffer__kon = 0.0001; // per_millimolar_per_millisecond + const double var_Na_buffer__dNa_SL_buf = -var_chaste_interface__Na_buffer__Na_SL_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_SL_buf + var_Na_buffer__Bmax_SL) * var_chaste_interface__Na_buffer__Na_SL * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_SL_buf = var_Na_buffer__dNa_SL_buf; // millimolar / millisecond + const double var_Na_buffer__dNa_jct_buf = -var_chaste_interface__Na_buffer__Na_jct_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_jct_buf + var_Na_buffer__Bmax_jct) * var_chaste_interface__Na_buffer__Na_jct * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_jct_buf = var_Na_buffer__dNa_jct_buf; // millimolar / millisecond + const double var_ICaL_d_gate__d_infinity = 1 / (1 + exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_d_gate__tau_d = 28.571428571428569 * (1 - exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)) * var_ICaL_d_gate__d_infinity / (14.5 + var_chaste_interface__cell__V); // millisecond + const double d_dt_chaste_interface_var_ICaL_d_gate__d = (-var_chaste_interface__ICaL_d_gate__d + var_ICaL_d_gate__d_infinity) / var_ICaL_d_gate__tau_d; // 1 / millisecond + const double var_ICaL_f_gate__f_infinity = 1 / (1 + exp(9.7388888888888889 + 0.27777777777777779 * var_chaste_interface__cell__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-pow((0.48865000000000003 + 0.033700000000000001 * var_chaste_interface__cell__V), 2))); // millisecond + const double d_dt_chaste_interface_var_ICaL_f_gate__f = (-var_chaste_interface__ICaL_f_gate__f + var_ICaL_f_gate__f_infinity) / var_ICaL_f_gate__tau_f; // 1 / millisecond + const double var_IKr_Xr_gate__Xr_infinity = 1 / (1 + exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr_Xr_gate__tau_Xr = 1 / (0.00060999999999999997 * (10 + var_chaste_interface__cell__V) / (-1 + exp(1.45 + 0.14499999999999999 * var_chaste_interface__cell__V)) + 0.0013799999999999999 * (7 + var_chaste_interface__cell__V) / (1 - exp(-0.86099999999999999 - 0.123 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKr_Xr_gate__Xr = (-var_chaste_interface__IKr_Xr_gate__Xr + var_IKr_Xr_gate__Xr_infinity) / var_IKr_Xr_gate__tau_Xr; // 1 / millisecond + const double var_IKs_Xs_gate__Xs_infinity = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKs_Xs_gate__tau_Xs = 1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKs_Xs_gate__Xs = (-var_chaste_interface__IKs_Xs_gate__Xs + var_IKs_Xs_gate__Xs_infinity) / var_IKs_Xs_gate__tau_Xs; // 1 / millisecond + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 17) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 17)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 17))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 17) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__h_infinity = 0.01 * NV_Ith_S(mParameters, 16) + (1 - 0.01 * NV_Ith_S(mParameters, 16)) * var_INa_h_gate__alpha_h / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // dimensionless + const double var_INa_h_gate__tau_h = 1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // millisecond + const double d_dt_chaste_interface_var_INa_h_gate__h = (-var_chaste_interface__INa_h_gate__h + var_INa_h_gate__h_infinity) / var_INa_h_gate__tau_h; // 1 / millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 17)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 17) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 17)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 17) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 17) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 17) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 17) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__j_infinity = 0.01 * NV_Ith_S(mParameters, 16) + (1 - 0.01 * NV_Ith_S(mParameters, 16)) * var_INa_j_gate__alpha_j / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // dimensionless + const double var_INa_j_gate__tau_j = 1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // millisecond + const double d_dt_chaste_interface_var_INa_j_gate__j = (-var_chaste_interface__INa_j_gate__j + var_INa_j_gate__j_infinity) / var_INa_j_gate__tau_j; // 1 / millisecond + const double var_INa_m_gate__alpha_m = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__cell__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_millisecond + const double var_INa_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__cell__V); // per_millisecond + const double var_INa_m_gate__m_infinity = var_INa_m_gate__alpha_m / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // dimensionless + const double var_INa_m_gate__tau_m = 1 / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // millisecond + const double d_dt_chaste_interface_var_INa_m_gate__m = (-var_chaste_interface__INa_m_gate__m + var_INa_m_gate__m_infinity) / var_INa_m_gate__tau_m; // 1 / millisecond + const double var_Itof_X_gate__X_tof_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_X_gate__tau_X_tof = 1.5 + 3.5 * exp(-0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2)); // millisecond + const double d_dt_chaste_interface_var_Itof_X_gate__X_tof = (-var_chaste_interface__Itof_X_gate__X_tof + var_Itof_X_gate__X_tof_infinity) / var_Itof_X_gate__tau_X_tof; // 1 / millisecond + const double var_Itof_Y_gate__Y_tof_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_Y_gate__tau_Y_tof = 20 + 20 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itof_Y_gate__Y_tof = (-var_chaste_interface__Itof_Y_gate__Y_tof + var_Itof_Y_gate__Y_tof_infinity) / var_Itof_Y_gate__tau_Y_tof; // 1 / millisecond + const double var_Itos_R_gate__R_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_R_gate__tau_R_tos = 220 + 2800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_R_gate__R_tos = (-var_chaste_interface__Itos_R_gate__R_tos + var_Itos_R_gate__R_tos_infinity) / var_Itos_R_gate__tau_R_tos; // 1 / millisecond + const double var_Itos_X_gate__X_tos_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_X_gate__tau_X_tos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_X_gate__X_tos = (-var_chaste_interface__Itos_X_gate__X_tos + var_Itos_X_gate__X_tos_infinity) / var_Itos_X_gate__tau_X_tos; // 1 / millisecond + const double var_Itos_Y_gate__Y_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_Y_gate__tau_Y_tos = 30 + 3000 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_Y_gate__Y_tos = (-var_chaste_interface__Itos_Y_gate__Y_tos + var_Itos_Y_gate__Y_tos_infinity) / var_Itos_Y_gate__tau_Y_tos; // 1 / millisecond + const double var_cytosolic_Ca_buffer__Bmax_Calmodulin = 0.024; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_SRB = 0.017100000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC = 0.070000000000000007; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__koff_Calmodulin = 0.23799999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Ca = 0.00046000000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Mg = 5.7000000000000003e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_SRB = 0.059999999999999998; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC = 0.019599999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca = 3.1999999999999999e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg = 0.0033300000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__kon_Calmodulin = 34; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Calmodulin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin * var_cytosolic_Ca_buffer__koff_Calmodulin + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin + var_cytosolic_Ca_buffer__Bmax_Calmodulin) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Calmodulin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin = var_cytosolic_Ca_buffer__dCa_Calmodulin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Ca = 13.800000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Myosin_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin = var_cytosolic_Ca_buffer__dCa_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Mg = 0.015699999999999999; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__kon_SRB = 100; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_SRB = -var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB * var_cytosolic_Ca_buffer__koff_SRB + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB + var_cytosolic_Ca_buffer__Bmax_SRB) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_SRB; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB = var_cytosolic_Ca_buffer__dCa_SRB; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC = 32.700000000000003; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC * var_cytosolic_Ca_buffer__koff_TroponinC + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC + var_cytosolic_Ca_buffer__Bmax_TroponinC) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC = var_cytosolic_Ca_buffer__dCa_TroponinC; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca = 2.3700000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg = 0.0030000000000000001; // per_millimolar_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 = 0.11; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 = 0.059999999999999998; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3 = 100; // per_millimolar2_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Indo1 = 100; // per_millimolar2_per_millisecond + const double var_ion_diffusion__J_Ca_SL_cytosol = 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Ca_SL - 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Cai; // millimole_per_millisecond + const double var_ion_diffusion__J_Ca_jct_SL = 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_jct - 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_SL; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_SL_cytosol = 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Na_SL - 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Nai; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_jct_SL = 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_jct - 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_SL; // millimole_per_millisecond + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_model_parameters__Mgi = 1; // millimolar + const double var_cytosolic_Ca_buffer__dMg_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Mg) * var_cytosolic_Ca_buffer__kon_Myosin_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin = var_cytosolic_Ca_buffer__dMg_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg) * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound = var_cytosolic_Ca_buffer__dCa_Calmodulin + var_cytosolic_Ca_buffer__dCa_Myosin + var_cytosolic_Ca_buffer__dCa_SRB + var_cytosolic_Ca_buffer__dCa_TroponinC + var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__dMg_Myosin + var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar_per_millisecond + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_Jpump_SR__Q_SRCaP = pow(var_Jpump_SR__Q10_SRCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Vol_Cell = 3.1415926540000002e-15 * pow(var_model_parameters__cell_radius, 2) * var_model_parameters__cell_length; // liter + const double var_model_parameters__Vol_SL = 0.02 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_SR = 0.035000000000000003 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_cytosol = 0.65000000000000002 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_SL = -var_chaste_interface__Ca_buffer__Ca_SLB_SL * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_SL + var_Ca_buffer__Bmax_SLB_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_SL = -var_chaste_interface__Ca_buffer__Ca_SLHigh_SL * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_SL + var_Ca_buffer__Bmax_SLHigh_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SL_tot_bound = var_Ca_buffer__dCa_SLB_SL + var_Ca_buffer__dCa_SLHigh_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCalsequestrin = -var_chaste_interface__Ca_buffer__Ca_Calsequestrin * var_Ca_buffer__koff_Calsequestrin + (-var_chaste_interface__Ca_buffer__Ca_Calsequestrin + var_Ca_buffer__Bmax_Calsequestrin * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR) * var_chaste_interface__Ca_buffer__Ca_SR * var_Ca_buffer__kon_Calsequestrin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin = var_Ca_buffer__dCalsequestrin; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL = var_Ca_buffer__dCa_SLB_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL = var_Ca_buffer__dCa_SLHigh_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Na_buffer__Nai = NV_Ith_S(mParameters, 3) * var_ion_diffusion__J_Na_SL_cytosol / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_Jpump_SR__j_pump_SR = (pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) - pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_Jpump_SR__Q_SRCaP * NV_Ith_S(mParameters, 2) * var_model_parameters__Vol_cytosol / ((1 + pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) + pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_model_parameters__Vol_SR); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SR = -var_Ca_buffer__dCalsequestrin - var_Jrel_SR__j_rel_SR - var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR + var_Jpump_SR__j_pump_SR; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Cai = -1 * var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound + var_ion_diffusion__J_Ca_SL_cytosol / var_model_parameters__Vol_cytosol - var_Jpump_SR__j_pump_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_model_parameters__Vol_jct = 0.00051000000000000004 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_jct = -var_chaste_interface__Ca_buffer__Ca_SLB_jct * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLB_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_jct = -var_chaste_interface__Ca_buffer__Ca_SLHigh_jct * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLHigh_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_jct_tot_bound = var_Ca_buffer__dCa_SLB_jct + var_Ca_buffer__dCa_SLHigh_jct; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct = var_Ca_buffer__dCa_SLB_jct; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct = var_Ca_buffer__dCa_SLHigh_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct; // millimolar / millisecond + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_SL_tot = -2 * var_INaCa__i_NaCa_SL + var_ICaL__i_CaL_Ca_SL + var_ICab__i_Cab_SL + var_ICap__i_Cap_SL; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SL = -1 * var_Ca_buffer__dCa_SL_tot_bound + (-var_ion_diffusion__J_Ca_SL_cytosol + var_ion_diffusion__J_Ca_jct_SL) / var_model_parameters__Vol_SL - 0.5 * var_Ca_buffer__i_Ca_SL_tot * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_SL); // millimolar / millisecond + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_jct_tot = -2 * var_INaCa__i_NaCa_jct + var_ICaL__i_CaL_Ca_jct + var_ICab__i_Cab_jct + var_ICap__i_Cap_jct; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_jct = -1 * var_Ca_buffer__dCa_jct_tot_bound - var_ion_diffusion__J_Ca_jct_SL / var_model_parameters__Vol_jct + var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct + var_Jrel_SR__j_rel_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_jct - 0.5 * var_Ca_buffer__i_Ca_jct_tot * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_jct); // millimolar / millisecond + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_SL = (-var_Na_buffer__dNa_SL_buf + (-var_ion_diffusion__J_Na_SL_cytosol + var_ion_diffusion__J_Na_jct_SL) / var_model_parameters__Vol_SL - (3 * var_INaCa__i_NaCa_SL + 3 * var_INaK__i_NaK_SL + var_ICaL__i_CaL_Na_SL + var_INa__i_Na_SL + var_INab__i_Nab_SL) * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_SL)) * NV_Ith_S(mParameters, 3); // millimolar / millisecond + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_jct = (-var_Na_buffer__dNa_jct_buf - var_ion_diffusion__J_Na_jct_SL / var_model_parameters__Vol_jct - (3 * var_INaCa__i_NaCa_jct + 3 * var_INaK__i_NaK_jct + var_ICaL__i_CaL_Na_jct + var_INa__i_Na_jct + var_INab__i_Nab_jct) * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_jct)) * NV_Ith_S(mParameters, 3); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_cell__V = 0.0; + } + else + { + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 18) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 22) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 14); // uA_per_cm2 + } + d_dt_chaste_interface_var_cell__V = -var_ICaL__i_CaL - var_ICab__i_Cab - var_ICap__i_Cap - var_ICl_Ca__i_Cl_Ca - var_IClb__i_Clb - var_IK1__i_K1 - var_IKr__i_Kr - var_IKs__i_Ks - var_INa__i_Na - var_INaCa__i_NaCa - var_INaK__i_NaK - var_INab__i_Nab - var_Itof__i_tof - var_Itos__i_tos - var_cell__i_Stim - var_chaste_interface__membrane_data_clamp_current; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_cell__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_buffer__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_INa_h_gate__h; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_INa_j_gate__j; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_INa_m_gate__m; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_IKr_Xr_gate__Xr; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_IKs_Xs_gate__Xs; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_Itos_X_gate__X_tos; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_Itos_Y_gate__Y_tos; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_Itos_R_gate__R_tos; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_Itof_X_gate__X_tof; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_Itof_Y_gate__Y_tof; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_ICaL_d_gate__d; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_ICaL_f_gate__f; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_Jrel_SR__R; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_Jrel_SR__I; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_Jrel_SR__O; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_Na_buffer__Na_SL; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_Na_buffer__Na_jct; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_Na_buffer__Na_SL_buf; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_Na_buffer__Na_jct_buf; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Na_buffer__Nai; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Ca_buffer__Ca_SR; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Ca_buffer__Ca_SL; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Ca_buffer__Ca_jct; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct; + NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL; + NV_Ith_S(rDY,30) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct; + NV_Ith_S(rDY,31) = d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin; + NV_Ith_S(rDY,32) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC; + NV_Ith_S(rDY,33) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg; + NV_Ith_S(rDY,34) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg; + NV_Ith_S(rDY,35) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin; + NV_Ith_S(rDY,36) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin; + NV_Ith_S(rDY,37) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin; + NV_Ith_S(rDY,38) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB; + NV_Ith_S(rDY,39) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; + NV_Ith_S(rDY,40) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; + NV_Ith_S(rDY,41) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + NV_Ith_S(rDY,42) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; + NV_Ith_S(rDY,43) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; + NV_Ith_S(rDY,44) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + } + + N_Vector Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + + // Mathematics + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 21); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jrel_SR__j_rel_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); // millimolar_per_millisecond + const double var_ICaL_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-pow((0.48865000000000003 + 0.033700000000000001 * var_chaste_interface__cell__V), 2))); // millisecond + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 17) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 17)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 17))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 17) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__tau_h = 1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 17)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 17) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 17)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 17) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 17) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 17) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 17) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__tau_j = 1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // millisecond + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 14); // uA_per_cm2 + } + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 23) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Cm_converted = 1000000 * var_model_parameters__Cm; // uF + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 18) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 22) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 24) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 15) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(24, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(24); +#endif + NV_Ith_S(dqs, 0) = var_Jrel_SR__j_rel_SR; + NV_Ith_S(dqs, 1) = var_reversal_potentials__E_Cl; + NV_Ith_S(dqs, 2) = var_ICaL__i_CaL_converted; + NV_Ith_S(dqs, 3) = var_ICaL_fCa_gate__fCa_SL; + NV_Ith_S(dqs, 4) = var_ICaL_f_gate__tau_f; + NV_Ith_S(dqs, 5) = var_ICab__i_Cab_converted; + NV_Ith_S(dqs, 6) = var_IClb__i_Clb_converted; + NV_Ith_S(dqs, 7) = var_INab__i_Nab_converted; + NV_Ith_S(dqs, 8) = var_ICap__i_Cap_converted; + NV_Ith_S(dqs, 9) = var_model_parameters__Cm_converted; + NV_Ith_S(dqs, 10) = var_chaste_interface__membrane_data_clamp_current; + NV_Ith_S(dqs, 11) = var_INa__i_Na_converted; + NV_Ith_S(dqs, 12) = var_INa_h_gate__tau_h; + NV_Ith_S(dqs, 13) = var_INa_j_gate__tau_j; + NV_Ith_S(dqs, 14) = var_Itof__i_tof_converted; + NV_Ith_S(dqs, 15) = var_IK1__i_K1_converted; + NV_Ith_S(dqs, 16) = var_IK1__G_K1; + NV_Ith_S(dqs, 17) = var_IKr__i_Kr_converted; + NV_Ith_S(dqs, 18) = var_IKs__i_Ks_converted; + NV_Ith_S(dqs, 19) = var_Itos__i_tos_converted; + NV_Ith_S(dqs, 20) = var_INaCa__i_NaCa_converted; + NV_Ith_S(dqs, 21) = var_cell__i_Stim_converted; + NV_Ith_S(dqs, 22) = var_reversal_potentials__E_K; + NV_Ith_S(dqs, 23) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "shannon_wang_puglisi_weber_bers_2004_model_updated"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-85.721630473733); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.6504944644883e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.98714602875678); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.991826348770428); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0013702407736465); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("IKr_Xr_gate__Xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00846906175020028); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("IKs_Xs_gate__Xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00613557812033723); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("Itos_X_gate__X_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401072468238921); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("Itos_Y_gate__Y_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.31555225368514); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("Itos_R_gate__R_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.402577243036347); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("Itof_X_gate__X_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401068798369438); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("Itof_Y_gate__Y_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.994632857675454); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.99526086177479e-06); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.00067601563206); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_SL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0150193299768419); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_jct"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0244048782575591); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("Jrel_SR__R"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.890917121306535); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("Jrel_SR__I"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.71752603681652e-08); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("Jrel_SR__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.1199533741995e-07); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87161932058707); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87031835089116); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("Na_buffer__Na_SL_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.77606800956492); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("Na_buffer__Na_jct_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(3.55668431730337); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87200572571131); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.547125831028543); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000104971310105451); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000174045152623969); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00973710481246467); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00774564218017916); + + // NV_Ith_S(rY, 29): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.113168405274355); + + // NV_Ith_S(rY, 30): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0772568134367606); + + // NV_Ith_S(rY, 31): + this->mVariableNames.push_back("Ca_buffer__Ca_Calsequestrin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.18828527890062); + + // NV_Ith_S(rY, 32): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00886665040283094); + + // NV_Ith_S(rY, 33): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.117873278193472); + + // NV_Ith_S(rY, 34): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0103906683506505); + + // NV_Ith_S(rY, 35): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Calmodulin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000293073957804278); + + // NV_Ith_S(rY, 36): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00195899238146509); + + // NV_Ith_S(rY, 37): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.137523520981802); + + // NV_Ith_S(rY, 38): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_SRB"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00215728901718264); + + // NV_Ith_S(rY, 39): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 40): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 41): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 42): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 43): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 44): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("cytosolic_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[9]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[10]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[11]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kilomole_kelvin"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("litre_per_farad_millisecond"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_background_chloride_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_data_clamp_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[22]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[23]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[24]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mDerivedQuantityUnits.push_back("dimensionless"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_background_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_background_chloride_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_background_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_data_clamp_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [23]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvodeDataClamp(pSolver, pStimulus); + } + +} +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/grandi_pasqualini_bers_2010_ssCvodeDataClamp--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/grandi_pasqualini_bers_2010_ssCvodeDataClamp--sympy_1_13.cpp new file mode 100644 index 00000000..30f3614f --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/grandi_pasqualini_bers_2010_ssCvodeDataClamp--sympy_1_13.cpp @@ -0,0 +1,1312 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: grandi_pasqualini_bers_2010_epi +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: CvodeCellWithDataClamp) +//! on (date omitted as unimportant) +//! +//! + +#include "grandi_pasqualini_bers_2010_ssCvodeDataClamp.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + +#include "ModelFactory.hpp" + +AbstractCvodeCellWithDataClamp* Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp(p_solver, p_stimulus); +} + +bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = ModelFactory::Register("grandi_pasqualini_bers_2010_ss", "CvodeCellWithDataClamp", (ModelFactory::TCreateMethod)Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::CreateMethod); + + + + boost::shared_ptr Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane_potential__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane_potential__stim_duration = 5; // msec + const double var_chaste_interface__membrane_potential__stim_period = 1000; // msec + const double var_chaste_interface__membrane_potential__stim_start = 100; // msec + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane_potential__stim_amplitude_converted), + var_chaste_interface__membrane_potential__stim_duration, + var_chaste_interface__membrane_potential__stim_period, + var_chaste_interface__membrane_potential__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCellWithDataClamp( + pOdeSolver, + 39, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_SR_Fluxes__SR_leak_max) [per_msec] + NV_Ith_S(this->mParameters, 1) = 25; // (var_parameters__ks) [per_msec] + NV_Ith_S(this->mParameters, 2) = 0.0053114; // (var_parameters__Vmax_SRCaP) [mM_per_msec] + NV_Ith_S(this->mParameters, 3) = 1; // (var_Na_Concentrations__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 15; // (var_parameters__Cli) [mM] + NV_Ith_S(this->mParameters, 5) = 1.8; // (var_parameters__Cao) [mM] + NV_Ith_S(this->mParameters, 6) = 150; // (var_parameters__Clo) [mM] + NV_Ith_S(this->mParameters, 7) = 5.4000000000000004; // (var_parameters__Ko) [mM] + NV_Ith_S(this->mParameters, 8) = 140; // (var_parameters__Nao) [mM] + NV_Ith_S(this->mParameters, 9) = 96485; // (var_parameters__Frdy) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 10) = 8314; // (var_parameters__R) [joule_per_kelvin_per_kilomole] + NV_Ith_S(this->mParameters, 11) = 0.5; // (var_parameters__pCa_max) [cm_per_sec] + NV_Ith_S(this->mParameters, 12) = 0; // (var_membrane_data_clamp_current_conductance) [dimensionless] + NV_Ith_S(this->mParameters, 13) = 23; // (var_parameters__GNa) [mS_per_uF] + NV_Ith_S(this->mParameters, 14) = 0; // (var_I_Na__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 15) = 0; // (var_I_Na__shift_INa_inact) [mV] + NV_Ith_S(this->mParameters, 16) = 1; // (var_I_to__GtoFast_factor) [dimensionless] + NV_Ith_S(this->mParameters, 17) = 0.34999999999999998; // (var_I_Ki__g_ki_factor) [mS_per_uF] + NV_Ith_S(this->mParameters, 18) = 0.035000000000000003; // (var_I_Kr__gkr_max) [mS_per_uF] + NV_Ith_S(this->mParameters, 19) = 1; // (var_I_Ks__GKs_factor) [dimensionless] + NV_Ith_S(this->mParameters, 20) = 1; // (var_I_to__GtoSlow_factor) [dimensionless] + NV_Ith_S(this->mParameters, 21) = 4.5; // (var_parameters__IbarNCX) [uA_per_uF] + NV_Ith_S(this->mParameters, 22) = 1.8; // (var_parameters__IbarNaK) [uA_per_uF] + NV_Ith_S(this->mParameters, 23) = 1.3809999999999999e-10; // (var_parameters__Cmem) [farad] + NV_Ith_S(this->mParameters, 24) = 310; // (var_parameters__Temp) [kelvin] + } + + Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::~Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp() + { + } + + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 39; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__Na_Concentrations__Na_j = NV_Ith_S(rY, 33); + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = NV_Ith_S(rY, 34); + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = NV_Ith_S(rY, 35); + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = NV_Ith_S(rY, 36); + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = NV_Ith_S(rY, 37); + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = NV_Ith_S(rY, 38); + // Units: mM; Initial value: 0.000106544589194246 + + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + exp(7.4880000000000004 - 0.16722408026755853 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * NV_Ith_S(mParameters, 19); // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF + const double var_parameters__GClB = 0.0089999999999999993; // mS_per_uF + const double var_parameters__GClCa = 0.0548125; // mS_per_uF + const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__KdClCa = 0.10000000000000001; // mM + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 17); // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 18); // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 8)); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__FoRT = NV_Ith_S(mParameters, 9) / (NV_Ith_S(mParameters, 10) * NV_Ith_S(mParameters, 24)); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24); // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_parameters__eca_junc = 0.5 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF + const double var_parameters__eca_sl = 0.5 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF + const double var_parameters__ecl = 1 * log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_I_ClCa__I_ClCa_junc = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_j); // uA_per_uF + const double var_I_ClCa__I_ClCa_sl = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_sl); // uA_per_uF + const double var_I_ClCa__I_ClCa = var_I_ClCa__I_ClCa_junc + var_I_ClCa__I_ClCa_sl; // uA_per_uF + const double var_I_ClCa__I_Clbk = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__GClB; // uA_per_uF + const double var_membrane_potential__I_Cl_tot = var_I_ClCa__I_ClCa + var_I_ClCa__I_Clbk; // uA_per_uF + const double var_parameters__ek = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_parameters__ena_junc = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF + const double var_parameters__ena_sl = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * NV_Ith_S(mParameters, 16)) : (0.0014039999999999999 * NV_Ith_S(mParameters, 16))); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * NV_Ith_S(mParameters, 20)) : (0.037595999999999997 * NV_Ith_S(mParameters, 20))); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_parameters__gkp = 0.002; // mS_per_uF + const double var_I_Kp__I_kp_junc = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fjunc * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp_sl = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fsl * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp = var_I_Kp__I_kp_junc + var_I_Kp__I_kp_sl; // uA_per_uF + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_membrane_potential__I_Ca_tot = var_Ca_Concentrations__I_Ca_tot_junc + var_Ca_Concentrations__I_Ca_tot_sl; // uA_per_uF + const double var_parameters__pK = 1.35e-7; // cm_per_sec + const double var_I_Ca__ibark = (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pK / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * ((1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_parameters__Fjunc_CaL + (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_parameters__Fsl_CaL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibark; // uA_per_uF + const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec + const double var_I_Ca__ibarna_j = (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarna_sl = (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF + const double var_membrane_potential__I_Na_tot = var_Na_Concentrations__I_Na_tot_junc + var_Na_Concentrations__I_Na_tot_sl; // uA_per_uF + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((NV_Ith_S(mParameters, 8) * var_parameters__pNaK + NV_Ith_S(mParameters, 7)) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_K_Concentration__I_K_tot = -2 * var_I_NaK__I_nak + var_I_Ca__I_CaK + var_I_Ki__I_ki + var_I_Kp__I_kp + var_I_Kr__I_kr + var_I_Ks__I_ks + var_I_to__I_to; // uA_per_uF + const double var_membrane_potential__I_tot = var_K_Concentration__I_K_tot + var_membrane_potential__I_Ca_tot + var_membrane_potential__I_Cl_tot + var_membrane_potential__I_Na_tot; // uA_per_uF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane_potential__I_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__Ca_Concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: mM; Initial value: 8.72745589849657e-05 + double var_chaste_interface__I_Na__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__SR_Fluxes__Ry_Rr = NV_Ith_S(rY, 15); + // Units: mM; Initial value: 0.891022230597263 + double var_chaste_interface__SR_Fluxes__Ry_Ro = NV_Ith_S(rY, 16); + // Units: mM; Initial value: 7.37484660389498e-07 + double var_chaste_interface__SR_Fluxes__Ry_Ri = NV_Ith_S(rY, 17); + // Units: mM; Initial value: 9.01984485847386e-08 + double var_chaste_interface__Na_Buffers__Na_Bj = NV_Ith_S(rY, 18); + // Units: mM; Initial value: 3.43545459048316 + double var_chaste_interface__Na_Buffers__Na_Bsl = NV_Ith_S(rY, 19); + // Units: mM; Initial value: 0.749601264899653 + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL = NV_Ith_S(rY, 20); + // Units: mM; Initial value: 0.00893708435270205 + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc = NV_Ith_S(rY, 21); + // Units: mM; Initial value: 0.117445983314504 + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm = NV_Ith_S(rY, 22); + // Units: mM; Initial value: 0.0105996734077994 + double var_chaste_interface__Cytosolic_Ca_Buffers__CaM = NV_Ith_S(rY, 23); + // Units: mM; Initial value: 0.000295653619580701 + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c = NV_Ith_S(rY, 24); + // Units: mM; Initial value: 0.00192645052472679 + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m = NV_Ith_S(rY, 25); + // Units: mM; Initial value: 0.137557201546068 + double var_chaste_interface__Cytosolic_Ca_Buffers__SRB = NV_Ith_S(rY, 26); + // Units: mM; Initial value: 0.00217414510791738 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j = NV_Ith_S(rY, 27); + // Units: mM; Initial value: 0.00738583890572642 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl = NV_Ith_S(rY, 28); + // Units: mM; Initial value: 0.00988178900584875 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j = NV_Ith_S(rY, 29); + // Units: mM; Initial value: 0.0734662466011574 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl = NV_Ith_S(rY, 30); + // Units: mM; Initial value: 0.114400081504523 + double var_chaste_interface__SR_Ca_Concentrations__Csqn_b = NV_Ith_S(rY, 31); + // Units: mM; Initial value: 1.19772047585784 + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = NV_Ith_S(rY, 32); + // Units: mM; Initial value: 0.555180633859957 + double var_chaste_interface__Na_Concentrations__Na_j = NV_Ith_S(rY, 33); + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = NV_Ith_S(rY, 34); + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = NV_Ith_S(rY, 35); + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = NV_Ith_S(rY, 36); + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = NV_Ith_S(rY, 37); + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = NV_Ith_S(rY, 38); + // Units: mM; Initial value: 0.000106544589194246 + + // Mathematics + double d_dt_chaste_interface_var_membrane_potential__V_m; + const double d_dt_chaste_interface_var_K_Concentration__K_i = 0; // mM / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bj = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bj + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bj) * var_chaste_interface__Ca_Concentrations__Ca_j; // 1 / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bsl + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl) * var_chaste_interface__Ca_Concentrations__Ca_sl; // 1 / msec + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_SR_Fluxes__MaxSR = 15; // dimensionless + const double var_SR_Fluxes__MinSR = 1; // dimensionless + const double var_SR_Fluxes__RI = 1 - var_chaste_interface__SR_Fluxes__Ry_Ri - var_chaste_interface__SR_Fluxes__Ry_Ro - var_chaste_interface__SR_Fluxes__Ry_Rr; // mM + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * NV_Ith_S(mParameters, 0); // mM_per_msec + const double var_I_Ca__dss = 1 / (1 + exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ca__fss = 1 / (1 + exp(3.8888888888888888 + 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ca__taud = 28.571428571428569 * (1 - exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m)) * var_I_Ca__dss / (5 + var_chaste_interface__membrane_potential__V_m); // msec + const double d_dt_chaste_interface_var_I_Ca__d = (-var_chaste_interface__I_Ca__d + var_I_Ca__dss) / var_I_Ca__taud; // 1 / msec + const double var_I_Ca__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane_potential__V_m), 2))); // msec + const double d_dt_chaste_interface_var_I_Ca__f = (-var_chaste_interface__I_Ca__f + var_I_Ca__fss) / var_I_Ca__tauf; // 1 / msec + const double var_I_Kr__tauxr = 230 / (1 + exp(2 + 0.050000000000000003 * var_chaste_interface__membrane_potential__V_m)) + 3300 / ((1 + exp(1.2222222222222223 + 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m)) * (1 + exp(-2.4444444444444446 - 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m))); // msec + const double var_I_Kr__xrss = 1 / (1 + exp(-2 - 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double d_dt_chaste_interface_var_I_Kr__x_kr = (-var_chaste_interface__I_Kr__x_kr + var_I_Kr__xrss) / var_I_Kr__tauxr; // 1 / msec + const double var_I_Ks__tauxs = 990.10000000000002 / (1 + exp(-0.17252124645892353 - 0.070821529745042494 * var_chaste_interface__membrane_potential__V_m)); // msec + const double var_I_Ks__xsss = 1 / (1 + exp(-0.26666666666666666 - 0.070175438596491224 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double d_dt_chaste_interface_var_I_Ks__x_ks = (-var_chaste_interface__I_Ks__x_ks + var_I_Ks__xsss) / var_I_Ks__tauxs; // 1 / msec + const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 15) - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); // dimensionless + const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * NV_Ith_S(mParameters, 15)) - 6.9480000000000002e-6 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 15) - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * NV_Ith_S(mParameters, 15))))); // dimensionless + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 15) - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * NV_Ith_S(mParameters, 15)) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * NV_Ith_S(mParameters, 15)))); // dimensionless + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * NV_Ith_S(mParameters, 15)) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 15) - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * NV_Ith_S(mParameters, 15) - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 15) - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); // dimensionless + const double var_I_Na__hss = 0.01 * NV_Ith_S(mParameters, 14) + 1 * (1 - 0.01 * NV_Ith_S(mParameters, 14)) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * NV_Ith_S(mParameters, 15))), 2); // dimensionless + const double var_I_Na__jss = 0.01 * NV_Ith_S(mParameters, 14) + 1 * (1 - 0.01 * NV_Ith_S(mParameters, 14)) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * NV_Ith_S(mParameters, 15))), 2); // dimensionless + const double var_I_Na__mss = 1 / pow((1 + exp(-6.2967884828349945 - 0.11074197120708749 * var_chaste_interface__membrane_potential__V_m)), 2); // dimensionless + const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); // msec + const double d_dt_chaste_interface_var_I_Na__h = (-var_chaste_interface__I_Na__h + var_I_Na__hss) / var_I_Na__tauh; // 1 / msec + const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); // msec + const double d_dt_chaste_interface_var_I_Na__j = (-var_chaste_interface__I_Na__j + var_I_Na__jss) / var_I_Na__tauj; // 1 / msec + const double var_I_Na__taum = 0.12920000000000001 * exp(-8.682389366752302 * pow((1 + 0.021838829438742085 * var_chaste_interface__membrane_potential__V_m), 2)) + 0.064869999999999997 * exp(-0.0089012876052174655 * pow((-1 + 0.2073398299813394 * var_chaste_interface__membrane_potential__V_m), 2)); // msec + const double d_dt_chaste_interface_var_I_Na__m = (-var_chaste_interface__I_Na__m + var_I_Na__mss) / var_I_Na__taum; // 1 / msec + const double var_I_to__tauxtof = 0.5 + 8.5 * exp(-0.81000000000000005 * pow((1 + 0.022222222222222223 * var_chaste_interface__membrane_potential__V_m), 2)); // msec + const double var_I_to__tauxtos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__membrane_potential__V_m)); // msec + const double var_I_to__tauytof = 7 + 85 * exp(-7.2727272727272725 * pow((1 + 0.025000000000000001 * var_chaste_interface__membrane_potential__V_m), 2)); // msec + const double var_I_to__tauytos = 30 + 800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m)); // msec + const double var_I_to__xtoss = 1 / (1 + exp(1.4615384615384615 - 0.076923076923076927 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double d_dt_chaste_interface_var_I_to__x_to_f = (-var_chaste_interface__I_to__x_to_f + var_I_to__xtoss) / var_I_to__tauxtof; // 1 / msec + const double d_dt_chaste_interface_var_I_to__x_to_s = (-var_chaste_interface__I_to__x_to_s + var_I_to__xtoss) / var_I_to__tauxtos; // 1 / msec + const double var_I_to__ytoss = 1 / (1 + exp(3.8999999999999999 + 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double d_dt_chaste_interface_var_I_to__y_to_f = (-var_chaste_interface__I_to__y_to_f + var_I_to__ytoss) / var_I_to__tauytof; // 1 / msec + const double d_dt_chaste_interface_var_I_to__y_to_s = (-var_chaste_interface__I_to__y_to_s + var_I_to__ytoss) / var_I_to__tauytos; // 1 / msec + const double var_parameters__Bmax_CaM = 0.024; // mM + const double var_parameters__Bmax_Naj = 7.5609999999999999; // mM + const double var_parameters__Bmax_Nasl = 1.6499999999999999; // mM + const double var_parameters__Bmax_SR = 0.017100000000000001; // mM + const double var_parameters__Bmax_TnChigh = 0.14000000000000001; // mM + const double var_parameters__Bmax_TnClow = 0.070000000000000007; // mM + const double var_parameters__Bmax_myosin = 0.14000000000000001; // mM + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF + const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__J_ca_juncsl = 8.2413000000000004e-13; // liters_per_msec + const double var_parameters__J_ca_slmyo = 3.2742999999999999e-12; // liters_per_msec + const double var_parameters__J_na_juncsl = 1.8312999999999999e-14; // liters_per_msec + const double var_parameters__J_na_slmyo = 1.6385999999999999e-12; // liters_per_msec + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_parameters__Kmf = 0.00024600000000000002; // mM + const double var_parameters__Kmr = 1.7; // mM + const double var_parameters__Mgi = 1; // mM + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 8)); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless + const double var_parameters__FoRT = NV_Ith_S(mParameters, 9) / (NV_Ith_S(mParameters, 10) * NV_Ith_S(mParameters, 24)); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24); // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_parameters__cellLength = 100; // um + const double var_parameters__cellRadius = 10.25; // um + const double var_parameters__Vcell = 1.0000000000000001e-15 * M_PI * pow(var_parameters__cellRadius, 2) * var_parameters__cellLength; // liter + const double var_parameters__Vjunc = 0.00053900000000000009 * var_parameters__Vcell; // liter + const double var_parameters__Vmyo = 0.65000000000000002 * var_parameters__Vcell; // liter + const double d_dt_chaste_interface_var_Na_Concentrations__Na_i = (-var_chaste_interface__Na_Concentrations__Na_i + var_chaste_interface__Na_Concentrations__Na_sl) * NV_Ith_S(mParameters, 3) * var_parameters__J_na_slmyo / var_parameters__Vmyo; // mM / msec + const double var_parameters__Bmax_SLhighj = 0.000165 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Bmax_SLlowj = 0.00046000000000000001 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Vsl = 0.02 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_SLhighsl = 0.0134 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Bmax_SLlowsl = 0.037400000000000003 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Vsr = 0.035000000000000003 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_Csqn = 0.14000000000000001 * var_parameters__Vmyo / var_parameters__Vsr; // mM + const double var_parameters__ec50SR = 0.45000000000000001; // mM + const double var_SR_Fluxes__kCaSR = -(-var_SR_Fluxes__MinSR + var_SR_Fluxes__MaxSR) / (1 + pow((var_parameters__ec50SR / var_chaste_interface__SR_Ca_Concentrations__Ca_sr), 2.5)) + var_SR_Fluxes__MaxSR; // dimensionless + const double var_parameters__eca_junc = 0.5 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF + const double var_parameters__eca_sl = 0.5 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF + const double var_parameters__ena_junc = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF + const double var_parameters__ena_sl = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF + const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless + const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * NV_Ith_S(mParameters, 2) / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_parameters__kiCa = 0.5; // per_mM_per_msec + const double var_SR_Fluxes__kiSRCa = var_SR_Fluxes__kCaSR * var_parameters__kiCa; // per_mM_per_msec + const double var_parameters__kim = 0.0050000000000000001; // per_msec + const double var_parameters__koCa = 10; // per_mM2_per_msec + const double var_SR_Fluxes__koSRCa = var_parameters__koCa / var_SR_Fluxes__kCaSR; // per_mM2_per_msec + const double var_parameters__koff_cam = 0.23799999999999999; // per_msec + const double var_parameters__koff_csqn = 65; // per_msec + const double var_parameters__koff_myoca = 0.00046000000000000001; // per_msec + const double var_parameters__koff_myomg = 5.7000000000000003e-5; // per_msec + const double var_parameters__koff_na = 0.001; // per_msec + const double var_parameters__koff_slh = 0.029999999999999999; // per_msec + const double var_parameters__koff_sll = 1.3; // per_msec + const double var_parameters__koff_sr = 0.059999999999999998; // per_msec + const double var_parameters__koff_tnchca = 3.1999999999999999e-5; // per_msec + const double var_parameters__koff_tnchmg = 0.0033300000000000001; // per_msec + const double var_parameters__koff_tncl = 0.019599999999999999; // per_msec + const double var_parameters__kom = 0.059999999999999998; // per_msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri = -var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kim - var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kom + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_SR_Fluxes__RI * var_SR_Fluxes__koSRCa + var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro = var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kim - var_chaste_interface__SR_Fluxes__Ry_Ro * var_parameters__kom + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr = var_SR_Fluxes__RI * var_parameters__kim + var_chaste_interface__SR_Fluxes__Ry_Ro * var_parameters__kom - pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__kiSRCa; // mM / msec + const double var_parameters__kon_cam = 34; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM = -var_chaste_interface__Cytosolic_Ca_Buffers__CaM * var_parameters__koff_cam + (-var_chaste_interface__Cytosolic_Ca_Buffers__CaM + var_parameters__Bmax_CaM) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_cam; // mM / msec + const double var_parameters__kon_csqn = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b = -var_chaste_interface__SR_Ca_Concentrations__Csqn_b * var_parameters__koff_csqn + (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr * var_parameters__kon_csqn; // mM / msec + const double var_parameters__kon_myoca = 13.800000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c = -var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c * var_parameters__koff_myoca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_myoca; // mM / msec + const double var_parameters__kon_myomg = 0.015699999999999999; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m = -var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m * var_parameters__koff_myomg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_parameters__Mgi * var_parameters__kon_myomg; // mM / msec + const double var_parameters__kon_na = 0.0001; // per_mM_per_msec + const double var_Na_Buffers__dNa_Bj_dt = -var_chaste_interface__Na_Buffers__Na_Bj * var_parameters__koff_na + (-var_chaste_interface__Na_Buffers__Na_Bj + var_parameters__Bmax_Naj) * var_chaste_interface__Na_Concentrations__Na_j * var_parameters__kon_na; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bj = var_Na_Buffers__dNa_Bj_dt; // mM / msec + const double var_Na_Buffers__dNa_Bsl_dt = -var_chaste_interface__Na_Buffers__Na_Bsl * var_parameters__koff_na + (-var_chaste_interface__Na_Buffers__Na_Bsl + var_parameters__Bmax_Nasl) * var_chaste_interface__Na_Concentrations__Na_sl * var_parameters__kon_na; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bsl = var_Na_Buffers__dNa_Bsl_dt; // mM / msec + const double var_parameters__kon_slh = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j * var_parameters__koff_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_slh; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl * var_parameters__koff_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_slh; // mM / msec + const double var_parameters__kon_sll = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_sll; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_sll; // mM / msec + const double var_Junctional_and_SL_Ca_Buffers__J_CaB_junction = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j * var_parameters__koff_slh - var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_sll; // mM_per_msec + const double var_Junctional_and_SL_Ca_Buffers__J_CaB_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl * var_parameters__koff_slh - var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_sll; // mM_per_msec + const double var_parameters__kon_sr = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB = -var_chaste_interface__Cytosolic_Ca_Buffers__SRB * var_parameters__koff_sr + (-var_chaste_interface__Cytosolic_Ca_Buffers__SRB + var_parameters__Bmax_SR) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_sr; // mM / msec + const double var_parameters__kon_tnchca = 2.3700000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc * var_parameters__koff_tnchca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tnchca; // mM / msec + const double var_parameters__kon_tnchmg = 0.0030000000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm * var_parameters__koff_tnchmg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_parameters__Mgi * var_parameters__kon_tnchmg; // mM / msec + const double var_parameters__kon_tncl = 32.700000000000003; // per_mM_per_msec + const double var_Cytosolic_Ca_Buffers__J_CaB_cytosol = -var_chaste_interface__Cytosolic_Ca_Buffers__CaM * var_parameters__koff_cam - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c * var_parameters__koff_myoca - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m * var_parameters__koff_myomg - var_chaste_interface__Cytosolic_Ca_Buffers__SRB * var_parameters__koff_sr - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc * var_parameters__koff_tnchca - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm * var_parameters__koff_tnchmg - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL * var_parameters__koff_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__CaM + var_parameters__Bmax_CaM) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_cam + (-var_chaste_interface__Cytosolic_Ca_Buffers__SRB + var_parameters__Bmax_SR) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_sr + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + var_parameters__Bmax_TnClow) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_myoca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_parameters__Mgi * var_parameters__kon_myomg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tnchca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_parameters__Mgi * var_parameters__kon_tnchmg; // mM_per_msec + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_i = -var_Cytosolic_Ca_Buffers__J_CaB_cytosol + (-var_chaste_interface__Ca_Concentrations__Ca_i + var_chaste_interface__Ca_Concentrations__Ca_sl) * var_parameters__J_ca_slmyo / var_parameters__Vmyo - var_SR_Fluxes__J_serca * var_parameters__Vsr / var_parameters__Vmyo; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL * var_parameters__koff_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + var_parameters__Bmax_TnClow) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tncl; // mM / msec + const double var_SR_Fluxes__J_SRCarel = 1 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * NV_Ith_S(mParameters, 1); // mM_per_msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr = -var_SR_Fluxes__J_SRCarel + var_chaste_interface__SR_Ca_Concentrations__Csqn_b * var_parameters__koff_csqn - var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vsr - (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr * var_parameters__kon_csqn + var_SR_Fluxes__J_serca; // mM / msec + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_j = -var_Junctional_and_SL_Ca_Buffers__J_CaB_junction + (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__Ca_Concentrations__Ca_sl) * var_parameters__J_ca_juncsl / var_parameters__Vjunc + var_SR_Fluxes__J_SRCarel * var_parameters__Vsr / var_parameters__Vjunc + var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vjunc - 0.5 * var_Ca_Concentrations__I_Ca_tot_junc * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vjunc); // mM / msec + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl = -var_Junctional_and_SL_Ca_Buffers__J_CaB_sl + (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_i) * var_parameters__J_ca_slmyo / var_parameters__Vsl + (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_j) * var_parameters__J_ca_juncsl / var_parameters__Vsl - 0.5 * var_Ca_Concentrations__I_Ca_tot_sl * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vsl); // mM / msec + const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec + const double var_I_Ca__ibarna_j = (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarna_sl = (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_j = (-var_Na_Buffers__dNa_Bj_dt + (-var_chaste_interface__Na_Concentrations__Na_j + var_chaste_interface__Na_Concentrations__Na_sl) * var_parameters__J_na_juncsl / var_parameters__Vjunc - var_Na_Concentrations__I_Na_tot_junc * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vjunc)) * NV_Ith_S(mParameters, 3); // mM / msec + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_sl = (-var_Na_Buffers__dNa_Bsl_dt + (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_i) * var_parameters__J_na_slmyo / var_parameters__Vsl + (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_j) * var_parameters__J_na_juncsl / var_parameters__Vsl - var_Na_Concentrations__I_Na_tot_sl * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vsl)) * NV_Ith_S(mParameters, 3); // mM / msec + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane_potential__V_m = 0.0; + } + else + { + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + exp(7.4880000000000004 - 0.16722408026755853 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane_potential__i_Stim = var_membrane_potential__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * NV_Ith_S(mParameters, 19); // mS_per_uF + const double var_parameters__GClB = 0.0089999999999999993; // mS_per_uF + const double var_parameters__GClCa = 0.0548125; // mS_per_uF + const double var_parameters__KdClCa = 0.10000000000000001; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 17); // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 18); // mS_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_parameters__ecl = 1 * log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_I_ClCa__I_ClCa_junc = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_j); // uA_per_uF + const double var_I_ClCa__I_ClCa_sl = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_sl); // uA_per_uF + const double var_I_ClCa__I_ClCa = var_I_ClCa__I_ClCa_junc + var_I_ClCa__I_ClCa_sl; // uA_per_uF + const double var_I_ClCa__I_Clbk = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__GClB; // uA_per_uF + const double var_membrane_potential__I_Cl_tot = var_I_ClCa__I_ClCa + var_I_ClCa__I_Clbk; // uA_per_uF + const double var_parameters__ek = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * NV_Ith_S(mParameters, 16)) : (0.0014039999999999999 * NV_Ith_S(mParameters, 16))); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * NV_Ith_S(mParameters, 20)) : (0.037595999999999997 * NV_Ith_S(mParameters, 20))); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_parameters__gkp = 0.002; // mS_per_uF + const double var_I_Kp__I_kp_junc = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fjunc * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp_sl = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fsl * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp = var_I_Kp__I_kp_junc + var_I_Kp__I_kp_sl; // uA_per_uF + const double var_membrane_potential__I_Ca_tot = var_Ca_Concentrations__I_Ca_tot_junc + var_Ca_Concentrations__I_Ca_tot_sl; // uA_per_uF + const double var_parameters__pK = 1.35e-7; // cm_per_sec + const double var_I_Ca__ibark = (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pK / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * ((1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_parameters__Fjunc_CaL + (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_parameters__Fsl_CaL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibark; // uA_per_uF + const double var_membrane_potential__I_Na_tot = var_Na_Concentrations__I_Na_tot_junc + var_Na_Concentrations__I_Na_tot_sl; // uA_per_uF + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((NV_Ith_S(mParameters, 8) * var_parameters__pNaK + NV_Ith_S(mParameters, 7)) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_K_Concentration__I_K_tot = -2 * var_I_NaK__I_nak + var_I_Ca__I_CaK + var_I_Ki__I_ki + var_I_Kp__I_kp + var_I_Kr__I_kr + var_I_Ks__I_ks + var_I_to__I_to; // uA_per_uF + const double var_membrane_potential__I_tot = var_K_Concentration__I_K_tot + var_membrane_potential__I_Ca_tot + var_membrane_potential__I_Cl_tot + var_membrane_potential__I_Na_tot; // uA_per_uF + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 12); // uA_per_cm2 + } + d_dt_chaste_interface_var_membrane_potential__V_m = -var_chaste_interface__membrane_data_clamp_current - var_membrane_potential__I_tot - var_membrane_potential__i_Stim; // mV / msec + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane_potential__V_m; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_Concentrations__Ca_i; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_I_Na__m; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_I_Na__h; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_I_Na__j; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_I_Kr__x_kr; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_I_Ks__x_ks; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_I_to__x_to_s; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_I_to__y_to_s; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_I_to__x_to_f; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_I_to__y_to_f; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_I_Ca__d; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_I_Ca__f; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_I_Ca__f_Ca_Bj; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_Na_Buffers__Na_Bj; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_Na_Buffers__Na_Bsl; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl; + NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j; + NV_Ith_S(rDY,30) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl; + NV_Ith_S(rDY,31) = d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b; + NV_Ith_S(rDY,32) = d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr; + NV_Ith_S(rDY,33) = d_dt_chaste_interface_var_Na_Concentrations__Na_j; + NV_Ith_S(rDY,34) = d_dt_chaste_interface_var_Na_Concentrations__Na_sl; + NV_Ith_S(rDY,35) = d_dt_chaste_interface_var_Na_Concentrations__Na_i; + NV_Ith_S(rDY,36) = d_dt_chaste_interface_var_K_Concentration__K_i; + NV_Ith_S(rDY,37) = d_dt_chaste_interface_var_Ca_Concentrations__Ca_j; + NV_Ith_S(rDY,38) = d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl; + } + + N_Vector Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__Ca_Concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: mM; Initial value: 8.72745589849657e-05 + double var_chaste_interface__I_Na__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__SR_Fluxes__Ry_Ro = NV_Ith_S(rY, 16); + // Units: mM; Initial value: 7.37484660389498e-07 + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = NV_Ith_S(rY, 32); + // Units: mM; Initial value: 0.555180633859957 + double var_chaste_interface__Na_Concentrations__Na_j = NV_Ith_S(rY, 33); + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = NV_Ith_S(rY, 34); + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = NV_Ith_S(rY, 35); + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = NV_Ith_S(rY, 36); + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = NV_Ith_S(rY, 37); + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = NV_Ith_S(rY, 38); + // Units: mM; Initial value: 0.000106544589194246 + + // Mathematics + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * NV_Ith_S(mParameters, 0); // mM_per_msec + const double var_I_Ca__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__membrane_potential__V_m), 2))); // msec + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 15) - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); // dimensionless + const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * NV_Ith_S(mParameters, 15)) - 6.9480000000000002e-6 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 15) - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * NV_Ith_S(mParameters, 15))))); // dimensionless + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 15) - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * NV_Ith_S(mParameters, 15)) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * NV_Ith_S(mParameters, 15)))); // dimensionless + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * NV_Ith_S(mParameters, 15)) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 15) - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * NV_Ith_S(mParameters, 15) - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 15) - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); // dimensionless + const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); // msec + const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); // msec + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 12); // uA_per_cm2 + } + const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_parameters__Cmem_converted = 1000000 * NV_Ith_S(mParameters, 23); // uF + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * NV_Ith_S(mParameters, 19); // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_parameters__Kmf = 0.00024600000000000002; // mM + const double var_parameters__Kmr = 1.7; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 17); // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 18); // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 8)); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless + const double var_parameters__FoRT = NV_Ith_S(mParameters, 9) / (NV_Ith_S(mParameters, 10) * NV_Ith_S(mParameters, 24)); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_I_NaK__I_nak_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NaK__I_nak; // uA_per_cm2 + const double var_parameters__Qpow = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24); // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca = var_I_PCa__I_pca_junc + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_I_PCa__I_pca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_PCa__I_pca; // uA_per_cm2 + const double var_parameters__ecl = 1 * log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ek = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Ki__I_ki_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ki__I_ki; // uA_per_cm2 + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_I_Kr__I_kr_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Kr__I_kr; // uA_per_cm2 + const double var_parameters__ena_junc = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_parameters__ena_sl = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_I_Na__I_Na = var_I_Na__I_Na_junc + var_I_Na__I_Na_sl; // uA_per_uF + const double var_I_Na__I_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Na__I_Na; // uA_per_cm2 + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * NV_Ith_S(mParameters, 16)) : (0.0014039999999999999 * NV_Ith_S(mParameters, 16))); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * NV_Ith_S(mParameters, 20)) : (0.037595999999999997 * NV_Ith_S(mParameters, 20))); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tof; // uA_per_cm2 + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_I_to__I_to_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_to; // uA_per_cm2 + const double var_I_to__I_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tos; // uA_per_cm2 + const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless + const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * NV_Ith_S(mParameters, 2) / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_SR_Fluxes__J_SRCarel = 1 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * NV_Ith_S(mParameters, 1); // mM_per_msec + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_I_NCX__I_ncx = var_I_NCX__I_ncx_junc + var_I_NCX__I_ncx_sl; // uA_per_uF + const double var_I_NCX__I_ncx_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NCX__I_ncx; // uA_per_cm2 + const double var_parameters__pCa = 0.00054000000000000001 * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_I_Ca__I_Ca = var_I_Ca__I_Ca_junc + var_I_Ca__I_Ca_sl; // uA_per_uF + const double var_I_Ca__I_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ca__I_Ca; // uA_per_cm2 + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((NV_Ith_S(mParameters, 8) * var_parameters__pNaK + NV_Ith_S(mParameters, 7)) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_I_Ks__I_ks_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ks__I_ks; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(27, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(27); +#endif + NV_Ith_S(dqs, 0) = var_SR_Fluxes__J_SRleak; + NV_Ith_S(dqs, 1) = var_SR_Fluxes__J_SRCarel; + NV_Ith_S(dqs, 2) = var_SR_Fluxes__J_serca; + NV_Ith_S(dqs, 3) = var_parameters__ecl; + NV_Ith_S(dqs, 4) = var_I_Ca__I_Ca_converted; + NV_Ith_S(dqs, 5) = var_I_Ca__tauf; + NV_Ith_S(dqs, 6) = var_I_PCa__I_pca_converted; + NV_Ith_S(dqs, 7) = var_parameters__Cmem_converted; + NV_Ith_S(dqs, 8) = var_chaste_interface__membrane_data_clamp_current; + NV_Ith_S(dqs, 9) = var_I_Na__I_Na_converted; + NV_Ith_S(dqs, 10) = var_I_Na__tauh; + NV_Ith_S(dqs, 11) = var_I_Na__tauj; + NV_Ith_S(dqs, 12) = var_I_to__I_tof_converted; + NV_Ith_S(dqs, 13) = var_I_to__GtoFast; + NV_Ith_S(dqs, 14) = var_I_Ki__I_ki_converted; + NV_Ith_S(dqs, 15) = var_I_Ki__g_K1; + NV_Ith_S(dqs, 16) = var_I_Kr__I_kr_converted; + NV_Ith_S(dqs, 17) = var_I_Ks__I_ks_converted; + NV_Ith_S(dqs, 18) = var_I_Ks__GKs_total; + NV_Ith_S(dqs, 19) = var_I_to__I_tos_converted; + NV_Ith_S(dqs, 20) = var_I_to__GtoSlow; + NV_Ith_S(dqs, 21) = var_I_NCX__I_ncx_converted; + NV_Ith_S(dqs, 22) = var_I_NaK__I_nak_converted; + NV_Ith_S(dqs, 23) = var_membrane_potential__i_Stim_converted; + NV_Ith_S(dqs, 24) = var_I_to__I_to_converted; + NV_Ith_S(dqs, 25) = var_parameters__ek; + NV_Ith_S(dqs, 26) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "grandi_pasqualini_bers_2010_epi"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "msec"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-81.4229700631461); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.72745589849657e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00381858135062259); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.625086621635645); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.62332507235506); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("I_Kr__x_kr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.021733554982663); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("I_Ks__x_ks"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00428981903391989); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("I_to__x_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441539203559411); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("I_to__y_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.784875334693892); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("I_to__x_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441531250866821); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("I_to__y_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999995817153572); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.93982287251302e-06); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99511673495949); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("I_Ca__f_Ca_Bj"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0246142436477748); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0152416826209301); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("SR_Fluxes__Ry_Rr"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.891022230597263); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("SR_Fluxes__Ry_Ro"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(7.37484660389498e-07); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("SR_Fluxes__Ry_Ri"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(9.01984485847386e-08); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("Na_Buffers__Na_Bj"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(3.43545459048316); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("Na_Buffers__Na_Bsl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.749601264899653); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CL"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00893708435270205); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHc"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.117445983314504); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHm"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0105996734077994); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__CaM"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000295653619580701); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_c"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00192645052472679); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_m"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.137557201546068); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__SRB"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00217414510791738); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00738583890572642); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00988178900584875); + + // NV_Ith_S(rY, 29): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0734662466011574); + + // NV_Ith_S(rY, 30): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.114400081504523); + + // NV_Ith_S(rY, 31): + this->mVariableNames.push_back("SR_Ca_Concentrations__Csqn_b"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(1.19772047585784); + + // NV_Ith_S(rY, 32): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.555180633859957); + + // NV_Ith_S(rY, 33): + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.3215690202059); + + // NV_Ith_S(rY, 34): + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32094589677861); + + // NV_Ith_S(rY, 35): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32114502072456); + + // NV_Ith_S(rY, 36): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(120.0); + + // NV_Ith_S(rY, 37): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000175415190830688); + + // NV_Ith_S(rY, 38): + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000106544589194246); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("mM_per_msec"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[9]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[10]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kelvin_per_kilomole"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("cm_per_sec"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_data_clamp_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("mV"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[22]: + this->mParameterNames.push_back("membrane_sodium_potassium_pump_current_permeability"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[23]: + this->mParameterNames.push_back("parameters__Cmem"); + this->mParameterUnits.push_back("farad"); + + // mParameters[24]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_leak_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("SR_uptake_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_data_clamp_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("membrane_sodium_potassium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [23]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [24]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [25]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [26]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("msec"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/grandi_pasqualini_bers_2010_ssCvodeDataClamp--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/grandi_pasqualini_bers_2010_ssCvodeDataClamp--sympy_1_14.cpp new file mode 100644 index 00000000..ec75e467 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP/grandi_pasqualini_bers_2010_ssCvodeDataClamp--sympy_1_14.cpp @@ -0,0 +1,1312 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: grandi_pasqualini_bers_2010_epi +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: CvodeCellWithDataClamp) +//! on (date omitted as unimportant) +//! +//! + +#include "grandi_pasqualini_bers_2010_ssCvodeDataClamp.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + +#include "ModelFactory.hpp" + +AbstractCvodeCellWithDataClamp* Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp(p_solver, p_stimulus); +} + +bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::registered = ModelFactory::Register("grandi_pasqualini_bers_2010_ss", "CvodeCellWithDataClamp", (ModelFactory::TCreateMethod)Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::CreateMethod); + + + + boost::shared_ptr Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane_potential__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane_potential__stim_duration = 5; // msec + const double var_chaste_interface__membrane_potential__stim_period = 1000; // msec + const double var_chaste_interface__membrane_potential__stim_start = 100; // msec + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane_potential__stim_amplitude_converted), + var_chaste_interface__membrane_potential__stim_duration, + var_chaste_interface__membrane_potential__stim_period, + var_chaste_interface__membrane_potential__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCellWithDataClamp( + pOdeSolver, + 39, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_SR_Fluxes__SR_leak_max) [per_msec] + NV_Ith_S(this->mParameters, 1) = 25; // (var_parameters__ks) [per_msec] + NV_Ith_S(this->mParameters, 2) = 0.0053114; // (var_parameters__Vmax_SRCaP) [mM_per_msec] + NV_Ith_S(this->mParameters, 3) = 1; // (var_Na_Concentrations__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 15; // (var_parameters__Cli) [mM] + NV_Ith_S(this->mParameters, 5) = 1.8; // (var_parameters__Cao) [mM] + NV_Ith_S(this->mParameters, 6) = 150; // (var_parameters__Clo) [mM] + NV_Ith_S(this->mParameters, 7) = 5.4000000000000004; // (var_parameters__Ko) [mM] + NV_Ith_S(this->mParameters, 8) = 140; // (var_parameters__Nao) [mM] + NV_Ith_S(this->mParameters, 9) = 96485; // (var_parameters__Frdy) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 10) = 8314; // (var_parameters__R) [joule_per_kelvin_per_kilomole] + NV_Ith_S(this->mParameters, 11) = 0.5; // (var_parameters__pCa_max) [cm_per_sec] + NV_Ith_S(this->mParameters, 12) = 0; // (var_membrane_data_clamp_current_conductance) [dimensionless] + NV_Ith_S(this->mParameters, 13) = 23; // (var_parameters__GNa) [mS_per_uF] + NV_Ith_S(this->mParameters, 14) = 0; // (var_I_Na__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 15) = 0; // (var_I_Na__shift_INa_inact) [mV] + NV_Ith_S(this->mParameters, 16) = 1; // (var_I_to__GtoFast_factor) [dimensionless] + NV_Ith_S(this->mParameters, 17) = 0.34999999999999998; // (var_I_Ki__g_ki_factor) [mS_per_uF] + NV_Ith_S(this->mParameters, 18) = 0.035000000000000003; // (var_I_Kr__gkr_max) [mS_per_uF] + NV_Ith_S(this->mParameters, 19) = 1; // (var_I_Ks__GKs_factor) [dimensionless] + NV_Ith_S(this->mParameters, 20) = 1; // (var_I_to__GtoSlow_factor) [dimensionless] + NV_Ith_S(this->mParameters, 21) = 4.5; // (var_parameters__IbarNCX) [uA_per_uF] + NV_Ith_S(this->mParameters, 22) = 1.8; // (var_parameters__IbarNaK) [uA_per_uF] + NV_Ith_S(this->mParameters, 23) = 1.3809999999999999e-10; // (var_parameters__Cmem) [farad] + NV_Ith_S(this->mParameters, 24) = 310; // (var_parameters__Temp) [kelvin] + } + + Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::~Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp() + { + } + + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 39; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__Na_Concentrations__Na_j = NV_Ith_S(rY, 33); + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = NV_Ith_S(rY, 34); + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = NV_Ith_S(rY, 35); + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = NV_Ith_S(rY, 36); + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = NV_Ith_S(rY, 37); + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = NV_Ith_S(rY, 38); + // Units: mM; Initial value: 0.000106544589194246 + + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + exp(7.4880000000000004 - 0.16722408026755853 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * NV_Ith_S(mParameters, 19); // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF + const double var_parameters__GClB = 0.0089999999999999993; // mS_per_uF + const double var_parameters__GClCa = 0.0548125; // mS_per_uF + const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__KdClCa = 0.10000000000000001; // mM + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 17); // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 18); // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 8)); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__FoRT = NV_Ith_S(mParameters, 9) / (NV_Ith_S(mParameters, 10) * NV_Ith_S(mParameters, 24)); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24); // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_parameters__eca_junc = 0.5 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF + const double var_parameters__eca_sl = 0.5 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF + const double var_parameters__ecl = 1 * log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_I_ClCa__I_ClCa_junc = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_j); // uA_per_uF + const double var_I_ClCa__I_ClCa_sl = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_sl); // uA_per_uF + const double var_I_ClCa__I_ClCa = var_I_ClCa__I_ClCa_junc + var_I_ClCa__I_ClCa_sl; // uA_per_uF + const double var_I_ClCa__I_Clbk = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__GClB; // uA_per_uF + const double var_membrane_potential__I_Cl_tot = var_I_ClCa__I_ClCa + var_I_ClCa__I_Clbk; // uA_per_uF + const double var_parameters__ek = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_parameters__ena_junc = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF + const double var_parameters__ena_sl = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * NV_Ith_S(mParameters, 16)) : (0.0014039999999999999 * NV_Ith_S(mParameters, 16))); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * NV_Ith_S(mParameters, 20)) : (0.037595999999999997 * NV_Ith_S(mParameters, 20))); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_parameters__gkp = 0.002; // mS_per_uF + const double var_I_Kp__I_kp_junc = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fjunc * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp_sl = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fsl * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp = var_I_Kp__I_kp_junc + var_I_Kp__I_kp_sl; // uA_per_uF + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_membrane_potential__I_Ca_tot = var_Ca_Concentrations__I_Ca_tot_junc + var_Ca_Concentrations__I_Ca_tot_sl; // uA_per_uF + const double var_parameters__pK = 1.35e-7; // cm_per_sec + const double var_I_Ca__ibark = (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pK / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * ((1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_parameters__Fjunc_CaL + (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_parameters__Fsl_CaL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibark; // uA_per_uF + const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec + const double var_I_Ca__ibarna_j = (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarna_sl = (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF + const double var_membrane_potential__I_Na_tot = var_Na_Concentrations__I_Na_tot_junc + var_Na_Concentrations__I_Na_tot_sl; // uA_per_uF + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((NV_Ith_S(mParameters, 8) * var_parameters__pNaK + NV_Ith_S(mParameters, 7)) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_K_Concentration__I_K_tot = -2 * var_I_NaK__I_nak + var_I_Ca__I_CaK + var_I_Ki__I_ki + var_I_Kp__I_kp + var_I_Kr__I_kr + var_I_Ks__I_ks + var_I_to__I_to; // uA_per_uF + const double var_membrane_potential__I_tot = var_K_Concentration__I_K_tot + var_membrane_potential__I_Ca_tot + var_membrane_potential__I_Cl_tot + var_membrane_potential__I_Na_tot; // uA_per_uF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane_potential__I_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__Ca_Concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: mM; Initial value: 8.72745589849657e-05 + double var_chaste_interface__I_Na__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__SR_Fluxes__Ry_Rr = NV_Ith_S(rY, 15); + // Units: mM; Initial value: 0.891022230597263 + double var_chaste_interface__SR_Fluxes__Ry_Ro = NV_Ith_S(rY, 16); + // Units: mM; Initial value: 7.37484660389498e-07 + double var_chaste_interface__SR_Fluxes__Ry_Ri = NV_Ith_S(rY, 17); + // Units: mM; Initial value: 9.01984485847386e-08 + double var_chaste_interface__Na_Buffers__Na_Bj = NV_Ith_S(rY, 18); + // Units: mM; Initial value: 3.43545459048316 + double var_chaste_interface__Na_Buffers__Na_Bsl = NV_Ith_S(rY, 19); + // Units: mM; Initial value: 0.749601264899653 + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL = NV_Ith_S(rY, 20); + // Units: mM; Initial value: 0.00893708435270205 + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc = NV_Ith_S(rY, 21); + // Units: mM; Initial value: 0.117445983314504 + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm = NV_Ith_S(rY, 22); + // Units: mM; Initial value: 0.0105996734077994 + double var_chaste_interface__Cytosolic_Ca_Buffers__CaM = NV_Ith_S(rY, 23); + // Units: mM; Initial value: 0.000295653619580701 + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c = NV_Ith_S(rY, 24); + // Units: mM; Initial value: 0.00192645052472679 + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m = NV_Ith_S(rY, 25); + // Units: mM; Initial value: 0.137557201546068 + double var_chaste_interface__Cytosolic_Ca_Buffers__SRB = NV_Ith_S(rY, 26); + // Units: mM; Initial value: 0.00217414510791738 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j = NV_Ith_S(rY, 27); + // Units: mM; Initial value: 0.00738583890572642 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl = NV_Ith_S(rY, 28); + // Units: mM; Initial value: 0.00988178900584875 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j = NV_Ith_S(rY, 29); + // Units: mM; Initial value: 0.0734662466011574 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl = NV_Ith_S(rY, 30); + // Units: mM; Initial value: 0.114400081504523 + double var_chaste_interface__SR_Ca_Concentrations__Csqn_b = NV_Ith_S(rY, 31); + // Units: mM; Initial value: 1.19772047585784 + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = NV_Ith_S(rY, 32); + // Units: mM; Initial value: 0.555180633859957 + double var_chaste_interface__Na_Concentrations__Na_j = NV_Ith_S(rY, 33); + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = NV_Ith_S(rY, 34); + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = NV_Ith_S(rY, 35); + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = NV_Ith_S(rY, 36); + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = NV_Ith_S(rY, 37); + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = NV_Ith_S(rY, 38); + // Units: mM; Initial value: 0.000106544589194246 + + // Mathematics + double d_dt_chaste_interface_var_membrane_potential__V_m; + const double d_dt_chaste_interface_var_K_Concentration__K_i = 0; // mM / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bj = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bj + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bj) * var_chaste_interface__Ca_Concentrations__Ca_j; // 1 / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bsl + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl) * var_chaste_interface__Ca_Concentrations__Ca_sl; // 1 / msec + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_SR_Fluxes__MaxSR = 15; // dimensionless + const double var_SR_Fluxes__MinSR = 1; // dimensionless + const double var_SR_Fluxes__RI = 1 - var_chaste_interface__SR_Fluxes__Ry_Ri - var_chaste_interface__SR_Fluxes__Ry_Ro - var_chaste_interface__SR_Fluxes__Ry_Rr; // mM + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * NV_Ith_S(mParameters, 0); // mM_per_msec + const double var_I_Ca__dss = 1 / (1 + exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ca__fss = 1 / (1 + exp(3.8888888888888888 + 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ca__taud = 28.571428571428569 * (1 - exp(-0.83333333333333337 - 0.16666666666666666 * var_chaste_interface__membrane_potential__V_m)) * var_I_Ca__dss / (5 + var_chaste_interface__membrane_potential__V_m); // msec + const double d_dt_chaste_interface_var_I_Ca__d = (-var_chaste_interface__I_Ca__d + var_I_Ca__dss) / var_I_Ca__taud; // 1 / msec + const double var_I_Ca__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-pow((0.48865000000000003 + 0.033700000000000001 * var_chaste_interface__membrane_potential__V_m), 2))); // msec + const double d_dt_chaste_interface_var_I_Ca__f = (-var_chaste_interface__I_Ca__f + var_I_Ca__fss) / var_I_Ca__tauf; // 1 / msec + const double var_I_Kr__tauxr = 230 / (1 + exp(2 + 0.050000000000000003 * var_chaste_interface__membrane_potential__V_m)) + 3300 / ((1 + exp(1.2222222222222223 + 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m)) * (1 + exp(-2.4444444444444446 - 0.1111111111111111 * var_chaste_interface__membrane_potential__V_m))); // msec + const double var_I_Kr__xrss = 1 / (1 + exp(-2 - 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double d_dt_chaste_interface_var_I_Kr__x_kr = (-var_chaste_interface__I_Kr__x_kr + var_I_Kr__xrss) / var_I_Kr__tauxr; // 1 / msec + const double var_I_Ks__tauxs = 990.10000000000002 / (1 + exp(-0.17252124645892353 - 0.070821529745042494 * var_chaste_interface__membrane_potential__V_m)); // msec + const double var_I_Ks__xsss = 1 / (1 + exp(-0.26666666666666666 - 0.070175438596491224 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double d_dt_chaste_interface_var_I_Ks__x_ks = (-var_chaste_interface__I_Ks__x_ks + var_I_Ks__xsss) / var_I_Ks__tauxs; // 1 / msec + const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 15) - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); // dimensionless + const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * NV_Ith_S(mParameters, 15)) - 6.9480000000000002e-6 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 15) - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * NV_Ith_S(mParameters, 15))))); // dimensionless + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 15) - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * NV_Ith_S(mParameters, 15)) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * NV_Ith_S(mParameters, 15)))); // dimensionless + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * NV_Ith_S(mParameters, 15)) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 15) - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * NV_Ith_S(mParameters, 15) - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 15) - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); // dimensionless + const double var_I_Na__hss = 0.01 * NV_Ith_S(mParameters, 14) + 1 * (1 - 0.01 * NV_Ith_S(mParameters, 14)) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * NV_Ith_S(mParameters, 15))), 2); // dimensionless + const double var_I_Na__jss = 0.01 * NV_Ith_S(mParameters, 14) + 1 * (1 - 0.01 * NV_Ith_S(mParameters, 14)) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * NV_Ith_S(mParameters, 15))), 2); // dimensionless + const double var_I_Na__mss = 1 / pow((1 + exp(-6.2967884828349945 - 0.11074197120708749 * var_chaste_interface__membrane_potential__V_m)), 2); // dimensionless + const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); // msec + const double d_dt_chaste_interface_var_I_Na__h = (-var_chaste_interface__I_Na__h + var_I_Na__hss) / var_I_Na__tauh; // 1 / msec + const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); // msec + const double d_dt_chaste_interface_var_I_Na__j = (-var_chaste_interface__I_Na__j + var_I_Na__jss) / var_I_Na__tauj; // 1 / msec + const double var_I_Na__taum = 0.12920000000000001 * exp(-pow((2.9465894465894467 + 0.064350064350064351 * var_chaste_interface__membrane_potential__V_m), 2)) + 0.064869999999999997 * exp(-pow((-0.094346635367762138 + 0.019561815336463225 * var_chaste_interface__membrane_potential__V_m), 2)); // msec + const double d_dt_chaste_interface_var_I_Na__m = (-var_chaste_interface__I_Na__m + var_I_Na__mss) / var_I_Na__taum; // 1 / msec + const double var_I_to__tauxtof = 0.5 + 8.5 * exp(-pow((0.90000000000000002 + 0.02 * var_chaste_interface__membrane_potential__V_m), 2)); // msec + const double var_I_to__tauxtos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__membrane_potential__V_m)); // msec + const double var_I_to__tauytof = 7 + 85 * exp(-0.0045454545454545452 * pow((40 + var_chaste_interface__membrane_potential__V_m), 2)); // msec + const double var_I_to__tauytos = 30 + 800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m)); // msec + const double var_I_to__xtoss = 1 / (1 + exp(1.4615384615384615 - 0.076923076923076927 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double d_dt_chaste_interface_var_I_to__x_to_f = (-var_chaste_interface__I_to__x_to_f + var_I_to__xtoss) / var_I_to__tauxtof; // 1 / msec + const double d_dt_chaste_interface_var_I_to__x_to_s = (-var_chaste_interface__I_to__x_to_s + var_I_to__xtoss) / var_I_to__tauxtos; // 1 / msec + const double var_I_to__ytoss = 1 / (1 + exp(3.8999999999999999 + 0.20000000000000001 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double d_dt_chaste_interface_var_I_to__y_to_f = (-var_chaste_interface__I_to__y_to_f + var_I_to__ytoss) / var_I_to__tauytof; // 1 / msec + const double d_dt_chaste_interface_var_I_to__y_to_s = (-var_chaste_interface__I_to__y_to_s + var_I_to__ytoss) / var_I_to__tauytos; // 1 / msec + const double var_parameters__Bmax_CaM = 0.024; // mM + const double var_parameters__Bmax_Naj = 7.5609999999999999; // mM + const double var_parameters__Bmax_Nasl = 1.6499999999999999; // mM + const double var_parameters__Bmax_SR = 0.017100000000000001; // mM + const double var_parameters__Bmax_TnChigh = 0.14000000000000001; // mM + const double var_parameters__Bmax_TnClow = 0.070000000000000007; // mM + const double var_parameters__Bmax_myosin = 0.14000000000000001; // mM + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__GCaB = 0.00055130000000000001; // mS_per_uF + const double var_parameters__GNaB = 0.00059699999999999998; // mS_per_uF + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__J_ca_juncsl = 8.2413000000000004e-13; // liters_per_msec + const double var_parameters__J_ca_slmyo = 3.2742999999999999e-12; // liters_per_msec + const double var_parameters__J_na_juncsl = 1.8312999999999999e-14; // liters_per_msec + const double var_parameters__J_na_slmyo = 1.6385999999999999e-12; // liters_per_msec + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_parameters__Kmf = 0.00024600000000000002; // mM + const double var_parameters__Kmr = 1.7; // mM + const double var_parameters__Mgi = 1; // mM + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 8)); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless + const double var_parameters__FoRT = NV_Ith_S(mParameters, 9) / (NV_Ith_S(mParameters, 10) * NV_Ith_S(mParameters, 24)); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24); // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_parameters__cellLength = 100; // um + const double var_parameters__cellRadius = 10.25; // um + const double var_parameters__Vcell = 1.0000000000000001e-15 * M_PI * pow(var_parameters__cellRadius, 2) * var_parameters__cellLength; // liter + const double var_parameters__Vjunc = 0.00053900000000000009 * var_parameters__Vcell; // liter + const double var_parameters__Vmyo = 0.65000000000000002 * var_parameters__Vcell; // liter + const double d_dt_chaste_interface_var_Na_Concentrations__Na_i = (-var_chaste_interface__Na_Concentrations__Na_i + var_chaste_interface__Na_Concentrations__Na_sl) * NV_Ith_S(mParameters, 3) * var_parameters__J_na_slmyo / var_parameters__Vmyo; // mM / msec + const double var_parameters__Bmax_SLhighj = 0.000165 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Bmax_SLlowj = 0.00046000000000000001 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Vsl = 0.02 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_SLhighsl = 0.0134 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Bmax_SLlowsl = 0.037400000000000003 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Vsr = 0.035000000000000003 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_Csqn = 0.14000000000000001 * var_parameters__Vmyo / var_parameters__Vsr; // mM + const double var_parameters__ec50SR = 0.45000000000000001; // mM + const double var_SR_Fluxes__kCaSR = -(-var_SR_Fluxes__MinSR + var_SR_Fluxes__MaxSR) / (1 + pow((var_parameters__ec50SR / var_chaste_interface__SR_Ca_Concentrations__Ca_sr), 2.5)) + var_SR_Fluxes__MaxSR; // dimensionless + const double var_parameters__eca_junc = 0.5 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_junc = (-var_parameters__eca_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GCaB; // uA_per_uF + const double var_parameters__eca_sl = 0.5 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT; // mV + const double var_I_CaBK__I_cabk_sl = (-var_parameters__eca_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GCaB; // uA_per_uF + const double var_parameters__ena_junc = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_I_NaBK__I_nabk_junc = (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GNaB; // uA_per_uF + const double var_parameters__ena_sl = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_I_NaBK__I_nabk_sl = (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GNaB; // uA_per_uF + const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless + const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * NV_Ith_S(mParameters, 2) / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_parameters__kiCa = 0.5; // per_mM_per_msec + const double var_SR_Fluxes__kiSRCa = var_SR_Fluxes__kCaSR * var_parameters__kiCa; // per_mM_per_msec + const double var_parameters__kim = 0.0050000000000000001; // per_msec + const double var_parameters__koCa = 10; // per_mM2_per_msec + const double var_SR_Fluxes__koSRCa = var_parameters__koCa / var_SR_Fluxes__kCaSR; // per_mM2_per_msec + const double var_parameters__koff_cam = 0.23799999999999999; // per_msec + const double var_parameters__koff_csqn = 65; // per_msec + const double var_parameters__koff_myoca = 0.00046000000000000001; // per_msec + const double var_parameters__koff_myomg = 5.7000000000000003e-5; // per_msec + const double var_parameters__koff_na = 0.001; // per_msec + const double var_parameters__koff_slh = 0.029999999999999999; // per_msec + const double var_parameters__koff_sll = 1.3; // per_msec + const double var_parameters__koff_sr = 0.059999999999999998; // per_msec + const double var_parameters__koff_tnchca = 3.1999999999999999e-5; // per_msec + const double var_parameters__koff_tnchmg = 0.0033300000000000001; // per_msec + const double var_parameters__koff_tncl = 0.019599999999999999; // per_msec + const double var_parameters__kom = 0.059999999999999998; // per_msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri = -var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kim - var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kom + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_SR_Fluxes__RI * var_SR_Fluxes__koSRCa + var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro = var_chaste_interface__SR_Fluxes__Ry_Ri * var_parameters__kim - var_chaste_interface__SR_Fluxes__Ry_Ro * var_parameters__kom + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr = var_SR_Fluxes__RI * var_parameters__kim + var_chaste_interface__SR_Fluxes__Ry_Ro * var_parameters__kom - pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__kiSRCa; // mM / msec + const double var_parameters__kon_cam = 34; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM = -var_chaste_interface__Cytosolic_Ca_Buffers__CaM * var_parameters__koff_cam + (-var_chaste_interface__Cytosolic_Ca_Buffers__CaM + var_parameters__Bmax_CaM) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_cam; // mM / msec + const double var_parameters__kon_csqn = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b = -var_chaste_interface__SR_Ca_Concentrations__Csqn_b * var_parameters__koff_csqn + (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr * var_parameters__kon_csqn; // mM / msec + const double var_parameters__kon_myoca = 13.800000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c = -var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c * var_parameters__koff_myoca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_myoca; // mM / msec + const double var_parameters__kon_myomg = 0.015699999999999999; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m = -var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m * var_parameters__koff_myomg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_parameters__Mgi * var_parameters__kon_myomg; // mM / msec + const double var_parameters__kon_na = 0.0001; // per_mM_per_msec + const double var_Na_Buffers__dNa_Bj_dt = -var_chaste_interface__Na_Buffers__Na_Bj * var_parameters__koff_na + (-var_chaste_interface__Na_Buffers__Na_Bj + var_parameters__Bmax_Naj) * var_chaste_interface__Na_Concentrations__Na_j * var_parameters__kon_na; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bj = var_Na_Buffers__dNa_Bj_dt; // mM / msec + const double var_Na_Buffers__dNa_Bsl_dt = -var_chaste_interface__Na_Buffers__Na_Bsl * var_parameters__koff_na + (-var_chaste_interface__Na_Buffers__Na_Bsl + var_parameters__Bmax_Nasl) * var_chaste_interface__Na_Concentrations__Na_sl * var_parameters__kon_na; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bsl = var_Na_Buffers__dNa_Bsl_dt; // mM / msec + const double var_parameters__kon_slh = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j * var_parameters__koff_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_slh; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl * var_parameters__koff_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_slh; // mM / msec + const double var_parameters__kon_sll = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_sll; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_sll; // mM / msec + const double var_Junctional_and_SL_Ca_Buffers__J_CaB_junction = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j * var_parameters__koff_slh - var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j * var_parameters__kon_sll; // mM_per_msec + const double var_Junctional_and_SL_Ca_Buffers__J_CaB_sl = -var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl * var_parameters__koff_slh - var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl * var_parameters__koff_sll + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_slh + (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl * var_parameters__kon_sll; // mM_per_msec + const double var_parameters__kon_sr = 100; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB = -var_chaste_interface__Cytosolic_Ca_Buffers__SRB * var_parameters__koff_sr + (-var_chaste_interface__Cytosolic_Ca_Buffers__SRB + var_parameters__Bmax_SR) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_sr; // mM / msec + const double var_parameters__kon_tnchca = 2.3700000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc * var_parameters__koff_tnchca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tnchca; // mM / msec + const double var_parameters__kon_tnchmg = 0.0030000000000000001; // per_mM_per_msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm * var_parameters__koff_tnchmg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_parameters__Mgi * var_parameters__kon_tnchmg; // mM / msec + const double var_parameters__kon_tncl = 32.700000000000003; // per_mM_per_msec + const double var_Cytosolic_Ca_Buffers__J_CaB_cytosol = -var_chaste_interface__Cytosolic_Ca_Buffers__CaM * var_parameters__koff_cam - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c * var_parameters__koff_myoca - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m * var_parameters__koff_myomg - var_chaste_interface__Cytosolic_Ca_Buffers__SRB * var_parameters__koff_sr - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc * var_parameters__koff_tnchca - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm * var_parameters__koff_tnchmg - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL * var_parameters__koff_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__CaM + var_parameters__Bmax_CaM) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_cam + (-var_chaste_interface__Cytosolic_Ca_Buffers__SRB + var_parameters__Bmax_SR) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_sr + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + var_parameters__Bmax_TnClow) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_myoca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + var_parameters__Bmax_myosin) * var_parameters__Mgi * var_parameters__kon_myomg + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tnchca + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + var_parameters__Bmax_TnChigh) * var_parameters__Mgi * var_parameters__kon_tnchmg; // mM_per_msec + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_i = -var_Cytosolic_Ca_Buffers__J_CaB_cytosol + (-var_chaste_interface__Ca_Concentrations__Ca_i + var_chaste_interface__Ca_Concentrations__Ca_sl) * var_parameters__J_ca_slmyo / var_parameters__Vmyo - var_SR_Fluxes__J_serca * var_parameters__Vsr / var_parameters__Vmyo; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL = -var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL * var_parameters__koff_tncl + (-var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + var_parameters__Bmax_TnClow) * var_chaste_interface__Ca_Concentrations__Ca_i * var_parameters__kon_tncl; // mM / msec + const double var_SR_Fluxes__J_SRCarel = 1 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * NV_Ith_S(mParameters, 1); // mM_per_msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr = -var_SR_Fluxes__J_SRCarel + var_chaste_interface__SR_Ca_Concentrations__Csqn_b * var_parameters__koff_csqn - var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vsr - (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr * var_parameters__kon_csqn + var_SR_Fluxes__J_serca; // mM / msec + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_junc = -2 * var_I_NCX__I_ncx_junc + var_I_Ca__I_Ca_junc + var_I_CaBK__I_cabk_junc + var_I_PCa__I_pca_junc; // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_j = -var_Junctional_and_SL_Ca_Buffers__J_CaB_junction + (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__Ca_Concentrations__Ca_sl) * var_parameters__J_ca_juncsl / var_parameters__Vjunc + var_SR_Fluxes__J_SRCarel * var_parameters__Vsr / var_parameters__Vjunc + var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vjunc - 0.5 * var_Ca_Concentrations__I_Ca_tot_junc * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vjunc); // mM / msec + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Ca_Concentrations__I_Ca_tot_sl = -2 * var_I_NCX__I_ncx_sl + var_I_Ca__I_Ca_sl + var_I_CaBK__I_cabk_sl + var_I_PCa__I_pca_sl; // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl = -var_Junctional_and_SL_Ca_Buffers__J_CaB_sl + (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_i) * var_parameters__J_ca_slmyo / var_parameters__Vsl + (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_j) * var_parameters__J_ca_juncsl / var_parameters__Vsl - 0.5 * var_Ca_Concentrations__I_Ca_tot_sl * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vsl); // mM / msec + const double var_parameters__pNa = 7.4999999999999993e-9; // cm_per_sec + const double var_I_Ca__ibarna_j = (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarna_sl = (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pNa / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaNa_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarna_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + var_I_Ca__I_CaNa_junc + var_I_Na__I_Na_junc + var_I_NaBK__I_nabk_junc; // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_j = (-var_Na_Buffers__dNa_Bj_dt + (-var_chaste_interface__Na_Concentrations__Na_j + var_chaste_interface__Na_Concentrations__Na_sl) * var_parameters__J_na_juncsl / var_parameters__Vjunc - var_Na_Concentrations__I_Na_tot_junc * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vjunc)) * NV_Ith_S(mParameters, 3); // mM / msec + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + var_I_Ca__I_CaNa_sl + var_I_Na__I_Na_sl + var_I_NaBK__I_nabk_sl; // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_sl = (-var_Na_Buffers__dNa_Bsl_dt + (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_i) * var_parameters__J_na_slmyo / var_parameters__Vsl + (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_j) * var_parameters__J_na_juncsl / var_parameters__Vsl - var_Na_Concentrations__I_Na_tot_sl * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vsl)) * NV_Ith_S(mParameters, 3); // mM / msec + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane_potential__V_m = 0.0; + } + else + { + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_I_Kp__kp_kp = 1 / (1 + exp(7.4880000000000004 - 0.16722408026755853 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane_potential__i_Stim = var_membrane_potential__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * NV_Ith_S(mParameters, 19); // mS_per_uF + const double var_parameters__GClB = 0.0089999999999999993; // mS_per_uF + const double var_parameters__GClCa = 0.0548125; // mS_per_uF + const double var_parameters__KdClCa = 0.10000000000000001; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 17); // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 18); // mS_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_parameters__ecl = 1 * log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_I_ClCa__I_ClCa_junc = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fjunc * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_j); // uA_per_uF + const double var_I_ClCa__I_ClCa_sl = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__Fsl * var_parameters__GClCa / (1 + var_parameters__KdClCa / var_chaste_interface__Ca_Concentrations__Ca_sl); // uA_per_uF + const double var_I_ClCa__I_ClCa = var_I_ClCa__I_ClCa_junc + var_I_ClCa__I_ClCa_sl; // uA_per_uF + const double var_I_ClCa__I_Clbk = (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) * var_parameters__GClB; // uA_per_uF + const double var_membrane_potential__I_Cl_tot = var_I_ClCa__I_ClCa + var_I_ClCa__I_Clbk; // uA_per_uF + const double var_parameters__ek = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * NV_Ith_S(mParameters, 16)) : (0.0014039999999999999 * NV_Ith_S(mParameters, 16))); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * NV_Ith_S(mParameters, 20)) : (0.037595999999999997 * NV_Ith_S(mParameters, 20))); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_parameters__gkp = 0.002; // mS_per_uF + const double var_I_Kp__I_kp_junc = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fjunc * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp_sl = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp * var_parameters__Fsl * var_parameters__gkp; // uA_per_uF + const double var_I_Kp__I_kp = var_I_Kp__I_kp_junc + var_I_Kp__I_kp_sl; // uA_per_uF + const double var_membrane_potential__I_Ca_tot = var_Ca_Concentrations__I_Ca_tot_junc + var_Ca_Concentrations__I_Ca_tot_sl; // uA_per_uF + const double var_parameters__pK = 1.35e-7; // cm_per_sec + const double var_I_Ca__ibark = (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pK / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_CaK = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * ((1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_parameters__Fjunc_CaL + (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_parameters__Fsl_CaL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibark; // uA_per_uF + const double var_membrane_potential__I_Na_tot = var_Na_Concentrations__I_Na_tot_junc + var_Na_Concentrations__I_Na_tot_sl; // uA_per_uF + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((NV_Ith_S(mParameters, 8) * var_parameters__pNaK + NV_Ith_S(mParameters, 7)) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_K_Concentration__I_K_tot = -2 * var_I_NaK__I_nak + var_I_Ca__I_CaK + var_I_Ki__I_ki + var_I_Kp__I_kp + var_I_Kr__I_kr + var_I_Ks__I_ks + var_I_to__I_to; // uA_per_uF + const double var_membrane_potential__I_tot = var_K_Concentration__I_K_tot + var_membrane_potential__I_Ca_tot + var_membrane_potential__I_Cl_tot + var_membrane_potential__I_Na_tot; // uA_per_uF + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 12); // uA_per_cm2 + } + d_dt_chaste_interface_var_membrane_potential__V_m = -var_chaste_interface__membrane_data_clamp_current - var_membrane_potential__I_tot - var_membrane_potential__i_Stim; // mV / msec + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane_potential__V_m; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_Concentrations__Ca_i; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_I_Na__m; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_I_Na__h; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_I_Na__j; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_I_Kr__x_kr; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_I_Ks__x_ks; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_I_to__x_to_s; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_I_to__y_to_s; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_I_to__x_to_f; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_I_to__y_to_f; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_I_Ca__d; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_I_Ca__f; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_I_Ca__f_Ca_Bj; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_Na_Buffers__Na_Bj; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_Na_Buffers__Na_Bsl; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl; + NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j; + NV_Ith_S(rDY,30) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl; + NV_Ith_S(rDY,31) = d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b; + NV_Ith_S(rDY,32) = d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr; + NV_Ith_S(rDY,33) = d_dt_chaste_interface_var_Na_Concentrations__Na_j; + NV_Ith_S(rDY,34) = d_dt_chaste_interface_var_Na_Concentrations__Na_sl; + NV_Ith_S(rDY,35) = d_dt_chaste_interface_var_Na_Concentrations__Na_i; + NV_Ith_S(rDY,36) = d_dt_chaste_interface_var_K_Concentration__K_i; + NV_Ith_S(rDY,37) = d_dt_chaste_interface_var_Ca_Concentrations__Ca_j; + NV_Ith_S(rDY,38) = d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl; + } + + N_Vector Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__Ca_Concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: mM; Initial value: 8.72745589849657e-05 + double var_chaste_interface__I_Na__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__SR_Fluxes__Ry_Ro = NV_Ith_S(rY, 16); + // Units: mM; Initial value: 7.37484660389498e-07 + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = NV_Ith_S(rY, 32); + // Units: mM; Initial value: 0.555180633859957 + double var_chaste_interface__Na_Concentrations__Na_j = NV_Ith_S(rY, 33); + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = NV_Ith_S(rY, 34); + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = NV_Ith_S(rY, 35); + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = NV_Ith_S(rY, 36); + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = NV_Ith_S(rY, 37); + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = NV_Ith_S(rY, 38); + // Units: mM; Initial value: 0.000106544589194246 + + // Mathematics + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * NV_Ith_S(mParameters, 0); // mM_per_msec + const double var_I_Ca__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-pow((0.48865000000000003 + 0.033700000000000001 * var_chaste_interface__membrane_potential__V_m), 2))); // msec + const double var_I_Kr__rkr = 1 / (1 + exp(3.0833333333333335 + 0.041666666666666664 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 15) - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); // dimensionless + const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * NV_Ith_S(mParameters, 15)) - 6.9480000000000002e-6 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 15) - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * NV_Ith_S(mParameters, 15))))); // dimensionless + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 15) - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * NV_Ith_S(mParameters, 15)) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * NV_Ith_S(mParameters, 15)))); // dimensionless + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * NV_Ith_S(mParameters, 15)) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 15) - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * NV_Ith_S(mParameters, 15) - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 15) - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); // dimensionless + const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); // msec + const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); // msec + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 12); // uA_per_cm2 + } + const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_parameters__Cmem_converted = 1000000 * NV_Ith_S(mParameters, 23); // uF + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * NV_Ith_S(mParameters, 19); // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_parameters__Kmf = 0.00024600000000000002; // mM + const double var_parameters__Kmr = 1.7; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 17); // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 18); // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 8)); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless + const double var_parameters__FoRT = NV_Ith_S(mParameters, 9) / (NV_Ith_S(mParameters, 10) * NV_Ith_S(mParameters, 24)); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_I_NaK__I_nak_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NaK__I_nak; // uA_per_cm2 + const double var_parameters__Qpow = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24); // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca = var_I_PCa__I_pca_junc + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_I_PCa__I_pca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_PCa__I_pca; // uA_per_cm2 + const double var_parameters__ecl = 1 * log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ek = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Ki__I_ki_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ki__I_ki; // uA_per_cm2 + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_I_Kr__I_kr_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Kr__I_kr; // uA_per_cm2 + const double var_parameters__ena_junc = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_parameters__ena_sl = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_I_Na__I_Na = var_I_Na__I_Na_junc + var_I_Na__I_Na_sl; // uA_per_uF + const double var_I_Na__I_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Na__I_Na; // uA_per_cm2 + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * NV_Ith_S(mParameters, 16)) : (0.0014039999999999999 * NV_Ith_S(mParameters, 16))); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * NV_Ith_S(mParameters, 20)) : (0.037595999999999997 * NV_Ith_S(mParameters, 20))); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tof; // uA_per_cm2 + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_I_to__I_to_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_to; // uA_per_cm2 + const double var_I_to__I_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tos; // uA_per_cm2 + const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless + const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * NV_Ith_S(mParameters, 2) / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_SR_Fluxes__J_SRCarel = 1 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * NV_Ith_S(mParameters, 1); // mM_per_msec + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_I_NCX__I_ncx = var_I_NCX__I_ncx_junc + var_I_NCX__I_ncx_sl; // uA_per_uF + const double var_I_NCX__I_ncx_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NCX__I_ncx; // uA_per_cm2 + const double var_parameters__pCa = 0.00054000000000000001 * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_I_Ca__I_Ca = var_I_Ca__I_Ca_junc + var_I_Ca__I_Ca_sl; // uA_per_uF + const double var_I_Ca__I_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ca__I_Ca; // uA_per_cm2 + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((NV_Ith_S(mParameters, 8) * var_parameters__pNaK + NV_Ith_S(mParameters, 7)) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_I_Ks__I_ks_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ks__I_ks; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(27, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(27); +#endif + NV_Ith_S(dqs, 0) = var_SR_Fluxes__J_SRleak; + NV_Ith_S(dqs, 1) = var_SR_Fluxes__J_SRCarel; + NV_Ith_S(dqs, 2) = var_SR_Fluxes__J_serca; + NV_Ith_S(dqs, 3) = var_parameters__ecl; + NV_Ith_S(dqs, 4) = var_I_Ca__I_Ca_converted; + NV_Ith_S(dqs, 5) = var_I_Ca__tauf; + NV_Ith_S(dqs, 6) = var_I_PCa__I_pca_converted; + NV_Ith_S(dqs, 7) = var_parameters__Cmem_converted; + NV_Ith_S(dqs, 8) = var_chaste_interface__membrane_data_clamp_current; + NV_Ith_S(dqs, 9) = var_I_Na__I_Na_converted; + NV_Ith_S(dqs, 10) = var_I_Na__tauh; + NV_Ith_S(dqs, 11) = var_I_Na__tauj; + NV_Ith_S(dqs, 12) = var_I_to__I_tof_converted; + NV_Ith_S(dqs, 13) = var_I_to__GtoFast; + NV_Ith_S(dqs, 14) = var_I_Ki__I_ki_converted; + NV_Ith_S(dqs, 15) = var_I_Ki__g_K1; + NV_Ith_S(dqs, 16) = var_I_Kr__I_kr_converted; + NV_Ith_S(dqs, 17) = var_I_Ks__I_ks_converted; + NV_Ith_S(dqs, 18) = var_I_Ks__GKs_total; + NV_Ith_S(dqs, 19) = var_I_to__I_tos_converted; + NV_Ith_S(dqs, 20) = var_I_to__GtoSlow; + NV_Ith_S(dqs, 21) = var_I_NCX__I_ncx_converted; + NV_Ith_S(dqs, 22) = var_I_NaK__I_nak_converted; + NV_Ith_S(dqs, 23) = var_membrane_potential__i_Stim_converted; + NV_Ith_S(dqs, 24) = var_I_to__I_to_converted; + NV_Ith_S(dqs, 25) = var_parameters__ek; + NV_Ith_S(dqs, 26) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "grandi_pasqualini_bers_2010_epi"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "msec"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-81.4229700631461); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.72745589849657e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00381858135062259); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.625086621635645); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.62332507235506); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("I_Kr__x_kr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.021733554982663); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("I_Ks__x_ks"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00428981903391989); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("I_to__x_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441539203559411); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("I_to__y_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.784875334693892); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("I_to__x_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441531250866821); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("I_to__y_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999995817153572); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.93982287251302e-06); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99511673495949); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("I_Ca__f_Ca_Bj"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0246142436477748); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0152416826209301); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("SR_Fluxes__Ry_Rr"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.891022230597263); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("SR_Fluxes__Ry_Ro"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(7.37484660389498e-07); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("SR_Fluxes__Ry_Ri"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(9.01984485847386e-08); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("Na_Buffers__Na_Bj"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(3.43545459048316); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("Na_Buffers__Na_Bsl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.749601264899653); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CL"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00893708435270205); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHc"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.117445983314504); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHm"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0105996734077994); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__CaM"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000295653619580701); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_c"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00192645052472679); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_m"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.137557201546068); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__SRB"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00217414510791738); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00738583890572642); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00988178900584875); + + // NV_Ith_S(rY, 29): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0734662466011574); + + // NV_Ith_S(rY, 30): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.114400081504523); + + // NV_Ith_S(rY, 31): + this->mVariableNames.push_back("SR_Ca_Concentrations__Csqn_b"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(1.19772047585784); + + // NV_Ith_S(rY, 32): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.555180633859957); + + // NV_Ith_S(rY, 33): + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.3215690202059); + + // NV_Ith_S(rY, 34): + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32094589677861); + + // NV_Ith_S(rY, 35): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32114502072456); + + // NV_Ith_S(rY, 36): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(120.0); + + // NV_Ith_S(rY, 37): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000175415190830688); + + // NV_Ith_S(rY, 38): + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000106544589194246); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("mM_per_msec"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[9]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[10]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kelvin_per_kilomole"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("cm_per_sec"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_data_clamp_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("mV"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[22]: + this->mParameterNames.push_back("membrane_sodium_potassium_pump_current_permeability"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[23]: + this->mParameterNames.push_back("parameters__Cmem"); + this->mParameterUnits.push_back("farad"); + + // mParameters[24]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_leak_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("SR_uptake_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_data_clamp_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("membrane_sodium_potassium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [23]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [24]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [25]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [26]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("msec"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClamp) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/grandi_pasqualini_bers_2010_ssCvodeDataClampOpt--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/grandi_pasqualini_bers_2010_ssCvodeDataClampOpt--sympy_1_13.cpp new file mode 100644 index 00000000..bf5795cb --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/grandi_pasqualini_bers_2010_ssCvodeDataClampOpt--sympy_1_13.cpp @@ -0,0 +1,1426 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: grandi_pasqualini_bers_2010_epi +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: CvodeCellWithDataClampOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "grandi_pasqualini_bers_2010_ssCvodeDataClampOpt.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + +#include "ModelFactory.hpp" + +AbstractCvodeCellWithDataClamp* Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt(p_solver, p_stimulus); +} + +bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::registered = ModelFactory::Register("grandi_pasqualini_bers_2010_ss", "CvodeCellWithDataClampOpt", (ModelFactory::TCreateMethod)Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::CreateMethod); + +class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<19; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane_potential__V_m) + { + const double _offset_0 = var_chaste_interface__membrane_potential__V_m - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane_potential__V_m) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane_potential__V_m>mTableMaxs[0] || var_chaste_interface__membrane_potential__V_m mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[19]; + + // Lookup tables + double (*_lookup_table_0)[19]; + int _lookup_table_0_num_misshit_piecewise[19] = {0}; + +}; + +std::shared_ptr Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::mpInstance; + + + boost::shared_ptr Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane_potential__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane_potential__stim_duration = 5; // msec + const double var_chaste_interface__membrane_potential__stim_period = 1000; // msec + const double var_chaste_interface__membrane_potential__stim_start = 100; // msec + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane_potential__stim_amplitude_converted), + var_chaste_interface__membrane_potential__stim_duration, + var_chaste_interface__membrane_potential__stim_period, + var_chaste_interface__membrane_potential__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCellWithDataClamp( + pOdeSolver, + 39, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_SR_Fluxes__SR_leak_max) [per_msec] + NV_Ith_S(this->mParameters, 1) = 25; // (var_parameters__ks) [per_msec] + NV_Ith_S(this->mParameters, 2) = 0.0053114; // (var_parameters__Vmax_SRCaP) [mM_per_msec] + NV_Ith_S(this->mParameters, 3) = 1; // (var_Na_Concentrations__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 15; // (var_parameters__Cli) [mM] + NV_Ith_S(this->mParameters, 5) = 1.8; // (var_parameters__Cao) [mM] + NV_Ith_S(this->mParameters, 6) = 150; // (var_parameters__Clo) [mM] + NV_Ith_S(this->mParameters, 7) = 5.4000000000000004; // (var_parameters__Ko) [mM] + NV_Ith_S(this->mParameters, 8) = 140; // (var_parameters__Nao) [mM] + NV_Ith_S(this->mParameters, 9) = 96485; // (var_parameters__Frdy) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 10) = 8314; // (var_parameters__R) [joule_per_kelvin_per_kilomole] + NV_Ith_S(this->mParameters, 11) = 0.5; // (var_parameters__pCa_max) [cm_per_sec] + NV_Ith_S(this->mParameters, 12) = 0; // (var_membrane_data_clamp_current_conductance) [dimensionless] + NV_Ith_S(this->mParameters, 13) = 23; // (var_parameters__GNa) [mS_per_uF] + NV_Ith_S(this->mParameters, 14) = 0; // (var_I_Na__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 15) = 0; // (var_I_Na__shift_INa_inact) [mV] + NV_Ith_S(this->mParameters, 16) = 1; // (var_I_to__GtoFast_factor) [dimensionless] + NV_Ith_S(this->mParameters, 17) = 0.34999999999999998; // (var_I_Ki__g_ki_factor) [mS_per_uF] + NV_Ith_S(this->mParameters, 18) = 0.035000000000000003; // (var_I_Kr__gkr_max) [mS_per_uF] + NV_Ith_S(this->mParameters, 19) = 1; // (var_I_Ks__GKs_factor) [dimensionless] + NV_Ith_S(this->mParameters, 20) = 1; // (var_I_to__GtoSlow_factor) [dimensionless] + NV_Ith_S(this->mParameters, 21) = 4.5; // (var_parameters__IbarNCX) [uA_per_uF] + NV_Ith_S(this->mParameters, 22) = 1.8; // (var_parameters__IbarNaK) [uA_per_uF] + NV_Ith_S(this->mParameters, 23) = 1.3809999999999999e-10; // (var_parameters__Cmem) [farad] + NV_Ith_S(this->mParameters, 24) = 310; // (var_parameters__Temp) [kelvin] + } + + Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::~Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt() + { + } + + AbstractLookupTableCollection* Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::GetLookupTableCollection() + { + return Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance(); + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 39; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__Na_Concentrations__Na_j = NV_Ith_S(rY, 33); + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = NV_Ith_S(rY, 34); + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = NV_Ith_S(rY, 35); + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = NV_Ith_S(rY, 36); + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = NV_Ith_S(rY, 37); + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = NV_Ith_S(rY, 38); + // Units: mM; Initial value: 0.000106544589194246 + + // Lookup table indexing + const bool _oob_0 = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane_potential__V_m); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane_potential__V_m); + + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Kp__kp_kp = _lt_0_row[0]; // dimensionless + const double var_parameters__FoRT = NV_Ith_S(mParameters, 9) / (NV_Ith_S(mParameters, 10) * NV_Ith_S(mParameters, 24)); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 8))) * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = 0.11 * var_I_NaK__fnak * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + 14641 / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (1.5 + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak_sl = 0.89000000000000001 * var_I_NaK__fnak * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + 14641 / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (1.5 + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24); // dimensionless + const double var_parameters__ecl = 1 * log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ek = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_parameters__ena_junc = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_parameters__ena_sl = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_NCX__I_ncx_junc = 0.11 * pow(1.5700000000000001, var_parameters__Qpow) * (pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * exp(0.27000000000000002 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) - pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * NV_Ith_S(mParameters, 21) / ((1 + 0.32000000000000001 * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + 2.2499999999999996e-8 / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)) * (1.3 * pow(var_chaste_interface__Na_Concentrations__Na_j, 3) + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + 669921.875 * (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_j) * var_chaste_interface__Ca_Concentrations__Ca_j + 0.0035899999999999999 * pow(NV_Ith_S(mParameters, 8), 3) * (1 + 0.00053869674493876331 * pow(var_chaste_interface__Na_Concentrations__Na_j, 3)))); // uA_per_uF + const double var_I_NCX__I_ncx_sl = 0.89000000000000001 * pow(1.5700000000000001, var_parameters__Qpow) * (pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * exp(0.27000000000000002 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) - pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * NV_Ith_S(mParameters, 21) / ((1 + 0.32000000000000001 * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + 2.2499999999999996e-8 / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)) * (1.3 * pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + 669921.875 * (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_sl) * var_chaste_interface__Ca_Concentrations__Ca_sl + 0.0035899999999999999 * pow(NV_Ith_S(mParameters, 8), 3) * (1 + 0.00053869674493876331 * pow(var_chaste_interface__Na_Concentrations__Na_sl, 3)))); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_membrane_potential__I_tot = 1 * var_I_NCX__I_ncx_junc + 1 * var_I_NCX__I_ncx_sl + 1 * var_I_NaK__I_nak_junc + 1 * var_I_NaK__I_nak_sl + 0.010148299999999999 * var_chaste_interface__membrane_potential__V_m - 0.0089999999999999993 * var_parameters__ecl - 6.567e-5 * var_parameters__ena_junc - 0.00053133 * var_parameters__ena_sl + 0.002 * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp + 0.006029375 * (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) / (1 + 0.10000000000000001 / var_chaste_interface__Ca_Concentrations__Ca_j) + 0.048783124999999997 * (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) / (1 + 0.10000000000000001 / var_chaste_interface__Ca_Concentrations__Ca_sl) - 3.0321500000000001e-5 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT - 0.00024532850000000001 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT + 0.0035000000000000001 * pow(var_chaste_interface__I_Ks__x_ks, 2) * (-1 * log((0.018329999999999999 * NV_Ith_S(mParameters, 8) + NV_Ith_S(mParameters, 7)) / (0.018329999999999999 * var_chaste_interface__Na_Concentrations__Na_i + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 19) + 0.0074029999999999999 * pow(2.3500000000000001, var_parameters__Qpow) * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) / (5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001)) + 0.059896999999999999 * pow(2.3500000000000001, var_parameters__Qpow) * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) / (5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001)) + 0.1144 * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 16) * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f + 0.015599999999999999 * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 20) * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s + 0.11 * pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * NV_Ith_S(mParameters, 13) + 0.43033148291193518 * _lt_0_row[1] * sqrt(NV_Ith_S(mParameters, 7)) * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 18) * var_chaste_interface__I_Kr__x_kr + 0.89000000000000001 * pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * NV_Ith_S(mParameters, 13) + 0.4389381125701739 * sqrt(NV_Ith_S(mParameters, 7)) * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 17) / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)))) + 3.3749999999999992e-10 * pow(1.8, var_parameters__Qpow) * (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) + 6.0749999999999998e-8 * pow(1.8, var_parameters__Qpow) * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + 0.099999999999999978 * var_I_Ca__fcaCaMSL + 0.90000000000000002 * var_I_Ca__fcaCaj - 0.099999999999999978 * var_chaste_interface__I_Ca__f_Ca_Bsl - 0.90000000000000002 * var_chaste_interface__I_Ca__f_Ca_Bj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) + 3.0374999999999999e-9 * pow(1.8, var_parameters__Qpow) * (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) + 0.17999999999999997 * pow(1.8, var_parameters__Qpow) * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) + 1.6200000000000001 * pow(1.8, var_parameters__Qpow) * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane_potential__I_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__Ca_Concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: mM; Initial value: 8.72745589849657e-05 + double var_chaste_interface__I_Na__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__SR_Fluxes__Ry_Rr = NV_Ith_S(rY, 15); + // Units: mM; Initial value: 0.891022230597263 + double var_chaste_interface__SR_Fluxes__Ry_Ro = NV_Ith_S(rY, 16); + // Units: mM; Initial value: 7.37484660389498e-07 + double var_chaste_interface__SR_Fluxes__Ry_Ri = NV_Ith_S(rY, 17); + // Units: mM; Initial value: 9.01984485847386e-08 + double var_chaste_interface__Na_Buffers__Na_Bj = NV_Ith_S(rY, 18); + // Units: mM; Initial value: 3.43545459048316 + double var_chaste_interface__Na_Buffers__Na_Bsl = NV_Ith_S(rY, 19); + // Units: mM; Initial value: 0.749601264899653 + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL = NV_Ith_S(rY, 20); + // Units: mM; Initial value: 0.00893708435270205 + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc = NV_Ith_S(rY, 21); + // Units: mM; Initial value: 0.117445983314504 + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm = NV_Ith_S(rY, 22); + // Units: mM; Initial value: 0.0105996734077994 + double var_chaste_interface__Cytosolic_Ca_Buffers__CaM = NV_Ith_S(rY, 23); + // Units: mM; Initial value: 0.000295653619580701 + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c = NV_Ith_S(rY, 24); + // Units: mM; Initial value: 0.00192645052472679 + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m = NV_Ith_S(rY, 25); + // Units: mM; Initial value: 0.137557201546068 + double var_chaste_interface__Cytosolic_Ca_Buffers__SRB = NV_Ith_S(rY, 26); + // Units: mM; Initial value: 0.00217414510791738 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j = NV_Ith_S(rY, 27); + // Units: mM; Initial value: 0.00738583890572642 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl = NV_Ith_S(rY, 28); + // Units: mM; Initial value: 0.00988178900584875 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j = NV_Ith_S(rY, 29); + // Units: mM; Initial value: 0.0734662466011574 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl = NV_Ith_S(rY, 30); + // Units: mM; Initial value: 0.114400081504523 + double var_chaste_interface__SR_Ca_Concentrations__Csqn_b = NV_Ith_S(rY, 31); + // Units: mM; Initial value: 1.19772047585784 + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = NV_Ith_S(rY, 32); + // Units: mM; Initial value: 0.555180633859957 + double var_chaste_interface__Na_Concentrations__Na_j = NV_Ith_S(rY, 33); + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = NV_Ith_S(rY, 34); + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = NV_Ith_S(rY, 35); + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = NV_Ith_S(rY, 36); + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = NV_Ith_S(rY, 37); + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = NV_Ith_S(rY, 38); + // Units: mM; Initial value: 0.000106544589194246 + + // Lookup table indexing + const bool _oob_0 = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane_potential__V_m); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane_potential__V_m); + + // Mathematics + double d_dt_chaste_interface_var_membrane_potential__V_m; + const double d_dt_chaste_interface_var_K_Concentration__K_i = 0; // mM / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bj = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bj + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bj) * var_chaste_interface__Ca_Concentrations__Ca_j; // 1 / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bsl + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl) * var_chaste_interface__Ca_Concentrations__Ca_sl; // 1 / msec + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_SR_Fluxes__RI = 1 - var_chaste_interface__SR_Fluxes__Ry_Ri - var_chaste_interface__SR_Fluxes__Ry_Ro - var_chaste_interface__SR_Fluxes__Ry_Rr; // mM + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * NV_Ith_S(mParameters, 0); // mM_per_msec + const double var_I_Ca__dss = _lt_0_row[2]; // dimensionless + const double d_dt_chaste_interface_var_I_Ca__d = 0.035000000000000003 * _lt_0_row[3] * (5 + var_chaste_interface__membrane_potential__V_m) * (-var_chaste_interface__I_Ca__d + var_I_Ca__dss) / var_I_Ca__dss; // 1 / msec + const double d_dt_chaste_interface_var_I_Ca__f = (_lt_0_row[6]) * (-var_chaste_interface__I_Ca__f + _lt_0_row[4] + _lt_0_row[5]); // 1 / msec + const double d_dt_chaste_interface_var_I_Kr__x_kr = _lt_0_row[8] * (-var_chaste_interface__I_Kr__x_kr + _lt_0_row[7]); // 1 / msec + const double d_dt_chaste_interface_var_I_Ks__x_ks = (_lt_0_row[10]) * (-var_chaste_interface__I_Ks__x_ks + _lt_0_row[9]); // 1 / msec + const double d_dt_chaste_interface_var_I_Na__h = (1 * ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 15) - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))) + 1 * ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 15) - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * NV_Ith_S(mParameters, 15)) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * NV_Ith_S(mParameters, 15))))) * (-var_chaste_interface__I_Na__h + 0.01 * NV_Ith_S(mParameters, 14) + 1 * (1 - 0.01 * NV_Ith_S(mParameters, 14)) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * NV_Ith_S(mParameters, 15))), 2)); // 1 / msec + const double d_dt_chaste_interface_var_I_Na__j = (1 * ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * NV_Ith_S(mParameters, 15)) - 6.9480000000000002e-6 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 15) - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * NV_Ith_S(mParameters, 15))))) + 1 * ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * NV_Ith_S(mParameters, 15)) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 15) - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * NV_Ith_S(mParameters, 15) - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 15) - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m))))) * (-var_chaste_interface__I_Na__j + 0.01 * NV_Ith_S(mParameters, 14) + 1 * (1 - 0.01 * NV_Ith_S(mParameters, 14)) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * NV_Ith_S(mParameters, 15))), 2)); // 1 / msec + const double d_dt_chaste_interface_var_I_Na__m = _lt_0_row[12] * (-var_chaste_interface__I_Na__m + _lt_0_row[11]); // 1 / msec + const double var_I_to__xtoss = _lt_0_row[13]; // dimensionless + const double d_dt_chaste_interface_var_I_to__x_to_f = _lt_0_row[14] * (-var_chaste_interface__I_to__x_to_f + var_I_to__xtoss); // 1 / msec + const double d_dt_chaste_interface_var_I_to__x_to_s = _lt_0_row[15] * (-var_chaste_interface__I_to__x_to_s + var_I_to__xtoss); // 1 / msec + const double var_I_to__ytoss = _lt_0_row[16]; // dimensionless + const double d_dt_chaste_interface_var_I_to__y_to_f = _lt_0_row[17] * (-var_chaste_interface__I_to__y_to_f + var_I_to__ytoss); // 1 / msec + const double d_dt_chaste_interface_var_I_to__y_to_s = _lt_0_row[18] * (-var_chaste_interface__I_to__y_to_s + var_I_to__ytoss); // 1 / msec + const double var_parameters__FoRT = NV_Ith_S(mParameters, 9) / (NV_Ith_S(mParameters, 10) * NV_Ith_S(mParameters, 24)); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 8))) * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = 0.11 * var_I_NaK__fnak * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + 14641 / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (1.5 + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak_sl = 0.89000000000000001 * var_I_NaK__fnak * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + 14641 / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (1.5 + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24); // dimensionless + const double var_parameters__Vcell = 1.0506250000000001e-11 * M_PI; // liter + const double var_parameters__Vjunc = 0.00053900000000000009 * var_parameters__Vcell; // liter + const double var_parameters__Vmyo = 0.65000000000000002 * var_parameters__Vcell; // liter + const double d_dt_chaste_interface_var_Na_Concentrations__Na_i = 1.6385999999999999e-12 * (-var_chaste_interface__Na_Concentrations__Na_i + var_chaste_interface__Na_Concentrations__Na_sl) * NV_Ith_S(mParameters, 3) / var_parameters__Vmyo; // mM / msec + const double var_parameters__Bmax_SLhighj = 0.000165 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Bmax_SLlowj = 0.00046000000000000001 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Vsl = 0.02 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_SLhighsl = 0.0134 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Bmax_SLlowsl = 0.037400000000000003 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Vsr = 0.035000000000000003 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_Csqn = 0.14000000000000001 * var_parameters__Vmyo / var_parameters__Vsr; // mM + const double var_SR_Fluxes__kCaSR = 15 - 14 / (1 + 0.13584112963311223 * pow((1 / var_chaste_interface__SR_Ca_Concentrations__Ca_sr), 2.5)); // dimensionless + const double var_parameters__ena_junc = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_parameters__ena_sl = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_SR_Fluxes__J_serca = pow(2.6000000000000001, var_parameters__Qpow) * (2814485.1633595936 * pow(var_chaste_interface__Ca_Concentrations__Ca_i, 1.7869999999999999) - 0.38742512113256738 * pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, 1.7869999999999999)) * NV_Ith_S(mParameters, 2) / (1 + 0.38742512113256738 * pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, 1.7869999999999999) + 2814485.1633595936 * pow(var_chaste_interface__Ca_Concentrations__Ca_i, 1.7869999999999999)); // mM_per_msec + const double var_SR_Fluxes__kiSRCa = 0.5 * var_SR_Fluxes__kCaSR; // per_mM_per_msec + const double var_SR_Fluxes__koSRCa = 10 / var_SR_Fluxes__kCaSR; // per_mM2_per_msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri = -0.065000000000000002 * var_chaste_interface__SR_Fluxes__Ry_Ri + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_SR_Fluxes__RI * var_SR_Fluxes__koSRCa + var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro = 0.0050000000000000001 * var_chaste_interface__SR_Fluxes__Ry_Ri - 0.059999999999999998 * var_chaste_interface__SR_Fluxes__Ry_Ro + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr = 0.059999999999999998 * var_chaste_interface__SR_Fluxes__Ry_Ro + 0.0050000000000000001 * var_SR_Fluxes__RI - pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM = -0.23799999999999999 * var_chaste_interface__Cytosolic_Ca_Buffers__CaM + 34 * (0.024 - var_chaste_interface__Cytosolic_Ca_Buffers__CaM) * var_chaste_interface__Ca_Concentrations__Ca_i; // mM / msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b = -65 * var_chaste_interface__SR_Ca_Concentrations__Csqn_b + 100 * (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c = -0.00046000000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c + 13.800000000000001 * (0.14000000000000001 - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m) * var_chaste_interface__Ca_Concentrations__Ca_i; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m = 0.0021979999999999999 - 0.015699999999999999 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - 0.015757 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m; // mM / msec + const double var_Na_Buffers__dNa_Bj_dt = -0.001 * var_chaste_interface__Na_Buffers__Na_Bj + 0.0001 * (7.5609999999999999 - var_chaste_interface__Na_Buffers__Na_Bj) * var_chaste_interface__Na_Concentrations__Na_j; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bj = var_Na_Buffers__dNa_Bj_dt; // mM / msec + const double var_Na_Buffers__dNa_Bsl_dt = -0.001 * var_chaste_interface__Na_Buffers__Na_Bsl + 0.0001 * (1.6499999999999999 - var_chaste_interface__Na_Buffers__Na_Bsl) * var_chaste_interface__Na_Concentrations__Na_sl; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bsl = var_Na_Buffers__dNa_Bsl_dt; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j = -0.029999999999999999 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl = -0.029999999999999999 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j = -1.3 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl = -1.3 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB = -0.059999999999999998 * var_chaste_interface__Cytosolic_Ca_Buffers__SRB + 100 * (0.017100000000000001 - var_chaste_interface__Cytosolic_Ca_Buffers__SRB) * var_chaste_interface__Ca_Concentrations__Ca_i; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc = -3.1999999999999999e-5 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc + 2.3700000000000001 * (0.14000000000000001 - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm) * var_chaste_interface__Ca_Concentrations__Ca_i; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm = 0.00042000000000000007 - 0.0030000000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - 0.0063300000000000006 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm; // mM / msec + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_i = -0.0026180000000000001 + 0.23799999999999999 * var_chaste_interface__Cytosolic_Ca_Buffers__CaM + 0.059999999999999998 * var_chaste_interface__Cytosolic_Ca_Buffers__SRB + 0.019599999999999999 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + 0.0063300000000000006 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + 0.016159999999999997 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c + 0.003032 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc + 0.015757 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + 3.2742999999999999e-12 * (-var_chaste_interface__Ca_Concentrations__Ca_i + var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__Vmyo - 34 * (0.024 - var_chaste_interface__Cytosolic_Ca_Buffers__CaM) * var_chaste_interface__Ca_Concentrations__Ca_i - 100 * (0.017100000000000001 - var_chaste_interface__Cytosolic_Ca_Buffers__SRB) * var_chaste_interface__Ca_Concentrations__Ca_i - 32.700000000000003 * (0.070000000000000007 - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL) * var_chaste_interface__Ca_Concentrations__Ca_i - 2.3700000000000001 * (0.14000000000000001 - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm) * var_chaste_interface__Ca_Concentrations__Ca_i - 13.800000000000001 * (0.14000000000000001 - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m) * var_chaste_interface__Ca_Concentrations__Ca_i - var_SR_Fluxes__J_serca * var_parameters__Vsr / var_parameters__Vmyo; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL = -0.019599999999999999 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + 32.700000000000003 * (0.070000000000000007 - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL) * var_chaste_interface__Ca_Concentrations__Ca_i; // mM / msec + const double var_SR_Fluxes__J_SRCarel = 1 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * NV_Ith_S(mParameters, 1); // mM_per_msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr = -var_SR_Fluxes__J_SRCarel + 65 * var_chaste_interface__SR_Ca_Concentrations__Csqn_b - 100 * (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr - var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vsr + var_SR_Fluxes__J_serca; // mM / msec + const double var_I_NCX__I_ncx_junc = 0.11 * pow(1.5700000000000001, var_parameters__Qpow) * (pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * exp(0.27000000000000002 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) - pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * NV_Ith_S(mParameters, 21) / ((1 + 0.32000000000000001 * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + 2.2499999999999996e-8 / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)) * (1.3 * pow(var_chaste_interface__Na_Concentrations__Na_j, 3) + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + 669921.875 * (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_j) * var_chaste_interface__Ca_Concentrations__Ca_j + 0.0035899999999999999 * pow(NV_Ith_S(mParameters, 8), 3) * (1 + 0.00053869674493876331 * pow(var_chaste_interface__Na_Concentrations__Na_j, 3)))); // uA_per_uF + const double var_I_NCX__I_ncx_sl = 0.89000000000000001 * pow(1.5700000000000001, var_parameters__Qpow) * (pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * exp(0.27000000000000002 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) - pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * NV_Ith_S(mParameters, 21) / ((1 + 0.32000000000000001 * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + 2.2499999999999996e-8 / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)) * (1.3 * pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + 669921.875 * (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_sl) * var_chaste_interface__Ca_Concentrations__Ca_sl + 0.0035899999999999999 * pow(NV_Ith_S(mParameters, 8), 3) * (1 + 0.00053869674493876331 * pow(var_chaste_interface__Na_Concentrations__Na_sl, 3)))); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_Ca_Concentrations__I_Ca_tot_junc = 6.0643000000000002e-5 * var_chaste_interface__membrane_potential__V_m - 2 * var_I_NCX__I_ncx_junc - 3.0321500000000001e-5 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT + 0.0074029999999999999 * pow(2.3500000000000001, var_parameters__Qpow) * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) / (5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001)) + 1.6200000000000001 * pow(1.8, var_parameters__Qpow) * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_j = 0.029999999999999999 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + 1.3 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + 8.2413000000000004e-13 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__Vjunc - 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j - 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j + var_SR_Fluxes__J_SRCarel * var_parameters__Vsr / var_parameters__Vjunc + var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vjunc - 0.5 * var_Ca_Concentrations__I_Ca_tot_junc * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vjunc); // mM / msec + const double var_Ca_Concentrations__I_Ca_tot_sl = 0.00049065700000000003 * var_chaste_interface__membrane_potential__V_m - 2 * var_I_NCX__I_ncx_sl - 0.00024532850000000001 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT + 0.059896999999999999 * pow(2.3500000000000001, var_parameters__Qpow) * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) / (5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001)) + 0.17999999999999997 * pow(1.8, var_parameters__Qpow) * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl = 0.029999999999999999 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + 1.3 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + 8.2413000000000004e-13 * (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__Vsl + 3.2742999999999999e-12 * (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_i) / var_parameters__Vsl - 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl - 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl - 0.5 * var_Ca_Concentrations__I_Ca_tot_sl * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vsl); // mM / msec + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + 6.567e-5 * var_chaste_interface__membrane_potential__V_m - 6.567e-5 * var_parameters__ena_junc + 0.11 * pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * NV_Ith_S(mParameters, 13) + 3.0374999999999999e-9 * pow(1.8, var_parameters__Qpow) * (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_j = (-var_Na_Buffers__dNa_Bj_dt + 1.8312999999999999e-14 * (-var_chaste_interface__Na_Concentrations__Na_j + var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__Vjunc - var_Na_Concentrations__I_Na_tot_junc * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vjunc)) * NV_Ith_S(mParameters, 3); // mM / msec + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + 0.00053133 * var_chaste_interface__membrane_potential__V_m - 0.00053133 * var_parameters__ena_sl + 0.89000000000000001 * pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * NV_Ith_S(mParameters, 13) + 3.3749999999999992e-10 * pow(1.8, var_parameters__Qpow) * (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_sl = (-var_Na_Buffers__dNa_Bsl_dt + 1.6385999999999999e-12 * (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_i) / var_parameters__Vsl + 1.8312999999999999e-14 * (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__Vsl - var_Na_Concentrations__I_Na_tot_sl * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vsl)) * NV_Ith_S(mParameters, 3); // mM / msec + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane_potential__V_m = 0.0; + } + else + { + const double var_I_Kp__kp_kp = _lt_0_row[0]; // dimensionless + const double var_parameters__ecl = 1 * log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ek = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + d_dt_chaste_interface_var_membrane_potential__V_m = -var_Ca_Concentrations__I_Ca_tot_junc - var_Ca_Concentrations__I_Ca_tot_sl - var_Na_Concentrations__I_Na_tot_junc - var_Na_Concentrations__I_Na_tot_sl + 2 * var_I_NaK__I_nak_junc + 2 * var_I_NaK__I_nak_sl + 0.0089999999999999993 * var_parameters__ecl - 0.0089999999999999993 * var_chaste_interface__membrane_potential__V_m - GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance() - (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 12) - 0.002 * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp - 0.006029375 * (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) / (1 + 0.10000000000000001 / var_chaste_interface__Ca_Concentrations__Ca_j) - 0.048783124999999997 * (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) / (1 + 0.10000000000000001 / var_chaste_interface__Ca_Concentrations__Ca_sl) - 0.0035000000000000001 * pow(var_chaste_interface__I_Ks__x_ks, 2) * (-1 * log((0.018329999999999999 * NV_Ith_S(mParameters, 8) + NV_Ith_S(mParameters, 7)) / (0.018329999999999999 * var_chaste_interface__Na_Concentrations__Na_i + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 19) - 0.1144 * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 16) * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f - 0.015599999999999999 * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 20) * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s - 0.43033148291193518 * _lt_0_row[1] * sqrt(NV_Ith_S(mParameters, 7)) * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 18) * var_chaste_interface__I_Kr__x_kr - 0.4389381125701739 * sqrt(NV_Ith_S(mParameters, 7)) * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 17) / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)))) - 6.0749999999999998e-8 * pow(1.8, var_parameters__Qpow) * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + 0.099999999999999978 * var_I_Ca__fcaCaMSL + 0.90000000000000002 * var_I_Ca__fcaCaj - 0.099999999999999978 * var_chaste_interface__I_Ca__f_Ca_Bsl - 0.90000000000000002 * var_chaste_interface__I_Ca__f_Ca_Bj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // mV / msec + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane_potential__V_m; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_Concentrations__Ca_i; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_I_Na__m; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_I_Na__h; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_I_Na__j; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_I_Kr__x_kr; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_I_Ks__x_ks; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_I_to__x_to_s; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_I_to__y_to_s; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_I_to__x_to_f; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_I_to__y_to_f; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_I_Ca__d; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_I_Ca__f; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_I_Ca__f_Ca_Bj; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_Na_Buffers__Na_Bj; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_Na_Buffers__Na_Bsl; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl; + NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j; + NV_Ith_S(rDY,30) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl; + NV_Ith_S(rDY,31) = d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b; + NV_Ith_S(rDY,32) = d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr; + NV_Ith_S(rDY,33) = d_dt_chaste_interface_var_Na_Concentrations__Na_j; + NV_Ith_S(rDY,34) = d_dt_chaste_interface_var_Na_Concentrations__Na_sl; + NV_Ith_S(rDY,35) = d_dt_chaste_interface_var_Na_Concentrations__Na_i; + NV_Ith_S(rDY,36) = d_dt_chaste_interface_var_K_Concentration__K_i; + NV_Ith_S(rDY,37) = d_dt_chaste_interface_var_Ca_Concentrations__Ca_j; + NV_Ith_S(rDY,38) = d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl; + } + + N_Vector Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__Ca_Concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: mM; Initial value: 8.72745589849657e-05 + double var_chaste_interface__I_Na__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__SR_Fluxes__Ry_Ro = NV_Ith_S(rY, 16); + // Units: mM; Initial value: 7.37484660389498e-07 + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = NV_Ith_S(rY, 32); + // Units: mM; Initial value: 0.555180633859957 + double var_chaste_interface__Na_Concentrations__Na_j = NV_Ith_S(rY, 33); + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = NV_Ith_S(rY, 34); + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = NV_Ith_S(rY, 35); + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = NV_Ith_S(rY, 36); + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = NV_Ith_S(rY, 37); + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = NV_Ith_S(rY, 38); + // Units: mM; Initial value: 0.000106544589194246 + + // Lookup table indexing + const bool _oob_0 = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane_potential__V_m); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane_potential__V_m); + + // Mathematics + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * NV_Ith_S(mParameters, 0); // mM_per_msec + const double var_I_Ca__tauf = 1 / (_lt_0_row[6]); // msec + const double var_I_Kr__rkr = 1 * _lt_0_row[1]; // dimensionless + const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 15) - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); // dimensionless + const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * NV_Ith_S(mParameters, 15)) - 6.9480000000000002e-6 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 15) - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * NV_Ith_S(mParameters, 15))))); // dimensionless + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 15) - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * NV_Ith_S(mParameters, 15)) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * NV_Ith_S(mParameters, 15)))); // dimensionless + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * NV_Ith_S(mParameters, 15)) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 15) - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * NV_Ith_S(mParameters, 15) - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 15) - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); // dimensionless + const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); // msec + const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); // msec + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 12); // uA_per_cm2 + } + const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_parameters__Cmem_converted = 1000000 * NV_Ith_S(mParameters, 23); // uF + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * NV_Ith_S(mParameters, 19); // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_parameters__Kmf = 0.00024600000000000002; // mM + const double var_parameters__Kmr = 1.7; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 17); // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 18); // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 8)); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless + const double var_parameters__FoRT = NV_Ith_S(mParameters, 9) / (NV_Ith_S(mParameters, 10) * NV_Ith_S(mParameters, 24)); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_I_NaK__I_nak_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NaK__I_nak; // uA_per_cm2 + const double var_parameters__Qpow = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24); // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca = var_I_PCa__I_pca_junc + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_I_PCa__I_pca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_PCa__I_pca; // uA_per_cm2 + const double var_parameters__ecl = 1 * log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ek = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Ki__I_ki_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ki__I_ki; // uA_per_cm2 + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_I_Kr__I_kr_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Kr__I_kr; // uA_per_cm2 + const double var_parameters__ena_junc = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_parameters__ena_sl = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_I_Na__I_Na = var_I_Na__I_Na_junc + var_I_Na__I_Na_sl; // uA_per_uF + const double var_I_Na__I_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Na__I_Na; // uA_per_cm2 + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * NV_Ith_S(mParameters, 16)) : (0.0014039999999999999 * NV_Ith_S(mParameters, 16))); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * NV_Ith_S(mParameters, 20)) : (0.037595999999999997 * NV_Ith_S(mParameters, 20))); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tof; // uA_per_cm2 + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_I_to__I_to_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_to; // uA_per_cm2 + const double var_I_to__I_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tos; // uA_per_cm2 + const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless + const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * NV_Ith_S(mParameters, 2) / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_SR_Fluxes__J_SRCarel = 1 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * NV_Ith_S(mParameters, 1); // mM_per_msec + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_I_NCX__I_ncx = var_I_NCX__I_ncx_junc + var_I_NCX__I_ncx_sl; // uA_per_uF + const double var_I_NCX__I_ncx_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NCX__I_ncx; // uA_per_cm2 + const double var_parameters__pCa = 0.00054000000000000001 * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_I_Ca__I_Ca = var_I_Ca__I_Ca_junc + var_I_Ca__I_Ca_sl; // uA_per_uF + const double var_I_Ca__I_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ca__I_Ca; // uA_per_cm2 + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((NV_Ith_S(mParameters, 8) * var_parameters__pNaK + NV_Ith_S(mParameters, 7)) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_I_Ks__I_ks_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ks__I_ks; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(27, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(27); +#endif + NV_Ith_S(dqs, 0) = var_SR_Fluxes__J_SRleak; + NV_Ith_S(dqs, 1) = var_SR_Fluxes__J_SRCarel; + NV_Ith_S(dqs, 2) = var_SR_Fluxes__J_serca; + NV_Ith_S(dqs, 3) = var_parameters__ecl; + NV_Ith_S(dqs, 4) = var_I_Ca__I_Ca_converted; + NV_Ith_S(dqs, 5) = var_I_Ca__tauf; + NV_Ith_S(dqs, 6) = var_I_PCa__I_pca_converted; + NV_Ith_S(dqs, 7) = var_parameters__Cmem_converted; + NV_Ith_S(dqs, 8) = var_chaste_interface__membrane_data_clamp_current; + NV_Ith_S(dqs, 9) = var_I_Na__I_Na_converted; + NV_Ith_S(dqs, 10) = var_I_Na__tauh; + NV_Ith_S(dqs, 11) = var_I_Na__tauj; + NV_Ith_S(dqs, 12) = var_I_to__I_tof_converted; + NV_Ith_S(dqs, 13) = var_I_to__GtoFast; + NV_Ith_S(dqs, 14) = var_I_Ki__I_ki_converted; + NV_Ith_S(dqs, 15) = var_I_Ki__g_K1; + NV_Ith_S(dqs, 16) = var_I_Kr__I_kr_converted; + NV_Ith_S(dqs, 17) = var_I_Ks__I_ks_converted; + NV_Ith_S(dqs, 18) = var_I_Ks__GKs_total; + NV_Ith_S(dqs, 19) = var_I_to__I_tos_converted; + NV_Ith_S(dqs, 20) = var_I_to__GtoSlow; + NV_Ith_S(dqs, 21) = var_I_NCX__I_ncx_converted; + NV_Ith_S(dqs, 22) = var_I_NaK__I_nak_converted; + NV_Ith_S(dqs, 23) = var_membrane_potential__i_Stim_converted; + NV_Ith_S(dqs, 24) = var_I_to__I_to_converted; + NV_Ith_S(dqs, 25) = var_parameters__ek; + NV_Ith_S(dqs, 26) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "grandi_pasqualini_bers_2010_epi"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "msec"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-81.4229700631461); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.72745589849657e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00381858135062259); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.625086621635645); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.62332507235506); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("I_Kr__x_kr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.021733554982663); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("I_Ks__x_ks"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00428981903391989); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("I_to__x_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441539203559411); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("I_to__y_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.784875334693892); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("I_to__x_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441531250866821); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("I_to__y_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999995817153572); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.93982287251302e-06); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99511673495949); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("I_Ca__f_Ca_Bj"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0246142436477748); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0152416826209301); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("SR_Fluxes__Ry_Rr"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.891022230597263); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("SR_Fluxes__Ry_Ro"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(7.37484660389498e-07); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("SR_Fluxes__Ry_Ri"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(9.01984485847386e-08); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("Na_Buffers__Na_Bj"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(3.43545459048316); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("Na_Buffers__Na_Bsl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.749601264899653); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CL"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00893708435270205); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHc"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.117445983314504); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHm"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0105996734077994); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__CaM"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000295653619580701); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_c"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00192645052472679); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_m"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.137557201546068); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__SRB"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00217414510791738); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00738583890572642); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00988178900584875); + + // NV_Ith_S(rY, 29): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0734662466011574); + + // NV_Ith_S(rY, 30): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.114400081504523); + + // NV_Ith_S(rY, 31): + this->mVariableNames.push_back("SR_Ca_Concentrations__Csqn_b"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(1.19772047585784); + + // NV_Ith_S(rY, 32): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.555180633859957); + + // NV_Ith_S(rY, 33): + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.3215690202059); + + // NV_Ith_S(rY, 34): + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32094589677861); + + // NV_Ith_S(rY, 35): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32114502072456); + + // NV_Ith_S(rY, 36): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(120.0); + + // NV_Ith_S(rY, 37): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000175415190830688); + + // NV_Ith_S(rY, 38): + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000106544589194246); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("mM_per_msec"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[9]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[10]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kelvin_per_kilomole"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("cm_per_sec"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_data_clamp_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("mV"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[22]: + this->mParameterNames.push_back("membrane_sodium_potassium_pump_current_permeability"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[23]: + this->mParameterNames.push_back("parameters__Cmem"); + this->mParameterUnits.push_back("farad"); + + // mParameters[24]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_leak_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("SR_uptake_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_data_clamp_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("membrane_sodium_potassium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [23]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [24]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [25]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [26]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("msec"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/grandi_pasqualini_bers_2010_ssCvodeDataClampOpt--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/grandi_pasqualini_bers_2010_ssCvodeDataClampOpt--sympy_1_14.cpp new file mode 100644 index 00000000..0a1fc731 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/CVODE_DATA_CLAMP_OPT/grandi_pasqualini_bers_2010_ssCvodeDataClampOpt--sympy_1_14.cpp @@ -0,0 +1,1426 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: grandi_pasqualini_bers_2010_epi +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: CvodeCellWithDataClampOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "grandi_pasqualini_bers_2010_ssCvodeDataClampOpt.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + +#include "ModelFactory.hpp" + +AbstractCvodeCellWithDataClamp* Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt(p_solver, p_stimulus); +} + +bool Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::registered = ModelFactory::Register("grandi_pasqualini_bers_2010_ss", "CvodeCellWithDataClampOpt", (ModelFactory::TCreateMethod)Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::CreateMethod); + +class Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<19; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane_potential__V_m) + { + const double _offset_0 = var_chaste_interface__membrane_potential__V_m - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane_potential__V_m) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane_potential__V_m>mTableMaxs[0] || var_chaste_interface__membrane_potential__V_m mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[19]; + + // Lookup tables + double (*_lookup_table_0)[19]; + int _lookup_table_0_num_misshit_piecewise[19] = {0}; + +}; + +std::shared_ptr Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::mpInstance; + + + boost::shared_ptr Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane_potential__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane_potential__stim_duration = 5; // msec + const double var_chaste_interface__membrane_potential__stim_period = 1000; // msec + const double var_chaste_interface__membrane_potential__stim_start = 100; // msec + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane_potential__stim_amplitude_converted), + var_chaste_interface__membrane_potential__stim_duration, + var_chaste_interface__membrane_potential__stim_period, + var_chaste_interface__membrane_potential__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCellWithDataClamp( + pOdeSolver, + 39, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_SR_Fluxes__SR_leak_max) [per_msec] + NV_Ith_S(this->mParameters, 1) = 25; // (var_parameters__ks) [per_msec] + NV_Ith_S(this->mParameters, 2) = 0.0053114; // (var_parameters__Vmax_SRCaP) [mM_per_msec] + NV_Ith_S(this->mParameters, 3) = 1; // (var_Na_Concentrations__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 15; // (var_parameters__Cli) [mM] + NV_Ith_S(this->mParameters, 5) = 1.8; // (var_parameters__Cao) [mM] + NV_Ith_S(this->mParameters, 6) = 150; // (var_parameters__Clo) [mM] + NV_Ith_S(this->mParameters, 7) = 5.4000000000000004; // (var_parameters__Ko) [mM] + NV_Ith_S(this->mParameters, 8) = 140; // (var_parameters__Nao) [mM] + NV_Ith_S(this->mParameters, 9) = 96485; // (var_parameters__Frdy) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 10) = 8314; // (var_parameters__R) [joule_per_kelvin_per_kilomole] + NV_Ith_S(this->mParameters, 11) = 0.5; // (var_parameters__pCa_max) [cm_per_sec] + NV_Ith_S(this->mParameters, 12) = 0; // (var_membrane_data_clamp_current_conductance) [dimensionless] + NV_Ith_S(this->mParameters, 13) = 23; // (var_parameters__GNa) [mS_per_uF] + NV_Ith_S(this->mParameters, 14) = 0; // (var_I_Na__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 15) = 0; // (var_I_Na__shift_INa_inact) [mV] + NV_Ith_S(this->mParameters, 16) = 1; // (var_I_to__GtoFast_factor) [dimensionless] + NV_Ith_S(this->mParameters, 17) = 0.34999999999999998; // (var_I_Ki__g_ki_factor) [mS_per_uF] + NV_Ith_S(this->mParameters, 18) = 0.035000000000000003; // (var_I_Kr__gkr_max) [mS_per_uF] + NV_Ith_S(this->mParameters, 19) = 1; // (var_I_Ks__GKs_factor) [dimensionless] + NV_Ith_S(this->mParameters, 20) = 1; // (var_I_to__GtoSlow_factor) [dimensionless] + NV_Ith_S(this->mParameters, 21) = 4.5; // (var_parameters__IbarNCX) [uA_per_uF] + NV_Ith_S(this->mParameters, 22) = 1.8; // (var_parameters__IbarNaK) [uA_per_uF] + NV_Ith_S(this->mParameters, 23) = 1.3809999999999999e-10; // (var_parameters__Cmem) [farad] + NV_Ith_S(this->mParameters, 24) = 310; // (var_parameters__Temp) [kelvin] + } + + Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::~Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt() + { + } + + AbstractLookupTableCollection* Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::GetLookupTableCollection() + { + return Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance(); + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 39; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__I_Na__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__Na_Concentrations__Na_j = NV_Ith_S(rY, 33); + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = NV_Ith_S(rY, 34); + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = NV_Ith_S(rY, 35); + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = NV_Ith_S(rY, 36); + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = NV_Ith_S(rY, 37); + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = NV_Ith_S(rY, 38); + // Units: mM; Initial value: 0.000106544589194246 + + // Lookup table indexing + const bool _oob_0 = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane_potential__V_m); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane_potential__V_m); + + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Kp__kp_kp = _lt_0_row[0]; // dimensionless + const double var_parameters__FoRT = NV_Ith_S(mParameters, 9) / (NV_Ith_S(mParameters, 10) * NV_Ith_S(mParameters, 24)); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 8))) * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = 0.11 * var_I_NaK__fnak * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + 14641 / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (1.5 + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak_sl = 0.89000000000000001 * var_I_NaK__fnak * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + 14641 / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (1.5 + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24); // dimensionless + const double var_parameters__ecl = 1 * log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ek = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_parameters__ena_junc = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_parameters__ena_sl = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_NCX__I_ncx_junc = 0.11 * pow(1.5700000000000001, var_parameters__Qpow) * (pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * exp(0.27000000000000002 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) - pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * NV_Ith_S(mParameters, 21) / ((1 + 0.32000000000000001 * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + 2.2499999999999996e-8 / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)) * (1.3 * pow(var_chaste_interface__Na_Concentrations__Na_j, 3) + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + 669921.875 * (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_j) * var_chaste_interface__Ca_Concentrations__Ca_j + 0.0035899999999999999 * pow(NV_Ith_S(mParameters, 8), 3) * (1 + 0.00053869674493876331 * pow(var_chaste_interface__Na_Concentrations__Na_j, 3)))); // uA_per_uF + const double var_I_NCX__I_ncx_sl = 0.89000000000000001 * pow(1.5700000000000001, var_parameters__Qpow) * (pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * exp(0.27000000000000002 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) - pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * NV_Ith_S(mParameters, 21) / ((1 + 0.32000000000000001 * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + 2.2499999999999996e-8 / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)) * (1.3 * pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + 669921.875 * (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_sl) * var_chaste_interface__Ca_Concentrations__Ca_sl + 0.0035899999999999999 * pow(NV_Ith_S(mParameters, 8), 3) * (1 + 0.00053869674493876331 * pow(var_chaste_interface__Na_Concentrations__Na_sl, 3)))); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_membrane_potential__I_tot = 1 * var_I_NCX__I_ncx_junc + 1 * var_I_NCX__I_ncx_sl + 1 * var_I_NaK__I_nak_junc + 1 * var_I_NaK__I_nak_sl + 0.010148299999999999 * var_chaste_interface__membrane_potential__V_m - 0.0089999999999999993 * var_parameters__ecl - 6.567e-5 * var_parameters__ena_junc - 0.00053133 * var_parameters__ena_sl + 0.002 * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp + 0.006029375 * (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) / (1 + 0.10000000000000001 / var_chaste_interface__Ca_Concentrations__Ca_j) + 0.048783124999999997 * (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) / (1 + 0.10000000000000001 / var_chaste_interface__Ca_Concentrations__Ca_sl) - 3.0321500000000001e-5 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT - 0.00024532850000000001 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT + 0.0035000000000000001 * pow(var_chaste_interface__I_Ks__x_ks, 2) * (-1 * log((0.018329999999999999 * NV_Ith_S(mParameters, 8) + NV_Ith_S(mParameters, 7)) / (0.018329999999999999 * var_chaste_interface__Na_Concentrations__Na_i + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 19) + 0.0074029999999999999 * pow(2.3500000000000001, var_parameters__Qpow) * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) / (5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001)) + 0.059896999999999999 * pow(2.3500000000000001, var_parameters__Qpow) * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) / (5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001)) + 0.1144 * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 16) * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f + 0.015599999999999999 * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 20) * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s + 0.11 * pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * NV_Ith_S(mParameters, 13) + 0.43033148291193518 * _lt_0_row[1] * sqrt(NV_Ith_S(mParameters, 7)) * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 18) * var_chaste_interface__I_Kr__x_kr + 0.89000000000000001 * pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * NV_Ith_S(mParameters, 13) + 0.4389381125701739 * sqrt(NV_Ith_S(mParameters, 7)) * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 17) / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)))) + 3.3749999999999992e-10 * pow(1.8, var_parameters__Qpow) * (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) + 6.0749999999999998e-8 * pow(1.8, var_parameters__Qpow) * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + 0.099999999999999978 * var_I_Ca__fcaCaMSL + 0.90000000000000002 * var_I_Ca__fcaCaj - 0.099999999999999978 * var_chaste_interface__I_Ca__f_Ca_Bsl - 0.90000000000000002 * var_chaste_interface__I_Ca__f_Ca_Bj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) + 3.0374999999999999e-9 * pow(1.8, var_parameters__Qpow) * (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) + 0.17999999999999997 * pow(1.8, var_parameters__Qpow) * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) + 1.6200000000000001 * pow(1.8, var_parameters__Qpow) * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane_potential__I_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__Ca_Concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: mM; Initial value: 8.72745589849657e-05 + double var_chaste_interface__I_Na__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__SR_Fluxes__Ry_Rr = NV_Ith_S(rY, 15); + // Units: mM; Initial value: 0.891022230597263 + double var_chaste_interface__SR_Fluxes__Ry_Ro = NV_Ith_S(rY, 16); + // Units: mM; Initial value: 7.37484660389498e-07 + double var_chaste_interface__SR_Fluxes__Ry_Ri = NV_Ith_S(rY, 17); + // Units: mM; Initial value: 9.01984485847386e-08 + double var_chaste_interface__Na_Buffers__Na_Bj = NV_Ith_S(rY, 18); + // Units: mM; Initial value: 3.43545459048316 + double var_chaste_interface__Na_Buffers__Na_Bsl = NV_Ith_S(rY, 19); + // Units: mM; Initial value: 0.749601264899653 + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL = NV_Ith_S(rY, 20); + // Units: mM; Initial value: 0.00893708435270205 + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc = NV_Ith_S(rY, 21); + // Units: mM; Initial value: 0.117445983314504 + double var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm = NV_Ith_S(rY, 22); + // Units: mM; Initial value: 0.0105996734077994 + double var_chaste_interface__Cytosolic_Ca_Buffers__CaM = NV_Ith_S(rY, 23); + // Units: mM; Initial value: 0.000295653619580701 + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c = NV_Ith_S(rY, 24); + // Units: mM; Initial value: 0.00192645052472679 + double var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m = NV_Ith_S(rY, 25); + // Units: mM; Initial value: 0.137557201546068 + double var_chaste_interface__Cytosolic_Ca_Buffers__SRB = NV_Ith_S(rY, 26); + // Units: mM; Initial value: 0.00217414510791738 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j = NV_Ith_S(rY, 27); + // Units: mM; Initial value: 0.00738583890572642 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl = NV_Ith_S(rY, 28); + // Units: mM; Initial value: 0.00988178900584875 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j = NV_Ith_S(rY, 29); + // Units: mM; Initial value: 0.0734662466011574 + double var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl = NV_Ith_S(rY, 30); + // Units: mM; Initial value: 0.114400081504523 + double var_chaste_interface__SR_Ca_Concentrations__Csqn_b = NV_Ith_S(rY, 31); + // Units: mM; Initial value: 1.19772047585784 + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = NV_Ith_S(rY, 32); + // Units: mM; Initial value: 0.555180633859957 + double var_chaste_interface__Na_Concentrations__Na_j = NV_Ith_S(rY, 33); + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = NV_Ith_S(rY, 34); + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = NV_Ith_S(rY, 35); + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = NV_Ith_S(rY, 36); + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = NV_Ith_S(rY, 37); + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = NV_Ith_S(rY, 38); + // Units: mM; Initial value: 0.000106544589194246 + + // Lookup table indexing + const bool _oob_0 = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane_potential__V_m); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane_potential__V_m); + + // Mathematics + double d_dt_chaste_interface_var_membrane_potential__V_m; + const double d_dt_chaste_interface_var_K_Concentration__K_i = 0; // mM / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bj = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bj + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bj) * var_chaste_interface__Ca_Concentrations__Ca_j; // 1 / msec + const double d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl = -0.011900000000000001 * var_chaste_interface__I_Ca__f_Ca_Bsl + 1.7 * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl) * var_chaste_interface__Ca_Concentrations__Ca_sl; // 1 / msec + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_SR_Fluxes__RI = 1 - var_chaste_interface__SR_Fluxes__Ry_Ri - var_chaste_interface__SR_Fluxes__Ry_Ro - var_chaste_interface__SR_Fluxes__Ry_Rr; // mM + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * NV_Ith_S(mParameters, 0); // mM_per_msec + const double var_I_Ca__dss = _lt_0_row[2]; // dimensionless + const double d_dt_chaste_interface_var_I_Ca__d = 0.035000000000000003 * _lt_0_row[3] * (5 + var_chaste_interface__membrane_potential__V_m) * (-var_chaste_interface__I_Ca__d + var_I_Ca__dss) / var_I_Ca__dss; // 1 / msec + const double d_dt_chaste_interface_var_I_Ca__f = (_lt_0_row[6]) * (-var_chaste_interface__I_Ca__f + _lt_0_row[4] + _lt_0_row[5]); // 1 / msec + const double d_dt_chaste_interface_var_I_Kr__x_kr = _lt_0_row[8] * (-var_chaste_interface__I_Kr__x_kr + _lt_0_row[7]); // 1 / msec + const double d_dt_chaste_interface_var_I_Ks__x_ks = (_lt_0_row[10]) * (-var_chaste_interface__I_Ks__x_ks + _lt_0_row[9]); // 1 / msec + const double d_dt_chaste_interface_var_I_Na__h = (1 * ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 15) - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))) + 1 * ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 15) - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * NV_Ith_S(mParameters, 15)) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * NV_Ith_S(mParameters, 15))))) * (-var_chaste_interface__I_Na__h + 0.01 * NV_Ith_S(mParameters, 14) + 1 * (1 - 0.01 * NV_Ith_S(mParameters, 14)) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * NV_Ith_S(mParameters, 15))), 2)); // 1 / msec + const double d_dt_chaste_interface_var_I_Na__j = (1 * ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * NV_Ith_S(mParameters, 15)) - 6.9480000000000002e-6 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 15) - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * NV_Ith_S(mParameters, 15))))) + 1 * ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * NV_Ith_S(mParameters, 15)) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 15) - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * NV_Ith_S(mParameters, 15) - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 15) - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m))))) * (-var_chaste_interface__I_Na__j + 0.01 * NV_Ith_S(mParameters, 14) + 1 * (1 - 0.01 * NV_Ith_S(mParameters, 14)) / pow((1 + exp(9.6298788694481825 + 0.13458950201884254 * var_chaste_interface__membrane_potential__V_m - 0.13458950201884254 * NV_Ith_S(mParameters, 15))), 2)); // 1 / msec + const double d_dt_chaste_interface_var_I_Na__m = _lt_0_row[12] * (-var_chaste_interface__I_Na__m + _lt_0_row[11]); // 1 / msec + const double var_I_to__xtoss = _lt_0_row[13]; // dimensionless + const double d_dt_chaste_interface_var_I_to__x_to_f = _lt_0_row[14] * (-var_chaste_interface__I_to__x_to_f + var_I_to__xtoss); // 1 / msec + const double d_dt_chaste_interface_var_I_to__x_to_s = _lt_0_row[15] * (-var_chaste_interface__I_to__x_to_s + var_I_to__xtoss); // 1 / msec + const double var_I_to__ytoss = _lt_0_row[16]; // dimensionless + const double d_dt_chaste_interface_var_I_to__y_to_f = _lt_0_row[17] * (-var_chaste_interface__I_to__y_to_f + var_I_to__ytoss); // 1 / msec + const double d_dt_chaste_interface_var_I_to__y_to_s = _lt_0_row[18] * (-var_chaste_interface__I_to__y_to_s + var_I_to__ytoss); // 1 / msec + const double var_parameters__FoRT = NV_Ith_S(mParameters, 9) / (NV_Ith_S(mParameters, 10) * NV_Ith_S(mParameters, 24)); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 8))) * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = 0.11 * var_I_NaK__fnak * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + 14641 / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (1.5 + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak_sl = 0.89000000000000001 * var_I_NaK__fnak * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + 14641 / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (1.5 + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_parameters__Qpow = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24); // dimensionless + const double var_parameters__Vcell = 1.0506250000000001e-11 * M_PI; // liter + const double var_parameters__Vjunc = 0.00053900000000000009 * var_parameters__Vcell; // liter + const double var_parameters__Vmyo = 0.65000000000000002 * var_parameters__Vcell; // liter + const double d_dt_chaste_interface_var_Na_Concentrations__Na_i = 1.6385999999999999e-12 * (-var_chaste_interface__Na_Concentrations__Na_i + var_chaste_interface__Na_Concentrations__Na_sl) * NV_Ith_S(mParameters, 3) / var_parameters__Vmyo; // mM / msec + const double var_parameters__Bmax_SLhighj = 0.000165 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Bmax_SLlowj = 0.00046000000000000001 * var_parameters__Vmyo / var_parameters__Vjunc; // mM + const double var_parameters__Vsl = 0.02 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_SLhighsl = 0.0134 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Bmax_SLlowsl = 0.037400000000000003 * var_parameters__Vmyo / var_parameters__Vsl; // mM + const double var_parameters__Vsr = 0.035000000000000003 * var_parameters__Vcell; // liter + const double var_parameters__Bmax_Csqn = 0.14000000000000001 * var_parameters__Vmyo / var_parameters__Vsr; // mM + const double var_SR_Fluxes__kCaSR = 15 - 14 / (1 + 0.13584112963311223 * pow((1 / var_chaste_interface__SR_Ca_Concentrations__Ca_sr), 2.5)); // dimensionless + const double var_parameters__ena_junc = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_parameters__ena_sl = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_SR_Fluxes__J_serca = pow(2.6000000000000001, var_parameters__Qpow) * (2814485.1633595936 * pow(var_chaste_interface__Ca_Concentrations__Ca_i, 1.7869999999999999) - 0.38742512113256738 * pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, 1.7869999999999999)) * NV_Ith_S(mParameters, 2) / (1 + 0.38742512113256738 * pow(var_chaste_interface__SR_Ca_Concentrations__Ca_sr, 1.7869999999999999) + 2814485.1633595936 * pow(var_chaste_interface__Ca_Concentrations__Ca_i, 1.7869999999999999)); // mM_per_msec + const double var_SR_Fluxes__kiSRCa = 0.5 * var_SR_Fluxes__kCaSR; // per_mM_per_msec + const double var_SR_Fluxes__koSRCa = 10 / var_SR_Fluxes__kCaSR; // per_mM2_per_msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri = -0.065000000000000002 * var_chaste_interface__SR_Fluxes__Ry_Ri + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_SR_Fluxes__RI * var_SR_Fluxes__koSRCa + var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro = 0.0050000000000000001 * var_chaste_interface__SR_Fluxes__Ry_Ri - 0.059999999999999998 * var_chaste_interface__SR_Fluxes__Ry_Ro + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Ro * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr = 0.059999999999999998 * var_chaste_interface__SR_Fluxes__Ry_Ro + 0.0050000000000000001 * var_SR_Fluxes__RI - pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2) * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__koSRCa - var_chaste_interface__Ca_Concentrations__Ca_j * var_chaste_interface__SR_Fluxes__Ry_Rr * var_SR_Fluxes__kiSRCa; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM = -0.23799999999999999 * var_chaste_interface__Cytosolic_Ca_Buffers__CaM + 34 * (0.024 - var_chaste_interface__Cytosolic_Ca_Buffers__CaM) * var_chaste_interface__Ca_Concentrations__Ca_i; // mM / msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b = -65 * var_chaste_interface__SR_Ca_Concentrations__Csqn_b + 100 * (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c = -0.00046000000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c + 13.800000000000001 * (0.14000000000000001 - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m) * var_chaste_interface__Ca_Concentrations__Ca_i; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m = 0.0021979999999999999 - 0.015699999999999999 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - 0.015757 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m; // mM / msec + const double var_Na_Buffers__dNa_Bj_dt = -0.001 * var_chaste_interface__Na_Buffers__Na_Bj + 0.0001 * (7.5609999999999999 - var_chaste_interface__Na_Buffers__Na_Bj) * var_chaste_interface__Na_Concentrations__Na_j; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bj = var_Na_Buffers__dNa_Bj_dt; // mM / msec + const double var_Na_Buffers__dNa_Bsl_dt = -0.001 * var_chaste_interface__Na_Buffers__Na_Bsl + 0.0001 * (1.6499999999999999 - var_chaste_interface__Na_Buffers__Na_Bsl) * var_chaste_interface__Na_Concentrations__Na_sl; // mM_per_msec + const double d_dt_chaste_interface_var_Na_Buffers__Na_Bsl = var_Na_Buffers__dNa_Bsl_dt; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j = -0.029999999999999999 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl = -0.029999999999999999 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j = -1.3 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j; // mM / msec + const double d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl = -1.3 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB = -0.059999999999999998 * var_chaste_interface__Cytosolic_Ca_Buffers__SRB + 100 * (0.017100000000000001 - var_chaste_interface__Cytosolic_Ca_Buffers__SRB) * var_chaste_interface__Ca_Concentrations__Ca_i; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc = -3.1999999999999999e-5 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc + 2.3700000000000001 * (0.14000000000000001 - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm) * var_chaste_interface__Ca_Concentrations__Ca_i; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm = 0.00042000000000000007 - 0.0030000000000000001 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - 0.0063300000000000006 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm; // mM / msec + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_i = -0.0026180000000000001 + 0.23799999999999999 * var_chaste_interface__Cytosolic_Ca_Buffers__CaM + 0.059999999999999998 * var_chaste_interface__Cytosolic_Ca_Buffers__SRB + 0.019599999999999999 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + 0.0063300000000000006 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm + 0.016159999999999997 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c + 0.003032 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc + 0.015757 * var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m + 3.2742999999999999e-12 * (-var_chaste_interface__Ca_Concentrations__Ca_i + var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__Vmyo - 34 * (0.024 - var_chaste_interface__Cytosolic_Ca_Buffers__CaM) * var_chaste_interface__Ca_Concentrations__Ca_i - 100 * (0.017100000000000001 - var_chaste_interface__Cytosolic_Ca_Buffers__SRB) * var_chaste_interface__Ca_Concentrations__Ca_i - 32.700000000000003 * (0.070000000000000007 - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL) * var_chaste_interface__Ca_Concentrations__Ca_i - 2.3700000000000001 * (0.14000000000000001 - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHc - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CHm) * var_chaste_interface__Ca_Concentrations__Ca_i - 13.800000000000001 * (0.14000000000000001 - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_c - var_chaste_interface__Cytosolic_Ca_Buffers__Myo_m) * var_chaste_interface__Ca_Concentrations__Ca_i - var_SR_Fluxes__J_serca * var_parameters__Vsr / var_parameters__Vmyo; // mM / msec + const double d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL = -0.019599999999999999 * var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL + 32.700000000000003 * (0.070000000000000007 - var_chaste_interface__Cytosolic_Ca_Buffers__Tn_CL) * var_chaste_interface__Ca_Concentrations__Ca_i; // mM / msec + const double var_SR_Fluxes__J_SRCarel = 1 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * NV_Ith_S(mParameters, 1); // mM_per_msec + const double d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr = -var_SR_Fluxes__J_SRCarel + 65 * var_chaste_interface__SR_Ca_Concentrations__Csqn_b - 100 * (-var_chaste_interface__SR_Ca_Concentrations__Csqn_b + var_parameters__Bmax_Csqn) * var_chaste_interface__SR_Ca_Concentrations__Ca_sr - var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vsr + var_SR_Fluxes__J_serca; // mM / msec + const double var_I_NCX__I_ncx_junc = 0.11 * pow(1.5700000000000001, var_parameters__Qpow) * (pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * exp(0.27000000000000002 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) - pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * NV_Ith_S(mParameters, 21) / ((1 + 0.32000000000000001 * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + 2.2499999999999996e-8 / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)) * (1.3 * pow(var_chaste_interface__Na_Concentrations__Na_j, 3) + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + 669921.875 * (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_j) * var_chaste_interface__Ca_Concentrations__Ca_j + 0.0035899999999999999 * pow(NV_Ith_S(mParameters, 8), 3) * (1 + 0.00053869674493876331 * pow(var_chaste_interface__Na_Concentrations__Na_j, 3)))); // uA_per_uF + const double var_I_NCX__I_ncx_sl = 0.89000000000000001 * pow(1.5700000000000001, var_parameters__Qpow) * (pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * exp(0.27000000000000002 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) - pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * NV_Ith_S(mParameters, 21) / ((1 + 0.32000000000000001 * exp(-0.72999999999999998 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + 2.2499999999999996e-8 / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)) * (1.3 * pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + 669921.875 * (1 + 278.55153203342621 * var_chaste_interface__Ca_Concentrations__Ca_sl) * var_chaste_interface__Ca_Concentrations__Ca_sl + 0.0035899999999999999 * pow(NV_Ith_S(mParameters, 8), 3) * (1 + 0.00053869674493876331 * pow(var_chaste_interface__Na_Concentrations__Na_sl, 3)))); // uA_per_uF + const double var_parameters__pCa = 0.00054000000000000001 * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_Ca_Concentrations__I_Ca_tot_junc = 6.0643000000000002e-5 * var_chaste_interface__membrane_potential__V_m - 2 * var_I_NCX__I_ncx_junc - 3.0321500000000001e-5 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__FoRT + 0.0074029999999999999 * pow(2.3500000000000001, var_parameters__Qpow) * pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) / (5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001)) + 1.6200000000000001 * pow(1.8, var_parameters__Qpow) * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_j = 0.029999999999999999 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + 1.3 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + 8.2413000000000004e-13 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__Vjunc - 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_j + var_parameters__Bmax_SLhighj) * var_chaste_interface__Ca_Concentrations__Ca_j - 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_j + var_parameters__Bmax_SLlowj) * var_chaste_interface__Ca_Concentrations__Ca_j + var_SR_Fluxes__J_SRCarel * var_parameters__Vsr / var_parameters__Vjunc + var_SR_Fluxes__J_SRleak * var_parameters__Vmyo / var_parameters__Vjunc - 0.5 * var_Ca_Concentrations__I_Ca_tot_junc * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vjunc); // mM / msec + const double var_Ca_Concentrations__I_Ca_tot_sl = 0.00049065700000000003 * var_chaste_interface__membrane_potential__V_m - 2 * var_I_NCX__I_ncx_sl - 0.00024532850000000001 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__Ca_Concentrations__Ca_sl) / var_parameters__FoRT + 0.059896999999999999 * pow(2.3500000000000001, var_parameters__Qpow) * pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) / (5.2281977629563632e-6 + pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001)) + 0.17999999999999997 * pow(1.8, var_parameters__Qpow) * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl = 0.029999999999999999 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + 1.3 * var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + 8.2413000000000004e-13 * (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_j) / var_parameters__Vsl + 3.2742999999999999e-12 * (-var_chaste_interface__Ca_Concentrations__Ca_sl + var_chaste_interface__Ca_Concentrations__Ca_i) / var_parameters__Vsl - 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLH_sl + var_parameters__Bmax_SLhighsl) * var_chaste_interface__Ca_Concentrations__Ca_sl - 100 * (-var_chaste_interface__Junctional_and_SL_Ca_Buffers__SLL_sl + var_parameters__Bmax_SLlowsl) * var_chaste_interface__Ca_Concentrations__Ca_sl - 0.5 * var_Ca_Concentrations__I_Ca_tot_sl * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vsl); // mM / msec + const double var_Na_Concentrations__I_Na_tot_junc = 3 * var_I_NCX__I_ncx_junc + 3 * var_I_NaK__I_nak_junc + 6.567e-5 * var_chaste_interface__membrane_potential__V_m - 6.567e-5 * var_parameters__ena_junc + 0.11 * pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * NV_Ith_S(mParameters, 13) + 3.0374999999999999e-9 * pow(1.8, var_parameters__Qpow) * (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_j * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_j = (-var_Na_Buffers__dNa_Bj_dt + 1.8312999999999999e-14 * (-var_chaste_interface__Na_Concentrations__Na_j + var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__Vjunc - var_Na_Concentrations__I_Na_tot_junc * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vjunc)) * NV_Ith_S(mParameters, 3); // mM / msec + const double var_Na_Concentrations__I_Na_tot_sl = 3 * var_I_NCX__I_ncx_sl + 3 * var_I_NaK__I_nak_sl + 0.00053133 * var_chaste_interface__membrane_potential__V_m - 0.00053133 * var_parameters__ena_sl + 0.89000000000000001 * pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * NV_Ith_S(mParameters, 13) + 3.3749999999999992e-10 * pow(1.8, var_parameters__Qpow) * (-0.75 * NV_Ith_S(mParameters, 8) + 0.75 * var_chaste_interface__Na_Concentrations__Na_sl * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double d_dt_chaste_interface_var_Na_Concentrations__Na_sl = (-var_Na_Buffers__dNa_Bsl_dt + 1.6385999999999999e-12 * (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_i) / var_parameters__Vsl + 1.8312999999999999e-14 * (-var_chaste_interface__Na_Concentrations__Na_sl + var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__Vsl - var_Na_Concentrations__I_Na_tot_sl * NV_Ith_S(mParameters, 23) / (NV_Ith_S(mParameters, 9) * var_parameters__Vsl)) * NV_Ith_S(mParameters, 3); // mM / msec + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane_potential__V_m = 0.0; + } + else + { + const double var_I_Kp__kp_kp = _lt_0_row[0]; // dimensionless + const double var_parameters__ecl = 1 * log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ek = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + d_dt_chaste_interface_var_membrane_potential__V_m = -var_Ca_Concentrations__I_Ca_tot_junc - var_Ca_Concentrations__I_Ca_tot_sl - var_Na_Concentrations__I_Na_tot_junc - var_Na_Concentrations__I_Na_tot_sl + 2 * var_I_NaK__I_nak_junc + 2 * var_I_NaK__I_nak_sl + 0.0089999999999999993 * var_parameters__ecl - 0.0089999999999999993 * var_chaste_interface__membrane_potential__V_m - GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance() - (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 12) - 0.002 * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kp__kp_kp - 0.006029375 * (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) / (1 + 0.10000000000000001 / var_chaste_interface__Ca_Concentrations__Ca_j) - 0.048783124999999997 * (-var_parameters__ecl + var_chaste_interface__membrane_potential__V_m) / (1 + 0.10000000000000001 / var_chaste_interface__Ca_Concentrations__Ca_sl) - 0.0035000000000000001 * pow(var_chaste_interface__I_Ks__x_ks, 2) * (-1 * log((0.018329999999999999 * NV_Ith_S(mParameters, 8) + NV_Ith_S(mParameters, 7)) / (0.018329999999999999 * var_chaste_interface__Na_Concentrations__Na_i + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 19) - 0.1144 * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 16) * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f - 0.015599999999999999 * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 20) * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s - 0.43033148291193518 * _lt_0_row[1] * sqrt(NV_Ith_S(mParameters, 7)) * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 18) * var_chaste_interface__I_Kr__x_kr - 0.4389381125701739 * sqrt(NV_Ith_S(mParameters, 7)) * (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 17) / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)))) - 6.0749999999999998e-8 * pow(1.8, var_parameters__Qpow) * (-0.75 * NV_Ith_S(mParameters, 7) + 0.75 * var_chaste_interface__K_Concentration__K_i * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * (1 + 0.099999999999999978 * var_I_Ca__fcaCaMSL + 0.90000000000000002 * var_I_Ca__fcaCaj - 0.099999999999999978 * var_chaste_interface__I_Ca__f_Ca_Bsl - 0.90000000000000002 * var_chaste_interface__I_Ca__f_Ca_Bj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) / (-1 + exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // mV / msec + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane_potential__V_m; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_Concentrations__Ca_i; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_I_Na__m; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_I_Na__h; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_I_Na__j; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_I_Kr__x_kr; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_I_Ks__x_ks; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_I_to__x_to_s; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_I_to__y_to_s; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_I_to__x_to_f; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_I_to__y_to_f; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_I_Ca__d; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_I_Ca__f; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_I_Ca__f_Ca_Bj; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_I_Ca__f_Ca_Bsl; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_SR_Fluxes__Ry_Rr; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_SR_Fluxes__Ry_Ro; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_SR_Fluxes__Ry_Ri; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_Na_Buffers__Na_Bj; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_Na_Buffers__Na_Bsl; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CL; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHc; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Tn_CHm; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__CaM; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_c; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__Myo_m; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Cytosolic_Ca_Buffers__SRB; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_j; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLL_sl; + NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_j; + NV_Ith_S(rDY,30) = d_dt_chaste_interface_var_Junctional_and_SL_Ca_Buffers__SLH_sl; + NV_Ith_S(rDY,31) = d_dt_chaste_interface_var_SR_Ca_Concentrations__Csqn_b; + NV_Ith_S(rDY,32) = d_dt_chaste_interface_var_SR_Ca_Concentrations__Ca_sr; + NV_Ith_S(rDY,33) = d_dt_chaste_interface_var_Na_Concentrations__Na_j; + NV_Ith_S(rDY,34) = d_dt_chaste_interface_var_Na_Concentrations__Na_sl; + NV_Ith_S(rDY,35) = d_dt_chaste_interface_var_Na_Concentrations__Na_i; + NV_Ith_S(rDY,36) = d_dt_chaste_interface_var_K_Concentration__K_i; + NV_Ith_S(rDY,37) = d_dt_chaste_interface_var_Ca_Concentrations__Ca_j; + NV_Ith_S(rDY,38) = d_dt_chaste_interface_var_Ca_Concentrations__Ca_sl; + } + + N_Vector Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane_potential__V_m = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -81.4229700631461 + double var_chaste_interface__Ca_Concentrations__Ca_i = NV_Ith_S(rY, 1); + // Units: mM; Initial value: 8.72745589849657e-05 + double var_chaste_interface__I_Na__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.00381858135062259 + double var_chaste_interface__I_Na__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.625086621635645 + double var_chaste_interface__I_Na__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.62332507235506 + double var_chaste_interface__I_Kr__x_kr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.021733554982663 + double var_chaste_interface__I_Ks__x_ks = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00428981903391989 + double var_chaste_interface__I_to__x_to_s = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.000441539203559411 + double var_chaste_interface__I_to__y_to_s = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.784875334693892 + double var_chaste_interface__I_to__x_to_f = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.000441531250866821 + double var_chaste_interface__I_to__y_to_f = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.999995817153572 + double var_chaste_interface__I_Ca__d = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 2.93982287251302e-06 + double var_chaste_interface__I_Ca__f = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.99511673495949 + double var_chaste_interface__I_Ca__f_Ca_Bj = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.0246142436477748 + double var_chaste_interface__I_Ca__f_Ca_Bsl = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0152416826209301 + double var_chaste_interface__SR_Fluxes__Ry_Ro = NV_Ith_S(rY, 16); + // Units: mM; Initial value: 7.37484660389498e-07 + double var_chaste_interface__SR_Ca_Concentrations__Ca_sr = NV_Ith_S(rY, 32); + // Units: mM; Initial value: 0.555180633859957 + double var_chaste_interface__Na_Concentrations__Na_j = NV_Ith_S(rY, 33); + // Units: mM; Initial value: 8.3215690202059 + double var_chaste_interface__Na_Concentrations__Na_sl = NV_Ith_S(rY, 34); + // Units: mM; Initial value: 8.32094589677861 + double var_chaste_interface__Na_Concentrations__Na_i = NV_Ith_S(rY, 35); + // Units: mM; Initial value: 8.32114502072456 + double var_chaste_interface__K_Concentration__K_i = NV_Ith_S(rY, 36); + // Units: mM; Initial value: 120.0 + double var_chaste_interface__Ca_Concentrations__Ca_j = NV_Ith_S(rY, 37); + // Units: mM; Initial value: 0.000175415190830688 + double var_chaste_interface__Ca_Concentrations__Ca_sl = NV_Ith_S(rY, 38); + // Units: mM; Initial value: 0.000106544589194246 + + // Lookup table indexing + const bool _oob_0 = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane_potential__V_m); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane_potential__V_m); + + // Mathematics + const double var_I_Ca__fcaCaMSL = 0; // dimensionless + const double var_I_Ca__fcaCaj = 0; // dimensionless + const double var_I_Ks__gks_junc = 0.0035000000000000001; // mS_per_uF + const double var_I_Ks__gks_sl = 0.0035000000000000001; // mS_per_uF + const double var_SR_Fluxes__J_SRleak = (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * NV_Ith_S(mParameters, 0); // mM_per_msec + const double var_I_Ca__tauf = 1 / (_lt_0_row[6]); // msec + const double var_I_Kr__rkr = 1 * _lt_0_row[1]; // dimensionless + const double var_I_Na__ah = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : (0.057000000000000002 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 15) - 0.14705882352941177 * var_chaste_interface__membrane_potential__V_m))); // dimensionless + const double var_I_Na__aj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0) : ((37.780000000000001 + var_chaste_interface__membrane_potential__V_m) * (-25428 * exp(0.24440000000000001 * var_chaste_interface__membrane_potential__V_m - 0.24440000000000001 * NV_Ith_S(mParameters, 15)) - 6.9480000000000002e-6 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 15) - 0.043909999999999998 * var_chaste_interface__membrane_potential__V_m)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane_potential__V_m - 0.311 * NV_Ith_S(mParameters, 15))))); // dimensionless + const double var_I_Na__bh = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (5.9230769230769234 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 15) - 0.0900900900900901 * var_chaste_interface__membrane_potential__V_m))) : (310000 * exp(0.34849999999999998 * var_chaste_interface__membrane_potential__V_m - 0.34849999999999998 * NV_Ith_S(mParameters, 15)) + 2.7000000000000002 * exp(0.079000000000000001 * var_chaste_interface__membrane_potential__V_m - 0.079000000000000001 * NV_Ith_S(mParameters, 15)))); // dimensionless + const double var_I_Na__bj = ((var_chaste_interface__membrane_potential__V_m >= -40) ? (0.59999999999999998 * exp(0.057000000000000002 * var_chaste_interface__membrane_potential__V_m - 0.057000000000000002 * NV_Ith_S(mParameters, 15)) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 15) - 0.10000000000000001 * var_chaste_interface__membrane_potential__V_m))) : (0.024240000000000001 * exp(0.01052 * NV_Ith_S(mParameters, 15) - 0.01052 * var_chaste_interface__membrane_potential__V_m) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 15) - 0.13780000000000001 * var_chaste_interface__membrane_potential__V_m)))); // dimensionless + const double var_I_Na__tauh = 1 / (var_I_Na__ah + var_I_Na__bh); // msec + const double var_I_Na__tauj = 1 / (var_I_Na__aj + var_I_Na__bj); // msec + // Special handling of data clamp current here + // (we want to save expense of calling the interpolation method if possible.) + double var_chaste_interface__membrane_data_clamp_current = 0.0; + if (mDataClampIsOn) + { + var_chaste_interface__membrane_data_clamp_current = (-GetExperimentalVoltageAtTimeT(var_chaste_interface__environment__time) + var_chaste_interface__membrane_potential__V_m) * NV_Ith_S(mParameters, 12); // uA_per_cm2 + } + const double var_membrane_potential__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_parameters__Cmem_converted = 1000000 * NV_Ith_S(mParameters, 23); // uF + const double var_parameters__Fjunc = 0.11; // dimensionless + const double var_parameters__Fjunc_CaL = 0.90000000000000002; // dimensionless + const double var_parameters__Fsl = 1 - var_parameters__Fjunc; // dimensionless + const double var_I_Ks__GKs_total = (var_I_Ks__gks_junc * var_parameters__Fjunc + var_I_Ks__gks_sl * var_parameters__Fsl) * NV_Ith_S(mParameters, 19); // mS_per_uF + const double var_parameters__Fsl_CaL = 1 - var_parameters__Fjunc_CaL; // dimensionless + const double var_parameters__IbarSLCaP = 0.067299999999999999; // uA_per_uF + const double var_parameters__Kdact = 0.00014999999999999999; // mM + const double var_I_NCX__Ka_junc = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_j, 2)); // dimensionless + const double var_I_NCX__Ka_sl = 1 / (1 + pow(var_parameters__Kdact, 2) / pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 2)); // dimensionless + const double var_parameters__KmCai = 0.0035899999999999999; // mM + const double var_parameters__KmCao = 1.3; // mM + const double var_parameters__KmKo = 1.5; // mM + const double var_parameters__KmNai = 12.289999999999999; // mM + const double var_parameters__KmNaip = 11; // mM + const double var_parameters__KmNao = 87.5; // mM + const double var_parameters__KmPCa = 0.00050000000000000001; // mM + const double var_parameters__Kmf = 0.00024600000000000002; // mM + const double var_parameters__Kmr = 1.7; // mM + const double var_I_Ki__g_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 17); // mS_per_uF + const double var_I_Kr__gkr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 7)) * NV_Ith_S(mParameters, 18); // mS_per_uF + const double var_I_NCX__s3_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_j / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_j + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_j, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NCX__s3_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * var_parameters__KmCao + pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(var_parameters__KmNao, 3) * (1 + var_chaste_interface__Ca_Concentrations__Ca_sl / var_parameters__KmCai) * var_chaste_interface__Ca_Concentrations__Ca_sl + pow(NV_Ith_S(mParameters, 8), 3) * (1 + pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) / pow(var_parameters__KmNai, 3)) * var_parameters__KmCai; // mM4 + const double var_I_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 8)); // dimensionless + const double var_parameters__Q10CaL = 1.8; // dimensionless + const double var_parameters__Q10NCX = 1.5700000000000001; // dimensionless + const double var_parameters__Q10SLCaP = 2.3500000000000001; // dimensionless + const double var_parameters__Q10SRCaP = 2.6000000000000001; // dimensionless + const double var_parameters__FoRT = NV_Ith_S(mParameters, 9) / (NV_Ith_S(mParameters, 10) * NV_Ith_S(mParameters, 24)); // per_mV + const double var_I_NaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT) + 0.036499999999999998 * var_I_NaK__sigma * exp(-var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // dimensionless + const double var_I_NaK__I_nak_junc = var_I_NaK__fnak * var_parameters__Fjunc * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_j, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak_sl = var_I_NaK__fnak * var_parameters__Fsl * NV_Ith_S(mParameters, 22) * NV_Ith_S(mParameters, 7) / ((1 + pow(var_parameters__KmNaip, 4) / pow(var_chaste_interface__Na_Concentrations__Na_sl, 4)) * (var_parameters__KmKo + NV_Ith_S(mParameters, 7))); // uA_per_uF + const double var_I_NaK__I_nak = var_I_NaK__I_nak_junc + var_I_NaK__I_nak_sl; // uA_per_uF + const double var_I_NaK__I_nak_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NaK__I_nak; // uA_per_cm2 + const double var_parameters__Qpow = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 24); // dimensionless + const double var_I_PCa__I_pca_junc = pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fjunc * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_j, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca_sl = pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) * pow(var_parameters__Q10SLCaP, var_parameters__Qpow) * var_parameters__Fsl * var_parameters__IbarSLCaP / (pow(var_chaste_interface__Ca_Concentrations__Ca_sl, 1.6000000000000001) + pow(var_parameters__KmPCa, 1.6000000000000001)); // uA_per_uF + const double var_I_PCa__I_pca = var_I_PCa__I_pca_junc + var_I_PCa__I_pca_sl; // uA_per_uF + const double var_I_PCa__I_pca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_PCa__I_pca; // uA_per_cm2 + const double var_parameters__ecl = 1 * log(NV_Ith_S(mParameters, 4) / NV_Ith_S(mParameters, 6)) / var_parameters__FoRT; // mV + const double var_parameters__ek = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__K_Concentration__K_i) / var_parameters__FoRT; // mV + const double var_I_Ki__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane_potential__V_m - 0.23849999999999999 * var_parameters__ek)); // dimensionless + const double var_I_Ki__bki = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane_potential__V_m - 0.080320000000000003 * var_parameters__ek) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane_potential__V_m - 0.061749999999999999 * var_parameters__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_parameters__ek - 0.51429999999999998 * var_chaste_interface__membrane_potential__V_m)); // dimensionless + const double var_I_Ki__kiss = var_I_Ki__aki / (var_I_Ki__aki + var_I_Ki__bki); // dimensionless + const double var_I_Ki__I_ki = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Ki__g_K1 * var_I_Ki__kiss; // uA_per_uF + const double var_I_Ki__I_ki_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ki__I_ki; // uA_per_cm2 + const double var_I_Kr__I_kr = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_Kr__gkr * var_I_Kr__rkr * var_chaste_interface__I_Kr__x_kr; // uA_per_uF + const double var_I_Kr__I_kr_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Kr__I_kr; // uA_per_cm2 + const double var_parameters__ena_junc = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_j) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_junc = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_junc + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fjunc * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_parameters__ena_sl = 1 * log(NV_Ith_S(mParameters, 8) / var_chaste_interface__Na_Concentrations__Na_sl) / var_parameters__FoRT; // mV + const double var_I_Na__I_Na_sl = pow(var_chaste_interface__I_Na__m, 3) * (-var_parameters__ena_sl + var_chaste_interface__membrane_potential__V_m) * var_chaste_interface__I_Na__h * var_chaste_interface__I_Na__j * var_parameters__Fsl * NV_Ith_S(mParameters, 13); // uA_per_uF + const double var_I_Na__I_Na = var_I_Na__I_Na_junc + var_I_Na__I_Na_sl; // uA_per_uF + const double var_I_Na__I_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Na__I_Na; // uA_per_cm2 + const double var_parameters__epi = 1; // dimensionless + const double var_I_to__GtoFast = ((var_parameters__epi == 1) ? (0.1144 * NV_Ith_S(mParameters, 16)) : (0.0014039999999999999 * NV_Ith_S(mParameters, 16))); // mS_per_uF + const double var_I_to__GtoSlow = ((var_parameters__epi == 1) ? (0.015599999999999999 * NV_Ith_S(mParameters, 20)) : (0.037595999999999997 * NV_Ith_S(mParameters, 20))); // mS_per_uF + const double var_I_to__I_tof = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoFast * var_chaste_interface__I_to__x_to_f * var_chaste_interface__I_to__y_to_f; // uA_per_uF + const double var_I_to__I_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tof; // uA_per_cm2 + const double var_I_to__I_tos = (-var_parameters__ek + var_chaste_interface__membrane_potential__V_m) * var_I_to__GtoSlow * var_chaste_interface__I_to__x_to_s * var_chaste_interface__I_to__y_to_s; // uA_per_uF + const double var_I_to__I_to = var_I_to__I_tof + var_I_to__I_tos; // uA_per_uF + const double var_I_to__I_to_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_to; // uA_per_cm2 + const double var_I_to__I_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_I_to__I_tos; // uA_per_cm2 + const double var_parameters__hillSRCaP = 1.7869999999999999; // dimensionless + const double var_SR_Fluxes__J_serca = pow(var_parameters__Q10SRCaP, var_parameters__Qpow) * (pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) - pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)) * NV_Ith_S(mParameters, 2) / (1 + pow((var_chaste_interface__Ca_Concentrations__Ca_i / var_parameters__Kmf), var_parameters__hillSRCaP) + pow((var_chaste_interface__SR_Ca_Concentrations__Ca_sr / var_parameters__Kmr), var_parameters__hillSRCaP)); // mM_per_msec + const double var_SR_Fluxes__J_SRCarel = 1 * (-var_chaste_interface__Ca_Concentrations__Ca_j + var_chaste_interface__SR_Ca_Concentrations__Ca_sr) * var_chaste_interface__SR_Fluxes__Ry_Ro * NV_Ith_S(mParameters, 1); // mM_per_msec + const double var_parameters__ksat = 0.32000000000000001; // dimensionless + const double var_parameters__nu = 0.27000000000000002; // dimensionless + const double var_I_NCX__s1_junc = pow(var_chaste_interface__Na_Concentrations__Na_j, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s1_sl = pow(var_chaste_interface__Na_Concentrations__Na_sl, 3) * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * var_parameters__nu); // mM4 + const double var_I_NCX__s2_junc = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_j * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_junc = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_junc + var_I_NCX__s1_junc) * var_I_NCX__Ka_junc * var_parameters__Fjunc * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_junc); // uA_per_uF + const double var_I_NCX__s2_sl = pow(NV_Ith_S(mParameters, 8), 3) * var_chaste_interface__Ca_Concentrations__Ca_sl * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT); // mM4 + const double var_I_NCX__I_ncx_sl = pow(var_parameters__Q10NCX, var_parameters__Qpow) * (-var_I_NCX__s2_sl + var_I_NCX__s1_sl) * var_I_NCX__Ka_sl * var_parameters__Fsl * NV_Ith_S(mParameters, 21) / ((1 + var_parameters__ksat * exp((-1 + var_parameters__nu) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_I_NCX__s3_sl); // uA_per_uF + const double var_I_NCX__I_ncx = var_I_NCX__I_ncx_junc + var_I_NCX__I_ncx_sl; // uA_per_uF + const double var_I_NCX__I_ncx_converted = HeartConfig::Instance()->GetCapacitance() * var_I_NCX__I_ncx; // uA_per_cm2 + const double var_parameters__pCa = 0.00054000000000000001 * NV_Ith_S(mParameters, 11); // cm_per_sec + const double var_I_Ca__ibarca_j = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_j * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_junc = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bj + var_I_Ca__fcaCaj) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_j * var_parameters__Fjunc_CaL; // uA_per_uF + const double var_I_Ca__ibarca_sl = 4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + 0.34100000000000003 * var_chaste_interface__Ca_Concentrations__Ca_sl * exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)) * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT * NV_Ith_S(mParameters, 9) * var_parameters__pCa / (-1 + exp(2 * var_chaste_interface__membrane_potential__V_m * var_parameters__FoRT)); // uA_per_uF + const double var_I_Ca__I_Ca_sl = 0.45000000000000001 * pow(var_parameters__Q10CaL, var_parameters__Qpow) * (1 - var_chaste_interface__I_Ca__f_Ca_Bsl + var_I_Ca__fcaCaMSL) * var_chaste_interface__I_Ca__d * var_chaste_interface__I_Ca__f * var_I_Ca__ibarca_sl * var_parameters__Fsl_CaL; // uA_per_uF + const double var_I_Ca__I_Ca = var_I_Ca__I_Ca_junc + var_I_Ca__I_Ca_sl; // uA_per_uF + const double var_I_Ca__I_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ca__I_Ca; // uA_per_cm2 + const double var_parameters__pNaK = 0.018329999999999999; // dimensionless + const double var_I_Ks__eks = 1 * log((NV_Ith_S(mParameters, 8) * var_parameters__pNaK + NV_Ith_S(mParameters, 7)) / (var_chaste_interface__Na_Concentrations__Na_i * var_parameters__pNaK + var_chaste_interface__K_Concentration__K_i)) / var_parameters__FoRT; // mV + const double var_I_Ks__I_ks = pow(var_chaste_interface__I_Ks__x_ks, 2) * (-var_I_Ks__eks + var_chaste_interface__membrane_potential__V_m) * var_I_Ks__GKs_total; // uA_per_uF + const double var_I_Ks__I_ks_converted = HeartConfig::Instance()->GetCapacitance() * var_I_Ks__I_ks; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(27, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(27); +#endif + NV_Ith_S(dqs, 0) = var_SR_Fluxes__J_SRleak; + NV_Ith_S(dqs, 1) = var_SR_Fluxes__J_SRCarel; + NV_Ith_S(dqs, 2) = var_SR_Fluxes__J_serca; + NV_Ith_S(dqs, 3) = var_parameters__ecl; + NV_Ith_S(dqs, 4) = var_I_Ca__I_Ca_converted; + NV_Ith_S(dqs, 5) = var_I_Ca__tauf; + NV_Ith_S(dqs, 6) = var_I_PCa__I_pca_converted; + NV_Ith_S(dqs, 7) = var_parameters__Cmem_converted; + NV_Ith_S(dqs, 8) = var_chaste_interface__membrane_data_clamp_current; + NV_Ith_S(dqs, 9) = var_I_Na__I_Na_converted; + NV_Ith_S(dqs, 10) = var_I_Na__tauh; + NV_Ith_S(dqs, 11) = var_I_Na__tauj; + NV_Ith_S(dqs, 12) = var_I_to__I_tof_converted; + NV_Ith_S(dqs, 13) = var_I_to__GtoFast; + NV_Ith_S(dqs, 14) = var_I_Ki__I_ki_converted; + NV_Ith_S(dqs, 15) = var_I_Ki__g_K1; + NV_Ith_S(dqs, 16) = var_I_Kr__I_kr_converted; + NV_Ith_S(dqs, 17) = var_I_Ks__I_ks_converted; + NV_Ith_S(dqs, 18) = var_I_Ks__GKs_total; + NV_Ith_S(dqs, 19) = var_I_to__I_tos_converted; + NV_Ith_S(dqs, 20) = var_I_to__GtoSlow; + NV_Ith_S(dqs, 21) = var_I_NCX__I_ncx_converted; + NV_Ith_S(dqs, 22) = var_I_NaK__I_nak_converted; + NV_Ith_S(dqs, 23) = var_membrane_potential__i_Stim_converted; + NV_Ith_S(dqs, 24) = var_I_to__I_to_converted; + NV_Ith_S(dqs, 25) = var_parameters__ek; + NV_Ith_S(dqs, 26) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "grandi_pasqualini_bers_2010_epi"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "msec"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-81.4229700631461); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.72745589849657e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00381858135062259); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.625086621635645); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.62332507235506); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("I_Kr__x_kr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.021733554982663); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("I_Ks__x_ks"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00428981903391989); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("I_to__x_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441539203559411); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("I_to__y_to_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.784875334693892); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("I_to__x_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000441531250866821); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("I_to__y_to_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999995817153572); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.93982287251302e-06); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99511673495949); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("I_Ca__f_Ca_Bj"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0246142436477748); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0152416826209301); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("SR_Fluxes__Ry_Rr"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.891022230597263); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("SR_Fluxes__Ry_Ro"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(7.37484660389498e-07); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("SR_Fluxes__Ry_Ri"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(9.01984485847386e-08); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("Na_Buffers__Na_Bj"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(3.43545459048316); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("Na_Buffers__Na_Bsl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.749601264899653); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CL"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00893708435270205); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHc"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.117445983314504); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Tn_CHm"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0105996734077994); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__CaM"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000295653619580701); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_c"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00192645052472679); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__Myo_m"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.137557201546068); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("Cytosolic_Ca_Buffers__SRB"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00217414510791738); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00738583890572642); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLL_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.00988178900584875); + + // NV_Ith_S(rY, 29): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_j"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0734662466011574); + + // NV_Ith_S(rY, 30): + this->mVariableNames.push_back("Junctional_and_SL_Ca_Buffers__SLH_sl"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.114400081504523); + + // NV_Ith_S(rY, 31): + this->mVariableNames.push_back("SR_Ca_Concentrations__Csqn_b"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(1.19772047585784); + + // NV_Ith_S(rY, 32): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.555180633859957); + + // NV_Ith_S(rY, 33): + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.3215690202059); + + // NV_Ith_S(rY, 34): + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32094589677861); + + // NV_Ith_S(rY, 35): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(8.32114502072456); + + // NV_Ith_S(rY, 36): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(120.0); + + // NV_Ith_S(rY, 37): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000175415190830688); + + // NV_Ith_S(rY, 38): + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.000106544589194246); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_msec"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("mM_per_msec"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[9]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[10]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kelvin_per_kilomole"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("cm_per_sec"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_data_clamp_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("mV"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[22]: + this->mParameterNames.push_back("membrane_sodium_potassium_pump_current_permeability"); + this->mParameterUnits.push_back("uA_per_uF"); + + // mParameters[23]: + this->mParameterNames.push_back("parameters__Cmem"); + this->mParameterUnits.push_back("farad"); + + // mParameters[24]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_leak_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("SR_uptake_current"); + this->mDerivedQuantityUnits.push_back("mM_per_msec"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_data_clamp_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("msec"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("membrane_sodium_potassium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [23]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [24]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [25]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [26]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("msec"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellgrandi_pasqualini_bers_2010_ssFromCellMLCvodeDataClampOpt) + +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode/dynamic_mahajan_shiferaw_2008--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode/dynamic_mahajan_shiferaw_2008--sympy_1_13.cpp new file mode 100644 index 00000000..8672c684 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode/dynamic_mahajan_shiferaw_2008--sympy_1_13.cpp @@ -0,0 +1,1050 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: MahajanShiferaw2008_units +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NumericCvode) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_mahajan_shiferaw_2008.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + + + + + + boost::shared_ptr Dynamicmahajan_shiferaw_2008FromCellMLCvode::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -14.999999999999998 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 3; // ms + const double var_chaste_interface__cell__stim_offset = 100; // ms + const double var_chaste_interface__cell__stim_period = 400; // ms + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_offset + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Dynamicmahajan_shiferaw_2008FromCellMLCvode::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Dynamicmahajan_shiferaw_2008FromCellMLCvode::Dynamicmahajan_shiferaw_2008FromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 26, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + NV_Ith_S(this->mParameters, 0) = 2.069e-5; // (var_Ileak_Iup_Ixfer__gleak) [per_ms] + NV_Ith_S(this->mParameters, 1) = 1; // (var_Irel__release_factor) [dimensionless] + NV_Ith_S(this->mParameters, 2) = 0.40000000000000002; // (var_Ileak_Iup_Ixfer__vup) [uM_per_ms] + NV_Ith_S(this->mParameters, 3) = 1; // (var_Na__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 140; // (var_reversal_potentials__K_i) [mM] + NV_Ith_S(this->mParameters, 5) = 1.8; // (var_Environment__Ca_o) [mM] + NV_Ith_S(this->mParameters, 6) = 5.4000000000000004; // (var_Environment__K_o) [mM] + NV_Ith_S(this->mParameters, 7) = 136; // (var_Environment__Na_o) [mM] + NV_Ith_S(this->mParameters, 8) = 96.485341500000004; // (var_Environment__F) [coulomb_per_mmole] + NV_Ith_S(this->mParameters, 9) = 8.3144720000000003; // (var_Environment__R) [J_per_moleK] + NV_Ith_S(this->mParameters, 10) = 0.00054000000000000001; // (var_ICaL__pca) [cm_per_s] + NV_Ith_S(this->mParameters, 11) = 12; // (var_INa__gna) [uS_per_nF] + NV_Ith_S(this->mParameters, 12) = 0; // (var_INa__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 13) = 0; // (var_INa__shift_h) [mV] + NV_Ith_S(this->mParameters, 14) = 0.11; // (var_Ito__gtof) [uS_per_nF] + NV_Ith_S(this->mParameters, 15) = 0.29999999999999999; // (var_IK1__gkix) [uS_per_nF] + NV_Ith_S(this->mParameters, 16) = 0.012500000000000001; // (var_IKr__gkr) [uS_per_nF] + NV_Ith_S(this->mParameters, 17) = 0.1386; // (var_IKs__gks) [uS_per_nF] + NV_Ith_S(this->mParameters, 18) = 0.040000000000000001; // (var_Ito__gtos) [uS_per_nF] + NV_Ith_S(this->mParameters, 19) = 0.83999999999999997; // (var_INaCa__gNaCa) [uM_per_ms] + NV_Ith_S(this->mParameters, 20) = 308; // (var_Environment__T) [kelvin] + } + + Dynamicmahajan_shiferaw_2008FromCellMLCvode::~Dynamicmahajan_shiferaw_2008FromCellMLCvode() + { + } + + + void Dynamicmahajan_shiferaw_2008FromCellMLCvode::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 26; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicmahajan_shiferaw_2008FromCellMLCvode::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -87.169816169406 + double var_chaste_interface__Ca__Ca_i_converted = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 0.000256752008084 + double var_chaste_interface__INa__xm = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.001075453357 + double var_chaste_interface__INa__xh = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.990691306716 + double var_chaste_interface__INa__xj = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.993888937283 + double var_chaste_interface__ICaL__c1 = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 1.8211252e-05 + double var_chaste_interface__ICaL__c2 = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.979322592773 + double var_chaste_interface__ICaL__xi1ca = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.001208153482 + double var_chaste_interface__ICaL__xi1ba = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 3.3616596e-05 + double var_chaste_interface__ICaL__xi2ca = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.004173008466 + double var_chaste_interface__ICaL__xi2ba = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.015242594688 + double var_chaste_interface__IKr__xr = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.007074239331 + double var_chaste_interface__IKs__xs1 = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.048267587131 + double var_chaste_interface__IKs__xs2 = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.105468807033 + double var_chaste_interface__Ito__xtos = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00364776906 + double var_chaste_interface__Ito__ytos = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.174403618112 + double var_chaste_interface__Ito__xtof = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.003643592594 + double var_chaste_interface__Ito__ytof = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 0.993331326442 + double var_chaste_interface__Na__Na_i = NV_Ith_S(rY, 20); + // Units: mM; Initial value: 11.441712311614 + double var_chaste_interface__Ca__Ca_submem = NV_Ith_S(rY, 22); + // Units: uM; Initial value: 0.226941113355 + + const double var_Ca__Ca_i = 1000 * var_chaste_interface__Ca__Ca_i_converted; // uM + const double var_Ca__csm = 0.001 * var_chaste_interface__Ca__Ca_submem; // mM + const double var_Environment__FonRT = NV_Ith_S(mParameters, 8) / (NV_Ith_S(mParameters, 9) * NV_Ith_S(mParameters, 20)); // per_mV + const double var_ICaL__gca = 182; // mmole_per_coulomb_cm + const double var_ICaL__po = 1 - var_chaste_interface__ICaL__c1 - var_chaste_interface__ICaL__c2 - var_chaste_interface__ICaL__xi1ba - var_chaste_interface__ICaL__xi1ca - var_chaste_interface__ICaL__xi2ba - var_chaste_interface__ICaL__xi2ca; // dimensionless + const double var_IK1__gkix_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 15); // uS_per_nF + const double var_IKr__gkr_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 16); // uS_per_nF + const double var_IKs__gksx = 1 + 0.80000000000000004 / (1 + 0.125 / pow(var_Ca__Ca_i, 3)); // dimensionless + const double var_IKs__gks_total = NV_Ith_S(mParameters, 17) * var_IKs__gksx; // uS_per_nF + const double var_INaCa__xkdna = 0.29999999999999999; // uM + const double var_INaCa__aloss = 1 / (1 + pow(var_INaCa__xkdna, 3) / pow(var_chaste_interface__Ca__Ca_submem, 3)); // dimensionless + const double var_INaCa__xmcai = 0.0035999999999999999; // mM + const double var_INaCa__xmcao = 1.3; // mM + const double var_INaCa__xmnai = 12.300000000000001; // mM + const double var_INaCa__xmnao = 87.5; // mM + const double var_INaCa__yz2 = pow(var_INaCa__xmnai, 3) * (1 + var_Ca__csm / var_INaCa__xmcai) * NV_Ith_S(mParameters, 5); // mM4 + const double var_INaK__gNaK = 1.5; // nA_per_nF + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 7)); // dimensionless + const double var_INaK__xkmko = 1.5; // mM + const double var_INaK__xkmnai = 12; // mM + const double var_INaCa__yz1 = pow(var_INaCa__xmnao, 3) * var_Ca__csm + pow(var_chaste_interface__Na__Na_i, 3) * var_INaCa__xmcao; // mM4 + const double var_INaCa__yz3 = pow(NV_Ith_S(mParameters, 7), 3) * (1 + pow(var_chaste_interface__Na__Na_i, 3) / pow(var_INaCa__xmnai, 3)) * var_INaCa__xmcai; // mM4 + const double var_INaCa__yz4 = pow(NV_Ith_S(mParameters, 7), 3) * var_Ca__csm + pow(var_chaste_interface__Na__Na_i, 3) * NV_Ith_S(mParameters, 5); // mM4 + const double var_INaCa__zw8 = var_INaCa__yz1 + var_INaCa__yz2 + var_INaCa__yz3 + var_INaCa__yz4; // mM4 + const double var_ICaL__za = 2 * var_Environment__FonRT * var_chaste_interface__cell__V; // dimensionless + const double var_ICaL__rxa = ((fabs(var_ICaL__za) < 0.001) ? (2 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + var_Ca__csm * exp(var_ICaL__za)) * NV_Ith_S(mParameters, 8) * NV_Ith_S(mParameters, 10)) : (4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + var_Ca__csm * exp(var_ICaL__za)) * NV_Ith_S(mParameters, 8) * var_Environment__FonRT * NV_Ith_S(mParameters, 10) * var_chaste_interface__cell__V / (-1 + exp(var_ICaL__za)))); // mA_per_cm2 + const double var_ICaL__jca = var_ICaL__gca * var_ICaL__po * var_ICaL__rxa; // uM_per_ms + const double var_IKr__rg = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_INaCa__zw3 = pow(var_chaste_interface__Na__Na_i, 3) * NV_Ith_S(mParameters, 5) * exp(0.34999999999999998 * var_Environment__FonRT * var_chaste_interface__cell__V) - pow(NV_Ith_S(mParameters, 7), 3) * var_Ca__csm * exp(-0.65000000000000002 * var_Environment__FonRT * var_chaste_interface__cell__V); // mM4 + const double var_INaCa__zw4 = 1 + 0.20000000000000001 * exp(-0.65000000000000002 * var_Environment__FonRT * var_chaste_interface__cell__V); // dimensionless + const double var_INaCa__jNaCa = var_INaCa__aloss * NV_Ith_S(mParameters, 19) * var_INaCa__zw3 / (var_INaCa__zw4 * var_INaCa__zw8); // uM_per_ms + const double var_INaK__fNaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_Environment__FonRT * var_chaste_interface__cell__V) + 0.036499999999999998 * var_INaK__sigma * exp(-var_Environment__FonRT * var_chaste_interface__cell__V)); // dimensionless + const double var_INaK__xiNaK = NV_Ith_S(mParameters, 6) * var_INaK__fNaK * var_INaK__gNaK * var_chaste_interface__Na__Na_i / ((NV_Ith_S(mParameters, 6) + var_INaK__xkmko) * (var_INaK__xkmnai + var_chaste_interface__Na__Na_i)); // nA_per_nF + const double var_Ito__rt2 = 3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V; // dimensionless + const double var_Ito__rs_inf = 1 / (1 + exp(var_Ito__rt2)); // dimensionless + const double var_cell__i_Stim = 0; // nA_per_nF + const double var_cell__wca = 8; // mV_per_uM + const double var_ICaL__xica = 2 * var_ICaL__jca * var_cell__wca; // nA_per_nF + const double var_INaCa__xiNaCa = var_INaCa__jNaCa * var_cell__wca; // nA_per_nF + const double var_reversal_potentials__ek = 1 * log(NV_Ith_S(mParameters, 6) / NV_Ith_S(mParameters, 4)) / var_Environment__FonRT; // mV + const double var_IK1__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__ek)); // per_ms + const double var_IK1__bki = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__ek) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__ek - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_IK1__xkin = var_IK1__aki / (var_IK1__aki + var_IK1__bki); // dimensionless + const double var_IK1__xik1 = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * var_IK1__gkix_total * var_IK1__xkin; // nA_per_nF + const double var_IKr__xikr = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * var_IKr__gkr_total * var_IKr__rg * var_chaste_interface__IKr__xr; // nA_per_nF + const double var_Ito__xitof = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 14) * var_chaste_interface__Ito__xtof * var_chaste_interface__Ito__ytof; // nA_per_nF + const double var_Ito__xitos = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * (0.5 * var_Ito__rs_inf + var_chaste_interface__Ito__ytos) * NV_Ith_S(mParameters, 18) * var_chaste_interface__Ito__xtos; // nA_per_nF + const double var_Ito__xito = var_Ito__xitof + var_Ito__xitos; // nA_per_nF + const double var_reversal_potentials__ena = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__xina = pow(var_chaste_interface__INa__xm, 3) * (-var_reversal_potentials__ena + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 11) * var_chaste_interface__INa__xh * var_chaste_interface__INa__xj; // nA_per_nF + const double var_reversal_potentials__prNaK = 0.018329999999999999; // dimensionless + const double var_reversal_potentials__eks = 1 * log((NV_Ith_S(mParameters, 7) * var_reversal_potentials__prNaK + NV_Ith_S(mParameters, 6)) / (var_chaste_interface__Na__Na_i * var_reversal_potentials__prNaK + NV_Ith_S(mParameters, 4))) / var_Environment__FonRT; // mV + const double var_IKs__xiks = (-var_reversal_potentials__eks + var_chaste_interface__cell__V) * var_IKs__gks_total * var_chaste_interface__IKs__xs1 * var_chaste_interface__IKs__xs2; // nA_per_nF + const double var_cell__Itotal = -var_ICaL__xica - var_IK1__xik1 - var_IKr__xikr - var_IKs__xiks - var_INa__xina - var_INaCa__xiNaCa - var_INaK__xiNaK - var_Ito__xito - var_cell__i_Stim; // nA_per_nF + const double var_chaste_interface__i_ionic = -0.99999999999999989 * HeartConfig::Instance()->GetCapacitance() * var_cell__Itotal; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicmahajan_shiferaw_2008FromCellMLCvode::EvaluateYDerivatives(double var_chaste_interface__Environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -87.169816169406 + double var_chaste_interface__Ca__Ca_i_converted = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 0.000256752008084 + double var_chaste_interface__INa__xm = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.001075453357 + double var_chaste_interface__INa__xh = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.990691306716 + double var_chaste_interface__INa__xj = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.993888937283 + double var_chaste_interface__ICaL__c1 = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 1.8211252e-05 + double var_chaste_interface__ICaL__c2 = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.979322592773 + double var_chaste_interface__ICaL__xi1ca = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.001208153482 + double var_chaste_interface__ICaL__xi1ba = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 3.3616596e-05 + double var_chaste_interface__ICaL__xi2ca = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.004173008466 + double var_chaste_interface__ICaL__xi2ba = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.015242594688 + double var_chaste_interface__IKr__xr = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.007074239331 + double var_chaste_interface__IKs__xs1 = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.048267587131 + double var_chaste_interface__IKs__xs2 = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.105468807033 + double var_chaste_interface__Ito__xtos = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00364776906 + double var_chaste_interface__Ito__ytos = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.174403618112 + double var_chaste_interface__Ito__xtof = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.003643592594 + double var_chaste_interface__Ito__ytof = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 0.993331326442 + double var_chaste_interface__Irel__Ca_JSR = NV_Ith_S(rY, 18); + // Units: uM; Initial value: 97.505463697266 + double var_chaste_interface__Irel__xir = NV_Ith_S(rY, 19); + // Units: uM_per_ms; Initial value: 0.006679257264 + double var_chaste_interface__Na__Na_i = NV_Ith_S(rY, 20); + // Units: mM; Initial value: 11.441712311614 + double var_chaste_interface__Ca__Ca_dyad = NV_Ith_S(rY, 21); + // Units: uM; Initial value: 1.716573130685 + double var_chaste_interface__Ca__Ca_submem = NV_Ith_S(rY, 22); + // Units: uM; Initial value: 0.226941113355 + double var_chaste_interface__Ca__Ca_NSR = NV_Ith_S(rY, 23); + // Units: uM; Initial value: 104.450004990523 + double var_chaste_interface__Ca__tropi = NV_Ith_S(rY, 24); + // Units: uM; Initial value: 22.171689894953 + double var_chaste_interface__Ca__trops = NV_Ith_S(rY, 25); + // Units: uM; Initial value: 19.864701949854 + + // Mathematics + double d_dt_chaste_interface_var_cell__V; + const double var_Ca__Ca_i = 1000 * var_chaste_interface__Ca__Ca_i_converted; // uM + const double var_Ca__bcal = 24; // uM + const double var_Ca__bmem = 15; // uM + const double var_Ca__bsar = 42; // uM + const double var_Ca__btrop = 70; // uM + const double var_Ca__csm = 0.001 * var_chaste_interface__Ca__Ca_submem; // mM + const double var_Ca__kmem = 0.29999999999999999; // uM + const double var_Ca__ksar = 13; // uM + const double var_Ca__mempxi = var_Ca__bmem * var_Ca__kmem / pow((var_Ca__Ca_i + var_Ca__kmem), 2); // dimensionless + const double var_Ca__mempxs = var_Ca__bmem * var_Ca__kmem / pow((var_chaste_interface__Ca__Ca_submem + var_Ca__kmem), 2); // dimensionless + const double var_Ca__sarpxi = var_Ca__bsar * var_Ca__ksar / pow((var_Ca__Ca_i + var_Ca__ksar), 2); // dimensionless + const double var_Ca__sarpxs = var_Ca__bsar * var_Ca__ksar / pow((var_chaste_interface__Ca__Ca_submem + var_Ca__ksar), 2); // dimensionless + const double var_Ca__srkd = 0.59999999999999998; // uM + const double var_Ca__srmax = 47; // uM + const double var_Ca__spxi = var_Ca__srkd * var_Ca__srmax / pow((var_Ca__Ca_i + var_Ca__srkd), 2); // dimensionless + const double var_Ca__spxs = var_Ca__srkd * var_Ca__srmax / pow((var_chaste_interface__Ca__Ca_submem + var_Ca__srkd), 2); // dimensionless + const double var_Ca__taud = 4; // ms + const double var_Ca__jd = (-var_Ca__Ca_i + var_chaste_interface__Ca__Ca_submem) / var_Ca__taud; // uM_per_ms + const double var_Ca__taups = 0.5; // ms + const double var_Ca__xkcal = 7; // uM + const double var_Ca__bpxi = var_Ca__bcal * var_Ca__xkcal / pow((var_Ca__Ca_i + var_Ca__xkcal), 2); // dimensionless + const double var_Ca__bpxs = var_Ca__bcal * var_Ca__xkcal / pow((var_chaste_interface__Ca__Ca_submem + var_Ca__xkcal), 2); // dimensionless + const double var_Ca__dciib = 1 / (1 + var_Ca__bpxi + var_Ca__mempxi + var_Ca__sarpxi + var_Ca__spxi); // dimensionless + const double var_Ca__dcsib = 1 / (1 + var_Ca__bpxs + var_Ca__mempxs + var_Ca__sarpxs + var_Ca__spxs); // dimensionless + const double var_Ca__xkoff = 0.019599999999999999; // per_ms + const double var_Ca__xkon = 0.0327; // per_uM_per_ms + const double var_Ca__xbi = -var_chaste_interface__Ca__tropi * var_Ca__xkoff + (-var_chaste_interface__Ca__tropi + var_Ca__btrop) * var_Ca__Ca_i * var_Ca__xkon; // uM_per_ms + const double var_Ca__xbs = -var_chaste_interface__Ca__trops * var_Ca__xkoff + (-var_chaste_interface__Ca__trops + var_Ca__btrop) * var_chaste_interface__Ca__Ca_submem * var_Ca__xkon; // uM_per_ms + const double d_dt_chaste_interface_var_Ca__tropi = var_Ca__xbi; // uM / ms + const double d_dt_chaste_interface_var_Ca__trops = var_Ca__xbs; // uM / ms + const double var_Environment__FonRT = NV_Ith_S(mParameters, 8) / (NV_Ith_S(mParameters, 9) * NV_Ith_S(mParameters, 20)); // per_mV + const double var_ICaL__cat = 3; // uM + const double var_ICaL__cpt = 6.0936500000000002; // uM + const double var_ICaL__fca = 1 / (1 + pow(var_ICaL__cat, 3) / pow(var_chaste_interface__Ca__Ca_dyad, 3)); // dimensionless + const double var_ICaL__gca = 182; // mmole_per_coulomb_cm + const double var_ICaL__k1 = 0.024167999999999999 * var_ICaL__fca; // per_ms + const double var_ICaL__k1t = 0.00413; // per_ms + const double var_ICaL__k2 = 0.000103615; // per_ms + const double var_ICaL__k2t = 0.0022399999999999998; // per_ms + const double var_ICaL__r1 = 0.29999999999999999; // per_ms + const double var_ICaL__r2 = 3; // per_ms + const double var_ICaL__s1 = 0.018268800000000002 * var_ICaL__fca; // per_ms + const double var_ICaL__s1t = 0.0019499999999999999; // per_ms + const double var_ICaL__s2 = var_ICaL__k2 * var_ICaL__r1 * var_ICaL__s1 / (var_ICaL__k1 * var_ICaL__r2); // per_ms + const double var_ICaL__s2t = var_ICaL__k2t * var_ICaL__r1 * var_ICaL__s1t / (var_ICaL__k1t * var_ICaL__r2); // per_ms + const double var_ICaL__s6 = 8; // mV + const double var_ICaL__sx = 3; // mV + const double var_ICaL__sy = 4; // mV + const double var_ICaL__syr = 11.32; // mV + const double var_ICaL__tau3 = 3; // ms + const double var_ICaL__taupo = 1; // ms + const double var_ICaL__tca = 78.032899999999998; // ms + const double var_ICaL__tau_ca = 0.10000000000000001 + var_ICaL__tca / (1 + pow(var_chaste_interface__Ca__Ca_dyad, 4) / pow(var_ICaL__cpt, 4)); // ms + const double var_ICaL__vth = 0; // mV + const double var_ICaL__vx = -40; // mV + const double var_ICaL__vy = -40; // mV + const double var_ICaL__vyr = -40; // mV + const double var_ICaL__po = 1 - var_chaste_interface__ICaL__c1 - var_chaste_interface__ICaL__c2 - var_chaste_interface__ICaL__xi1ba - var_chaste_interface__ICaL__xi1ca - var_chaste_interface__ICaL__xi2ba - var_chaste_interface__ICaL__xi2ca; // dimensionless + const double var_INaCa__xkdna = 0.29999999999999999; // uM + const double var_INaCa__aloss = 1 / (1 + pow(var_INaCa__xkdna, 3) / pow(var_chaste_interface__Ca__Ca_submem, 3)); // dimensionless + const double var_INaCa__xmcai = 0.0035999999999999999; // mM + const double var_INaCa__xmcao = 1.3; // mM + const double var_INaCa__xmnai = 12.300000000000001; // mM + const double var_INaCa__xmnao = 87.5; // mM + const double var_INaCa__yz2 = pow(var_INaCa__xmnai, 3) * (1 + var_Ca__csm / var_INaCa__xmcai) * NV_Ith_S(mParameters, 5); // mM4 + const double var_INaK__gNaK = 1.5; // nA_per_nF + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 7)); // dimensionless + const double var_INaK__xkmko = 1.5; // mM + const double var_INaK__xkmnai = 12; // mM + const double var_Ileak_Iup_Ixfer__cup = 0.5; // uM + const double var_Ileak_Iup_Ixfer__kj = 50; // uM + const double var_Ileak_Iup_Ixfer__jleak = pow(var_chaste_interface__Ca__Ca_NSR, 2) * (-var_Ca__Ca_i + 16.667000000000002 * var_chaste_interface__Ca__Ca_NSR) * NV_Ith_S(mParameters, 0) / (pow(var_chaste_interface__Ca__Ca_NSR, 2) + pow(var_Ileak_Iup_Ixfer__kj, 2)); // uM_per_ms + const double var_Ileak_Iup_Ixfer__jup = pow(var_Ca__Ca_i, 2) * NV_Ith_S(mParameters, 2) / (pow(var_Ca__Ca_i, 2) + pow(var_Ileak_Iup_Ixfer__cup, 2)); // uM_per_ms + const double var_Ca__Ca_i_orig_deriv = (-var_Ca__xbi - var_Ileak_Iup_Ixfer__jup + var_Ca__jd + var_Ileak_Iup_Ixfer__jleak) * var_Ca__dciib; // uM / ms + const double d_dt_chaste_interface_var_Ca__Ca_i_converted = 0.001 * var_Ca__Ca_i_orig_deriv; // millimolar / ms + const double var_Irel__av = 11.300000000000001; // per_ms + const double var_Irel__ax = 0.35759999999999997; // per_mV + const double var_Irel__ay = 0.050000000000000003; // per_mV + const double var_Irel__cstar = 90; // uM + const double var_Irel__bv = -50 + (1 - var_Irel__av) * var_Irel__cstar; // uM_per_ms + const double var_Irel__Qr0 = (((var_chaste_interface__Irel__Ca_JSR > 50) && (var_chaste_interface__Irel__Ca_JSR < var_Irel__cstar)) ? (-50 + 1 * var_chaste_interface__Irel__Ca_JSR) : ((var_chaste_interface__Irel__Ca_JSR >= var_Irel__cstar) ? (var_chaste_interface__Irel__Ca_JSR * var_Irel__av + var_Irel__bv) : (0))); // uM_per_ms + const double var_Irel__Qr = var_chaste_interface__Ca__Ca_NSR * var_Irel__Qr0 / var_Irel__cstar; // uM_per_ms + const double var_Irel__gbarsr = 26841.799999999999; // dimensionless + const double var_Irel__gdyad = 9000; // mmole_per_coulomb_cm + const double var_Irel__gryr = 2.5807899999999999; // per_ms + const double var_Irel__taua = 100; // ms + const double d_dt_chaste_interface_var_Irel__Ca_JSR = (-var_chaste_interface__Irel__Ca_JSR + var_chaste_interface__Ca__Ca_NSR) / var_Irel__taua; // uM / ms + const double var_Irel__taur = 30; // ms + const double var_Ca__dCa_JSR = -var_Ileak_Iup_Ixfer__jleak - var_chaste_interface__Irel__xir + var_Ileak_Iup_Ixfer__jup; // uM_per_ms + const double d_dt_chaste_interface_var_Ca__Ca_NSR = var_Ca__dCa_JSR; // uM / ms + const double var_INaCa__yz1 = pow(var_INaCa__xmnao, 3) * var_Ca__csm + pow(var_chaste_interface__Na__Na_i, 3) * var_INaCa__xmcao; // mM4 + const double var_INaCa__yz3 = pow(NV_Ith_S(mParameters, 7), 3) * (1 + pow(var_chaste_interface__Na__Na_i, 3) / pow(var_INaCa__xmnai, 3)) * var_INaCa__xmcai; // mM4 + const double var_INaCa__yz4 = pow(NV_Ith_S(mParameters, 7), 3) * var_Ca__csm + pow(var_chaste_interface__Na__Na_i, 3) * NV_Ith_S(mParameters, 5); // mM4 + const double var_INaCa__zw8 = var_INaCa__yz1 + var_INaCa__yz2 + var_INaCa__yz3 + var_INaCa__yz4; // mM4 + const double var_ICaL__Pr = 1 - 1 / (1 + exp((-var_chaste_interface__cell__V + var_ICaL__vy) / var_ICaL__sy)); // dimensionless + const double var_ICaL__Ps = 1 / (1 + exp((-var_chaste_interface__cell__V + var_ICaL__vyr) / var_ICaL__syr)); // dimensionless + const double var_ICaL__poi = 1 / (1 + exp((-var_chaste_interface__cell__V + var_ICaL__vx) / var_ICaL__sx)); // dimensionless + const double var_ICaL__k3 = (1 - var_ICaL__poi) / var_ICaL__tau3; // per_ms + const double var_ICaL__k3t = var_ICaL__k3; // per_ms + const double var_ICaL__poinf = 1 / (1 + exp((-var_chaste_interface__cell__V + var_ICaL__vth) / var_ICaL__s6)); // dimensionless + const double var_ICaL__alpha = var_ICaL__poinf / var_ICaL__taupo; // per_ms + const double var_ICaL__beta = (1 - var_ICaL__poinf) / var_ICaL__taupo; // per_ms + const double d_dt_chaste_interface_var_ICaL__c1 = var_ICaL__alpha * var_chaste_interface__ICaL__c2 + var_ICaL__k2 * var_chaste_interface__ICaL__xi1ca + var_ICaL__k2t * var_chaste_interface__ICaL__xi1ba + var_ICaL__po * var_ICaL__r2 - (var_ICaL__beta + var_ICaL__k1 + var_ICaL__k1t + var_ICaL__r1) * var_chaste_interface__ICaL__c1; // 1 / ms + const double var_ICaL__recov = 10 + 4954 * exp(0.064102564102564111 * var_chaste_interface__cell__V); // ms + const double var_ICaL__tauba = 450 + (-450 + var_ICaL__recov) * var_ICaL__Pr; // ms + const double var_ICaL__k5t = (1 - var_ICaL__Ps) / var_ICaL__tauba; // per_ms + const double var_ICaL__k6t = var_ICaL__Ps / var_ICaL__tauba; // per_ms + const double var_ICaL__k4t = var_ICaL__alpha * var_ICaL__k1t * var_ICaL__k3t * var_ICaL__k5t / (var_ICaL__beta * var_ICaL__k2t * var_ICaL__k6t); // per_ms + const double d_dt_chaste_interface_var_ICaL__xi1ba = var_chaste_interface__ICaL__c1 * var_ICaL__k1t + var_ICaL__k4t * var_chaste_interface__ICaL__xi2ba + var_ICaL__po * var_ICaL__s1t - (var_ICaL__k2t + var_ICaL__k3t + var_ICaL__s2t) * var_chaste_interface__ICaL__xi1ba; // 1 / ms + const double d_dt_chaste_interface_var_ICaL__xi2ba = var_chaste_interface__ICaL__c2 * var_ICaL__k6t + var_ICaL__k3t * var_chaste_interface__ICaL__xi1ba - (var_ICaL__k4t + var_ICaL__k5t) * var_chaste_interface__ICaL__xi2ba; // 1 / ms + const double var_ICaL__tauca = (-var_ICaL__tau_ca + var_ICaL__recov) * var_ICaL__Pr + var_ICaL__tau_ca; // ms + const double var_ICaL__k5 = (1 - var_ICaL__Ps) / var_ICaL__tauca; // per_ms + const double var_ICaL__k6 = var_ICaL__Ps * var_ICaL__fca / var_ICaL__tauca; // per_ms + const double d_dt_chaste_interface_var_ICaL__c2 = var_ICaL__beta * var_chaste_interface__ICaL__c1 + var_ICaL__k5 * var_chaste_interface__ICaL__xi2ca + var_ICaL__k5t * var_chaste_interface__ICaL__xi2ba - (var_ICaL__alpha + var_ICaL__k6 + var_ICaL__k6t) * var_chaste_interface__ICaL__c2; // 1 / ms + const double var_ICaL__k4 = var_ICaL__alpha * var_ICaL__k1 * var_ICaL__k3 * var_ICaL__k5 / (var_ICaL__beta * var_ICaL__k2 * var_ICaL__k6); // per_ms + const double d_dt_chaste_interface_var_ICaL__xi1ca = var_chaste_interface__ICaL__c1 * var_ICaL__k1 + var_ICaL__k4 * var_chaste_interface__ICaL__xi2ca + var_ICaL__po * var_ICaL__s1 - (var_ICaL__k2 + var_ICaL__k3 + var_ICaL__s2) * var_chaste_interface__ICaL__xi1ca; // 1 / ms + const double d_dt_chaste_interface_var_ICaL__xi2ca = var_chaste_interface__ICaL__c2 * var_ICaL__k6 + var_ICaL__k3 * var_chaste_interface__ICaL__xi1ca - (var_ICaL__k4 + var_ICaL__k5) * var_chaste_interface__ICaL__xi2ca; // 1 / ms + const double var_ICaL__za = 2 * var_Environment__FonRT * var_chaste_interface__cell__V; // dimensionless + const double var_ICaL__rxa = ((fabs(var_ICaL__za) < 0.001) ? (2 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + var_Ca__csm * exp(var_ICaL__za)) * NV_Ith_S(mParameters, 8) * NV_Ith_S(mParameters, 10)) : (4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + var_Ca__csm * exp(var_ICaL__za)) * NV_Ith_S(mParameters, 8) * var_Environment__FonRT * NV_Ith_S(mParameters, 10) * var_chaste_interface__cell__V / (-1 + exp(var_ICaL__za)))); // mA_per_cm2 + const double var_ICaL__jca = var_ICaL__gca * var_ICaL__po * var_ICaL__rxa; // uM_per_ms + const double var_IKr__xkrinf = 1 / (1 + exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr__xkrv1 = ((fabs(7 + var_chaste_interface__cell__V) > 0.001) ? (0.0013799999999999999 * (7 + var_chaste_interface__cell__V) / (1 - exp(-0.86099999999999999 - 0.123 * var_chaste_interface__cell__V))) : (0.011219512195121951)); // per_ms + const double var_IKr__xkrv2 = ((fabs(10 + var_chaste_interface__cell__V) > 0.001) ? (0.00060999999999999997 * (10 + var_chaste_interface__cell__V) / (-1 + exp(1.45 + 0.14499999999999999 * var_chaste_interface__cell__V))) : (0.0042068965517241376)); // per_ms + const double var_IKr__taukr = 1 / (var_IKr__xkrv1 + var_IKr__xkrv2); // ms + const double d_dt_chaste_interface_var_IKr__xr = (-var_chaste_interface__IKr__xr + var_IKr__xkrinf) / var_IKr__taukr; // 1 / ms + const double var_IKs__tauxs1 = ((fabs(30 + var_chaste_interface__cell__V) < 0.014556040756914121) ? (417.94625266107982) : (1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))))); // ms + const double var_IKs__tauxs2 = 4 * var_IKs__tauxs1; // ms + const double var_IKs__xs1ss = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double d_dt_chaste_interface_var_IKs__xs1 = (-var_chaste_interface__IKs__xs1 + var_IKs__xs1ss) / var_IKs__tauxs1; // 1 / ms + const double var_IKs__xs2ss = var_IKs__xs1ss; // dimensionless + const double d_dt_chaste_interface_var_IKs__xs2 = (-var_chaste_interface__IKs__xs2 + var_IKs__xs2ss) / var_IKs__tauxs2; // 1 / ms + const double var_INa__ah = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 13) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_ms + const double var_INa__aj = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 13)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 13) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V))) : (0)); // per_ms + const double var_INa__am = ((fabs(47.130000000000003 + var_chaste_interface__cell__V) > 0.001) ? (0.32000000000000001 * (47.130000000000003 + var_chaste_interface__cell__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__cell__V))) : (3.2000000000000002)); // per_ms + const double var_INa__bh = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 13)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 13))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 13) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_ms + const double var_INa__bj = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 13) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 13) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_ms + const double var_INa__bm = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__cell__V); // per_ms + const double d_dt_chaste_interface_var_INa__xm = (1 - var_chaste_interface__INa__xm) * var_INa__am - var_INa__bm * var_chaste_interface__INa__xm; // 1 / ms + const double var_INa__h_inf = 0.01 * NV_Ith_S(mParameters, 12) + (1 - 0.01 * NV_Ith_S(mParameters, 12)) * var_INa__ah / (var_INa__ah + var_INa__bh); // dimensionless + const double var_INa__j_inf = 0.01 * NV_Ith_S(mParameters, 12) + (1 - 0.01 * NV_Ith_S(mParameters, 12)) * var_INa__aj / (var_INa__aj + var_INa__bj); // dimensionless + const double var_INa__tau_h = 1 / (var_INa__ah + var_INa__bh); // ms + const double d_dt_chaste_interface_var_INa__xh = (-var_chaste_interface__INa__xh + var_INa__h_inf) / var_INa__tau_h; // 1 / ms + const double var_INa__tau_j = 1 / (var_INa__aj + var_INa__bj); // ms + const double d_dt_chaste_interface_var_INa__xj = (-var_chaste_interface__INa__xj + var_INa__j_inf) / var_INa__tau_j; // 1 / ms + const double var_INaCa__zw3 = pow(var_chaste_interface__Na__Na_i, 3) * NV_Ith_S(mParameters, 5) * exp(0.34999999999999998 * var_Environment__FonRT * var_chaste_interface__cell__V) - pow(NV_Ith_S(mParameters, 7), 3) * var_Ca__csm * exp(-0.65000000000000002 * var_Environment__FonRT * var_chaste_interface__cell__V); // mM4 + const double var_INaCa__zw4 = 1 + 0.20000000000000001 * exp(-0.65000000000000002 * var_Environment__FonRT * var_chaste_interface__cell__V); // dimensionless + const double var_INaCa__jNaCa = var_INaCa__aloss * NV_Ith_S(mParameters, 19) * var_INaCa__zw3 / (var_INaCa__zw4 * var_INaCa__zw8); // uM_per_ms + const double d_dt_chaste_interface_var_Ca__Ca_submem = (-var_Ca__xbs + 50 * var_INaCa__jNaCa + 50 * var_chaste_interface__Irel__xir - 50 * var_Ca__jd - 50 * var_ICaL__jca) * var_Ca__dcsib; // uM / ms + const double var_INaK__fNaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_Environment__FonRT * var_chaste_interface__cell__V) + 0.036499999999999998 * var_INaK__sigma * exp(-var_Environment__FonRT * var_chaste_interface__cell__V)); // dimensionless + const double var_INaK__xiNaK = NV_Ith_S(mParameters, 6) * var_INaK__fNaK * var_INaK__gNaK * var_chaste_interface__Na__Na_i / ((NV_Ith_S(mParameters, 6) + var_INaK__xkmko) * (var_INaK__xkmnai + var_chaste_interface__Na__Na_i)); // nA_per_nF + const double var_Irel__sparkV = exp(-(30 + var_chaste_interface__cell__V) * var_Irel__ay) / (1 + exp(-(30 + var_chaste_interface__cell__V) * var_Irel__ay)); // dimensionless + const double var_Irel__spark_rate = 1 * var_ICaL__po * var_Irel__gryr * var_Irel__sparkV * fabs(var_ICaL__rxa); // per_ms + const double d_dt_chaste_interface_var_Irel__xir = var_Irel__Qr * var_Irel__spark_rate - (1 - var_Ca__dCa_JSR * var_Irel__taur / var_chaste_interface__Ca__Ca_NSR) * var_chaste_interface__Irel__xir / var_Irel__taur; // uM_per_ms / ms + const double var_Irel__xicap = var_ICaL__po * var_Irel__gdyad * fabs(var_ICaL__rxa); // uM_per_ms + const double var_Irel__xirp = 1 * var_ICaL__po * var_Irel__Qr * var_Irel__gbarsr * fabs(var_ICaL__rxa) * exp(-(30 + var_chaste_interface__cell__V) * var_Irel__ax) / (1 + exp(-(30 + var_chaste_interface__cell__V) * var_Irel__ax)); // uM_per_ms + const double var_Irel__xiryr = (var_Irel__xicap + var_Irel__xirp) * NV_Ith_S(mParameters, 1); // uM_per_ms + const double d_dt_chaste_interface_var_Ca__Ca_dyad = -(-var_chaste_interface__Ca__Ca_submem + var_chaste_interface__Ca__Ca_dyad) / var_Ca__taups + var_Irel__xiryr; // uM / ms + const double var_Ito__rt1 = -0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V; // dimensionless + const double var_Ito__rt2 = 3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V; // dimensionless + const double var_Ito__rt3 = 6 + 0.10000000000000001 * var_chaste_interface__cell__V; // dimensionless + const double var_Ito__rt4 = -0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2); // dimensionless + const double var_Ito__rt5 = 3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V; // dimensionless + const double var_Ito__txf = 1.5 + 3.5 * exp(var_Ito__rt4); // ms + const double var_Ito__txs = 0.5 + 9 / (1 + exp(-var_Ito__rt1)); // ms + const double var_Ito__tyf = 20 + 20 / (1 + exp(var_Ito__rt5)); // ms + const double var_Ito__tys = 30 + 3000 / (1 + exp(var_Ito__rt3)); // ms + const double var_Ito__xtos_inf = 1 / (1 + exp(var_Ito__rt1)); // dimensionless + const double d_dt_chaste_interface_var_Ito__xtos = (-var_chaste_interface__Ito__xtos + var_Ito__xtos_inf) / var_Ito__txs; // 1 / ms + const double var_Ito__xtof_inf = var_Ito__xtos_inf; // dimensionless + const double d_dt_chaste_interface_var_Ito__xtof = (-var_chaste_interface__Ito__xtof + var_Ito__xtof_inf) / var_Ito__txf; // 1 / ms + const double var_Ito__ytos_inf = 1 / (1 + exp(var_Ito__rt2)); // dimensionless + const double d_dt_chaste_interface_var_Ito__ytos = (-var_chaste_interface__Ito__ytos + var_Ito__ytos_inf) / var_Ito__tys; // 1 / ms + const double var_Ito__ytof_inf = var_Ito__ytos_inf; // dimensionless + const double d_dt_chaste_interface_var_Ito__ytof = (-var_chaste_interface__Ito__ytof + var_Ito__ytof_inf) / var_Ito__tyf; // 1 / ms + const double var_cell__wca = 8; // mV_per_uM + const double var_INaCa__xiNaCa = var_INaCa__jNaCa * var_cell__wca; // nA_per_nF + const double var_reversal_potentials__ena = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__xina = pow(var_chaste_interface__INa__xm, 3) * (-var_reversal_potentials__ena + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 11) * var_chaste_interface__INa__xh * var_chaste_interface__INa__xj; // nA_per_nF + const double d_dt_chaste_interface_var_Na__Na_i = -0.001 * (3 * var_INaCa__xiNaCa + 3 * var_INaK__xiNaK + var_INa__xina) * NV_Ith_S(mParameters, 3) / var_cell__wca; // mM / ms + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_cell__V = 0.0; + } + else + { + const double var_IK1__gkix_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 15); // uS_per_nF + const double var_IKr__gkr_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 16); // uS_per_nF + const double var_IKs__gksx = 1 + 0.80000000000000004 / (1 + 0.125 / pow(var_Ca__Ca_i, 3)); // dimensionless + const double var_IKs__gks_total = NV_Ith_S(mParameters, 17) * var_IKs__gksx; // uS_per_nF + const double var_IKr__rg = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_Ito__rs_inf = 1 / (1 + exp(var_Ito__rt2)); // dimensionless + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__Environment__time); // uA_per_cm2 + const double var_cell__i_Stim = 1.0000000000000002 * var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // nA_per_nF + const double var_ICaL__xica = 2 * var_ICaL__jca * var_cell__wca; // nA_per_nF + const double var_reversal_potentials__ek = 1 * log(NV_Ith_S(mParameters, 6) / NV_Ith_S(mParameters, 4)) / var_Environment__FonRT; // mV + const double var_IK1__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__ek)); // per_ms + const double var_IK1__bki = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__ek) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__ek - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_IK1__xkin = var_IK1__aki / (var_IK1__aki + var_IK1__bki); // dimensionless + const double var_IK1__xik1 = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * var_IK1__gkix_total * var_IK1__xkin; // nA_per_nF + const double var_IKr__xikr = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * var_IKr__gkr_total * var_IKr__rg * var_chaste_interface__IKr__xr; // nA_per_nF + const double var_Ito__xitof = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 14) * var_chaste_interface__Ito__xtof * var_chaste_interface__Ito__ytof; // nA_per_nF + const double var_Ito__xitos = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * (0.5 * var_Ito__rs_inf + var_chaste_interface__Ito__ytos) * NV_Ith_S(mParameters, 18) * var_chaste_interface__Ito__xtos; // nA_per_nF + const double var_Ito__xito = var_Ito__xitof + var_Ito__xitos; // nA_per_nF + const double var_reversal_potentials__prNaK = 0.018329999999999999; // dimensionless + const double var_reversal_potentials__eks = 1 * log((NV_Ith_S(mParameters, 7) * var_reversal_potentials__prNaK + NV_Ith_S(mParameters, 6)) / (var_chaste_interface__Na__Na_i * var_reversal_potentials__prNaK + NV_Ith_S(mParameters, 4))) / var_Environment__FonRT; // mV + const double var_IKs__xiks = (-var_reversal_potentials__eks + var_chaste_interface__cell__V) * var_IKs__gks_total * var_chaste_interface__IKs__xs1 * var_chaste_interface__IKs__xs2; // nA_per_nF + const double var_cell__Itotal = -var_ICaL__xica - var_IK1__xik1 - var_IKr__xikr - var_IKs__xiks - var_INa__xina - var_INaCa__xiNaCa - var_INaK__xiNaK - var_Ito__xito - var_cell__i_Stim; // nA_per_nF + d_dt_chaste_interface_var_cell__V = var_cell__Itotal; // mV / ms + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_cell__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca__Ca_i_converted; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_INa__xm; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_INa__xh; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_INa__xj; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_ICaL__c1; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_ICaL__c2; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_ICaL__xi1ca; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_ICaL__xi1ba; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_ICaL__xi2ca; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_ICaL__xi2ba; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_IKr__xr; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_IKs__xs1; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_IKs__xs2; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_Ito__xtos; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_Ito__ytos; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_Ito__xtof; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_Ito__ytof; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_Irel__Ca_JSR; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_Irel__xir; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_Na__Na_i; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_Ca__Ca_dyad; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_Ca__Ca_submem; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Ca__Ca_NSR; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Ca__tropi; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Ca__trops; + } + + N_Vector Dynamicmahajan_shiferaw_2008FromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__Environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: mV; Initial value: -87.169816169406 + double var_chaste_interface__Ca__Ca_i_converted = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 0.000256752008084 + double var_chaste_interface__INa__xm = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.001075453357 + double var_chaste_interface__INa__xh = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.990691306716 + double var_chaste_interface__INa__xj = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.993888937283 + double var_chaste_interface__ICaL__c1 = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 1.8211252e-05 + double var_chaste_interface__ICaL__c2 = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.979322592773 + double var_chaste_interface__ICaL__xi1ca = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.001208153482 + double var_chaste_interface__ICaL__xi1ba = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 3.3616596e-05 + double var_chaste_interface__ICaL__xi2ca = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.004173008466 + double var_chaste_interface__ICaL__xi2ba = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.015242594688 + double var_chaste_interface__IKr__xr = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.007074239331 + double var_chaste_interface__IKs__xs1 = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.048267587131 + double var_chaste_interface__IKs__xs2 = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.105468807033 + double var_chaste_interface__Ito__xtos = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.00364776906 + double var_chaste_interface__Ito__ytos = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.174403618112 + double var_chaste_interface__Ito__xtof = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.003643592594 + double var_chaste_interface__Ito__ytof = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 0.993331326442 + double var_chaste_interface__Irel__Ca_JSR = NV_Ith_S(rY, 18); + // Units: uM; Initial value: 97.505463697266 + double var_chaste_interface__Na__Na_i = NV_Ith_S(rY, 20); + // Units: mM; Initial value: 11.441712311614 + double var_chaste_interface__Ca__Ca_submem = NV_Ith_S(rY, 22); + // Units: uM; Initial value: 0.226941113355 + double var_chaste_interface__Ca__Ca_NSR = NV_Ith_S(rY, 23); + // Units: uM; Initial value: 104.450004990523 + + // Mathematics + const double var_Ca__Ca_i = 1000 * var_chaste_interface__Ca__Ca_i_converted; // uM + const double var_Ca__bcal = 24; // uM + const double var_Ca__bmem = 15; // uM + const double var_Ca__bsar = 42; // uM + const double var_Ca__csm = 0.001 * var_chaste_interface__Ca__Ca_submem; // mM + const double var_Ca__kmem = 0.29999999999999999; // uM + const double var_Ca__ksar = 13; // uM + const double var_Ca__mempxi = var_Ca__bmem * var_Ca__kmem / pow((var_Ca__Ca_i + var_Ca__kmem), 2); // dimensionless + const double var_Ca__mempxs = var_Ca__bmem * var_Ca__kmem / pow((var_chaste_interface__Ca__Ca_submem + var_Ca__kmem), 2); // dimensionless + const double var_Ca__sarpxi = var_Ca__bsar * var_Ca__ksar / pow((var_Ca__Ca_i + var_Ca__ksar), 2); // dimensionless + const double var_Ca__sarpxs = var_Ca__bsar * var_Ca__ksar / pow((var_chaste_interface__Ca__Ca_submem + var_Ca__ksar), 2); // dimensionless + const double var_Ca__srkd = 0.59999999999999998; // uM + const double var_Ca__srmax = 47; // uM + const double var_Ca__spxi = var_Ca__srkd * var_Ca__srmax / pow((var_Ca__Ca_i + var_Ca__srkd), 2); // dimensionless + const double var_Ca__spxs = var_Ca__srkd * var_Ca__srmax / pow((var_chaste_interface__Ca__Ca_submem + var_Ca__srkd), 2); // dimensionless + const double var_Ca__xkcal = 7; // uM + const double var_Ca__bpxi = var_Ca__bcal * var_Ca__xkcal / pow((var_Ca__Ca_i + var_Ca__xkcal), 2); // dimensionless + const double var_Ca__bpxs = var_Ca__bcal * var_Ca__xkcal / pow((var_chaste_interface__Ca__Ca_submem + var_Ca__xkcal), 2); // dimensionless + const double var_Ca__dciib = 1 / (1 + var_Ca__bpxi + var_Ca__mempxi + var_Ca__sarpxi + var_Ca__spxi); // dimensionless + const double var_Ca__dcsib = 1 / (1 + var_Ca__bpxs + var_Ca__mempxs + var_Ca__sarpxs + var_Ca__spxs); // dimensionless + const double var_Environment__FonRT = NV_Ith_S(mParameters, 8) / (NV_Ith_S(mParameters, 9) * NV_Ith_S(mParameters, 20)); // per_mV + const double var_ICaL__gca = 182; // mmole_per_coulomb_cm + const double var_ICaL__po = 1 - var_chaste_interface__ICaL__c1 - var_chaste_interface__ICaL__c2 - var_chaste_interface__ICaL__xi1ba - var_chaste_interface__ICaL__xi1ca - var_chaste_interface__ICaL__xi2ba - var_chaste_interface__ICaL__xi2ca; // dimensionless + const double var_IK1__gkix_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 15); // uS_per_nF + const double var_IKr__gkr_total = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 6)) * NV_Ith_S(mParameters, 16); // uS_per_nF + const double var_IKs__gksx = 1 + 0.80000000000000004 / (1 + 0.125 / pow(var_Ca__Ca_i, 3)); // dimensionless + const double var_IKs__gks_total = NV_Ith_S(mParameters, 17) * var_IKs__gksx; // uS_per_nF + const double var_INaCa__xkdna = 0.29999999999999999; // uM + const double var_INaCa__aloss = 1 / (1 + pow(var_INaCa__xkdna, 3) / pow(var_chaste_interface__Ca__Ca_submem, 3)); // dimensionless + const double var_INaCa__xmcai = 0.0035999999999999999; // mM + const double var_INaCa__xmcao = 1.3; // mM + const double var_INaCa__xmnai = 12.300000000000001; // mM + const double var_INaCa__xmnao = 87.5; // mM + const double var_INaCa__yz2 = pow(var_INaCa__xmnai, 3) * (1 + var_Ca__csm / var_INaCa__xmcai) * NV_Ith_S(mParameters, 5); // mM4 + const double var_Ileak_Iup_Ixfer__cup = 0.5; // uM + const double var_Ileak_Iup_Ixfer__kj = 50; // uM + const double var_Ileak_Iup_Ixfer__jleak = pow(var_chaste_interface__Ca__Ca_NSR, 2) * (-var_Ca__Ca_i + 16.667000000000002 * var_chaste_interface__Ca__Ca_NSR) * NV_Ith_S(mParameters, 0) / (pow(var_chaste_interface__Ca__Ca_NSR, 2) + pow(var_Ileak_Iup_Ixfer__kj, 2)); // uM_per_ms + const double var_Ileak_Iup_Ixfer__jup = pow(var_Ca__Ca_i, 2) * NV_Ith_S(mParameters, 2) / (pow(var_Ca__Ca_i, 2) + pow(var_Ileak_Iup_Ixfer__cup, 2)); // uM_per_ms + const double var_Irel__av = 11.300000000000001; // per_ms + const double var_Irel__ax = 0.35759999999999997; // per_mV + const double var_Irel__cstar = 90; // uM + const double var_Irel__bv = -50 + (1 - var_Irel__av) * var_Irel__cstar; // uM_per_ms + const double var_Irel__Qr0 = (((var_chaste_interface__Irel__Ca_JSR > 50) && (var_chaste_interface__Irel__Ca_JSR < var_Irel__cstar)) ? (-50 + 1 * var_chaste_interface__Irel__Ca_JSR) : ((var_chaste_interface__Irel__Ca_JSR >= var_Irel__cstar) ? (var_chaste_interface__Irel__Ca_JSR * var_Irel__av + var_Irel__bv) : (0))); // uM_per_ms + const double var_Irel__Qr = var_chaste_interface__Ca__Ca_NSR * var_Irel__Qr0 / var_Irel__cstar; // uM_per_ms + const double var_Irel__gbarsr = 26841.799999999999; // dimensionless + const double var_Irel__gdyad = 9000; // mmole_per_coulomb_cm + const double var_INaCa__yz1 = pow(var_INaCa__xmnao, 3) * var_Ca__csm + pow(var_chaste_interface__Na__Na_i, 3) * var_INaCa__xmcao; // mM4 + const double var_INaCa__yz3 = pow(NV_Ith_S(mParameters, 7), 3) * (1 + pow(var_chaste_interface__Na__Na_i, 3) / pow(var_INaCa__xmnai, 3)) * var_INaCa__xmcai; // mM4 + const double var_INaCa__yz4 = pow(NV_Ith_S(mParameters, 7), 3) * var_Ca__csm + pow(var_chaste_interface__Na__Na_i, 3) * NV_Ith_S(mParameters, 5); // mM4 + const double var_INaCa__zw8 = var_INaCa__yz1 + var_INaCa__yz2 + var_INaCa__yz3 + var_INaCa__yz4; // mM4 + const double var_ICaL__za = 2 * var_Environment__FonRT * var_chaste_interface__cell__V; // dimensionless + const double var_ICaL__rxa = ((fabs(var_ICaL__za) < 0.001) ? (2 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + var_Ca__csm * exp(var_ICaL__za)) * NV_Ith_S(mParameters, 8) * NV_Ith_S(mParameters, 10)) : (4 * (-0.34100000000000003 * NV_Ith_S(mParameters, 5) + var_Ca__csm * exp(var_ICaL__za)) * NV_Ith_S(mParameters, 8) * var_Environment__FonRT * NV_Ith_S(mParameters, 10) * var_chaste_interface__cell__V / (-1 + exp(var_ICaL__za)))); // mA_per_cm2 + const double var_ICaL__jca = var_ICaL__gca * var_ICaL__po * var_ICaL__rxa; // uM_per_ms + const double var_IKr__rg = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_INa__ah = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 13) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_ms + const double var_INa__aj = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 13)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 13) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V))) : (0)); // per_ms + const double var_INa__bh = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 13)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 13))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 13) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_ms + const double var_INa__bj = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 13) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 13) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_ms + const double var_INa__tau_h = 1 / (var_INa__ah + var_INa__bh); // ms + const double var_INa__tau_j = 1 / (var_INa__aj + var_INa__bj); // ms + const double var_INaCa__zw3 = pow(var_chaste_interface__Na__Na_i, 3) * NV_Ith_S(mParameters, 5) * exp(0.34999999999999998 * var_Environment__FonRT * var_chaste_interface__cell__V) - pow(NV_Ith_S(mParameters, 7), 3) * var_Ca__csm * exp(-0.65000000000000002 * var_Environment__FonRT * var_chaste_interface__cell__V); // mM4 + const double var_INaCa__zw4 = 1 + 0.20000000000000001 * exp(-0.65000000000000002 * var_Environment__FonRT * var_chaste_interface__cell__V); // dimensionless + const double var_INaCa__jNaCa = var_INaCa__aloss * NV_Ith_S(mParameters, 19) * var_INaCa__zw3 / (var_INaCa__zw4 * var_INaCa__zw8); // uM_per_ms + const double var_Irel__xicap = var_ICaL__po * var_Irel__gdyad * fabs(var_ICaL__rxa); // uM_per_ms + const double var_Irel__xirp = 1 * var_ICaL__po * var_Irel__Qr * var_Irel__gbarsr * fabs(var_ICaL__rxa) * exp(-(30 + var_chaste_interface__cell__V) * var_Irel__ax) / (1 + exp(-(30 + var_chaste_interface__cell__V) * var_Irel__ax)); // uM_per_ms + const double var_Irel__xiryr = (var_Irel__xicap + var_Irel__xirp) * NV_Ith_S(mParameters, 1); // uM_per_ms + const double var_Ito__rt2 = 3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V; // dimensionless + const double var_Ito__rs_inf = 1 / (1 + exp(var_Ito__rt2)); // dimensionless + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__Environment__time); // uA_per_cm2 + const double var_cell__wca = 8; // mV_per_uM + const double var_ICaL__xica = 2 * var_ICaL__jca * var_cell__wca; // nA_per_nF + const double var_ICaL__xica_converted = 0.99999999999999989 * HeartConfig::Instance()->GetCapacitance() * var_ICaL__xica; // uA_per_cm2 + const double var_INaCa__xiNaCa = var_INaCa__jNaCa * var_cell__wca; // nA_per_nF + const double var_INaCa__xiNaCa_converted = 0.99999999999999989 * HeartConfig::Instance()->GetCapacitance() * var_INaCa__xiNaCa; // uA_per_cm2 + const double var_reversal_potentials__ek = 1 * log(NV_Ith_S(mParameters, 6) / NV_Ith_S(mParameters, 4)) / var_Environment__FonRT; // mV + const double var_IK1__aki = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__ek)); // per_ms + const double var_IK1__bki = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__ek) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__ek)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__ek - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_IK1__xkin = var_IK1__aki / (var_IK1__aki + var_IK1__bki); // dimensionless + const double var_IK1__xik1 = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * var_IK1__gkix_total * var_IK1__xkin; // nA_per_nF + const double var_IK1__xik1_converted = 0.99999999999999989 * HeartConfig::Instance()->GetCapacitance() * var_IK1__xik1; // uA_per_cm2 + const double var_IKr__xikr = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * var_IKr__gkr_total * var_IKr__rg * var_chaste_interface__IKr__xr; // nA_per_nF + const double var_IKr__xikr_converted = 0.99999999999999989 * HeartConfig::Instance()->GetCapacitance() * var_IKr__xikr; // uA_per_cm2 + const double var_Ito__xitof = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 14) * var_chaste_interface__Ito__xtof * var_chaste_interface__Ito__ytof; // nA_per_nF + const double var_Ito__xitos = (-var_reversal_potentials__ek + var_chaste_interface__cell__V) * (0.5 * var_Ito__rs_inf + var_chaste_interface__Ito__ytos) * NV_Ith_S(mParameters, 18) * var_chaste_interface__Ito__xtos; // nA_per_nF + const double var_Ito__xito = var_Ito__xitof + var_Ito__xitos; // nA_per_nF + const double var_Ito__xito_converted = 0.99999999999999989 * HeartConfig::Instance()->GetCapacitance() * var_Ito__xito; // uA_per_cm2 + const double var_reversal_potentials__ena = 1 * log(NV_Ith_S(mParameters, 7) / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__xina = pow(var_chaste_interface__INa__xm, 3) * (-var_reversal_potentials__ena + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 11) * var_chaste_interface__INa__xh * var_chaste_interface__INa__xj; // nA_per_nF + const double var_INa__xina_converted = 0.99999999999999989 * HeartConfig::Instance()->GetCapacitance() * var_INa__xina; // uA_per_cm2 + const double var_reversal_potentials__prNaK = 0.018329999999999999; // dimensionless + const double var_reversal_potentials__eks = 1 * log((NV_Ith_S(mParameters, 7) * var_reversal_potentials__prNaK + NV_Ith_S(mParameters, 6)) / (var_chaste_interface__Na__Na_i * var_reversal_potentials__prNaK + NV_Ith_S(mParameters, 4))) / var_Environment__FonRT; // mV + const double var_IKs__xiks = (-var_reversal_potentials__eks + var_chaste_interface__cell__V) * var_IKs__gks_total * var_chaste_interface__IKs__xs1 * var_chaste_interface__IKs__xs2; // nA_per_nF + const double var_IKs__xiks_converted = 0.99999999999999989 * HeartConfig::Instance()->GetCapacitance() * var_IKs__xiks; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(22, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(22); +#endif + NV_Ith_S(dqs, 0) = var_Ileak_Iup_Ixfer__jleak; + NV_Ith_S(dqs, 1) = var_Irel__xiryr; + NV_Ith_S(dqs, 2) = var_Ileak_Iup_Ixfer__jup; + NV_Ith_S(dqs, 3) = var_chaste_interface__Ca__Ca_i_converted; + NV_Ith_S(dqs, 4) = var_Ca__dciib; + NV_Ith_S(dqs, 5) = var_ICaL__xica_converted; + NV_Ith_S(dqs, 6) = var_INa__xina_converted; + NV_Ith_S(dqs, 7) = var_INa__tau_h; + NV_Ith_S(dqs, 8) = var_INa__tau_j; + NV_Ith_S(dqs, 9) = var_IK1__xik1_converted; + NV_Ith_S(dqs, 10) = var_IK1__gkix_total; + NV_Ith_S(dqs, 11) = var_IKr__xikr_converted; + NV_Ith_S(dqs, 12) = var_IKr__gkr_total; + NV_Ith_S(dqs, 13) = var_IKs__xiks_converted; + NV_Ith_S(dqs, 14) = var_IKs__gks_total; + NV_Ith_S(dqs, 15) = var_INaCa__xiNaCa_converted; + NV_Ith_S(dqs, 16) = var_cell__i_Stim_converted; + NV_Ith_S(dqs, 17) = var_Ito__xito_converted; + NV_Ith_S(dqs, 18) = var_reversal_potentials__ek; + NV_Ith_S(dqs, 19) = var_reversal_potentials__ena; + NV_Ith_S(dqs, 20) = var_Ca__dcsib; + NV_Ith_S(dqs, 21) = var_chaste_interface__Environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "MahajanShiferaw2008_units"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "ms"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-87.169816169406); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000256752008084); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001075453357); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.990691306716); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.993888937283); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("ICaL__c1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.8211252e-05); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("ICaL__c2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.979322592773); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("ICaL__xi1ca"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001208153482); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("ICaL__xi1ba"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.3616596e-05); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("ICaL__xi2ca"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.004173008466); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("ICaL__xi2ba"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.015242594688); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("IKr__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.007074239331); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("IKs__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.048267587131); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("IKs__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.105468807033); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("Ito__xtos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00364776906); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("Ito__ytos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.174403618112); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("Ito__xtof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.003643592594); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("Ito__ytof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.993331326442); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("uM"); + this->mInitialConditions.push_back(97.505463697266); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("Irel__xir"); + this->mVariableUnits.push_back("uM_per_ms"); + this->mInitialConditions.push_back(0.006679257264); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(11.441712311614); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("uM"); + this->mInitialConditions.push_back(1.716573130685); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("uM"); + this->mInitialConditions.push_back(0.226941113355); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("NSR_calcium_concentration"); + this->mVariableUnits.push_back("uM"); + this->mInitialConditions.push_back(104.450004990523); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("Ca__tropi"); + this->mVariableUnits.push_back("uM"); + this->mInitialConditions.push_back(22.171689894953); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("Ca__trops"); + this->mVariableUnits.push_back("uM"); + this->mInitialConditions.push_back(19.864701949854); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_ms"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("uM_per_ms"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[8]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mmole"); + + // mParameters[9]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("J_per_moleK"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("cm_per_s"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("uS_per_nF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("mV"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mParameterUnits.push_back("uS_per_nF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("uS_per_nF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("uS_per_nF"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("uS_per_nF"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mParameterUnits.push_back("uS_per_nF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("uM_per_ms"); + + // mParameters[20]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_leak_current"); + this->mDerivedQuantityUnits.push_back("uM_per_ms"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("uM_per_ms"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("SR_uptake_current"); + this->mDerivedQuantityUnits.push_back("uM_per_ms"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_flux_scaling_from_intrinsic_buffers"); + this->mDerivedQuantityUnits.push_back("dimensionless"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("uS_per_nF"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("uS_per_nF"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("uS_per_nF"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("sodium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("mV"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("submembrane_space_calcium_flux_scaling_from_intrinsic_buffers"); + this->mDerivedQuantityUnits.push_back("dimensionless"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("ms"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicmahajan_shiferaw_2008FromCellMLCvode) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicmahajan_shiferaw_2008FromCellMLCvode(pSolver, pStimulus); + } + +} +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp new file mode 100644 index 00000000..d5e6f25c --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp @@ -0,0 +1,1468 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: aslanidi_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NumericCvodeOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_aslanidi_Purkinje_model_2009.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + +#include "ModelFactory.hpp" + +AbstractCardiacCellWithModifiers* Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt(p_solver, p_stimulus); +} + +bool Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::registered = ModelFactory::Register("dynamic_aslanidi_Purkinje_model_2009", "NumericCvodeOpt", (ModelFactory::TCreateMethod)Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::CreateMethod); + +class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<35; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[35]; + + // Lookup tables + double (*_lookup_table_0)[35]; + int _lookup_table_0_num_misshit_piecewise[35] = {0}; + +}; + +std::shared_ptr Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 1; // millisecond + const double var_chaste_interface__membrane__stim_period = 800; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCellWithModifiers( + pOdeSolver, + 30, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + // These will get initialised to DummyModifiers in the base class method. + this->AddModifier("JSR_calcium_concentration", + mp_JSR_calcium_concentration_modifier); + this->AddModifier("SR_leak_current_max", + mp_SR_leak_current_max_modifier); + this->AddModifier("SR_release_current", + mp_SR_release_current_modifier); + this->AddModifier("SR_release_current_max", + mp_SR_release_current_max_modifier); + this->AddModifier("SR_uptake_current_max", + mp_SR_uptake_current_max_modifier); + this->AddModifier("concentration_clamp_onoff", + mp_concentration_clamp_onoff_modifier); + this->AddModifier("cytosolic_calcium_concentration", + mp_cytosolic_calcium_concentration_modifier); + this->AddModifier("cytosolic_potassium_concentration", + mp_cytosolic_potassium_concentration_modifier); + this->AddModifier("cytosolic_sodium_concentration", + mp_cytosolic_sodium_concentration_modifier); + this->AddModifier("dyadic_space_calcium_concentration", + mp_dyadic_space_calcium_concentration_modifier); + this->AddModifier("extracellular_calcium_concentration", + mp_extracellular_calcium_concentration_modifier); + this->AddModifier("extracellular_potassium_concentration", + mp_extracellular_potassium_concentration_modifier); + this->AddModifier("extracellular_sodium_concentration", + mp_extracellular_sodium_concentration_modifier); + this->AddModifier("membrane_L_type_calcium_current", + mp_i_Ca_L__i_Ca_L_modifier); + this->AddModifier("membrane_L_type_calcium_current_conductance", + mp_membrane_L_type_calcium_current_conductance_modifier); + this->AddModifier("membrane_L_type_calcium_current_d_gate", + mp_membrane_L_type_calcium_current_d_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate", + mp_membrane_L_type_calcium_current_f2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate_tau", + mp_membrane_L_type_calcium_current_f2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate", + mp_membrane_L_type_calcium_current_fCa2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate_tau", + mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate", + mp_membrane_L_type_calcium_current_fCa_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate_tau", + mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate", + mp_membrane_L_type_calcium_current_f_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate_tau", + mp_membrane_L_type_calcium_current_f_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current", + mp_i_Na__i_Na_modifier); + this->AddModifier("membrane_fast_sodium_current_conductance", + mp_membrane_fast_sodium_current_conductance_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate", + mp_membrane_fast_sodium_current_h_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate_tau", + mp_membrane_fast_sodium_current_h_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate", + mp_membrane_fast_sodium_current_j_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate_tau", + mp_membrane_fast_sodium_current_j_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_m_gate", + mp_membrane_fast_sodium_current_m_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_reduced_inactivation", + mp_membrane_fast_sodium_current_reduced_inactivation_modifier); + this->AddModifier("membrane_fast_sodium_current_shift_inactivation", + mp_membrane_fast_sodium_current_shift_inactivation_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current", + mp_i_K1__i_K1_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current_conductance", + mp_membrane_inward_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current", + mp_i_Kr__i_Kr_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current_conductance", + mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current", + mp_i_Ks__i_Ks_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current_conductance", + mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current", + mp_i_NaCa__i_NaCa_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current_conductance", + mp_membrane_sodium_calcium_exchanger_current_conductance_modifier); + this->AddModifier("membrane_transient_outward_current", + mp_i_to_1__i_to_1_modifier); + this->AddModifier("membrane_transient_outward_current_conductance", + mp_membrane_transient_outward_current_conductance_modifier); + this->AddModifier("membrane_voltage", + mp_membrane_voltage_modifier); + NV_Ith_S(this->mParameters, 0) = 0.0043750000000000004; // (var_q_leak__q_leak_max) [millimolar_per_millisecond] + NV_Ith_S(this->mParameters, 1) = 3000; // (var_q_rel__g_rel_max) [per_millisecond] + NV_Ith_S(this->mParameters, 2) = 0.0043750000000000004; // (var_q_up__q_up_max) [millimolar_per_millisecond] + NV_Ith_S(this->mParameters, 3) = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 1.8; // (var_model_parameters__Ca_o) [millimolar] + NV_Ith_S(this->mParameters, 5) = 5.4000000000000004; // (var_model_parameters__K_o) [millimolar] + NV_Ith_S(this->mParameters, 6) = 140; // (var_model_parameters__Na_o) [millimolar] + NV_Ith_S(this->mParameters, 7) = 0.3392328; // (var_i_Ca_L__g_Ca_L) [dimensionless] + NV_Ith_S(this->mParameters, 8) = 8; // (var_i_Na__g_Na) [milliS_per_microF] + NV_Ith_S(this->mParameters, 9) = 0; // (var_i_Na__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 10) = 0; // (var_i_Na__shift_INa_inact) [millivolt] + NV_Ith_S(this->mParameters, 11) = 0.25; // (var_i_K1__g_K1_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 12) = 0.040008488000000002; // (var_i_Kr__g_Kr_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 13) = 0.052581329000000003; // (var_i_Ks__g_Ks_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 14) = 4.5; // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + NV_Ith_S(this->mParameters, 15) = 0.14135944; // (var_i_to_1__g_to_1) [milliS_per_microF] + } + + Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::~Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt() + { + } + + AbstractLookupTableCollection* Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::GetLookupTableCollection() + { + return Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance(); + } + + void Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 30; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = NV_Ith_S(rY, 19); + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = NV_Ith_S(rY, 20); + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = NV_Ith_S(rY, 21); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_r__Ca_r = NV_Ith_S(rY, 27); + // Units: millimolar; Initial value: 0.00022418117117903934 + + // Lookup table indexing + const bool _oob_0 = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_equilibrium_potentials__E_K = 26.712338705498265 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_equilibrium_potentials__E_Na = 26.712338705498265 * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_membrane__i_tot = 0.0077250000000000001 * var_chaste_interface__membrane__V + 0.0060102762087371094 * log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i) - 0.0025000000000000001 * var_equilibrium_potentials__E_Na - 0.0050000000000000001 * var_equilibrium_potentials__E_K + (0.0040000000000000001 + 0.4389381125701739 * sqrt(NV_Ith_S(mParameters, 5)) * NV_Ith_S(mParameters, 11) / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + 0.0027599999999999999 * _lt_0_row[0] * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + 0.057500000000000002 * var_chaste_interface__Ca_i__Ca_i / (0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i) + 0.13 * (-50 + var_chaste_interface__membrane__V) * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g + 0.037374999999999999 * pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__i_Na_L_h_L_gate__h_L + 0.0028824983370007683 * _lt_0_row[2] * (-0.34100000000000003 * NV_Ith_S(mParameters, 4) + 1 * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V + _lt_0_row[5] * (-1.5 * pow(NV_Ith_S(mParameters, 6), 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + 0.40000000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 14) * NV_Ith_S(mParameters, 4) * _lt_0_row[4]) / ((1 + 6.9444444444444451e-9 / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (1004882.8125 * var_chaste_interface__Ca_i__Ca_i + 1.3 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 4) + 1.5 * pow(NV_Ith_S(mParameters, 6), 3) * var_chaste_interface__Ca_i__Ca_i + 0.0035999999999999999 * pow(NV_Ith_S(mParameters, 6), 3) * (1 + 0.081300813008130079 * var_chaste_interface__intracellular_ion_concentrations__Na_i) + 1860.8670000000004 * (1 + 416.66666666666669 * var_chaste_interface__Ca_i__Ca_i) * NV_Ith_S(mParameters, 4))) + pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * NV_Ith_S(mParameters, 8) + (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * NV_Ith_S(mParameters, 15) * var_chaste_interface__i_to_1_a_gate__a + 0.61875000000000002 * NV_Ith_S(mParameters, 5) / ((1 + 100 / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (1.5 + NV_Ith_S(mParameters, 5)) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 6))) * _lt_0_row[6])) + 0.028896009762002683 * _lt_0_row[9] * (_lt_0_row[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V + (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * NV_Ith_S(mParameters, 6) + NV_Ith_S(mParameters, 5)) / (0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 13) * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2 + 0.43033148291193518 * _lt_0_row[10] * sqrt(NV_Ith_S(mParameters, 5)) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 12) * var_chaste_interface__i_Kr_xr_gate__xr + 3.510865186083326 * _lt_0_row[12] * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * NV_Ith_S(mParameters, 4) + 1 * var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) * NV_Ith_S(mParameters, 7) * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f; // microA_per_microF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(NV_Ith_S(rY, 0), var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 1), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(NV_Ith_S(rY, 2), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(NV_Ith_S(rY, 3), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(NV_Ith_S(rY, 4), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(NV_Ith_S(rY, 7), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(NV_Ith_S(rY, 8), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(NV_Ith_S(rY, 9), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(NV_Ith_S(rY, 10), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(NV_Ith_S(rY, 11), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = NV_Ith_S(rY, 19); + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = NV_Ith_S(rY, 20); + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 21), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(rY, 23), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = NV_Ith_S(rY, 24); + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_NSR__Ca_NSR = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 1.2132524695849454 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 26), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 27), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = NV_Ith_S(rY, 28); + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = NV_Ith_S(rY, 29); + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Lookup table indexing + const bool _oob_0 = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_Ca_MK_act__Ca_MK_bound = 0.050000000000000003 * (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) / (1 + 0.14999999999999999 / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_Ca_r__q_diff = 5 * var_chaste_interface__Ca_r__Ca_r - 5 * var_chaste_interface__Ca_i__Ca_i; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap = -0.00068000000000000005 * var_chaste_interface__Ca_MK_act__Ca_MK_trap + 0.050000000000000003 * (var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_bound; // 1 / millisecond + const double var_i_Ca_p__i_Ca_p = 0.057500000000000002 * var_chaste_interface__Ca_i__Ca_i / (0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i); // microA_per_microF + const double d_dt_chaste_interface_var_i_to_2_a_gate__a = 1 / (1 + 0.1502 / var_chaste_interface__Ca_r__Ca_r) - 1 * var_chaste_interface__i_to_2_a_gate__a; // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_d_gate__d = _lt_0_row[14] * (-var_chaste_interface__i_Ca_L_d_gate__d + _lt_0_row[13]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2 = (-var_chaste_interface__i_Ca_L_f2_gate__f2 + _lt_0_row[15]) / (38 + 24.217200000000005 * pow((-1 + 0.053763440860215048 * var_chaste_interface__membrane__V), 2)); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_gate__f = (-var_chaste_interface__i_Ca_L_f_gate__f + _lt_0_row[15]) / (4 + 0.03125 * pow((-1 + 0.40000000000000002 * var_chaste_interface__membrane__V), 2)); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_T_b_gate__b = (-var_chaste_interface__i_Ca_T_b_gate__b + _lt_0_row[16]) * (_lt_0_row[17]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_T_g_gate__g = (-var_chaste_interface__i_Ca_T_g_gate__g + _lt_0_row[18]) * (_lt_0_row[19]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Kr_xr_gate__xr = _lt_0_row[21] * (-var_chaste_interface__i_Kr_xr_gate__xr + _lt_0_row[20]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1 = (-var_chaste_interface__i_Ks_xs1_gate__xs1 + _lt_0_row[22]) * (_lt_0_row[23]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2 = (-var_chaste_interface__i_Ks_xs2_gate__xs2 + _lt_0_row[22]) * (_lt_0_row[24]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L = _lt_0_row[26] * (-var_chaste_interface__i_Na_L_h_L_gate__h_L + _lt_0_row[25]); // 1 / millisecond + const double var_i_Na_L_m_L_gate__alpha_m_L = _lt_0_row[27]; // per_millisecond + const double var_i_Na_L_m_L_gate__beta_m_L = _lt_0_row[28]; // per_millisecond + const double d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L = (-var_chaste_interface__i_Na_L_m_L_gate__m_L + var_i_Na_L_m_L_gate__alpha_m_L / (var_i_Na_L_m_L_gate__alpha_m_L + var_i_Na_L_m_L_gate__beta_m_L)) * (1 * var_i_Na_L_m_L_gate__alpha_m_L + 1 * var_i_Na_L_m_L_gate__beta_m_L); // 1 / millisecond + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_h_gate__h = (1 * var_i_Na_h_gate__alpha_h + 1 * var_i_Na_h_gate__beta_h) * (-var_chaste_interface__i_Na_h_gate__h + 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time)) * var_i_Na_h_gate__alpha_h / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h)); // 1 / millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_j_gate__j = (1 * var_i_Na_j_gate__alpha_j + 1 * var_i_Na_j_gate__beta_j) * (-var_chaste_interface__i_Na_j_gate__j + 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time)) * var_i_Na_j_gate__alpha_j / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j)); // 1 / millisecond + const double var_i_Na_m_gate__alpha_m = _lt_0_row[27]; // per_millisecond + const double var_i_Na_m_gate__beta_m = _lt_0_row[28]; // per_millisecond + const double d_dt_chaste_interface_var_i_Na_m_gate__m = (-var_chaste_interface__i_Na_m_gate__m + var_i_Na_m_gate__alpha_m / (var_i_Na_m_gate__alpha_m + var_i_Na_m_gate__beta_m)) * (1 * var_i_Na_m_gate__alpha_m + 1 * var_i_Na_m_gate__beta_m); // 1 / millisecond + const double var_i_to_1_a_gate__alpha_a = _lt_0_row[29]; // per_millisecond + const double var_i_to_1_a_gate__beta_a = _lt_0_row[30]; // per_millisecond + const double d_dt_chaste_interface_var_i_to_1_a_gate__a = (-var_chaste_interface__i_to_1_a_gate__a + var_i_to_1_a_gate__alpha_a / (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a)) * (1 * var_i_to_1_a_gate__alpha_a + 1 * var_i_to_1_a_gate__beta_a); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i2_gate__i2 = _lt_0_row[32] * (-var_chaste_interface__i_to_1_i2_gate__i2 + _lt_0_row[31]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i_gate__i = _lt_0_row[34] * (-var_chaste_interface__i_to_1_i_gate__i + _lt_0_row[33]); // 1 / millisecond + const double var_equilibrium_potentials__E_Cl = -26.712338705498265 * log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i); // millivolt + const double var_background_currents__i_Cl_b = 0.00022499999999999999 * var_chaste_interface__membrane__V - 0.00022499999999999999 * var_equilibrium_potentials__E_Cl; // microA_per_microF + const double var_equilibrium_potentials__E_K = 26.712338705498265 * log(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_CT_K_Cl__CT_K_Cl = 7.0755999999999996e-6 * (-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K) / (87.825100000000006 - var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K); // millimolar_per_millisecond + const double var_background_currents__i_K_b = 0.0050000000000000001 * var_chaste_interface__membrane__V - 0.0050000000000000001 * var_equilibrium_potentials__E_K; // microA_per_microF + const double var_equilibrium_potentials__E_Na = 26.712338705498265 * log(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_CT_Na_Cl__CT_Na_Cl = 9.8442999999999999e-6 * pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) / (59494197.640692554 + pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4)); // millimolar_per_millisecond + const double var_background_currents__i_Na_b = 0.0025000000000000001 * var_chaste_interface__membrane__V - 0.0025000000000000001 * var_equilibrium_potentials__E_Na; // microA_per_microF + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + 0.4389381125701739 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K_p__i_K_p = 0.0027599999999999999 * _lt_0_row[0] * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(0.43033148291193518 * _lt_0_row[10] * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 12), var_chaste_interface__environment__time) * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) / (0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) + var_chaste_interface__membrane__V) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 13), var_chaste_interface__environment__time) * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc(_lt_0_row[5] * (-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + 0.40000000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 14), var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) * _lt_0_row[4]) / ((1 + 6.9444444444444451e-9 / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (1004882.8125 * var_chaste_interface__Ca_i__Ca_i + 1.3 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + 0.0035999999999999999 * pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time), 3) * (1 + 0.081300813008130079 * var_chaste_interface__intracellular_ion_concentrations__Na_i) + 1860.8670000000004 * (1 + 416.66666666666669 * var_chaste_interface__Ca_i__Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time))), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaK__i_NaK = 0.61875000000000002 * mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time) / ((1 + 100 / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (1.5 + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time))) * _lt_0_row[6])); // microA_per_microF + const double var_i_Na_L__i_Na_L = 0.037374999999999999 * pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__i_Na_L_h_L_gate__h_L; // microA_per_microF + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 15), var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_2__i_to_2 = 0.028896009762002683 * _lt_0_row[9] * (_lt_0_row[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V; // microA_per_microF + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i = (-6.767281717060562e-9 * var_background_currents__i_Cl_b - 6.767281717060562e-9 * var_i_to_2__i_to_2 + var_CT_K_Cl__CT_K_Cl + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(NV_Ith_S(mParameters, 3), var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = (1.3534563434121124e-8 * var_i_NaK__i_NaK - 6.767281717060562e-9 * var_background_currents__i_K_b - 6.767281717060562e-9 * var_i_K1__i_K1 - 6.767281717060562e-9 * var_i_K_p__i_K_p - 6.767281717060562e-9 * var_i_Kr__i_Kr - 6.767281717060562e-9 * var_i_Ks__i_Ks - 6.767281717060562e-9 * var_i_to_1__i_to_1 + var_CT_K_Cl__CT_K_Cl) * mp_concentration_clamp_onoff_modifier->Calc(NV_Ith_S(mParameters, 3), var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = (-2.0301845151181685e-8 * var_i_NaCa__i_NaCa - 2.0301845151181685e-8 * var_i_NaK__i_NaK - 6.767281717060562e-9 * var_background_currents__i_Na_b - 6.767281717060562e-9 * var_i_Na__i_Na - 6.767281717060562e-9 * var_i_Na_L__i_Na_L + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(NV_Ith_S(mParameters, 3), var_chaste_interface__environment__time); // millimolar / millisecond + const double var_background_currents__i_Ca_b = 0.0028824983370007683 * _lt_0_row[2] * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) + 1 * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V; // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = 3.510865186083326 * _lt_0_row[12] * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) + 1 * var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 7), var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2 = (-var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 + 1 / (1 - 100 * var_i_Ca_L__i_Ca_L)) / (125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L))); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca = (0.14999999999999999 - var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca + 0.55000000000000004 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 0.29999999999999999 / (1 - 20 * var_i_Ca_L__i_Ca_L)) / (0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_leak__q_leak = 0.066666666666666666 * var_chaste_interface__Ca_NSR__Ca_NSR * mp_SR_leak_current_max_modifier->Calc(NV_Ith_S(mParameters, 0), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double var_q_rel_ri_gate__Ca_fac = 1 / (1 + exp(3.3333333333333335 + 66.666666666666671 * var_i_Ca_L__i_Ca_L)); // millimolar + const double d_dt_chaste_interface_var_q_rel_ri_gate__ri = (-var_chaste_interface__q_rel_ri_gate__ri + 1 / (1 + exp(-16 + 80 * var_q_rel_ri_gate__Ca_fac + 40000 * var_chaste_interface__Ca_r__Ca_r))) / (3 + (350 - 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)) / (1 + exp(-15 + 5000 * var_chaste_interface__Ca_r__Ca_r + 15 * var_q_rel_ri_gate__Ca_fac)) + 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc(1 * (-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * mp_SR_release_current_max_modifier->Calc(NV_Ith_S(mParameters, 1), var_chaste_interface__environment__time) * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 7), var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_r__Ca_r = 1 * (-var_Ca_r__q_diff + 0.23999999999999996 * var_q_rel__q_rel - 1.1504378919002956e-7 * var_i_Ca_L__i_Ca_L) / (1 + 2.2480000000000002 * var_chaste_interface__Ca_r__Ca_r / pow((0.0086999999999999994 + var_chaste_interface__Ca_r__Ca_r), 2) + 0.094 * var_chaste_interface__Ca_r__Ca_r / pow((0.00087000000000000001 + var_chaste_interface__Ca_r__Ca_r), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_q_rel_ro_gate__ro = -0.33333333333333331 * var_chaste_interface__q_rel_ro_gate__ro + 0.33333333333333331 * pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) * pow(var_i_Ca_L__i_Ca_L, 2) / ((1 + pow(var_i_Ca_L__i_Ca_L, 2)) * (pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) + 1644.6531773416521 * pow((var_chaste_interface__Ca_r__Ca_r / (0.0028 + var_chaste_interface__Ca_r__Ca_r)), 1.8999999999999999))); // 1 / millisecond + const double var_q_tr__q_tr = 0.0083333333333333332 * var_chaste_interface__Ca_NSR__Ca_NSR - 0.0083333333333333332 * var_chaste_interface__Ca_JSR__Ca_JSR; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_JSR__Ca_JSR = (-var_q_rel__q_rel + var_q_tr__q_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__Ca_JSR__Ca_JSR), 2)); // millimolar / millisecond + const double var_q_up__q_up = 0.5 * (1 + 0.75 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)) * var_chaste_interface__Ca_i__Ca_i * mp_SR_uptake_current_max_modifier->Calc(NV_Ith_S(mParameters, 2), var_chaste_interface__environment__time) / (0.00092000000000000003 - 0.00017000000000000001 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act) + var_chaste_interface__Ca_i__Ca_i); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_NSR__Ca_NSR = -var_q_leak__q_leak - 0.086956521739130432 * var_q_tr__q_tr + var_q_up__q_up; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_i__Ca_i = -1 * (3.383640858530281e-9 * var_background_currents__i_Ca_b + 3.383640858530281e-9 * var_i_Ca_p__i_Ca_p + 0.081176470588235281 * var_q_up__q_up - 0.029411764705882353 * var_Ca_r__q_diff - 6.767281717060562e-9 * var_i_NaCa__i_NaCa - 0.081176470588235281 * var_q_leak__q_leak) / (1 + 0.14000000000000001 * var_chaste_interface__Ca_i__Ca_i / pow((0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i), 2) + 0.10000000000000001 * var_chaste_interface__Ca_i__Ca_i / pow((0.0023800000000000002 + var_chaste_interface__Ca_i__Ca_i), 2)); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + d_dt_chaste_interface_var_membrane__V = -var_background_currents__i_Ca_b - var_background_currents__i_Cl_b - var_background_currents__i_K_b - var_background_currents__i_Na_b - var_i_Ca_L__i_Ca_L - var_i_Ca_p__i_Ca_p - var_i_K1__i_K1 - var_i_K_p__i_K_p - var_i_Kr__i_Kr - var_i_Ks__i_Ks - var_i_Na__i_Na - var_i_NaCa__i_NaCa - var_i_NaK__i_NaK - var_i_Na_L__i_Na_L - var_i_to_1__i_to_1 - var_i_to_2__i_to_2 - GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance() - 0.13 * (-50 + var_chaste_interface__membrane__V) * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_i__Ca_i; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_i_Na_m_gate__m; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_i_Na_h_gate__h; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_i_Na_j_gate__j; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_i_Ca_L_d_gate__d; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_i_Ca_L_f_gate__f; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_i_Ca_T_b_gate__b; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_i_Ca_T_g_gate__g; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_i_to_1_a_gate__a; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_i_to_1_i_gate__i; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_i_to_1_i2_gate__i2; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_i_Kr_xr_gate__xr; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_i_to_2_a_gate__a; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Ca_NSR__Ca_NSR; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Ca_JSR__Ca_JSR; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Ca_r__Ca_r; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_q_rel_ri_gate__ri; + NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_q_rel_ro_gate__ro; + } + + N_Vector Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(NV_Ith_S(rY, 0), var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 1), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(NV_Ith_S(rY, 2), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(NV_Ith_S(rY, 3), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(NV_Ith_S(rY, 4), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(NV_Ith_S(rY, 7), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(NV_Ith_S(rY, 8), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(NV_Ith_S(rY, 9), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(NV_Ith_S(rY, 10), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(NV_Ith_S(rY, 11), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_to_1_a_gate__a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = NV_Ith_S(rY, 19); + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 21), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(rY, 23), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = NV_Ith_S(rY, 24); + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 26), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 27), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = NV_Ith_S(rY, 28); + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = NV_Ith_S(rY, 29); + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Lookup table indexing + const bool _oob_0 = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_Ca_MK_act__Ca_MK_0 = 0.050000000000000003; // dimensionless + const double var_Ca_MK_act__km_Ca_MK = 0.14999999999999999; // millimolar + const double var_Ca_MK_act__Ca_MK_bound = (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_0 / (1 + var_Ca_MK_act__km_Ca_MK / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_equilibrium_potentials__r_NaK = 0.018329999999999999; // dimensionless + const double var_i_Ca_L__p_Ca = 0.000243; // cm_per_second + const double var_i_Ca_L_f_Ca_gate__tau_f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier->Calc(0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK), var_chaste_interface__environment__time); // millisecond + const double var_i_Ks__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 13), var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__X_NaCa = 0.40000000000000002; // dimensionless + const double var_i_NaCa__k_sat = 0.27000000000000002; // dimensionless + const double var_i_NaCa__km_Ca_act = 0.000125; // millimolar + const double var_i_NaCa__km_Ca_i = 0.0035999999999999999; // millimolar + const double var_i_NaCa__km_Ca_o = 1.3; // millimolar + const double var_i_NaCa__km_Na_i_1 = 12.300000000000001; // millimolar + const double var_i_NaCa__km_Na_o = 87.5; // millimolar + const double var_i_Ca_L_f2_gate__tau_f2 = mp_membrane_L_type_calcium_current_f2_gate_tau_modifier->Calc(38 + 24.217200000000005 * pow((-1 + 0.053763440860215048 * var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Ca_L_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(4 + 0.03125 * pow((-1 + 0.40000000000000002 * var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Kr__rr_infinity = 1 * _lt_0_row[10]; // dimensionless + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + 1.5 * pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + pow(var_i_NaCa__km_Na_i_1, 3) * (1 + 1.5 * var_chaste_interface__Ca_i__Ca_i / var_i_NaCa__km_Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time); // millimolar4 + const double var_model_parameters__Cm = 1; // microF_per_cm2 + const double var_model_parameters__F = 96485; // coulomb_per_mole + const double var_i_K1__g_K1 = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_Kr__g_Kr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 12), var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__dNaCa_2 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time), 3) * (1 + var_chaste_interface__intracellular_ion_concentrations__Na_i / var_i_NaCa__km_Na_i_1) * var_i_NaCa__km_Ca_i; // millimolar4 + const double var_model_parameters__R = 8314; // joule_per_kilomole_kelvin + const double var_model_parameters__T = 310; // kelvin + const double var_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * log((var_equilibrium_potentials__r_NaK * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) / (var_equilibrium_potentials__r_NaK * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Na = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_model_parameters__F; // millivolt + const double var_i_K1_xK1_gate__alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_K1_xK1_gate__xK1 = var_i_K1_xK1_gate__alpha_xK1 / (var_i_K1_xK1_gate__alpha_xK1 + var_i_K1_xK1_gate__beta_xK1); // dimensionless + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + var_i_K1__g_K1 * var_i_K1_xK1_gate__xK1) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_K1__i_K1; // uA_per_cm2 + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_Kr__g_Kr * var_i_Kr__rr_infinity * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Kr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Kr__i_Kr; // uA_per_cm2 + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((-var_equilibrium_potentials__E_Ks + var_chaste_interface__membrane__V) * var_i_Ks__g_Ks * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__X_NaCa * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 14), var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) * exp(0.34999999999999998 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) / ((1 + var_i_NaCa__k_sat * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + 0.44444444444444442 * pow(var_i_NaCa__km_Ca_act, 2) / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (var_i_NaCa__dNaCa_1 + var_i_NaCa__dNaCa_2)), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaCa__i_NaCa; // uA_per_cm2 + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 15), var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_1__i_to_1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_to_1__i_to_1; // uA_per_cm2 + const double var_model_parameters__gamma_Cai = 1; // dimensionless + const double var_model_parameters__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_i_Ca_L__i_Ca_L_max = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-15 + var_chaste_interface__membrane__V) * (-mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_r__Ca_r * var_model_parameters__gamma_Cai * exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_i_Ca_L__p_Ca / ((-1 + exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 7), var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ca_L__i_Ca_L; // uA_per_cm2 + const double var_i_Ca_L_f_Ca2_gate__tau_f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier->Calc(125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 7), var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)); // dimensionless + const double var_q_rel__g_rel = mp_SR_release_current_max_modifier->Calc(NV_Ith_S(mParameters, 1), var_chaste_interface__environment__time) * var_q_rel__vg; // per_millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * var_q_rel__g_rel * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro, var_chaste_interface__environment__time); // millimolar_per_millisecond + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(16, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(16); +#endif + NV_Ith_S(dqs, 0) = var_q_rel__q_rel; + NV_Ith_S(dqs, 1) = var_i_Ca_L__i_Ca_L_converted; + NV_Ith_S(dqs, 2) = var_i_Ca_L_f2_gate__tau_f2; + NV_Ith_S(dqs, 3) = var_i_Ca_L_f_Ca2_gate__tau_f_Ca2; + NV_Ith_S(dqs, 4) = var_i_Ca_L_f_Ca_gate__tau_f_Ca; + NV_Ith_S(dqs, 5) = var_i_Ca_L_f_gate__tau_f; + NV_Ith_S(dqs, 6) = var_i_Na__i_Na_converted; + NV_Ith_S(dqs, 7) = var_i_Na_h_gate__tau_h; + NV_Ith_S(dqs, 8) = var_i_Na_j_gate__tau_j; + NV_Ith_S(dqs, 9) = var_i_K1__i_K1_converted; + NV_Ith_S(dqs, 10) = var_i_Kr__i_Kr_converted; + NV_Ith_S(dqs, 11) = var_i_Ks__i_Ks_converted; + NV_Ith_S(dqs, 12) = var_i_NaCa__i_NaCa_converted; + NV_Ith_S(dqs, 13) = var_membrane__i_stim_converted; + NV_Ith_S(dqs, 14) = var_i_to_1__i_to_1_converted; + NV_Ith_S(dqs, 15) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "aslanidi_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-83.43812846286808); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022355433459434943); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9786390933308567); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09866447258167589); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("i_Na_L_m_L_gate__m_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("i_Na_L_h_L_gate__h_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8946968372659203); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.322223865147363e-06); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9985607329462358); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8173435436674658); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9610551285529658); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.868690796671854); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("i_Ca_T_b_gate__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0002563937630984438); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("i_Ca_T_g_gate__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9720432601848331); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("i_to_1_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0004238729429342389); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("i_to_1_i_gate__i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9990935802459496); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("i_to_1_i2_gate__i2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9777368439681764); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("i_Kr_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.07084939408222911); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("i_Ks_xs1_gate__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0011737654433043125); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("i_Ks_xs2_gate__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001179442867470093); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("i_to_2_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0014909437525000811); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.927155552932733); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("intracellular_ion_concentrations__Cl_i"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(18.904682470140408); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(141.9670801746057); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("Ca_MK_act__Ca_MK_trap"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.789168284782809e-06); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("Ca_NSR__Ca_NSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.2132524695849454); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.1433050636518596); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022418117117903934); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("q_rel_ri_gate__ri"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7802870066567904); + + // NV_Ith_S(rY, 29): + this->mVariableNames.push_back("q_rel_ro_gate__ro"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.2785734760674763e-09); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt(pSolver, pStimulus); + } + +} +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp new file mode 100644 index 00000000..9678b6e3 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp @@ -0,0 +1,1468 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: aslanidi_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NumericCvodeOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_aslanidi_Purkinje_model_2009.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + +#include "ModelFactory.hpp" + +AbstractCardiacCellWithModifiers* Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt(p_solver, p_stimulus); +} + +bool Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::registered = ModelFactory::Register("dynamic_aslanidi_Purkinje_model_2009", "NumericCvodeOpt", (ModelFactory::TCreateMethod)Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::CreateMethod); + +class Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<35; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[35]; + + // Lookup tables + double (*_lookup_table_0)[35]; + int _lookup_table_0_num_misshit_piecewise[35] = {0}; + +}; + +std::shared_ptr Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 1; // millisecond + const double var_chaste_interface__membrane__stim_period = 800; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCellWithModifiers( + pOdeSolver, + 30, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + // These will get initialised to DummyModifiers in the base class method. + this->AddModifier("JSR_calcium_concentration", + mp_JSR_calcium_concentration_modifier); + this->AddModifier("SR_leak_current_max", + mp_SR_leak_current_max_modifier); + this->AddModifier("SR_release_current", + mp_SR_release_current_modifier); + this->AddModifier("SR_release_current_max", + mp_SR_release_current_max_modifier); + this->AddModifier("SR_uptake_current_max", + mp_SR_uptake_current_max_modifier); + this->AddModifier("concentration_clamp_onoff", + mp_concentration_clamp_onoff_modifier); + this->AddModifier("cytosolic_calcium_concentration", + mp_cytosolic_calcium_concentration_modifier); + this->AddModifier("cytosolic_potassium_concentration", + mp_cytosolic_potassium_concentration_modifier); + this->AddModifier("cytosolic_sodium_concentration", + mp_cytosolic_sodium_concentration_modifier); + this->AddModifier("dyadic_space_calcium_concentration", + mp_dyadic_space_calcium_concentration_modifier); + this->AddModifier("extracellular_calcium_concentration", + mp_extracellular_calcium_concentration_modifier); + this->AddModifier("extracellular_potassium_concentration", + mp_extracellular_potassium_concentration_modifier); + this->AddModifier("extracellular_sodium_concentration", + mp_extracellular_sodium_concentration_modifier); + this->AddModifier("membrane_L_type_calcium_current", + mp_i_Ca_L__i_Ca_L_modifier); + this->AddModifier("membrane_L_type_calcium_current_conductance", + mp_membrane_L_type_calcium_current_conductance_modifier); + this->AddModifier("membrane_L_type_calcium_current_d_gate", + mp_membrane_L_type_calcium_current_d_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate", + mp_membrane_L_type_calcium_current_f2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate_tau", + mp_membrane_L_type_calcium_current_f2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate", + mp_membrane_L_type_calcium_current_fCa2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate_tau", + mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate", + mp_membrane_L_type_calcium_current_fCa_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate_tau", + mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate", + mp_membrane_L_type_calcium_current_f_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate_tau", + mp_membrane_L_type_calcium_current_f_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current", + mp_i_Na__i_Na_modifier); + this->AddModifier("membrane_fast_sodium_current_conductance", + mp_membrane_fast_sodium_current_conductance_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate", + mp_membrane_fast_sodium_current_h_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate_tau", + mp_membrane_fast_sodium_current_h_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate", + mp_membrane_fast_sodium_current_j_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate_tau", + mp_membrane_fast_sodium_current_j_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_m_gate", + mp_membrane_fast_sodium_current_m_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_reduced_inactivation", + mp_membrane_fast_sodium_current_reduced_inactivation_modifier); + this->AddModifier("membrane_fast_sodium_current_shift_inactivation", + mp_membrane_fast_sodium_current_shift_inactivation_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current", + mp_i_K1__i_K1_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current_conductance", + mp_membrane_inward_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current", + mp_i_Kr__i_Kr_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current_conductance", + mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current", + mp_i_Ks__i_Ks_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current_conductance", + mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current", + mp_i_NaCa__i_NaCa_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current_conductance", + mp_membrane_sodium_calcium_exchanger_current_conductance_modifier); + this->AddModifier("membrane_transient_outward_current", + mp_i_to_1__i_to_1_modifier); + this->AddModifier("membrane_transient_outward_current_conductance", + mp_membrane_transient_outward_current_conductance_modifier); + this->AddModifier("membrane_voltage", + mp_membrane_voltage_modifier); + NV_Ith_S(this->mParameters, 0) = 0.0043750000000000004; // (var_q_leak__q_leak_max) [millimolar_per_millisecond] + NV_Ith_S(this->mParameters, 1) = 3000; // (var_q_rel__g_rel_max) [per_millisecond] + NV_Ith_S(this->mParameters, 2) = 0.0043750000000000004; // (var_q_up__q_up_max) [millimolar_per_millisecond] + NV_Ith_S(this->mParameters, 3) = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 1.8; // (var_model_parameters__Ca_o) [millimolar] + NV_Ith_S(this->mParameters, 5) = 5.4000000000000004; // (var_model_parameters__K_o) [millimolar] + NV_Ith_S(this->mParameters, 6) = 140; // (var_model_parameters__Na_o) [millimolar] + NV_Ith_S(this->mParameters, 7) = 0.3392328; // (var_i_Ca_L__g_Ca_L) [dimensionless] + NV_Ith_S(this->mParameters, 8) = 8; // (var_i_Na__g_Na) [milliS_per_microF] + NV_Ith_S(this->mParameters, 9) = 0; // (var_i_Na__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 10) = 0; // (var_i_Na__shift_INa_inact) [millivolt] + NV_Ith_S(this->mParameters, 11) = 0.25; // (var_i_K1__g_K1_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 12) = 0.040008488000000002; // (var_i_Kr__g_Kr_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 13) = 0.052581329000000003; // (var_i_Ks__g_Ks_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 14) = 4.5; // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + NV_Ith_S(this->mParameters, 15) = 0.14135944; // (var_i_to_1__g_to_1) [milliS_per_microF] + } + + Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::~Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt() + { + } + + AbstractLookupTableCollection* Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::GetLookupTableCollection() + { + return Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance(); + } + + void Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 30; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = NV_Ith_S(rY, 19); + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = NV_Ith_S(rY, 20); + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = NV_Ith_S(rY, 21); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_r__Ca_r = NV_Ith_S(rY, 27); + // Units: millimolar; Initial value: 0.00022418117117903934 + + // Lookup table indexing + const bool _oob_0 = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_equilibrium_potentials__E_K = 26.712338705498265 * log(NV_Ith_S(mParameters, 5) / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_equilibrium_potentials__E_Na = 26.712338705498265 * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_membrane__i_tot = 0.0077250000000000001 * var_chaste_interface__membrane__V + 0.0060102762087371094 * log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i) - 0.0025000000000000001 * var_equilibrium_potentials__E_Na - 0.0050000000000000001 * var_equilibrium_potentials__E_K + (0.0040000000000000001 + 0.4389381125701739 * sqrt(NV_Ith_S(mParameters, 5)) * NV_Ith_S(mParameters, 11) / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + 0.0027599999999999999 * _lt_0_row[0] * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + 0.057500000000000002 * var_chaste_interface__Ca_i__Ca_i / (0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i) + 0.13 * (-50 + var_chaste_interface__membrane__V) * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g + 0.037374999999999999 * pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__i_Na_L_h_L_gate__h_L + 0.0028824983370007683 * _lt_0_row[2] * (-0.34100000000000003 * NV_Ith_S(mParameters, 4) + 1 * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V + _lt_0_row[5] * (-1.5 * pow(NV_Ith_S(mParameters, 6), 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + 0.40000000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 14) * NV_Ith_S(mParameters, 4) * _lt_0_row[4]) / ((1 + 6.9444444444444451e-9 / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (1004882.8125 * var_chaste_interface__Ca_i__Ca_i + 1.3 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * NV_Ith_S(mParameters, 4) + 1.5 * pow(NV_Ith_S(mParameters, 6), 3) * var_chaste_interface__Ca_i__Ca_i + 0.0035999999999999999 * pow(NV_Ith_S(mParameters, 6), 3) * (1 + 0.081300813008130079 * var_chaste_interface__intracellular_ion_concentrations__Na_i) + 1860.8670000000004 * (1 + 416.66666666666669 * var_chaste_interface__Ca_i__Ca_i) * NV_Ith_S(mParameters, 4))) + pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * NV_Ith_S(mParameters, 8) + (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * NV_Ith_S(mParameters, 15) * var_chaste_interface__i_to_1_a_gate__a + 0.61875000000000002 * NV_Ith_S(mParameters, 5) / ((1 + 100 / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (1.5 + NV_Ith_S(mParameters, 5)) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 6))) * _lt_0_row[6])) + 0.028896009762002683 * _lt_0_row[9] * (_lt_0_row[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V + (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * NV_Ith_S(mParameters, 6) + NV_Ith_S(mParameters, 5)) / (0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 13) * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2 + 0.43033148291193518 * _lt_0_row[10] * sqrt(NV_Ith_S(mParameters, 5)) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * NV_Ith_S(mParameters, 12) * var_chaste_interface__i_Kr_xr_gate__xr + 3.510865186083326 * _lt_0_row[12] * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * NV_Ith_S(mParameters, 4) + 1 * var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) * NV_Ith_S(mParameters, 7) * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f; // microA_per_microF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(NV_Ith_S(rY, 0), var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 1), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(NV_Ith_S(rY, 2), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(NV_Ith_S(rY, 3), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(NV_Ith_S(rY, 4), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(NV_Ith_S(rY, 7), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(NV_Ith_S(rY, 8), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(NV_Ith_S(rY, 9), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(NV_Ith_S(rY, 10), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(NV_Ith_S(rY, 11), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = NV_Ith_S(rY, 19); + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = NV_Ith_S(rY, 20); + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 21), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(rY, 23), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = NV_Ith_S(rY, 24); + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_NSR__Ca_NSR = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 1.2132524695849454 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 26), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 27), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = NV_Ith_S(rY, 28); + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = NV_Ith_S(rY, 29); + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Lookup table indexing + const bool _oob_0 = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_Ca_MK_act__Ca_MK_bound = 0.050000000000000003 * (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) / (1 + 0.14999999999999999 / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_Ca_r__q_diff = 5 * var_chaste_interface__Ca_r__Ca_r - 5 * var_chaste_interface__Ca_i__Ca_i; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap = -0.00068000000000000005 * var_chaste_interface__Ca_MK_act__Ca_MK_trap + 0.050000000000000003 * (var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_bound; // 1 / millisecond + const double var_i_Ca_p__i_Ca_p = 0.057500000000000002 * var_chaste_interface__Ca_i__Ca_i / (0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i); // microA_per_microF + const double d_dt_chaste_interface_var_i_to_2_a_gate__a = 1 / (1 + 0.1502 / var_chaste_interface__Ca_r__Ca_r) - 1 * var_chaste_interface__i_to_2_a_gate__a; // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_d_gate__d = _lt_0_row[14] * (-var_chaste_interface__i_Ca_L_d_gate__d + _lt_0_row[13]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2 = (-var_chaste_interface__i_Ca_L_f2_gate__f2 + _lt_0_row[15]) / (38 + 0.070000000000000007 * pow((-18.600000000000001 + var_chaste_interface__membrane__V), 2)); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_gate__f = (-var_chaste_interface__i_Ca_L_f_gate__f + _lt_0_row[15]) / (4 + 0.0050000000000000001 * pow((-2.5 + var_chaste_interface__membrane__V), 2)); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_T_b_gate__b = (-var_chaste_interface__i_Ca_T_b_gate__b + _lt_0_row[16]) * (_lt_0_row[17]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_T_g_gate__g = (-var_chaste_interface__i_Ca_T_g_gate__g + _lt_0_row[18]) * (_lt_0_row[19]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Kr_xr_gate__xr = _lt_0_row[21] * (-var_chaste_interface__i_Kr_xr_gate__xr + _lt_0_row[20]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1 = (-var_chaste_interface__i_Ks_xs1_gate__xs1 + _lt_0_row[22]) * (_lt_0_row[23]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2 = (-var_chaste_interface__i_Ks_xs2_gate__xs2 + _lt_0_row[22]) * (_lt_0_row[24]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L = _lt_0_row[26] * (-var_chaste_interface__i_Na_L_h_L_gate__h_L + _lt_0_row[25]); // 1 / millisecond + const double var_i_Na_L_m_L_gate__alpha_m_L = _lt_0_row[27]; // per_millisecond + const double var_i_Na_L_m_L_gate__beta_m_L = _lt_0_row[28]; // per_millisecond + const double d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L = (-var_chaste_interface__i_Na_L_m_L_gate__m_L + var_i_Na_L_m_L_gate__alpha_m_L / (var_i_Na_L_m_L_gate__alpha_m_L + var_i_Na_L_m_L_gate__beta_m_L)) * (1 * var_i_Na_L_m_L_gate__alpha_m_L + 1 * var_i_Na_L_m_L_gate__beta_m_L); // 1 / millisecond + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_h_gate__h = (1 * var_i_Na_h_gate__alpha_h + 1 * var_i_Na_h_gate__beta_h) * (-var_chaste_interface__i_Na_h_gate__h + 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time)) * var_i_Na_h_gate__alpha_h / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h)); // 1 / millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_j_gate__j = (1 * var_i_Na_j_gate__alpha_j + 1 * var_i_Na_j_gate__beta_j) * (-var_chaste_interface__i_Na_j_gate__j + 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(NV_Ith_S(mParameters, 9), var_chaste_interface__environment__time)) * var_i_Na_j_gate__alpha_j / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j)); // 1 / millisecond + const double var_i_Na_m_gate__alpha_m = _lt_0_row[27]; // per_millisecond + const double var_i_Na_m_gate__beta_m = _lt_0_row[28]; // per_millisecond + const double d_dt_chaste_interface_var_i_Na_m_gate__m = (-var_chaste_interface__i_Na_m_gate__m + var_i_Na_m_gate__alpha_m / (var_i_Na_m_gate__alpha_m + var_i_Na_m_gate__beta_m)) * (1 * var_i_Na_m_gate__alpha_m + 1 * var_i_Na_m_gate__beta_m); // 1 / millisecond + const double var_i_to_1_a_gate__alpha_a = _lt_0_row[29]; // per_millisecond + const double var_i_to_1_a_gate__beta_a = _lt_0_row[30]; // per_millisecond + const double d_dt_chaste_interface_var_i_to_1_a_gate__a = (-var_chaste_interface__i_to_1_a_gate__a + var_i_to_1_a_gate__alpha_a / (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a)) * (1 * var_i_to_1_a_gate__alpha_a + 1 * var_i_to_1_a_gate__beta_a); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i2_gate__i2 = _lt_0_row[32] * (-var_chaste_interface__i_to_1_i2_gate__i2 + _lt_0_row[31]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i_gate__i = _lt_0_row[34] * (-var_chaste_interface__i_to_1_i_gate__i + _lt_0_row[33]); // 1 / millisecond + const double var_equilibrium_potentials__E_Cl = -26.712338705498265 * log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i); // millivolt + const double var_background_currents__i_Cl_b = 0.00022499999999999999 * var_chaste_interface__membrane__V - 0.00022499999999999999 * var_equilibrium_potentials__E_Cl; // microA_per_microF + const double var_equilibrium_potentials__E_K = 26.712338705498265 * log(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_CT_K_Cl__CT_K_Cl = 7.0755999999999996e-6 * (-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K) / (87.825100000000006 - var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K); // millimolar_per_millisecond + const double var_background_currents__i_K_b = 0.0050000000000000001 * var_chaste_interface__membrane__V - 0.0050000000000000001 * var_equilibrium_potentials__E_K; // microA_per_microF + const double var_equilibrium_potentials__E_Na = 26.712338705498265 * log(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_CT_Na_Cl__CT_Na_Cl = 9.8442999999999999e-6 * pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) / (59494197.640692554 + pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4)); // millimolar_per_millisecond + const double var_background_currents__i_Na_b = 0.0025000000000000001 * var_chaste_interface__membrane__V - 0.0025000000000000001 * var_equilibrium_potentials__E_Na; // microA_per_microF + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + 0.4389381125701739 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time) / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K_p__i_K_p = 0.0027599999999999999 * _lt_0_row[0] * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(0.43033148291193518 * _lt_0_row[10] * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 12), var_chaste_interface__environment__time) * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) / (0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) + var_chaste_interface__membrane__V) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 13), var_chaste_interface__environment__time) * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc(_lt_0_row[5] * (-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + 0.40000000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 14), var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) * _lt_0_row[4]) / ((1 + 6.9444444444444451e-9 / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (1004882.8125 * var_chaste_interface__Ca_i__Ca_i + 1.3 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + 0.0035999999999999999 * pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time), 3) * (1 + 0.081300813008130079 * var_chaste_interface__intracellular_ion_concentrations__Na_i) + 1860.8670000000004 * (1 + 416.66666666666669 * var_chaste_interface__Ca_i__Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time))), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaK__i_NaK = 0.61875000000000002 * mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time) / ((1 + 100 / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (1.5 + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time))) * _lt_0_row[6])); // microA_per_microF + const double var_i_Na_L__i_Na_L = 0.037374999999999999 * pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__i_Na_L_h_L_gate__h_L; // microA_per_microF + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 15), var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_2__i_to_2 = 0.028896009762002683 * _lt_0_row[9] * (_lt_0_row[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V; // microA_per_microF + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i = (-6.767281717060562e-9 * var_background_currents__i_Cl_b - 6.767281717060562e-9 * var_i_to_2__i_to_2 + var_CT_K_Cl__CT_K_Cl + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(NV_Ith_S(mParameters, 3), var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = (1.3534563434121124e-8 * var_i_NaK__i_NaK - 6.767281717060562e-9 * var_background_currents__i_K_b - 6.767281717060562e-9 * var_i_K1__i_K1 - 6.767281717060562e-9 * var_i_K_p__i_K_p - 6.767281717060562e-9 * var_i_Kr__i_Kr - 6.767281717060562e-9 * var_i_Ks__i_Ks - 6.767281717060562e-9 * var_i_to_1__i_to_1 + var_CT_K_Cl__CT_K_Cl) * mp_concentration_clamp_onoff_modifier->Calc(NV_Ith_S(mParameters, 3), var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = (-2.0301845151181685e-8 * var_i_NaCa__i_NaCa - 2.0301845151181685e-8 * var_i_NaK__i_NaK - 6.767281717060562e-9 * var_background_currents__i_Na_b - 6.767281717060562e-9 * var_i_Na__i_Na - 6.767281717060562e-9 * var_i_Na_L__i_Na_L + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(NV_Ith_S(mParameters, 3), var_chaste_interface__environment__time); // millimolar / millisecond + const double var_background_currents__i_Ca_b = 0.0028824983370007683 * _lt_0_row[2] * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) + 1 * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V; // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = 3.510865186083326 * _lt_0_row[12] * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) + 1 * var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 7), var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2 = (-var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 + 1 / (1 - 100 * var_i_Ca_L__i_Ca_L)) / (125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L))); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca = (0.14999999999999999 - var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca + 0.55000000000000004 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 0.29999999999999999 / (1 - 20 * var_i_Ca_L__i_Ca_L)) / (0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_leak__q_leak = 0.066666666666666666 * var_chaste_interface__Ca_NSR__Ca_NSR * mp_SR_leak_current_max_modifier->Calc(NV_Ith_S(mParameters, 0), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double var_q_rel_ri_gate__Ca_fac = 1 / (1 + exp(3.3333333333333335 + 66.666666666666671 * var_i_Ca_L__i_Ca_L)); // millimolar + const double d_dt_chaste_interface_var_q_rel_ri_gate__ri = (-var_chaste_interface__q_rel_ri_gate__ri + 1 / (1 + exp(-16 + 80 * var_q_rel_ri_gate__Ca_fac + 40000 * var_chaste_interface__Ca_r__Ca_r))) / (3 + (350 - 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)) / (1 + exp(-15 + 5000 * var_chaste_interface__Ca_r__Ca_r + 15 * var_q_rel_ri_gate__Ca_fac)) + 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc(1 * (-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * mp_SR_release_current_max_modifier->Calc(NV_Ith_S(mParameters, 1), var_chaste_interface__environment__time) * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 7), var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_r__Ca_r = 1 * (-var_Ca_r__q_diff + 0.23999999999999996 * var_q_rel__q_rel - 1.1504378919002956e-7 * var_i_Ca_L__i_Ca_L) / (1 + 2.2480000000000002 * var_chaste_interface__Ca_r__Ca_r / pow((0.0086999999999999994 + var_chaste_interface__Ca_r__Ca_r), 2) + 0.094 * var_chaste_interface__Ca_r__Ca_r / pow((0.00087000000000000001 + var_chaste_interface__Ca_r__Ca_r), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_q_rel_ro_gate__ro = -0.33333333333333331 * var_chaste_interface__q_rel_ro_gate__ro + 0.33333333333333331 * pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) * pow(var_i_Ca_L__i_Ca_L, 2) / ((1 + pow(var_i_Ca_L__i_Ca_L, 2)) * (pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) + 1644.6531773416521 * pow((var_chaste_interface__Ca_r__Ca_r / (0.0028 + var_chaste_interface__Ca_r__Ca_r)), 1.8999999999999999))); // 1 / millisecond + const double var_q_tr__q_tr = 0.0083333333333333332 * var_chaste_interface__Ca_NSR__Ca_NSR - 0.0083333333333333332 * var_chaste_interface__Ca_JSR__Ca_JSR; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_JSR__Ca_JSR = (-var_q_rel__q_rel + var_q_tr__q_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__Ca_JSR__Ca_JSR), 2)); // millimolar / millisecond + const double var_q_up__q_up = 0.5 * (1 + 0.75 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)) * var_chaste_interface__Ca_i__Ca_i * mp_SR_uptake_current_max_modifier->Calc(NV_Ith_S(mParameters, 2), var_chaste_interface__environment__time) / (0.00092000000000000003 - 0.00017000000000000001 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act) + var_chaste_interface__Ca_i__Ca_i); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_NSR__Ca_NSR = -var_q_leak__q_leak - 0.086956521739130432 * var_q_tr__q_tr + var_q_up__q_up; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_i__Ca_i = -1 * (3.383640858530281e-9 * var_background_currents__i_Ca_b + 3.383640858530281e-9 * var_i_Ca_p__i_Ca_p + 0.081176470588235281 * var_q_up__q_up - 0.029411764705882353 * var_Ca_r__q_diff - 6.767281717060562e-9 * var_i_NaCa__i_NaCa - 0.081176470588235281 * var_q_leak__q_leak) / (1 + 0.14000000000000001 * var_chaste_interface__Ca_i__Ca_i / pow((0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i), 2) + 0.10000000000000001 * var_chaste_interface__Ca_i__Ca_i / pow((0.0023800000000000002 + var_chaste_interface__Ca_i__Ca_i), 2)); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + d_dt_chaste_interface_var_membrane__V = -var_background_currents__i_Ca_b - var_background_currents__i_Cl_b - var_background_currents__i_K_b - var_background_currents__i_Na_b - var_i_Ca_L__i_Ca_L - var_i_Ca_p__i_Ca_p - var_i_K1__i_K1 - var_i_K_p__i_K_p - var_i_Kr__i_Kr - var_i_Ks__i_Ks - var_i_Na__i_Na - var_i_NaCa__i_NaCa - var_i_NaK__i_NaK - var_i_Na_L__i_Na_L - var_i_to_1__i_to_1 - var_i_to_2__i_to_2 - GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance() - 0.13 * (-50 + var_chaste_interface__membrane__V) * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_membrane__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_i__Ca_i; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_i_Na_m_gate__m; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_i_Na_h_gate__h; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_i_Na_j_gate__j; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_i_Ca_L_d_gate__d; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_i_Ca_L_f_gate__f; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_i_Ca_T_b_gate__b; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_i_Ca_T_g_gate__g; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_i_to_1_a_gate__a; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_i_to_1_i_gate__i; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_i_to_1_i2_gate__i2; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_i_Kr_xr_gate__xr; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_i_to_2_a_gate__a; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Ca_NSR__Ca_NSR; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Ca_JSR__Ca_JSR; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Ca_r__Ca_r; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_q_rel_ri_gate__ri; + NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_q_rel_ro_gate__ro; + } + + N_Vector Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(NV_Ith_S(rY, 0), var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 1), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(NV_Ith_S(rY, 2), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(NV_Ith_S(rY, 3), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(NV_Ith_S(rY, 4), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(NV_Ith_S(rY, 7), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(NV_Ith_S(rY, 8), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(NV_Ith_S(rY, 9), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(NV_Ith_S(rY, 10), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(NV_Ith_S(rY, 11), var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_to_1_a_gate__a = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = NV_Ith_S(rY, 19); + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(NV_Ith_S(rY, 21), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(NV_Ith_S(rY, 23), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = NV_Ith_S(rY, 24); + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 26), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(NV_Ith_S(rY, 27), var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = NV_Ith_S(rY, 28); + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = NV_Ith_S(rY, 29); + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Lookup table indexing + const bool _oob_0 = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_Ca_MK_act__Ca_MK_0 = 0.050000000000000003; // dimensionless + const double var_Ca_MK_act__km_Ca_MK = 0.14999999999999999; // millimolar + const double var_Ca_MK_act__Ca_MK_bound = (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_0 / (1 + var_Ca_MK_act__km_Ca_MK / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_equilibrium_potentials__r_NaK = 0.018329999999999999; // dimensionless + const double var_i_Ca_L__p_Ca = 0.000243; // cm_per_second + const double var_i_Ca_L_f_Ca_gate__tau_f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier->Calc(0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK), var_chaste_interface__environment__time); // millisecond + const double var_i_Ks__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 13), var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__X_NaCa = 0.40000000000000002; // dimensionless + const double var_i_NaCa__k_sat = 0.27000000000000002; // dimensionless + const double var_i_NaCa__km_Ca_act = 0.000125; // millimolar + const double var_i_NaCa__km_Ca_i = 0.0035999999999999999; // millimolar + const double var_i_NaCa__km_Ca_o = 1.3; // millimolar + const double var_i_NaCa__km_Na_i_1 = 12.300000000000001; // millimolar + const double var_i_NaCa__km_Na_o = 87.5; // millimolar + const double var_i_Ca_L_f2_gate__tau_f2 = mp_membrane_L_type_calcium_current_f2_gate_tau_modifier->Calc(38 + 0.070000000000000007 * pow((-18.600000000000001 + var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Ca_L_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(4 + 0.0050000000000000001 * pow((-2.5 + var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Kr__rr_infinity = 1 * _lt_0_row[10]; // dimensionless + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(NV_Ith_S(mParameters, 10), var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + 1.5 * pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + pow(var_i_NaCa__km_Na_i_1, 3) * (1 + 1.5 * var_chaste_interface__Ca_i__Ca_i / var_i_NaCa__km_Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time); // millimolar4 + const double var_model_parameters__Cm = 1; // microF_per_cm2 + const double var_model_parameters__F = 96485; // coulomb_per_mole + const double var_i_K1__g_K1 = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 11), var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_Kr__g_Kr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 12), var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__dNaCa_2 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time), 3) * (1 + var_chaste_interface__intracellular_ion_concentrations__Na_i / var_i_NaCa__km_Na_i_1) * var_i_NaCa__km_Ca_i; // millimolar4 + const double var_model_parameters__R = 8314; // joule_per_kilomole_kelvin + const double var_model_parameters__T = 310; // kelvin + const double var_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * log((var_equilibrium_potentials__r_NaK * mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(NV_Ith_S(mParameters, 5), var_chaste_interface__environment__time)) / (var_equilibrium_potentials__r_NaK * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Na = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_model_parameters__F; // millivolt + const double var_i_K1_xK1_gate__alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_K1_xK1_gate__xK1 = var_i_K1_xK1_gate__alpha_xK1 / (var_i_K1_xK1_gate__alpha_xK1 + var_i_K1_xK1_gate__beta_xK1); // dimensionless + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + var_i_K1__g_K1 * var_i_K1_xK1_gate__xK1) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_K1__i_K1; // uA_per_cm2 + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_Kr__g_Kr * var_i_Kr__rr_infinity * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Kr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Kr__i_Kr; // uA_per_cm2 + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((-var_equilibrium_potentials__E_Ks + var_chaste_interface__membrane__V) * var_i_Ks__g_Ks * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 8), var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(NV_Ith_S(mParameters, 6), var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__X_NaCa * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 14), var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) * exp(0.34999999999999998 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) / ((1 + var_i_NaCa__k_sat * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + 0.44444444444444442 * pow(var_i_NaCa__km_Ca_act, 2) / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (var_i_NaCa__dNaCa_1 + var_i_NaCa__dNaCa_2)), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaCa__i_NaCa; // uA_per_cm2 + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 15), var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_1__i_to_1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_to_1__i_to_1; // uA_per_cm2 + const double var_model_parameters__gamma_Cai = 1; // dimensionless + const double var_model_parameters__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_i_Ca_L__i_Ca_L_max = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-15 + var_chaste_interface__membrane__V) * (-mp_extracellular_calcium_concentration_modifier->Calc(NV_Ith_S(mParameters, 4), var_chaste_interface__environment__time) * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_r__Ca_r * var_model_parameters__gamma_Cai * exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_i_Ca_L__p_Ca / ((-1 + exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 7), var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ca_L__i_Ca_L; // uA_per_cm2 + const double var_i_Ca_L_f_Ca2_gate__tau_f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier->Calc(125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(NV_Ith_S(mParameters, 7), var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)); // dimensionless + const double var_q_rel__g_rel = mp_SR_release_current_max_modifier->Calc(NV_Ith_S(mParameters, 1), var_chaste_interface__environment__time) * var_q_rel__vg; // per_millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * var_q_rel__g_rel * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro, var_chaste_interface__environment__time); // millimolar_per_millisecond + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(16, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(16); +#endif + NV_Ith_S(dqs, 0) = var_q_rel__q_rel; + NV_Ith_S(dqs, 1) = var_i_Ca_L__i_Ca_L_converted; + NV_Ith_S(dqs, 2) = var_i_Ca_L_f2_gate__tau_f2; + NV_Ith_S(dqs, 3) = var_i_Ca_L_f_Ca2_gate__tau_f_Ca2; + NV_Ith_S(dqs, 4) = var_i_Ca_L_f_Ca_gate__tau_f_Ca; + NV_Ith_S(dqs, 5) = var_i_Ca_L_f_gate__tau_f; + NV_Ith_S(dqs, 6) = var_i_Na__i_Na_converted; + NV_Ith_S(dqs, 7) = var_i_Na_h_gate__tau_h; + NV_Ith_S(dqs, 8) = var_i_Na_j_gate__tau_j; + NV_Ith_S(dqs, 9) = var_i_K1__i_K1_converted; + NV_Ith_S(dqs, 10) = var_i_Kr__i_Kr_converted; + NV_Ith_S(dqs, 11) = var_i_Ks__i_Ks_converted; + NV_Ith_S(dqs, 12) = var_i_NaCa__i_NaCa_converted; + NV_Ith_S(dqs, 13) = var_membrane__i_stim_converted; + NV_Ith_S(dqs, 14) = var_i_to_1__i_to_1_converted; + NV_Ith_S(dqs, 15) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "aslanidi_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-83.43812846286808); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022355433459434943); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9786390933308567); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09866447258167589); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("i_Na_L_m_L_gate__m_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("i_Na_L_h_L_gate__h_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8946968372659203); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.322223865147363e-06); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9985607329462358); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8173435436674658); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9610551285529658); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.868690796671854); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("i_Ca_T_b_gate__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0002563937630984438); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("i_Ca_T_g_gate__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9720432601848331); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("i_to_1_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0004238729429342389); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("i_to_1_i_gate__i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9990935802459496); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("i_to_1_i2_gate__i2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9777368439681764); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("i_Kr_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.07084939408222911); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("i_Ks_xs1_gate__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0011737654433043125); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("i_Ks_xs2_gate__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001179442867470093); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("i_to_2_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0014909437525000811); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.927155552932733); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("intracellular_ion_concentrations__Cl_i"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(18.904682470140408); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(141.9670801746057); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("Ca_MK_act__Ca_MK_trap"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.789168284782809e-06); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("Ca_NSR__Ca_NSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.2132524695849454); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.1433050636518596); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022418117117903934); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("q_rel_ri_gate__ri"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7802870066567904); + + // NV_Ith_S(rY, 29): + this->mVariableNames.push_back("q_rel_ro_gate__ro"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.2785734760674763e-09); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicaslanidi_Purkinje_model_2009FromCellMLCvodeOpt(pSolver, pStimulus); + } + +} +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004--sympy_1_11.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004--sympy_1_11.cpp new file mode 100644 index 00000000..fe8830b8 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004--sympy_1_11.cpp @@ -0,0 +1,2151 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: shannon_wang_puglisi_weber_bers_2004_model_updated +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: AnalyticCvode) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_Shannon2004.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + +#include "ModelFactory.hpp" + +AbstractCvodeCell* Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode(p_solver, p_stimulus); +} + +bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = ModelFactory::Register("dynamic_Shannon2004", "AnalyticCvode", (ModelFactory::TCreateMethod)Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::CreateMethod); + + + + boost::shared_ptr Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 5; // millisecond + const double var_chaste_interface__cell__stim_period = 1000; // millisecond + const double var_chaste_interface__cell__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 45, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + mUseAnalyticJacobian = true; + mHasAnalyticJacobian = true; + + NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_Jleak_SR__KSRleak) [per_millisecond] + NV_Ith_S(this->mParameters, 1) = 25; // (var_Jrel_SR__ks) [per_millisecond] + NV_Ith_S(this->mParameters, 2) = 0.00028600000000000001; // (var_Jpump_SR__V_max) [millimolar_per_millisecond] + NV_Ith_S(this->mParameters, 3) = 1; // (var_Na_buffer__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 15; // (var_model_parameters__Cli) [millimolar] + NV_Ith_S(this->mParameters, 5) = 135; // (var_model_parameters__Ki) [millimolar] + NV_Ith_S(this->mParameters, 6) = 1.8; // (var_model_parameters__Cao) [millimolar] + NV_Ith_S(this->mParameters, 7) = 150; // (var_model_parameters__Clo) [millimolar] + NV_Ith_S(this->mParameters, 8) = 5.4000000000000004; // (var_model_parameters__Ko) [millimolar] + NV_Ith_S(this->mParameters, 9) = 140; // (var_model_parameters__Nao) [millimolar] + NV_Ith_S(this->mParameters, 10) = 96486.699999999997; // (var_model_parameters__F) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 11) = 8314.2999999999993; // (var_model_parameters__R) [joule_per_kilomole_kelvin] + NV_Ith_S(this->mParameters, 12) = 0.00054000000000000001; // (var_ICaL__PCa) [litre_per_farad_millisecond] + NV_Ith_S(this->mParameters, 13) = 0.0089999999999999993; // (var_IClb__G_ClBk) [milliS_per_microF] + NV_Ith_S(this->mParameters, 14) = 16; // (var_INa__G_INa) [milliS_per_microF] + NV_Ith_S(this->mParameters, 15) = 0; // (var_INa__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 16) = 0; // (var_INa__shift_INa_inact) [millivolt] + NV_Ith_S(this->mParameters, 17) = 0.02; // (var_Itof__G_tof) [milliS_per_microF] + NV_Ith_S(this->mParameters, 18) = 0.90000000000000002; // (var_IK1__G_K1_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 19) = 0.029999999999999999; // (var_IKr__G_IKr_const) [milliS_per_microF] + NV_Ith_S(this->mParameters, 20) = 0.070000000000000007; // (var_IKs__G_Ks_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 21) = 0.059999999999999998; // (var_Itos__G_tos) [milliS_per_microF] + NV_Ith_S(this->mParameters, 22) = 9; // (var_INaCa__V_max) [microA_per_microF] + NV_Ith_S(this->mParameters, 23) = 310; // (var_model_parameters__T) [kelvin] + } + + Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::~Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode() + { + } + + + void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 45; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_ICl_Ca__i_Cl_Ca + HeartConfig::Instance()->GetCapacitance() * var_INaK__i_NaK + var_ICaL__i_CaL_converted + var_ICab__i_Cab_converted + var_ICap__i_Cap_converted + var_IClb__i_Clb_converted + var_IK1__i_K1_converted + var_IKr__i_Kr_converted + var_IKs__i_Ks_converted + var_INa__i_Na_converted + var_INaCa__i_NaCa_converted + var_INab__i_Nab_converted + var_Itof__i_tof_converted + var_Itos__i_tos_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__Ca_buffer__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 8.6504944644883e-05 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__R = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.890917121306535 + double var_chaste_interface__Jrel_SR__I = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 8.71752603681652e-08 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Na_SL_buf = NV_Ith_S(rY, 21); + // Units: millimolar; Initial value: 0.77606800956492 + double var_chaste_interface__Na_buffer__Na_jct_buf = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 3.55668431730337 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + double var_chaste_interface__Ca_buffer__Ca_SLB_SL = NV_Ith_S(rY, 27); + // Units: millimolar; Initial value: 0.00973710481246467 + double var_chaste_interface__Ca_buffer__Ca_SLB_jct = NV_Ith_S(rY, 28); + // Units: millimolar; Initial value: 0.00774564218017916 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_SL = NV_Ith_S(rY, 29); + // Units: millimolar; Initial value: 0.113168405274355 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_jct = NV_Ith_S(rY, 30); + // Units: millimolar; Initial value: 0.0772568134367606 + double var_chaste_interface__Ca_buffer__Ca_Calsequestrin = NV_Ith_S(rY, 31); + // Units: millimolar; Initial value: 1.18828527890062 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC = NV_Ith_S(rY, 32); + // Units: millimolar; Initial value: 0.00886665040283094 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = NV_Ith_S(rY, 33); + // Units: millimolar; Initial value: 0.117873278193472 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = NV_Ith_S(rY, 34); + // Units: millimolar; Initial value: 0.0103906683506505 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin = NV_Ith_S(rY, 35); + // Units: millimolar; Initial value: 0.000293073957804278 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin = NV_Ith_S(rY, 36); + // Units: millimolar; Initial value: 0.00195899238146509 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin = NV_Ith_S(rY, 37); + // Units: millimolar; Initial value: 0.137523520981802 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB = NV_Ith_S(rY, 38); + // Units: millimolar; Initial value: 0.00215728901718264 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = NV_Ith_S(rY, 39); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = NV_Ith_S(rY, 40); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = NV_Ith_S(rY, 41); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = NV_Ith_S(rY, 42); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = NV_Ith_S(rY, 43); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = NV_Ith_S(rY, 44); + // Units: millimolar; Initial value: 0.0 + + // Mathematics + double d_dt_chaste_interface_var_cell__V; + const double var_Ca_buffer__Bmax_Calsequestrin = 0.14000000000000001; // millimolar + const double var_Ca_buffer__Bmax_SLB_SL = 0.037400000000000003; // millimolar + const double var_Ca_buffer__Bmax_SLB_jct = 0.0045999999999999999; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_SL = 0.0134; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_jct = 0.00165; // millimolar + const double var_Ca_buffer__koff_Calsequestrin = 65; // per_millisecond + const double var_Ca_buffer__koff_SLB = 1.3; // per_millisecond + const double var_Ca_buffer__koff_SLHigh = 0.029999999999999999; // per_millisecond + const double var_Ca_buffer__kon_Calsequestrin = 100; // per_millimolar_per_millisecond + const double var_Ca_buffer__kon_SL = 100; // per_millimolar_per_millisecond + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL) * var_chaste_interface__Ca_buffer__Ca_SL; // 1 / millisecond + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct) * var_chaste_interface__Ca_buffer__Ca_jct; // 1 / millisecond + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jleak_SR__j_leak_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * NV_Ith_S(mParameters, 0); // millimolar_per_millisecond + const double var_Jpump_SR__H = 1.7869999999999999; // dimensionless + const double var_Jpump_SR__Kmf = 0.00024600000000000002; // millimolar + const double var_Jpump_SR__Kmr = 1.7; // millimolar + const double var_Jpump_SR__Q10_SRCaP = 2.6000000000000001; // dimensionless + const double var_Jrel_SR__EC50_SR = 0.45000000000000001; // millimolar + const double var_Jrel_SR__HSR = 2.5; // dimensionless + const double var_Jrel_SR__Max_SR = 15; // dimensionless + const double var_Jrel_SR__Min_SR = 1; // dimensionless + const double var_Jrel_SR__RI = 1 - var_chaste_interface__Jrel_SR__I - var_chaste_interface__Jrel_SR__O - var_chaste_interface__Jrel_SR__R; // dimensionless + const double var_Jrel_SR__kCaSR = -(-var_Jrel_SR__Min_SR + var_Jrel_SR__Max_SR) / (1 + pow((var_Jrel_SR__EC50_SR / var_chaste_interface__Ca_buffer__Ca_SR), var_Jrel_SR__HSR)) + var_Jrel_SR__Max_SR; // dimensionless + const double var_Jrel_SR__kiCa = 0.5; // per_millimolar_per_millisecond + const double var_Jrel_SR__kiSRCa = var_Jrel_SR__kCaSR * var_Jrel_SR__kiCa; // per_millimolar_per_millisecond + const double var_Jrel_SR__kim = 0.0050000000000000001; // per_millisecond + const double var_Jrel_SR__koCa = 10; // per_millimolar2_per_millisecond + const double var_Jrel_SR__koSRCa = var_Jrel_SR__koCa / var_Jrel_SR__kCaSR; // per_millimolar2_per_millisecond + const double var_Jrel_SR__kom = 0.059999999999999998; // per_millisecond + const double d_dt_chaste_interface_var_Jrel_SR__I = -var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_Jrel_SR__RI * var_Jrel_SR__koSRCa + var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__O = var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__R = var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + var_Jrel_SR__RI * var_Jrel_SR__kim - pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double var_Jrel_SR__j_rel_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); // millimolar_per_millisecond + const double var_Na_buffer__Bmax_SL = 1.6499999999999999; // millimolar + const double var_Na_buffer__Bmax_jct = 7.5609999999999999; // millimolar + const double var_Na_buffer__koff = 0.001; // per_millisecond + const double var_Na_buffer__kon = 0.0001; // per_millimolar_per_millisecond + const double var_Na_buffer__dNa_SL_buf = -var_chaste_interface__Na_buffer__Na_SL_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_SL_buf + var_Na_buffer__Bmax_SL) * var_chaste_interface__Na_buffer__Na_SL * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_SL_buf = var_Na_buffer__dNa_SL_buf; // millimolar / millisecond + const double var_Na_buffer__dNa_jct_buf = -var_chaste_interface__Na_buffer__Na_jct_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_jct_buf + var_Na_buffer__Bmax_jct) * var_chaste_interface__Na_buffer__Na_jct * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_jct_buf = var_Na_buffer__dNa_jct_buf; // millimolar / millisecond + const double var_ICaL_d_gate__d_infinity = 1 / (1 + exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_d_gate__tau_d = 28.571428571428569 * (1 - exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)) * var_ICaL_d_gate__d_infinity / (14.5 + var_chaste_interface__cell__V); // millisecond + const double d_dt_chaste_interface_var_ICaL_d_gate__d = (-var_chaste_interface__ICaL_d_gate__d + var_ICaL_d_gate__d_infinity) / var_ICaL_d_gate__tau_d; // 1 / millisecond + const double var_ICaL_f_gate__f_infinity = 1 / (1 + exp(9.7388888888888889 + 0.27777777777777779 * var_chaste_interface__cell__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2))); // millisecond + const double d_dt_chaste_interface_var_ICaL_f_gate__f = (-var_chaste_interface__ICaL_f_gate__f + var_ICaL_f_gate__f_infinity) / var_ICaL_f_gate__tau_f; // 1 / millisecond + const double var_IKr_Xr_gate__Xr_infinity = 1 / (1 + exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr_Xr_gate__tau_Xr = 1 / (0.00060999999999999997 * (10 + var_chaste_interface__cell__V) / (-1 + exp(1.45 + 0.14499999999999999 * var_chaste_interface__cell__V)) + 0.0013799999999999999 * (7 + var_chaste_interface__cell__V) / (1 - exp(-0.86099999999999999 - 0.123 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKr_Xr_gate__Xr = (-var_chaste_interface__IKr_Xr_gate__Xr + var_IKr_Xr_gate__Xr_infinity) / var_IKr_Xr_gate__tau_Xr; // 1 / millisecond + const double var_IKs_Xs_gate__Xs_infinity = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKs_Xs_gate__tau_Xs = 1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKs_Xs_gate__Xs = (-var_chaste_interface__IKs_Xs_gate__Xs + var_IKs_Xs_gate__Xs_infinity) / var_IKs_Xs_gate__tau_Xs; // 1 / millisecond + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 16) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 16)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 16))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 16) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__h_infinity = 0.01 * NV_Ith_S(mParameters, 15) + (1 - 0.01 * NV_Ith_S(mParameters, 15)) * var_INa_h_gate__alpha_h / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // dimensionless + const double var_INa_h_gate__tau_h = 1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // millisecond + const double d_dt_chaste_interface_var_INa_h_gate__h = (-var_chaste_interface__INa_h_gate__h + var_INa_h_gate__h_infinity) / var_INa_h_gate__tau_h; // 1 / millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 16)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 16) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 16)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 16) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 16) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 16) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 16) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__j_infinity = 0.01 * NV_Ith_S(mParameters, 15) + (1 - 0.01 * NV_Ith_S(mParameters, 15)) * var_INa_j_gate__alpha_j / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // dimensionless + const double var_INa_j_gate__tau_j = 1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // millisecond + const double d_dt_chaste_interface_var_INa_j_gate__j = (-var_chaste_interface__INa_j_gate__j + var_INa_j_gate__j_infinity) / var_INa_j_gate__tau_j; // 1 / millisecond + const double var_INa_m_gate__alpha_m = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__cell__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_millisecond + const double var_INa_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__cell__V); // per_millisecond + const double var_INa_m_gate__m_infinity = var_INa_m_gate__alpha_m / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // dimensionless + const double var_INa_m_gate__tau_m = 1 / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // millisecond + const double d_dt_chaste_interface_var_INa_m_gate__m = (-var_chaste_interface__INa_m_gate__m + var_INa_m_gate__m_infinity) / var_INa_m_gate__tau_m; // 1 / millisecond + const double var_Itof_X_gate__X_tof_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_X_gate__tau_X_tof = 1.5 + 3.5 * exp(-0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2)); // millisecond + const double d_dt_chaste_interface_var_Itof_X_gate__X_tof = (-var_chaste_interface__Itof_X_gate__X_tof + var_Itof_X_gate__X_tof_infinity) / var_Itof_X_gate__tau_X_tof; // 1 / millisecond + const double var_Itof_Y_gate__Y_tof_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_Y_gate__tau_Y_tof = 20 + 20 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itof_Y_gate__Y_tof = (-var_chaste_interface__Itof_Y_gate__Y_tof + var_Itof_Y_gate__Y_tof_infinity) / var_Itof_Y_gate__tau_Y_tof; // 1 / millisecond + const double var_Itos_R_gate__R_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_R_gate__tau_R_tos = 220 + 2800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_R_gate__R_tos = (-var_chaste_interface__Itos_R_gate__R_tos + var_Itos_R_gate__R_tos_infinity) / var_Itos_R_gate__tau_R_tos; // 1 / millisecond + const double var_Itos_X_gate__X_tos_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_X_gate__tau_X_tos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_X_gate__X_tos = (-var_chaste_interface__Itos_X_gate__X_tos + var_Itos_X_gate__X_tos_infinity) / var_Itos_X_gate__tau_X_tos; // 1 / millisecond + const double var_Itos_Y_gate__Y_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_Y_gate__tau_Y_tos = 30 + 3000 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_Y_gate__Y_tos = (-var_chaste_interface__Itos_Y_gate__Y_tos + var_Itos_Y_gate__Y_tos_infinity) / var_Itos_Y_gate__tau_Y_tos; // 1 / millisecond + const double var_cytosolic_Ca_buffer__Bmax_Calmodulin = 0.024; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_SRB = 0.017100000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC = 0.070000000000000007; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__koff_Calmodulin = 0.23799999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Ca = 0.00046000000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Mg = 5.7000000000000003e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_SRB = 0.059999999999999998; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC = 0.019599999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca = 3.1999999999999999e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg = 0.0033300000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__kon_Calmodulin = 34; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Calmodulin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin * var_cytosolic_Ca_buffer__koff_Calmodulin + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin + var_cytosolic_Ca_buffer__Bmax_Calmodulin) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Calmodulin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin = var_cytosolic_Ca_buffer__dCa_Calmodulin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Ca = 13.800000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Myosin_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin = var_cytosolic_Ca_buffer__dCa_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Mg = 0.015699999999999999; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__kon_SRB = 100; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_SRB = -var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB * var_cytosolic_Ca_buffer__koff_SRB + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB + var_cytosolic_Ca_buffer__Bmax_SRB) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_SRB; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB = var_cytosolic_Ca_buffer__dCa_SRB; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC = 32.700000000000003; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC * var_cytosolic_Ca_buffer__koff_TroponinC + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC + var_cytosolic_Ca_buffer__Bmax_TroponinC) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC = var_cytosolic_Ca_buffer__dCa_TroponinC; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca = 2.3700000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg = 0.0030000000000000001; // per_millimolar_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 = 0.11; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 = 0.059999999999999998; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3 = 100; // per_millimolar2_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Indo1 = 100; // per_millimolar2_per_millisecond + const double var_ion_diffusion__J_Ca_SL_cytosol = 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Ca_SL - 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Cai; // millimole_per_millisecond + const double var_ion_diffusion__J_Ca_jct_SL = 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_jct - 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_SL; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_SL_cytosol = 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Na_SL - 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Nai; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_jct_SL = 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_jct - 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_SL; // millimole_per_millisecond + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_model_parameters__Mgi = 1; // millimolar + const double var_cytosolic_Ca_buffer__dMg_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Mg) * var_cytosolic_Ca_buffer__kon_Myosin_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin = var_cytosolic_Ca_buffer__dMg_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg) * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound = var_cytosolic_Ca_buffer__dCa_Calmodulin + var_cytosolic_Ca_buffer__dCa_Myosin + var_cytosolic_Ca_buffer__dCa_SRB + var_cytosolic_Ca_buffer__dCa_TroponinC + var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__dMg_Myosin + var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar_per_millisecond + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_Jpump_SR__Q_SRCaP = pow(var_Jpump_SR__Q10_SRCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Vol_Cell = 3.1415926540000002e-15 * pow(var_model_parameters__cell_radius, 2) * var_model_parameters__cell_length; // liter + const double var_model_parameters__Vol_SL = 0.02 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_SR = 0.035000000000000003 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_cytosol = 0.65000000000000002 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_SL = -var_chaste_interface__Ca_buffer__Ca_SLB_SL * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_SL + var_Ca_buffer__Bmax_SLB_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_SL = -var_chaste_interface__Ca_buffer__Ca_SLHigh_SL * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_SL + var_Ca_buffer__Bmax_SLHigh_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SL_tot_bound = var_Ca_buffer__dCa_SLB_SL + var_Ca_buffer__dCa_SLHigh_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCalsequestrin = -var_chaste_interface__Ca_buffer__Ca_Calsequestrin * var_Ca_buffer__koff_Calsequestrin + (-var_chaste_interface__Ca_buffer__Ca_Calsequestrin + var_Ca_buffer__Bmax_Calsequestrin * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR) * var_chaste_interface__Ca_buffer__Ca_SR * var_Ca_buffer__kon_Calsequestrin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin = var_Ca_buffer__dCalsequestrin; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL = var_Ca_buffer__dCa_SLB_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL = var_Ca_buffer__dCa_SLHigh_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Na_buffer__Nai = NV_Ith_S(mParameters, 3) * var_ion_diffusion__J_Na_SL_cytosol / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_Jpump_SR__j_pump_SR = (pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) - pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_Jpump_SR__Q_SRCaP * NV_Ith_S(mParameters, 2) * var_model_parameters__Vol_cytosol / ((1 + pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) + pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_model_parameters__Vol_SR); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SR = -var_Ca_buffer__dCalsequestrin - var_Jrel_SR__j_rel_SR - var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR + var_Jpump_SR__j_pump_SR; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Cai = -var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound + var_ion_diffusion__J_Ca_SL_cytosol / var_model_parameters__Vol_cytosol - var_Jpump_SR__j_pump_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_model_parameters__Vol_jct = 0.00051000000000000004 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_jct = -var_chaste_interface__Ca_buffer__Ca_SLB_jct * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLB_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_jct = -var_chaste_interface__Ca_buffer__Ca_SLHigh_jct * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLHigh_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_jct_tot_bound = var_Ca_buffer__dCa_SLB_jct + var_Ca_buffer__dCa_SLHigh_jct; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct = var_Ca_buffer__dCa_SLB_jct; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct = var_Ca_buffer__dCa_SLHigh_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct; // millimolar / millisecond + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_SL_tot = -2 * var_INaCa__i_NaCa_SL + var_ICaL__i_CaL_Ca_SL + var_ICab__i_Cab_SL + var_ICap__i_Cap_SL; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SL = -var_Ca_buffer__dCa_SL_tot_bound + (-var_ion_diffusion__J_Ca_SL_cytosol + var_ion_diffusion__J_Ca_jct_SL) / var_model_parameters__Vol_SL - 0.5 * var_Ca_buffer__i_Ca_SL_tot * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_SL); // millimolar / millisecond + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_jct_tot = -2 * var_INaCa__i_NaCa_jct + var_ICaL__i_CaL_Ca_jct + var_ICab__i_Cab_jct + var_ICap__i_Cap_jct; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_jct = -var_Ca_buffer__dCa_jct_tot_bound - var_ion_diffusion__J_Ca_jct_SL / var_model_parameters__Vol_jct + var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct + var_Jrel_SR__j_rel_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_jct - 0.5 * var_Ca_buffer__i_Ca_jct_tot * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_jct); // millimolar / millisecond + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_SL = (-var_Na_buffer__dNa_SL_buf + (-var_ion_diffusion__J_Na_SL_cytosol + var_ion_diffusion__J_Na_jct_SL) / var_model_parameters__Vol_SL - (3 * var_INaCa__i_NaCa_SL + 3 * var_INaK__i_NaK_SL + var_ICaL__i_CaL_Na_SL + var_INa__i_Na_SL + var_INab__i_Nab_SL) * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_SL)) * NV_Ith_S(mParameters, 3); // millimolar / millisecond + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_jct = (-var_Na_buffer__dNa_jct_buf - var_ion_diffusion__J_Na_jct_SL / var_model_parameters__Vol_jct - (3 * var_INaCa__i_NaCa_jct + 3 * var_INaK__i_NaK_jct + var_ICaL__i_CaL_Na_jct + var_INa__i_Na_jct + var_INab__i_Nab_jct) * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_jct)) * NV_Ith_S(mParameters, 3); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_cell__V = 0.0; + } + else + { + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + d_dt_chaste_interface_var_cell__V = -var_ICaL__i_CaL - var_ICab__i_Cab - var_ICap__i_Cap - var_ICl_Ca__i_Cl_Ca - var_IClb__i_Clb - var_IK1__i_K1 - var_IKr__i_Kr - var_IKs__i_Ks - var_INa__i_Na - var_INaCa__i_NaCa - var_INaK__i_NaK - var_INab__i_Nab - var_Itof__i_tof - var_Itos__i_tos - var_cell__i_Stim; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_cell__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_buffer__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_INa_h_gate__h; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_INa_j_gate__j; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_INa_m_gate__m; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_IKr_Xr_gate__Xr; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_IKs_Xs_gate__Xs; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_Itos_X_gate__X_tos; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_Itos_Y_gate__Y_tos; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_Itos_R_gate__R_tos; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_Itof_X_gate__X_tof; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_Itof_Y_gate__Y_tof; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_ICaL_d_gate__d; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_ICaL_f_gate__f; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_Jrel_SR__R; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_Jrel_SR__I; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_Jrel_SR__O; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_Na_buffer__Na_SL; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_Na_buffer__Na_jct; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_Na_buffer__Na_SL_buf; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_Na_buffer__Na_jct_buf; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Na_buffer__Nai; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Ca_buffer__Ca_SR; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Ca_buffer__Ca_SL; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Ca_buffer__Ca_jct; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct; + NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL; + NV_Ith_S(rDY,30) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct; + NV_Ith_S(rDY,31) = d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin; + NV_Ith_S(rDY,32) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC; + NV_Ith_S(rDY,33) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg; + NV_Ith_S(rDY,34) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg; + NV_Ith_S(rDY,35) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin; + NV_Ith_S(rDY,36) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin; + NV_Ith_S(rDY,37) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin; + NV_Ith_S(rDY,38) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB; + NV_Ith_S(rDY,39) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; + NV_Ith_S(rDY,40) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; + NV_Ith_S(rDY,41) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + NV_Ith_S(rDY,42) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; + NV_Ith_S(rDY,43) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; + NV_Ith_S(rDY,44) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + } + + void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::EvaluateAnalyticJacobian(double var_chaste_interface__environment__time, N_Vector rY, N_Vector rDY, CHASTE_CVODE_DENSE_MATRIX rJacobian, N_Vector rTmp1, N_Vector rTmp2, N_Vector rTmp3) + { + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__Ca_buffer__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 8.6504944644883e-05 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__R = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.890917121306535 + double var_chaste_interface__Jrel_SR__I = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 8.71752603681652e-08 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Na_SL_buf = NV_Ith_S(rY, 21); + // Units: millimolar; Initial value: 0.77606800956492 + double var_chaste_interface__Na_buffer__Na_jct_buf = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 3.55668431730337 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + double var_chaste_interface__Ca_buffer__Ca_SLB_SL = NV_Ith_S(rY, 27); + // Units: millimolar; Initial value: 0.00973710481246467 + double var_chaste_interface__Ca_buffer__Ca_SLB_jct = NV_Ith_S(rY, 28); + // Units: millimolar; Initial value: 0.00774564218017916 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_SL = NV_Ith_S(rY, 29); + // Units: millimolar; Initial value: 0.113168405274355 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_jct = NV_Ith_S(rY, 30); + // Units: millimolar; Initial value: 0.0772568134367606 + double var_chaste_interface__Ca_buffer__Ca_Calsequestrin = NV_Ith_S(rY, 31); + // Units: millimolar; Initial value: 1.18828527890062 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC = NV_Ith_S(rY, 32); + // Units: millimolar; Initial value: 0.00886665040283094 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = NV_Ith_S(rY, 33); + // Units: millimolar; Initial value: 0.117873278193472 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = NV_Ith_S(rY, 34); + // Units: millimolar; Initial value: 0.0103906683506505 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin = NV_Ith_S(rY, 35); + // Units: millimolar; Initial value: 0.000293073957804278 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin = NV_Ith_S(rY, 36); + // Units: millimolar; Initial value: 0.00195899238146509 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin = NV_Ith_S(rY, 37); + // Units: millimolar; Initial value: 0.137523520981802 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB = NV_Ith_S(rY, 38); + // Units: millimolar; Initial value: 0.00215728901718264 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = NV_Ith_S(rY, 39); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = NV_Ith_S(rY, 40); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = NV_Ith_S(rY, 41); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = NV_Ith_S(rY, 42); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = NV_Ith_S(rY, 43); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = NV_Ith_S(rY, 44); + // Units: millimolar; Initial value: 0.0 + const double var_x0 = 1 / var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x1 = 1 + 0.10000000000000001 * var_x0; + const double var_x2 = 1 / var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x3 = 1 + 0.10000000000000001 * var_x2; + const double var_x4 = (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21); + const double var_x5 = NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_Y_gate__Y_tof; + const double var_x6 = exp(-7.0000000000000009 - 1.6666666666666667 * log10(var_chaste_interface__Ca_buffer__Ca_jct)); + const double var_x7 = 1 + var_x6; + const double var_x8 = 0.057000000000000002 + 0.19 / var_x7; + const double var_x9 = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * NV_Ith_S(mParameters, 20); + const double var_x10 = var_x8 * var_x9; + const double var_x11 = exp(-7.0000000000000009 - 1.6666666666666667 * log10(var_chaste_interface__Ca_buffer__Ca_SL)); + const double var_x12 = 1 + var_x11; + const double var_x13 = 0.057000000000000002 + 0.19 / var_x12; + const double var_x14 = var_x13 * var_x9; + const double var_x15 = sqrt(NV_Ith_S(mParameters, 8)); + const double var_x16 = exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V); + const double var_x17 = 1 + var_x16; + const double var_x18 = 0.43033148291193518 / var_x17; + const double var_x19 = pow(var_chaste_interface__INa_m_gate__m, 3); + const double var_x20 = var_x19 * NV_Ith_S(mParameters, 14) * var_chaste_interface__INa_j_gate__j; + const double var_x21 = var_x20 * var_chaste_interface__INa_h_gate__h; + const double var_x22 = log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)); + const double var_x23 = 1 / NV_Ith_S(mParameters, 10); + const double var_x24 = var_x23 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23); + const double var_x25 = var_x22 * var_x24; + const double var_x26 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_x25); + const double var_x27 = 1 + var_x26; + const double var_x28 = 1 / var_x27; + const double var_x29 = exp(-2.4444678999999998 - 0.51429999999999998 * var_chaste_interface__cell__V + 0.51429999999999998 * var_x22 * var_x23 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); + const double var_x30 = 1 + var_x29; + const double var_x31 = 1 / var_x30; + const double var_x32 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_x25); + const double var_x33 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_x25); + const double var_x34 = var_x32 + 0.49124000000000001 * var_x33; + const double var_x35 = var_x31 * var_x34; + const double var_x36 = 1 / (var_x35 + 1.02 * var_x28); + const double var_x37 = 1 / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); + const double var_x38 = var_x37 * NV_Ith_S(mParameters, 10); + const double var_x39 = exp(0.34999999999999998 * var_x38 * var_chaste_interface__cell__V); + const double var_x40 = pow(var_chaste_interface__Na_buffer__Na_jct, 3); + const double var_x41 = var_x40 * NV_Ith_S(mParameters, 6); + const double var_x42 = var_x39 * var_x41; + const double var_x43 = 0.34999999999999998 * var_x38; + const double var_x44 = var_x38 * var_chaste_interface__cell__V; + const double var_x45 = exp(-0.65000000000000002 * var_x44); + const double var_x46 = pow(NV_Ith_S(mParameters, 9), 3); + const double var_x47 = var_x46 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x48 = var_x45 * var_x47; + const double var_x49 = 0.65000000000000002 * var_x38; + const double var_x50 = (1 + 278.55153203342621 * var_chaste_interface__Ca_buffer__Ca_jct) * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x51 = 1 + 0.00053869674493876331 * var_x40; + const double var_x52 = 0.0035899999999999999 * var_x46; + const double var_x53 = 1 / (var_x41 + var_x47 + 669921.875 * var_x50 + 1.3 * var_x40 + var_x51 * var_x52); + const double var_x54 = 1 + 1.6777215999999998e-11 / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3); + const double var_x55 = 1 / var_x54; + const double var_x56 = 1 + 0.27000000000000002 * var_x45; + const double var_x57 = 1 / var_x56; + const double var_x58 = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23); + const double var_x59 = pow(1.5700000000000001, var_x58); + const double var_x60 = var_x59 * NV_Ith_S(mParameters, 22); + const double var_x61 = var_x57 * var_x60; + const double var_x62 = var_x55 * var_x61; + const double var_x63 = var_x53 * var_x62; + const double var_x64 = var_x63 * (var_x42 * var_x43 + var_x48 * var_x49); + const double var_x65 = pow(var_chaste_interface__Na_buffer__Na_SL, 3); + const double var_x66 = var_x65 * NV_Ith_S(mParameters, 6); + const double var_x67 = var_x39 * var_x66; + const double var_x68 = var_x46 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x69 = var_x45 * var_x68; + const double var_x70 = (1 + 278.55153203342621 * var_chaste_interface__Ca_buffer__Ca_SL) * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x71 = 1 + 0.00053869674493876331 * var_x65; + const double var_x72 = 1 / (var_x66 + var_x68 + 669921.875 * var_x70 + 1.3 * var_x65 + var_x52 * var_x71); + const double var_x73 = 1 + 1.6777215999999998e-11 / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3); + const double var_x74 = 1 / var_x73; + const double var_x75 = var_x61 * var_x74; + const double var_x76 = var_x72 * var_x75; + const double var_x77 = var_x76 * (var_x43 * var_x67 + var_x49 * var_x69); + const double var_x78 = pow(var_x27, (-2)); + const double var_x79 = -var_x25 + var_chaste_interface__cell__V; + const double var_x80 = var_x15 * var_x79; + const double var_x81 = pow(1.49, (-124 + 0.40000000000000002 * NV_Ith_S(mParameters, 23))); + const double var_x82 = 1 / var_chaste_interface__Na_buffer__Na_jct; + const double var_x83 = var_x81 * pow(var_x82, 4); + const double var_x84 = 0.10000000000000001 * var_chaste_interface__cell__V; + const double var_x85 = exp(-var_x38 * var_x84); + const double var_x86 = 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9))) * exp(-var_x44); + const double var_x87 = 1 + var_x86 + 0.1245 * var_x85; + const double var_x88 = pow(1.6299999999999999, var_x58) * NV_Ith_S(mParameters, 8) / (1.5 + NV_Ith_S(mParameters, 8)); + const double var_x89 = var_x88 * (var_x38 * var_x86 + 0.012450000000000001 * var_x38 * var_x85) / pow(var_x87, 2); + const double var_x90 = var_x89 / (1 + 14641 * var_x83); + const double var_x91 = 1 / var_chaste_interface__Na_buffer__Na_SL; + const double var_x92 = var_x81 * pow(var_x91, 4); + const double var_x93 = var_x89 / (1 + 14641 * var_x92); + const double var_x94 = exp(var_x44); + const double var_x95 = 0.75 * var_x94; + const double var_x96 = -0.75 * NV_Ith_S(mParameters, 8) + var_x95 * NV_Ith_S(mParameters, 5); + const double var_x97 = var_x37 * pow(NV_Ith_S(mParameters, 10), 2); + const double var_x98 = -1 + var_x94; + const double var_x99 = 1 / var_x98; + const double var_x100 = pow(1.8, var_x58); + const double var_x101 = var_x100 * var_chaste_interface__ICaL_f_gate__f; + const double var_x102 = var_x101 * var_chaste_interface__ICaL_d_gate__d; + const double var_x103 = var_x102 * var_x99; + const double var_x104 = var_x103 * var_x97; + const double var_x105 = var_x104 * var_x96; + const double var_x106 = 1 - 0.10000000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL - 0.90000000000000002 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct; + const double var_x107 = 1.215e-7 * var_x106; + const double var_x108 = var_x67 - var_x69; + const double var_x109 = var_x108 * var_x72; + const double var_x110 = var_x38 * var_x45 * var_x60 / pow(var_x56, 2); + const double var_x111 = var_x109 * var_x110 * var_x74; + const double var_x112 = var_x42 - var_x48; + const double var_x113 = var_x112 * var_x53; + const double var_x114 = var_x110 * var_x113 * var_x55; + const double var_x115 = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; + const double var_x116 = exp(2 * var_x44); + const double var_x117 = -1 + var_x116; + const double var_x118 = NV_Ith_S(mParameters, 12) / var_x117; + const double var_x119 = var_x102 * var_x118; + const double var_x120 = var_x115 * var_x119; + const double var_x121 = -0.34100000000000003 * NV_Ith_S(mParameters, 6); + const double var_x122 = 0.34100000000000003 * var_x116; + const double var_x123 = var_x121 + var_x122 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x124 = 0.18000000000000002 * var_x123; + const double var_x125 = var_x120 * var_x124 * var_x97; + const double var_x126 = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; + const double var_x127 = var_x126 * var_x97; + const double var_x128 = var_x119 * var_x127; + const double var_x129 = var_x121 + var_x122 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x130 = 1.6200000000000001 * var_x129; + const double var_x131 = var_x128 * var_x130; + const double var_x132 = var_x103 * var_x94; + const double var_x133 = pow(NV_Ith_S(mParameters, 10), 3); + const double var_x134 = pow(NV_Ith_S(mParameters, 11), (-2)); + const double var_x135 = pow(NV_Ith_S(mParameters, 23), (-2)); + const double var_x136 = var_x133 * var_x134 * var_x135 * var_chaste_interface__cell__V; + const double var_x137 = pow(var_x98, (-2)); + const double var_x138 = var_x126 * var_x136; + const double var_x139 = 1.10484 * var_x116 * var_x119 * var_x138 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x140 = var_x116 * var_x120; + const double var_x141 = 0.12276000000000002 * var_x136 * var_x140 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x142 = var_x102 * var_x136; + const double var_x143 = var_x116 * var_x142 * NV_Ith_S(mParameters, 12) / pow(var_x117, 2); + const double var_x144 = 0.36000000000000004 * var_x115 * var_x123 * var_x143; + const double var_x145 = var_x126 * var_x129; + const double var_x146 = 3.2400000000000002 * var_x143 * var_x145; + const double var_x147 = -0.75 * NV_Ith_S(mParameters, 9); + const double var_x148 = var_x147 + var_x95 * var_chaste_interface__Na_buffer__Na_SL; + const double var_x149 = var_x115 * var_x148; + const double var_x150 = 6.7499999999999994e-10 * var_x149; + const double var_x151 = 5.0624999999999998e-10 * var_x115 * var_x94; + const double var_x152 = var_x137 * var_x142 * var_x94; + const double var_x153 = var_x104 * var_x150 - var_x150 * var_x152 + var_x103 * var_x136 * var_x151 * var_chaste_interface__Na_buffer__Na_SL; + const double var_x154 = var_x147 + var_x95 * var_chaste_interface__Na_buffer__Na_jct; + const double var_x155 = var_x103 * var_x154; + const double var_x156 = 6.0749999999999998e-9 * var_x127; + const double var_x157 = 4.5562499999999999e-9 * var_x132; + const double var_x158 = var_x126 * var_x154; + const double var_x159 = var_x155 * var_x156 - 6.0749999999999998e-9 * var_x152 * var_x158 + var_x138 * var_x157 * var_chaste_interface__Na_buffer__Na_jct; + const double var_x160 = -var_x24 * log(var_x82 * NV_Ith_S(mParameters, 9)) + var_chaste_interface__cell__V; + const double var_x161 = 0.11 * var_x160; + const double var_x162 = -var_x24 * log(var_x91 * NV_Ith_S(mParameters, 9)) + var_chaste_interface__cell__V; + const double var_x163 = 0.89000000000000001 * var_x162; + const double var_x164 = NV_Ith_S(mParameters, 14) * var_chaste_interface__INa_h_gate__h; + const double var_x165 = var_x164 * var_x19; + const double var_x166 = var_x164 * pow(var_chaste_interface__INa_m_gate__m, 2) * var_chaste_interface__INa_j_gate__j; + const double var_x167 = var_x160 * var_x166; + const double var_x168 = var_x162 * var_x166; + const double var_x169 = 1 / (0.018329999999999999 * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5)); + const double var_x170 = -var_x24 * log(var_x169 * (0.018329999999999999 * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8))) + var_chaste_interface__cell__V; + const double var_x171 = var_x170 * NV_Ith_S(mParameters, 20) * var_chaste_interface__IKs_Xs_gate__Xs; + const double var_x172 = var_x79 * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; + const double var_x173 = var_x99 * var_chaste_interface__cell__V; + const double var_x174 = var_x101 * var_x173; + const double var_x175 = var_x154 * var_x156; + const double var_x176 = var_x174 * var_x97; + const double var_x177 = var_x107 * var_x96; + const double var_x178 = var_x97 * var_chaste_interface__cell__V; + const double var_x179 = var_x124 * var_x178; + const double var_x180 = var_x101 * var_x118; + const double var_x181 = var_x115 * var_x180; + const double var_x182 = var_x127 * var_chaste_interface__cell__V; + const double var_x183 = var_x130 * var_x182; + const double var_x184 = var_x100 * var_chaste_interface__ICaL_d_gate__d; + const double var_x185 = var_x173 * var_x184; + const double var_x186 = var_x185 * var_x97; + const double var_x187 = var_x118 * var_x184; + const double var_x188 = var_x115 * var_x187; + const double var_x189 = var_x104 * var_chaste_interface__cell__V; + const double var_x190 = var_x105 * var_chaste_interface__cell__V; + const double var_x191 = pow(var_chaste_interface__Na_buffer__Na_SL, 2); + const double var_x192 = 3 * NV_Ith_S(mParameters, 6); + const double var_x193 = 5.8017639429904805e-6 * var_x46; + const double var_x194 = -3.9000000000000004 * var_x191 - var_x191 * var_x192 - var_x191 * var_x193; + const double var_x195 = 5.3588338192419823e-9 * var_x46; + const double var_x196 = var_x108 * var_x75 / pow((var_x70 + 1.9405247813411081e-6 * var_x65 + 1.4927113702623908e-6 * var_x66 + 1.4927113702623908e-6 * var_x68 + var_x195 * var_x71), 2); + const double var_x197 = 1.9830866390704556e-12 * var_x196; + const double var_x198 = var_x39 * NV_Ith_S(mParameters, 6); + const double var_x199 = var_x191 * var_x198 * var_x76; + const double var_x200 = var_x88 / var_x87; + const double var_x201 = var_x200 * var_x91 * var_x92 / pow((6.8301345536507063e-5 + var_x92), 2); + const double var_x202 = var_x24 * var_x91; + const double var_x203 = 0.89000000000000001 * var_x21; + const double var_x204 = 0.00026433000000000001 * var_x202 + var_x151 * var_x189 + var_x202 * var_x203; + const double var_x205 = pow(var_chaste_interface__Na_buffer__Na_jct, 2); + const double var_x206 = -3.9000000000000004 * var_x205 - var_x192 * var_x205 - var_x193 * var_x205; + const double var_x207 = var_x112 * var_x62 / pow((var_x50 + 1.9405247813411081e-6 * var_x40 + 1.4927113702623908e-6 * var_x41 + 1.4927113702623908e-6 * var_x47 + var_x195 * var_x51), 2); + const double var_x208 = 2.4510059584016866e-13 * var_x207; + const double var_x209 = var_x198 * var_x205 * var_x63; + const double var_x210 = var_x200 * var_x82 * var_x83 / pow((6.8301345536507063e-5 + var_x83), 2); + const double var_x211 = var_x24 * var_x82; + const double var_x212 = 0.11 * var_x21; + const double var_x213 = 3.2670000000000004e-5 * var_x211 + var_x157 * var_x182 + var_x211 * var_x212; + const double var_x214 = var_x169 * var_x24; + const double var_x215 = var_x24 * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) + var_chaste_interface__cell__V; + const double var_x216 = var_x170 * var_x9 / log(10); + const double var_x217 = var_x109 * var_x61 / (pow(var_x73, 2) * pow(var_chaste_interface__Ca_buffer__Ca_SL, 4)); + const double var_x218 = 669921.875 + var_x46; + const double var_x219 = -var_x218 - 373215529.24791086 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x220 = pow(2.3500000000000001, var_x58); + const double var_x221 = pow(var_x2, 1.6000000000000001); + const double var_x222 = 0.00011182849999999999 * var_x2 * var_x24 + 0.061380000000000011 * var_x140 * var_x178 + 5.0104537825247566e-7 * var_x2 * var_x220 * var_x221 / pow((1 + 5.2281977629563632e-6 * var_x221), 2); + const double var_x223 = pow(var_chaste_interface__Ca_buffer__Ca_jct, 2); + const double var_x224 = -var_x218 - 373215529.24791086 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x225 = var_x113 * var_x61 / (pow(var_x54, 2) * pow(var_chaste_interface__Ca_buffer__Ca_jct, 4)); + const double var_x226 = pow(var_x0, 1.6000000000000001); + const double var_x227 = 1.38215e-5 * var_x0 * var_x24 + 0.55242000000000002 * var_x116 * var_x128 * var_chaste_interface__cell__V + 6.1926956862665531e-8 * var_x0 * var_x220 * var_x226 / pow((1 + 5.2281977629563632e-6 * var_x226), 2); + const double var_x228 = 32.700000000000003 * var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC; + const double var_x229 = 34 * var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin; + const double var_x230 = 100 * var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB; + const double var_x231 = pow(var_chaste_interface__Ca_buffer__Cai, 0.78699999999999992); + const double var_x232 = pow(var_chaste_interface__Ca_buffer__Ca_SR, 1.7869999999999999); + const double var_x233 = 0.38742512113256738 * var_x232; + const double var_x234 = pow(var_chaste_interface__Ca_buffer__Cai, 1.7869999999999999); + const double var_x235 = 1 / (1 + var_x233 + 2814485.1633595936 * var_x234); + const double var_x236 = pow(2.6000000000000001, var_x58); + const double var_x237 = var_x236 * NV_Ith_S(mParameters, 2); + const double var_x238 = var_x235 * var_x237; + const double var_x239 = var_x237 * (-var_x233 + 2814485.1633595936 * var_x234) / pow((3.5530476870814998e-7 + var_x234 + 1.3765399305573384e-7 * var_x232), 2); + const double var_x240 = var_x231 * var_x239; + const double var_x241 = 2.3700000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg + 2.3700000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg; + const double var_x242 = 13.800000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin + 13.800000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin; + const double var_x243 = pow(var_chaste_interface__Ca_buffer__Ca_SR, 0.78699999999999992); + const double var_x244 = var_x238 * var_x243; + const double var_x245 = var_x239 * var_x243; + const double var_x246 = 0.019599999999999999 + 32.700000000000003 * var_chaste_interface__Ca_buffer__Cai; + const double var_x247 = 2.3700000000000001 * var_chaste_interface__Ca_buffer__Cai; + const double var_x248 = 0.23799999999999999 + 34 * var_chaste_interface__Ca_buffer__Cai; + const double var_x249 = 13.800000000000001 * var_chaste_interface__Ca_buffer__Cai; + const double var_x250 = 100 * var_chaste_interface__Ca_buffer__Cai; + const double var_x251 = 0.059999999999999998 + var_x250; + const double var_x252 = exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 16) - 0.14705882352941177 * var_chaste_interface__cell__V); + const double var_x253 = var_chaste_interface__cell__V < -40; + const double var_x254 = ((var_x253) ? (0.13500000000000001 * var_x252) : (0)); + const double var_x255 = exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 16)); + const double var_x256 = exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 16)); + const double var_x257 = exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 16) - 0.0900900900900901 * var_chaste_interface__cell__V); + const double var_x258 = 1 + var_x257; + const double var_x259 = ((var_x253) ? (310000 * var_x255 + 3.5600000000000001 * var_x256) : (7.6923076923076916 / var_x258)); + const double var_x260 = var_x254 + var_x259; + const double var_x261 = ((var_x253) ? (-0.019852941176470591 * var_x252) : (0)); + const double var_x262 = var_x254 + var_x259; + const double var_x263 = 0.01 * NV_Ith_S(mParameters, 15); + const double var_x264 = 1 - var_x263; + const double var_x265 = var_x264 / var_x262; + const double var_x266 = ((var_x253) ? (0.28123999999999999 * var_x256 + 108500 * var_x255) : (0.693000693000693 * var_x257 / pow(var_x258, 2))); + const double var_x267 = exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 16) - 0.13780000000000001 * var_chaste_interface__cell__V); + const double var_x268 = 1 + var_x267; + const double var_x269 = exp(0.01052 * NV_Ith_S(mParameters, 16) - 0.01052 * var_chaste_interface__cell__V); + const double var_x270 = var_x269 / var_x268; + const double var_x271 = exp(-3.2000000000000002 - var_x84 + 0.10000000000000001 * NV_Ith_S(mParameters, 16)); + const double var_x272 = 1 + var_x271; + const double var_x273 = exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 16) - 2.5349999999999999e-7 * var_chaste_interface__cell__V); + const double var_x274 = var_x273 / var_x272; + const double var_x275 = ((var_x253) ? (0.1212 * var_x270) : (0.29999999999999999 * var_x274)); + const double var_x276 = 37.780000000000001 + var_chaste_interface__cell__V; + const double var_x277 = exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 16)); + const double var_x278 = exp(0.043909999999999998 * NV_Ith_S(mParameters, 16) - 0.043909999999999998 * var_chaste_interface__cell__V); + const double var_x279 = -127140 * var_x277 - 3.4740000000000003e-5 * var_x278; + const double var_x280 = exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 16)); + const double var_x281 = 1 + var_x280; + const double var_x282 = 1 / var_x281; + const double var_x283 = var_x279 * var_x282; + const double var_x284 = ((var_x253) ? (var_x276 * var_x283) : (0)); + const double var_x285 = var_x275 + var_x284; + const double var_x286 = ((var_x253) ? (var_x283 + var_x276 * var_x282 * (1.5254334000000001e-6 * var_x278 - 31073.016 * var_x277) - 0.311 * var_x276 * var_x279 * var_x280 / pow(var_x281, 2)) : (0)); + const double var_x287 = var_x275 + var_x284; + const double var_x288 = var_x264 / var_x287; + const double var_x289 = ((var_x253) ? (-0.001275024 * var_x270 + 0.016701360000000002 * var_x267 * var_x269 / pow(var_x268, 2)) : (-7.6049999999999996e-8 * var_x274 + 0.029999999999999999 * var_x271 * var_x273 / pow(var_x272, 2))); + const double var_x290 = exp(-4.7130000000000001 - var_x84); + const double var_x291 = 1 - var_x290; + const double var_x292 = 1 / var_x291; + const double var_x293 = exp(-0.090909090909090912 * var_chaste_interface__cell__V); + const double var_x294 = 47.130000000000003 + var_chaste_interface__cell__V; + const double var_x295 = 0.32000000000000001 * var_x292; + const double var_x296 = 0.080000000000000002 * var_x293 + var_x294 * var_x295; + const double var_x297 = 1 / var_x296; + const double var_x298 = 0.032000000000000001 * var_x290 * var_x294 / pow(var_x291, 2); + const double var_x299 = var_x298 + 0.0072727272727272727 * var_x293 - 0.32000000000000001 * var_x292; + const double var_x300 = var_x292 * var_x294; + const double var_x301 = exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V); + const double var_x302 = 1 + var_x301; + const double var_x303 = exp(1.45 + 0.14499999999999999 * var_chaste_interface__cell__V); + const double var_x304 = -1 + var_x303; + const double var_x305 = 1 / var_x304; + const double var_x306 = exp(-0.86099999999999999 - 0.123 * var_chaste_interface__cell__V); + const double var_x307 = 1 - var_x306; + const double var_x308 = 1 / var_x307; + const double var_x309 = 7 + var_chaste_interface__cell__V; + const double var_x310 = 10 + var_chaste_interface__cell__V; + const double var_x311 = 0.00060999999999999997 * var_x305 * var_x310 + 0.0013799999999999999 * var_x308 * var_x309; + const double var_x312 = exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V); + const double var_x313 = 1 + var_x312; + const double var_x314 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V); + const double var_x315 = -1 + var_x314; + const double var_x316 = 1 / var_x315; + const double var_x317 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V); + const double var_x318 = 1 - var_x317; + const double var_x319 = 1 / var_x318; + const double var_x320 = 30 + var_chaste_interface__cell__V; + const double var_x321 = 0.00013100000000000001 * var_x316 * var_x320 + 7.1899999999999999e-5 * var_x319 * var_x320; + const double var_x322 = 0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__cell__V; + const double var_x323 = exp(var_x322); + const double var_x324 = 1 + var_x323; + const double var_x325 = 1 / var_x324; + const double var_x326 = 1 / (0.5 + 9 * var_x325); + const double var_x327 = exp(-var_x322); + const double var_x328 = 1 + var_x327; + const double var_x329 = 0.066666666666666666 * var_x327 / pow(var_x328, 2); + const double var_x330 = -1 / var_x328; + const double var_x331 = 0.10000000000000001 * var_chaste_interface__cell__V; + const double var_x332 = exp(6 + var_x331); + const double var_x333 = 1 + var_x332; + const double var_x334 = 1 / var_x333; + const double var_x335 = 1 / (30 + 3000 * var_x334); + const double var_x336 = exp(3.3500000000000001 + var_x331); + const double var_x337 = 1 + var_x336; + const double var_x338 = pow(var_x337, (-2)); + const double var_x339 = 0.10000000000000001 * var_x336 * var_x338; + const double var_x340 = pow(var_x333, (-2)); + const double var_x341 = 1 / var_x337; + const double var_x342 = -var_x341; + const double var_x343 = 1 / (220 + 2800 * var_x334); + const double var_x344 = exp(-0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2)); + const double var_x345 = 1 / (1.5 + 3.5 * var_x344); + const double var_x346 = 1 / (20 + 20 * var_x341); + const double var_x347 = exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V); + const double var_x348 = 1 - var_x347; + const double var_x349 = 1 / var_x348; + const double var_x350 = 1 + var_x347; + const double var_x351 = 1 / var_x350; + const double var_x352 = -var_chaste_interface__ICaL_d_gate__d + var_x351; + const double var_x353 = 14.5 + var_chaste_interface__cell__V; + const double var_x354 = 0.0058333333333333336 * var_x347 * var_x353; + const double var_x355 = 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2)); + const double var_x356 = 0.02 + var_x355; + const double var_x357 = exp(9.7388888888888889 + 0.27777777777777779 * var_chaste_interface__cell__V); + const double var_x358 = 1 + var_x357; + const double var_x359 = exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V); + const double var_x360 = 1 + var_x359; + const double var_x361 = 1 / var_chaste_interface__Ca_buffer__Ca_SR; + const double var_x362 = pow(var_x361, 2.5); + const double var_x363 = 1 + 0.13584112963311223 * var_x362; + const double var_x364 = 1 / var_x363; + const double var_x365 = 7.5 - 7 * var_x364; + const double var_x366 = var_x365 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x367 = 1 / (15 - 14 * var_x364); + const double var_x368 = 10 * var_x223 * var_x367; + const double var_x369 = pow(var_x363, (-2)); + const double var_x370 = var_x361 * var_x362 * var_x369; + const double var_x371 = 0.21130842387373014 * var_x223 * var_x370 / pow((1 - 0.93333333333333335 * var_x364), 2); + const double var_x372 = var_x371 * var_chaste_interface__Jrel_SR__R; + const double var_x373 = 20 * var_x367; + const double var_x374 = var_x373 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R; + const double var_x375 = 2.3772197685794643 * var_x370 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O; + const double var_x376 = 1 - var_chaste_interface__Jrel_SR__I - var_chaste_interface__Jrel_SR__O - var_chaste_interface__Jrel_SR__R; + const double var_x377 = var_x365 * var_chaste_interface__Jrel_SR__O; + const double var_x378 = M_PI * var_x23; + const double var_x379 = 62.109246076532294 * var_x378; + const double var_x380 = var_x379 * NV_Ith_S(mParameters, 3); + const double var_x381 = var_x378 * NV_Ith_S(mParameters, 3); + const double var_x382 = var_x20 * var_x381; + const double var_x383 = 55.277229008113743 * var_x162; + const double var_x384 = var_x165 * var_x381; + const double var_x385 = var_x101 * var_x99; + const double var_x386 = M_PI * var_x44; + const double var_x387 = var_x386 * NV_Ith_S(mParameters, 3); + const double var_x388 = 4.1923741101659298e-8 * var_x387; + const double var_x389 = var_x149 * var_x388; + const double var_x390 = var_x184 * var_x99; + const double var_x391 = 0.0001 * var_chaste_interface__Na_buffer__Na_SL_buf; + const double var_x392 = 5.9492599172113663e-12 * var_x196; + const double var_x393 = 0.001 + 0.0001 * var_chaste_interface__Na_buffer__Na_SL; + const double var_x394 = var_x45 * var_x46; + const double var_x395 = var_x394 * var_x76; + const double var_x396 = 2435.6567088836191 * var_x378; + const double var_x397 = var_x396 * NV_Ith_S(mParameters, 3); + const double var_x398 = 267.92223797719811 * var_x160; + const double var_x399 = 1.4796614506467986e-5 * var_x387; + const double var_x400 = var_x158 * var_x399; + const double var_x401 = 0.0001 * var_chaste_interface__Na_buffer__Na_jct_buf; + const double var_x402 = 7.3530178752050587e-13 * var_x207; + const double var_x403 = 0.001 + 0.0001 * var_chaste_interface__Na_buffer__Na_jct; + const double var_x404 = var_x394 * var_x63; + const double var_x405 = 0.076376893524206985 * NV_Ith_S(mParameters, 3); + const double var_x406 = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * NV_Ith_S(mParameters, 1); + const double var_x407 = 100 * var_chaste_interface__Ca_buffer__Ca_Calsequestrin; + const double var_x408 = var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); + const double var_x409 = var_x408 + 18.571428571428569 * NV_Ith_S(mParameters, 0); + const double var_x410 = 65 + 100 * var_chaste_interface__Ca_buffer__Ca_SR; + const double var_x411 = 31.054623038266147 * var_x378; + const double var_x412 = 5.5898321468879066 * var_x123 * var_x386; + const double var_x413 = 3.9661732781409111e-12 * var_x196; + const double var_x414 = 100 * var_chaste_interface__Ca_buffer__Ca_SLB_SL; + const double var_x415 = 100 * var_chaste_interface__Ca_buffer__Ca_SLHigh_SL; + const double var_x416 = 100 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x417 = 1.3 + var_x416; + const double var_x418 = 0.029999999999999999 + var_x416; + const double var_x419 = 1217.8283544418096 * var_x378; + const double var_x420 = 1972.8819341957317 * var_x386; + const double var_x421 = var_x145 * var_x420; + const double var_x422 = 4.9020119168033731e-13 * var_x207; + const double var_x423 = 68.627450980392155 * var_x408 + 1274.5098039215686 * NV_Ith_S(mParameters, 0); + const double var_x424 = 100 * var_chaste_interface__Ca_buffer__Ca_SLB_jct; + const double var_x425 = 100 * var_chaste_interface__Ca_buffer__Ca_SLHigh_jct; + const double var_x426 = 100 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x427 = 1.3 + var_x426; + const double var_x428 = 0.029999999999999999 + var_x426; + const double var_x429 = 0.025000000000000001 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; + const double var_x430 = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol - 0.030769230769230767 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL - 0.00078461538461538469 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + const double var_x431 = 100 * var_x430; + const double var_x432 = var_x429 * var_chaste_interface__Ca_buffer__Cai; + const double var_x433 = 0.025024999999999999 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; + const double var_x434 = var_x433 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x435 = 0.025490196078431372 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + const double var_x436 = var_x435 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x437 = 0.025000000000000001 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; + const double var_x438 = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol - 0.030769230769230767 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL - 0.00078461538461538469 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + const double var_x439 = 100 * var_x438; + const double var_x440 = var_x437 * var_chaste_interface__Ca_buffer__Cai; + const double var_x441 = 0.025024999999999999 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; + const double var_x442 = var_x441 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x443 = 0.025490196078431372 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + const double var_x444 = var_x443 * var_chaste_interface__Ca_buffer__Ca_jct; + + // Matrix entries + IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (-0.00054830000000000005 + var_x144 + var_x146 - var_x125 - var_x131 - var_x139 - var_x141 - var_x153 - var_x159 - NV_Ith_S(mParameters, 13) - 0.11 * var_x10 - 0.11 * var_x64 - 0.89000000000000001 * var_x14 - 0.89000000000000001 * var_x77 - 0.15619500000000003 * var_x111 - 1 * var_x21 - 0.01205875 / var_x1 - 0.019305000000000003 * var_x114 - 0.097566250000000007 / var_x3 - 0.21009999999999998 * var_x90 - 1.6999 * var_x93 - var_x105 * var_x107 - var_x4 * var_chaste_interface__Itos_X_gate__X_tos - var_x5 * var_chaste_interface__Itof_X_gate__X_tof - var_x15 * var_x18 * NV_Ith_S(mParameters, 19) * var_chaste_interface__IKr_Xr_gate__Xr - 9.1125000000000004e-8 * var_x106 * var_x132 * var_x136 * NV_Ith_S(mParameters, 5) - 0.4389381125701739 * var_x15 * var_x28 * var_x36 * NV_Ith_S(mParameters, 18) - 0.42189361069797565 * var_x28 * var_x80 * (-var_x31 * (0.061749999999999999 * var_x32 + 0.039456396800000001 * var_x33) + 0.24326999999999999 * var_x26 * var_x78 - 0.51429999999999998 * var_x29 * var_x34 / pow(var_x30, 2)) * NV_Ith_S(mParameters, 18) / pow((var_x28 + 0.98039215686274506 * var_x35), 2) + 0.10468673984798647 * var_x15 * var_x26 * var_x36 * var_x78 * var_x79 * NV_Ith_S(mParameters, 18) + 0.019211226915711394 * var_x15 * var_x16 * var_x79 * NV_Ith_S(mParameters, 19) * var_chaste_interface__IKr_Xr_gate__Xr / pow(var_x17, 2) + 1.215e-7 * var_x100 * var_x106 * var_x133 * var_x134 * var_x135 * var_x137 * var_x94 * var_x96 * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V); + IJth(rJacobian, 2, 0) = var_x260 * (var_x261 * var_x265 + var_x254 * var_x264 * (-var_x261 - var_x266) / pow(var_x262, 2)) + (var_x261 + var_x266) * (var_x263 - var_chaste_interface__INa_h_gate__h + var_x254 * var_x265); + IJth(rJacobian, 3, 0) = var_x285 * (var_x286 * var_x288 + var_x264 * var_x284 * (-var_x286 - var_x289) / pow(var_x287, 2)) + (var_x286 + var_x289) * (var_x263 - var_chaste_interface__INa_j_gate__j + var_x284 * var_x288); + IJth(rJacobian, 4, 0) = var_x296 * (var_x295 * var_x297 - var_x297 * var_x298 + 3.125 * var_x299 * var_x300 / pow((var_x300 + 0.25 * var_x293), 2)) - var_x299 * (-var_chaste_interface__INa_m_gate__m + 0.32000000000000001 * var_x292 * var_x294 * var_x297); + IJth(rJacobian, 5, 0) = (-var_chaste_interface__IKr_Xr_gate__Xr + 1 / var_x302) * (0.00060999999999999997 * var_x305 + 0.0013799999999999999 * var_x308 - 0.00016973999999999998 * var_x306 * var_x309 / pow(var_x307, 2) - 8.8449999999999995e-5 * var_x303 * var_x310 / pow(var_x304, 2)) + 0.13333333333333333 * var_x301 * var_x311 / pow(var_x302, 2); + IJth(rJacobian, 6, 0) = (-var_chaste_interface__IKs_Xs_gate__Xs + 1 / var_x313) * (0.00013100000000000001 * var_x316 + 7.1899999999999999e-5 * var_x319 - 8.9997000000000013e-6 * var_x314 * var_x320 / pow(var_x315, 2) - 1.0641199999999999e-5 * var_x317 * var_x320 / pow(var_x318, 2)) + 0.059880239520958084 * var_x312 * var_x321 / pow(var_x313, 2); + IJth(rJacobian, 7, 0) = var_x326 * var_x329 + 0.0074074074074074077 * var_x323 * (-var_x330 - var_chaste_interface__Itos_X_gate__X_tos) / (pow(var_x324, 2) * pow((0.055555555555555552 + var_x325), 2)); + IJth(rJacobian, 8, 0) = -var_x335 * var_x339 + 3.3333333333333335e-5 * var_x332 * var_x340 * (-var_x342 - var_chaste_interface__Itos_Y_gate__Y_tos) / pow((0.01 + var_x334), 2); + IJth(rJacobian, 9, 0) = -var_x339 * var_x343 + 3.5714285714285717e-5 * var_x332 * var_x340 * (-var_x342 - var_chaste_interface__Itos_R_gate__R_tos) / pow((0.07857142857142857 + var_x334), 2); + IJth(rJacobian, 10, 0) = var_x329 * var_x345 + 0.00063492063492063492 * var_x344 * (-var_x330 - var_chaste_interface__Itof_X_gate__X_tof) * var_chaste_interface__cell__V / pow((0.42857142857142855 + var_x344), 2); + IJth(rJacobian, 11, 0) = -var_x339 * var_x346 + 0.0050000000000000001 * var_x336 * var_x338 * (-var_x342 - var_chaste_interface__Itof_Y_gate__Y_tof) / pow((1 + var_x341), 2); + IJth(rJacobian, 12, 0) = -var_x349 * var_x352 * var_x354 + 0.035000000000000003 * var_x349 * var_x350 * var_x352 - var_x350 * var_x352 * var_x354 / pow(var_x348, 2) + 0.0058333333333333336 * var_x347 * var_x349 * var_x351 * var_x353; + IJth(rJacobian, 13, 0) = var_x356 * (0.029999999999999999 * var_x359 / pow(var_x360, 2) - 0.27777777777777779 * var_x357 / pow(var_x358, 2)) + var_x355 * (-0.032935010000000001 - 0.0022713799999999999 * var_chaste_interface__cell__V) * (-var_chaste_interface__ICaL_f_gate__f + 1 / var_x358 + 0.59999999999999998 / var_x360); + IJth(rJacobian, 19, 0) = -var_x380 * (0.00026433000000000001 + var_x153 + var_x203 + 2.6699999999999999 * var_x77 + 5.0996999999999995 * var_x93 + 0.46858500000000003 * var_x111); + IJth(rJacobian, 20, 0) = -var_x397 * (3.2670000000000004e-5 + var_x159 + var_x212 + 0.33000000000000002 * var_x64 + 0.63029999999999997 * var_x90 + 0.057915000000000008 * var_x114); + IJth(rJacobian, 25, 0) = -var_x411 * (0.00022365699999999999 + var_x125 + var_x141 - var_x144 - 1.78 * var_x77 - 0.31239000000000006 * var_x111); + IJth(rJacobian, 26, 0) = -var_x419 * (2.7642999999999999e-5 + var_x131 + var_x139 - var_x146 - 0.22 * var_x64 - 0.038610000000000005 * var_x114); + IJth(rJacobian, 1, 1) = -7.2523935948689155 + var_x228 + var_x229 + var_x230 + var_x241 + var_x242 + 6.3492962168146398e-7 * var_x240 - 5029484.9869235931 * var_x231 * var_x238; + IJth(rJacobian, 24, 1) = -1.1791550116941473e-5 * var_x240 + 93404721.185723871 * var_x231 * var_x235 * var_x236 * NV_Ith_S(mParameters, 2); + IJth(rJacobian, 25, 1) = 5.6417918332397381; + IJth(rJacobian, 32, 1) = 2.2890000000000006 - var_x228; + IJth(rJacobian, 33, 1) = 0.33180000000000004 - var_x241; + IJth(rJacobian, 35, 1) = 0.81600000000000006 - var_x229; + IJth(rJacobian, 36, 1) = 1.9320000000000004 - var_x242; + IJth(rJacobian, 38, 1) = 1.71 - var_x230; + IJth(rJacobian, 39, 1) = var_x429 * var_x431; + IJth(rJacobian, 42, 1) = var_x437 * var_x439; + IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x161 * var_x20 - var_x163 * var_x20); + IJth(rJacobian, 2, 2) = -var_x260; + IJth(rJacobian, 19, 2) = -var_x382 * var_x383; + IJth(rJacobian, 20, 2) = -var_x382 * var_x398; + IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x161 * var_x165 - var_x163 * var_x165); + IJth(rJacobian, 3, 3) = -var_x285; + IJth(rJacobian, 19, 3) = -var_x383 * var_x384; + IJth(rJacobian, 20, 3) = -var_x384 * var_x398; + IJth(rJacobian, 0, 4) = mSetVoltageDerivativeToZero ? 0.0 : (-0.33000000000000002 * var_x167 - 2.6699999999999999 * var_x168); + IJth(rJacobian, 4, 4) = -var_x296; + IJth(rJacobian, 19, 4) = -165.83168702434122 * var_x168 * var_x381; + IJth(rJacobian, 20, 4) = -803.76671393159438 * var_x167 * var_x381; + IJth(rJacobian, 0, 5) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x18 * var_x80 * NV_Ith_S(mParameters, 19)); + IJth(rJacobian, 5, 5) = -var_x311; + IJth(rJacobian, 0, 6) = mSetVoltageDerivativeToZero ? 0.0 : (-0.22 * var_x171 * var_x8 - 1.78 * var_x13 * var_x171); + IJth(rJacobian, 6, 6) = -var_x321; + IJth(rJacobian, 0, 7) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x4 * var_x79); + IJth(rJacobian, 7, 7) = -var_x326; + IJth(rJacobian, 0, 8) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x172); + IJth(rJacobian, 8, 8) = -var_x335; + IJth(rJacobian, 0, 9) = mSetVoltageDerivativeToZero ? 0.0 : (-0.5 * var_x172); + IJth(rJacobian, 9, 9) = -var_x343; + IJth(rJacobian, 0, 10) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x5 * var_x79); + IJth(rJacobian, 10, 10) = -var_x345; + IJth(rJacobian, 0, 11) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x79 * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof); + IJth(rJacobian, 11, 11) = -var_x346; + IJth(rJacobian, 0, 12) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x150 * var_x176 - var_x174 * var_x175 - var_x176 * var_x177 - var_x179 * var_x181 - var_x180 * var_x183); + IJth(rJacobian, 12, 12) = -0.035000000000000003 * var_x349 * var_x350 * var_x353; + IJth(rJacobian, 19, 12) = -var_x385 * var_x389; + IJth(rJacobian, 20, 12) = -var_x385 * var_x400; + IJth(rJacobian, 25, 12) = -var_x181 * var_x412; + IJth(rJacobian, 26, 12) = -var_x180 * var_x421; + IJth(rJacobian, 0, 13) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x150 * var_x186 - var_x175 * var_x185 - var_x177 * var_x186 - var_x179 * var_x188 - var_x183 * var_x187); + IJth(rJacobian, 13, 13) = -var_x356; + IJth(rJacobian, 19, 13) = -var_x389 * var_x390; + IJth(rJacobian, 20, 13) = -var_x390 * var_x400; + IJth(rJacobian, 25, 13) = -var_x188 * var_x412; + IJth(rJacobian, 26, 13) = -var_x187 * var_x421; + IJth(rJacobian, 0, 14) = mSetVoltageDerivativeToZero ? 0.0 : (1.2150000000000001e-8 * var_x190 + var_x119 * var_x179 + 6.7499999999999994e-10 * var_x148 * var_x189); + IJth(rJacobian, 14, 14) = -0.011900000000000001 - 1.7 * var_chaste_interface__Ca_buffer__Ca_SL; + IJth(rJacobian, 19, 14) = var_x103 * var_x148 * var_x388; + IJth(rJacobian, 25, 14) = var_x119 * var_x412; + IJth(rJacobian, 0, 15) = mSetVoltageDerivativeToZero ? 0.0 : (1.0935000000000001e-7 * var_x190 + 6.0749999999999998e-9 * var_x155 * var_x178 + var_x119 * var_x130 * var_x178); + IJth(rJacobian, 15, 15) = -0.011900000000000001 - 1.7 * var_chaste_interface__Ca_buffer__Ca_jct; + IJth(rJacobian, 20, 15) = var_x155 * var_x399; + IJth(rJacobian, 26, 15) = var_x119 * var_x129 * var_x420; + IJth(rJacobian, 16, 16) = -0.0050000000000000001 - var_x366 - var_x368; + IJth(rJacobian, 17, 16) = -var_x368; + IJth(rJacobian, 18, 16) = var_x368; + IJth(rJacobian, 16, 17) = -0.0050000000000000001; + IJth(rJacobian, 17, 17) = -0.065000000000000002 - var_x368; + IJth(rJacobian, 18, 17) = 0.0050000000000000001; + IJth(rJacobian, 16, 18) = 0.055; + IJth(rJacobian, 17, 18) = var_x366 - var_x368; + IJth(rJacobian, 18, 18) = -0.059999999999999998 - var_x366; + IJth(rJacobian, 24, 18) = -var_x406; + IJth(rJacobian, 26, 18) = 68.627450980392155 * var_x406; + IJth(rJacobian, 0, 19) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x204 - 2.6699999999999999 * var_x199 - 0.00046442182911003347 * var_x201 - var_x194 * var_x197); + IJth(rJacobian, 19, 19) = (-2.5101556644976917 + var_x391 - var_x379 * (var_x204 + 8.0099999999999998 * var_x199 + 0.0013932654873301004 * var_x201 + var_x194 * var_x392)) * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 20, 19) = 1.0879068612142859 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 21, 19) = 0.000165 - var_x391; + IJth(rJacobian, 23, 19) = var_x405; + IJth(rJacobian, 25, 19) = -var_x411 * (-5.3399999999999999 * var_x199 - var_x194 * var_x413); + IJth(rJacobian, 0, 20) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x213 - 0.33000000000000002 * var_x209 - 5.7400450788880541e-5 * var_x210 - var_x206 * var_x208); + IJth(rJacobian, 19, 20) = 0.02774162496096429 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 20, 20) = (-1.0886629612142857 + var_x401 - var_x396 * (var_x213 + 0.98999999999999999 * var_x209 + 0.00017220135236664162 * var_x210 + var_x206 * var_x402)) * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 22, 20) = 0.0007561 - var_x401; + IJth(rJacobian, 26, 20) = -var_x419 * (-0.66000000000000003 * var_x209 - var_x206 * var_x422); + IJth(rJacobian, 19, 21) = var_x393 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 21, 21) = -var_x393; + IJth(rJacobian, 20, 22) = var_x403 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 22, 22) = -var_x403; + IJth(rJacobian, 0, 23) = mSetVoltageDerivativeToZero ? 0.0 : (-0.0020162999999999999 * var_x10 * var_x214 - 0.0163137 * var_x14 * var_x214); + IJth(rJacobian, 19, 23) = 2.4822490395367272 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 23, 23) = -var_x405; + IJth(rJacobian, 1, 24) = 0.69232869146389786 * var_x244 + 8.7400597733819945e-14 * var_x245; + IJth(rJacobian, 16, 24) = -var_x372 + 2.3772197685794643 * var_x361 * var_x362 * var_x369 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R; + IJth(rJacobian, 17, 24) = -var_x375 + var_x371 * var_x376; + IJth(rJacobian, 18, 24) = var_x372 + var_x375; + IJth(rJacobian, 24, 24) = -260 + var_x407 - var_x409 - 1.6231539579137989e-12 * var_x245 - 12.857532841472388 * var_x244; + IJth(rJacobian, 26, 24) = var_x423; + IJth(rJacobian, 31, 24) = 260 - var_x407; + IJth(rJacobian, 0, 25) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x222 - 4.4795166719999994e-11 * var_x217 - var_x197 * var_x219 - 0.0097566250000000014 * var_x215 / (pow(var_x3, 2) * pow(var_chaste_interface__Ca_buffer__Ca_SL, 2)) - 0.28183333333333332 * var_x11 * var_x2 * var_x216 / pow(var_x12, 2) + 0.89000000000000001 * var_x45 * var_x46 * var_x57 * var_x59 * var_x72 * var_x74 * NV_Ith_S(mParameters, 22)); + IJth(rJacobian, 1, 25) = 0.17359359486891501; + IJth(rJacobian, 14, 25) = 1.7 - 1.7 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL; + IJth(rJacobian, 19, 25) = -var_x380 * (1.3438550016e-10 * var_x217 - 2.6699999999999999 * var_x395 + var_x219 * var_x392); + IJth(rJacobian, 25, 25) = -171.99023312516786 + var_x414 + var_x415 - var_x411 * (var_x222 + 1.78 * var_x395 - 8.9590333439999989e-11 * var_x217 - var_x219 * var_x413); + IJth(rJacobian, 26, 25) = 48.958482036396518; + IJth(rJacobian, 27, 25) = 121.55000000000001 - var_x414; + IJth(rJacobian, 29, 25) = 43.550000000000004 - var_x415; + IJth(rJacobian, 40, 25) = var_x431 * var_x433; + IJth(rJacobian, 43, 25) = var_x439 * var_x441; + IJth(rJacobian, 0, 26) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x227 - 5.5364812799999996e-12 * var_x225 - var_x208 * var_x224 - 0.0012058750000000001 * var_x215 / (pow(var_x1, 2) * var_x223) - 0.034833333333333334 * var_x0 * var_x216 * var_x6 / pow(var_x7, 2) + 0.11 * var_x45 * var_x46 * var_x53 * var_x55 * var_x57 * var_x59 * NV_Ith_S(mParameters, 22)); + IJth(rJacobian, 15, 26) = 1.7 - 1.7 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct; + IJth(rJacobian, 16, 26) = -var_x374 - var_x365 * var_chaste_interface__Jrel_SR__R; + IJth(rJacobian, 17, 26) = var_x377 + var_x373 * var_x376 * var_chaste_interface__Ca_buffer__Ca_jct; + IJth(rJacobian, 18, 26) = var_x374 - var_x377; + IJth(rJacobian, 20, 26) = -var_x397 * (1.6609443839999999e-11 * var_x225 - 0.33000000000000002 * var_x404 + var_x224 * var_x402); + IJth(rJacobian, 24, 26) = var_x409; + IJth(rJacobian, 25, 26) = 1.2484412919281114; + IJth(rJacobian, 26, 26) = -128.61534478149457 + var_x424 + var_x425 - var_x423 - var_x419 * (var_x227 + 0.22 * var_x404 - 1.1072962559999999e-11 * var_x225 - var_x224 * var_x422); + IJth(rJacobian, 28, 26) = 58.627450980392155 - var_x424; + IJth(rJacobian, 30, 26) = 21.029411764705884 - var_x425; + IJth(rJacobian, 41, 26) = var_x431 * var_x435; + IJth(rJacobian, 44, 26) = var_x439 * var_x443; + IJth(rJacobian, 25, 27) = var_x417; + IJth(rJacobian, 27, 27) = -var_x417; + IJth(rJacobian, 26, 28) = var_x427; + IJth(rJacobian, 28, 28) = -var_x427; + IJth(rJacobian, 25, 29) = var_x418; + IJth(rJacobian, 29, 29) = -var_x418; + IJth(rJacobian, 26, 30) = var_x428; + IJth(rJacobian, 30, 30) = -var_x428; + IJth(rJacobian, 24, 31) = var_x410; + IJth(rJacobian, 31, 31) = -var_x410; + IJth(rJacobian, 1, 32) = var_x246; + IJth(rJacobian, 32, 32) = -var_x246; + IJth(rJacobian, 1, 33) = 0.003032 + var_x247; + IJth(rJacobian, 33, 33) = -3.1999999999999999e-5 - var_x247; + IJth(rJacobian, 34, 33) = -0.0030000000000000001; + IJth(rJacobian, 1, 34) = 0.0063300000000000006 + var_x247; + IJth(rJacobian, 33, 34) = -var_x247; + IJth(rJacobian, 34, 34) = -0.0063300000000000006; + IJth(rJacobian, 1, 35) = var_x248; + IJth(rJacobian, 35, 35) = -var_x248; + IJth(rJacobian, 1, 36) = 0.016159999999999997 + var_x249; + IJth(rJacobian, 36, 36) = -0.00046000000000000001 - var_x249; + IJth(rJacobian, 37, 36) = -0.015699999999999999; + IJth(rJacobian, 1, 37) = 0.015757 + var_x249; + IJth(rJacobian, 36, 37) = -var_x249; + IJth(rJacobian, 37, 37) = -0.015757; + IJth(rJacobian, 1, 38) = var_x251; + IJth(rJacobian, 38, 38) = -var_x251; + IJth(rJacobian, 39, 39) = -0.059999999999999998 - var_x250 * var_x429 - var_x250 * var_x430; + IJth(rJacobian, 40, 39) = -var_x416 * var_x433; + IJth(rJacobian, 41, 39) = -var_x426 * var_x435; + IJth(rJacobian, 39, 40) = -3.0769230769230771 * var_x432; + IJth(rJacobian, 40, 40) = -0.059999999999999998 - 3.0769230769230771 * var_x434 - var_x416 * var_x430; + IJth(rJacobian, 41, 40) = -3.0769230769230771 * var_x436; + IJth(rJacobian, 39, 41) = -0.078461538461538471 * var_x432; + IJth(rJacobian, 40, 41) = -0.078461538461538471 * var_x434; + IJth(rJacobian, 41, 41) = -0.059999999999999998 - 0.078461538461538471 * var_x436 - var_x426 * var_x430; + IJth(rJacobian, 42, 42) = -0.11 - var_x250 * var_x437 - var_x250 * var_x438; + IJth(rJacobian, 43, 42) = -var_x416 * var_x441; + IJth(rJacobian, 44, 42) = -var_x426 * var_x443; + IJth(rJacobian, 42, 43) = -3.0769230769230771 * var_x440; + IJth(rJacobian, 43, 43) = -0.11 - 3.0769230769230771 * var_x442 - var_x416 * var_x438; + IJth(rJacobian, 44, 43) = -3.0769230769230771 * var_x444; + IJth(rJacobian, 42, 44) = -0.078461538461538471 * var_x440; + IJth(rJacobian, 43, 44) = -0.078461538461538471 * var_x442; + IJth(rJacobian, 44, 44) = -0.11 - 0.078461538461538471 * var_x444 - var_x426 * var_x438; + } + + N_Vector Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + + // Mathematics + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jrel_SR__j_rel_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); // millimolar_per_millisecond + const double var_ICaL_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2))); // millisecond + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 16) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 16)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 16))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 16) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__tau_h = 1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? ((37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 16)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 16) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 16)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 16) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 16) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 16) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 16) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__tau_j = 1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // millisecond + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Cm_converted = 1000000 * var_model_parameters__Cm; // uF + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(23, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(23); +#endif + NV_Ith_S(dqs, 0) = var_Jrel_SR__j_rel_SR; + NV_Ith_S(dqs, 1) = var_reversal_potentials__E_Cl; + NV_Ith_S(dqs, 2) = var_ICaL__i_CaL_converted; + NV_Ith_S(dqs, 3) = var_ICaL_fCa_gate__fCa_SL; + NV_Ith_S(dqs, 4) = var_ICaL_f_gate__tau_f; + NV_Ith_S(dqs, 5) = var_ICab__i_Cab_converted; + NV_Ith_S(dqs, 6) = var_IClb__i_Clb_converted; + NV_Ith_S(dqs, 7) = var_INab__i_Nab_converted; + NV_Ith_S(dqs, 8) = var_ICap__i_Cap_converted; + NV_Ith_S(dqs, 9) = var_model_parameters__Cm_converted; + NV_Ith_S(dqs, 10) = var_INa__i_Na_converted; + NV_Ith_S(dqs, 11) = var_INa_h_gate__tau_h; + NV_Ith_S(dqs, 12) = var_INa_j_gate__tau_j; + NV_Ith_S(dqs, 13) = var_Itof__i_tof_converted; + NV_Ith_S(dqs, 14) = var_IK1__i_K1_converted; + NV_Ith_S(dqs, 15) = var_IK1__G_K1; + NV_Ith_S(dqs, 16) = var_IKr__i_Kr_converted; + NV_Ith_S(dqs, 17) = var_IKs__i_Ks_converted; + NV_Ith_S(dqs, 18) = var_Itos__i_tos_converted; + NV_Ith_S(dqs, 19) = var_INaCa__i_NaCa_converted; + NV_Ith_S(dqs, 20) = var_cell__i_Stim_converted; + NV_Ith_S(dqs, 21) = var_reversal_potentials__E_K; + NV_Ith_S(dqs, 22) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "shannon_wang_puglisi_weber_bers_2004_model_updated"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-85.721630473733); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.6504944644883e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.98714602875678); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.991826348770428); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0013702407736465); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("IKr_Xr_gate__Xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00846906175020028); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("IKs_Xs_gate__Xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00613557812033723); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("Itos_X_gate__X_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401072468238921); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("Itos_Y_gate__Y_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.31555225368514); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("Itos_R_gate__R_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.402577243036347); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("Itof_X_gate__X_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401068798369438); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("Itof_Y_gate__Y_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.994632857675454); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.99526086177479e-06); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.00067601563206); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_SL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0150193299768419); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_jct"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0244048782575591); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("Jrel_SR__R"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.890917121306535); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("Jrel_SR__I"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.71752603681652e-08); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("Jrel_SR__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.1199533741995e-07); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87161932058707); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87031835089116); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("Na_buffer__Na_SL_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.77606800956492); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("Na_buffer__Na_jct_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(3.55668431730337); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87200572571131); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.547125831028543); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000104971310105451); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000174045152623969); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00973710481246467); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00774564218017916); + + // NV_Ith_S(rY, 29): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.113168405274355); + + // NV_Ith_S(rY, 30): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0772568134367606); + + // NV_Ith_S(rY, 31): + this->mVariableNames.push_back("Ca_buffer__Ca_Calsequestrin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.18828527890062); + + // NV_Ith_S(rY, 32): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00886665040283094); + + // NV_Ith_S(rY, 33): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.117873278193472); + + // NV_Ith_S(rY, 34): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0103906683506505); + + // NV_Ith_S(rY, 35): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Calmodulin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000293073957804278); + + // NV_Ith_S(rY, 36): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00195899238146509); + + // NV_Ith_S(rY, 37): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.137523520981802); + + // NV_Ith_S(rY, 38): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_SRB"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00215728901718264); + + // NV_Ith_S(rY, 39): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 40): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 41): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 42): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 43): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 44): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("cytosolic_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[9]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[10]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[11]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kilomole_kelvin"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("litre_per_farad_millisecond"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_background_chloride_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[22]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[23]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mDerivedQuantityUnits.push_back("dimensionless"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_background_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_background_chloride_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_background_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode(pSolver, pStimulus); + } + +} +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004--sympy_1_13.cpp new file mode 100644 index 00000000..6c9a9a22 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004--sympy_1_13.cpp @@ -0,0 +1,2151 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: shannon_wang_puglisi_weber_bers_2004_model_updated +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: AnalyticCvode) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_Shannon2004.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + +#include "ModelFactory.hpp" + +AbstractCvodeCell* Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode(p_solver, p_stimulus); +} + +bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = ModelFactory::Register("dynamic_Shannon2004", "AnalyticCvode", (ModelFactory::TCreateMethod)Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::CreateMethod); + + + + boost::shared_ptr Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 5; // millisecond + const double var_chaste_interface__cell__stim_period = 1000; // millisecond + const double var_chaste_interface__cell__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 45, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + mUseAnalyticJacobian = true; + mHasAnalyticJacobian = true; + + NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_Jleak_SR__KSRleak) [per_millisecond] + NV_Ith_S(this->mParameters, 1) = 25; // (var_Jrel_SR__ks) [per_millisecond] + NV_Ith_S(this->mParameters, 2) = 0.00028600000000000001; // (var_Jpump_SR__V_max) [millimolar_per_millisecond] + NV_Ith_S(this->mParameters, 3) = 1; // (var_Na_buffer__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 15; // (var_model_parameters__Cli) [millimolar] + NV_Ith_S(this->mParameters, 5) = 135; // (var_model_parameters__Ki) [millimolar] + NV_Ith_S(this->mParameters, 6) = 1.8; // (var_model_parameters__Cao) [millimolar] + NV_Ith_S(this->mParameters, 7) = 150; // (var_model_parameters__Clo) [millimolar] + NV_Ith_S(this->mParameters, 8) = 5.4000000000000004; // (var_model_parameters__Ko) [millimolar] + NV_Ith_S(this->mParameters, 9) = 140; // (var_model_parameters__Nao) [millimolar] + NV_Ith_S(this->mParameters, 10) = 96486.699999999997; // (var_model_parameters__F) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 11) = 8314.2999999999993; // (var_model_parameters__R) [joule_per_kilomole_kelvin] + NV_Ith_S(this->mParameters, 12) = 0.00054000000000000001; // (var_ICaL__PCa) [litre_per_farad_millisecond] + NV_Ith_S(this->mParameters, 13) = 0.0089999999999999993; // (var_IClb__G_ClBk) [milliS_per_microF] + NV_Ith_S(this->mParameters, 14) = 16; // (var_INa__G_INa) [milliS_per_microF] + NV_Ith_S(this->mParameters, 15) = 0; // (var_INa__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 16) = 0; // (var_INa__shift_INa_inact) [millivolt] + NV_Ith_S(this->mParameters, 17) = 0.02; // (var_Itof__G_tof) [milliS_per_microF] + NV_Ith_S(this->mParameters, 18) = 0.90000000000000002; // (var_IK1__G_K1_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 19) = 0.029999999999999999; // (var_IKr__G_IKr_const) [milliS_per_microF] + NV_Ith_S(this->mParameters, 20) = 0.070000000000000007; // (var_IKs__G_Ks_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 21) = 0.059999999999999998; // (var_Itos__G_tos) [milliS_per_microF] + NV_Ith_S(this->mParameters, 22) = 9; // (var_INaCa__V_max) [microA_per_microF] + NV_Ith_S(this->mParameters, 23) = 310; // (var_model_parameters__T) [kelvin] + } + + Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::~Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode() + { + } + + + void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 45; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_ICl_Ca__i_Cl_Ca + HeartConfig::Instance()->GetCapacitance() * var_INaK__i_NaK + var_ICaL__i_CaL_converted + var_ICab__i_Cab_converted + var_ICap__i_Cap_converted + var_IClb__i_Clb_converted + var_IK1__i_K1_converted + var_IKr__i_Kr_converted + var_IKs__i_Ks_converted + var_INa__i_Na_converted + var_INaCa__i_NaCa_converted + var_INab__i_Nab_converted + var_Itof__i_tof_converted + var_Itos__i_tos_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__Ca_buffer__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 8.6504944644883e-05 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__R = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.890917121306535 + double var_chaste_interface__Jrel_SR__I = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 8.71752603681652e-08 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Na_SL_buf = NV_Ith_S(rY, 21); + // Units: millimolar; Initial value: 0.77606800956492 + double var_chaste_interface__Na_buffer__Na_jct_buf = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 3.55668431730337 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + double var_chaste_interface__Ca_buffer__Ca_SLB_SL = NV_Ith_S(rY, 27); + // Units: millimolar; Initial value: 0.00973710481246467 + double var_chaste_interface__Ca_buffer__Ca_SLB_jct = NV_Ith_S(rY, 28); + // Units: millimolar; Initial value: 0.00774564218017916 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_SL = NV_Ith_S(rY, 29); + // Units: millimolar; Initial value: 0.113168405274355 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_jct = NV_Ith_S(rY, 30); + // Units: millimolar; Initial value: 0.0772568134367606 + double var_chaste_interface__Ca_buffer__Ca_Calsequestrin = NV_Ith_S(rY, 31); + // Units: millimolar; Initial value: 1.18828527890062 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC = NV_Ith_S(rY, 32); + // Units: millimolar; Initial value: 0.00886665040283094 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = NV_Ith_S(rY, 33); + // Units: millimolar; Initial value: 0.117873278193472 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = NV_Ith_S(rY, 34); + // Units: millimolar; Initial value: 0.0103906683506505 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin = NV_Ith_S(rY, 35); + // Units: millimolar; Initial value: 0.000293073957804278 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin = NV_Ith_S(rY, 36); + // Units: millimolar; Initial value: 0.00195899238146509 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin = NV_Ith_S(rY, 37); + // Units: millimolar; Initial value: 0.137523520981802 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB = NV_Ith_S(rY, 38); + // Units: millimolar; Initial value: 0.00215728901718264 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = NV_Ith_S(rY, 39); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = NV_Ith_S(rY, 40); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = NV_Ith_S(rY, 41); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = NV_Ith_S(rY, 42); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = NV_Ith_S(rY, 43); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = NV_Ith_S(rY, 44); + // Units: millimolar; Initial value: 0.0 + + // Mathematics + double d_dt_chaste_interface_var_cell__V; + const double var_Ca_buffer__Bmax_Calsequestrin = 0.14000000000000001; // millimolar + const double var_Ca_buffer__Bmax_SLB_SL = 0.037400000000000003; // millimolar + const double var_Ca_buffer__Bmax_SLB_jct = 0.0045999999999999999; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_SL = 0.0134; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_jct = 0.00165; // millimolar + const double var_Ca_buffer__koff_Calsequestrin = 65; // per_millisecond + const double var_Ca_buffer__koff_SLB = 1.3; // per_millisecond + const double var_Ca_buffer__koff_SLHigh = 0.029999999999999999; // per_millisecond + const double var_Ca_buffer__kon_Calsequestrin = 100; // per_millimolar_per_millisecond + const double var_Ca_buffer__kon_SL = 100; // per_millimolar_per_millisecond + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL) * var_chaste_interface__Ca_buffer__Ca_SL; // 1 / millisecond + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct) * var_chaste_interface__Ca_buffer__Ca_jct; // 1 / millisecond + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jleak_SR__j_leak_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * NV_Ith_S(mParameters, 0); // millimolar_per_millisecond + const double var_Jpump_SR__H = 1.7869999999999999; // dimensionless + const double var_Jpump_SR__Kmf = 0.00024600000000000002; // millimolar + const double var_Jpump_SR__Kmr = 1.7; // millimolar + const double var_Jpump_SR__Q10_SRCaP = 2.6000000000000001; // dimensionless + const double var_Jrel_SR__EC50_SR = 0.45000000000000001; // millimolar + const double var_Jrel_SR__HSR = 2.5; // dimensionless + const double var_Jrel_SR__Max_SR = 15; // dimensionless + const double var_Jrel_SR__Min_SR = 1; // dimensionless + const double var_Jrel_SR__RI = 1 - var_chaste_interface__Jrel_SR__I - var_chaste_interface__Jrel_SR__O - var_chaste_interface__Jrel_SR__R; // dimensionless + const double var_Jrel_SR__kCaSR = -(-var_Jrel_SR__Min_SR + var_Jrel_SR__Max_SR) / (1 + pow((var_Jrel_SR__EC50_SR / var_chaste_interface__Ca_buffer__Ca_SR), var_Jrel_SR__HSR)) + var_Jrel_SR__Max_SR; // dimensionless + const double var_Jrel_SR__kiCa = 0.5; // per_millimolar_per_millisecond + const double var_Jrel_SR__kiSRCa = var_Jrel_SR__kCaSR * var_Jrel_SR__kiCa; // per_millimolar_per_millisecond + const double var_Jrel_SR__kim = 0.0050000000000000001; // per_millisecond + const double var_Jrel_SR__koCa = 10; // per_millimolar2_per_millisecond + const double var_Jrel_SR__koSRCa = var_Jrel_SR__koCa / var_Jrel_SR__kCaSR; // per_millimolar2_per_millisecond + const double var_Jrel_SR__kom = 0.059999999999999998; // per_millisecond + const double d_dt_chaste_interface_var_Jrel_SR__I = -var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_Jrel_SR__RI * var_Jrel_SR__koSRCa + var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__O = var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__R = var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + var_Jrel_SR__RI * var_Jrel_SR__kim - pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double var_Jrel_SR__j_rel_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); // millimolar_per_millisecond + const double var_Na_buffer__Bmax_SL = 1.6499999999999999; // millimolar + const double var_Na_buffer__Bmax_jct = 7.5609999999999999; // millimolar + const double var_Na_buffer__koff = 0.001; // per_millisecond + const double var_Na_buffer__kon = 0.0001; // per_millimolar_per_millisecond + const double var_Na_buffer__dNa_SL_buf = -var_chaste_interface__Na_buffer__Na_SL_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_SL_buf + var_Na_buffer__Bmax_SL) * var_chaste_interface__Na_buffer__Na_SL * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_SL_buf = var_Na_buffer__dNa_SL_buf; // millimolar / millisecond + const double var_Na_buffer__dNa_jct_buf = -var_chaste_interface__Na_buffer__Na_jct_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_jct_buf + var_Na_buffer__Bmax_jct) * var_chaste_interface__Na_buffer__Na_jct * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_jct_buf = var_Na_buffer__dNa_jct_buf; // millimolar / millisecond + const double var_ICaL_d_gate__d_infinity = 1 / (1 + exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_d_gate__tau_d = 28.571428571428569 * (1 - exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)) * var_ICaL_d_gate__d_infinity / (14.5 + var_chaste_interface__cell__V); // millisecond + const double d_dt_chaste_interface_var_ICaL_d_gate__d = (-var_chaste_interface__ICaL_d_gate__d + var_ICaL_d_gate__d_infinity) / var_ICaL_d_gate__tau_d; // 1 / millisecond + const double var_ICaL_f_gate__f_infinity = 1 / (1 + exp(9.7388888888888889 + 0.27777777777777779 * var_chaste_interface__cell__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2))); // millisecond + const double d_dt_chaste_interface_var_ICaL_f_gate__f = (-var_chaste_interface__ICaL_f_gate__f + var_ICaL_f_gate__f_infinity) / var_ICaL_f_gate__tau_f; // 1 / millisecond + const double var_IKr_Xr_gate__Xr_infinity = 1 / (1 + exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr_Xr_gate__tau_Xr = 1 / (0.00060999999999999997 * (10 + var_chaste_interface__cell__V) / (-1 + exp(1.45 + 0.14499999999999999 * var_chaste_interface__cell__V)) + 0.0013799999999999999 * (7 + var_chaste_interface__cell__V) / (1 - exp(-0.86099999999999999 - 0.123 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKr_Xr_gate__Xr = (-var_chaste_interface__IKr_Xr_gate__Xr + var_IKr_Xr_gate__Xr_infinity) / var_IKr_Xr_gate__tau_Xr; // 1 / millisecond + const double var_IKs_Xs_gate__Xs_infinity = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKs_Xs_gate__tau_Xs = 1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKs_Xs_gate__Xs = (-var_chaste_interface__IKs_Xs_gate__Xs + var_IKs_Xs_gate__Xs_infinity) / var_IKs_Xs_gate__tau_Xs; // 1 / millisecond + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 16) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 16)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 16))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 16) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__h_infinity = 0.01 * NV_Ith_S(mParameters, 15) + (1 - 0.01 * NV_Ith_S(mParameters, 15)) * var_INa_h_gate__alpha_h / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // dimensionless + const double var_INa_h_gate__tau_h = 1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // millisecond + const double d_dt_chaste_interface_var_INa_h_gate__h = (-var_chaste_interface__INa_h_gate__h + var_INa_h_gate__h_infinity) / var_INa_h_gate__tau_h; // 1 / millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 16)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 16) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 16)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 16) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 16) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 16) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 16) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__j_infinity = 0.01 * NV_Ith_S(mParameters, 15) + (1 - 0.01 * NV_Ith_S(mParameters, 15)) * var_INa_j_gate__alpha_j / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // dimensionless + const double var_INa_j_gate__tau_j = 1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // millisecond + const double d_dt_chaste_interface_var_INa_j_gate__j = (-var_chaste_interface__INa_j_gate__j + var_INa_j_gate__j_infinity) / var_INa_j_gate__tau_j; // 1 / millisecond + const double var_INa_m_gate__alpha_m = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__cell__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_millisecond + const double var_INa_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__cell__V); // per_millisecond + const double var_INa_m_gate__m_infinity = var_INa_m_gate__alpha_m / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // dimensionless + const double var_INa_m_gate__tau_m = 1 / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // millisecond + const double d_dt_chaste_interface_var_INa_m_gate__m = (-var_chaste_interface__INa_m_gate__m + var_INa_m_gate__m_infinity) / var_INa_m_gate__tau_m; // 1 / millisecond + const double var_Itof_X_gate__X_tof_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_X_gate__tau_X_tof = 1.5 + 3.5 * exp(-0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2)); // millisecond + const double d_dt_chaste_interface_var_Itof_X_gate__X_tof = (-var_chaste_interface__Itof_X_gate__X_tof + var_Itof_X_gate__X_tof_infinity) / var_Itof_X_gate__tau_X_tof; // 1 / millisecond + const double var_Itof_Y_gate__Y_tof_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_Y_gate__tau_Y_tof = 20 + 20 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itof_Y_gate__Y_tof = (-var_chaste_interface__Itof_Y_gate__Y_tof + var_Itof_Y_gate__Y_tof_infinity) / var_Itof_Y_gate__tau_Y_tof; // 1 / millisecond + const double var_Itos_R_gate__R_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_R_gate__tau_R_tos = 220 + 2800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_R_gate__R_tos = (-var_chaste_interface__Itos_R_gate__R_tos + var_Itos_R_gate__R_tos_infinity) / var_Itos_R_gate__tau_R_tos; // 1 / millisecond + const double var_Itos_X_gate__X_tos_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_X_gate__tau_X_tos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_X_gate__X_tos = (-var_chaste_interface__Itos_X_gate__X_tos + var_Itos_X_gate__X_tos_infinity) / var_Itos_X_gate__tau_X_tos; // 1 / millisecond + const double var_Itos_Y_gate__Y_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_Y_gate__tau_Y_tos = 30 + 3000 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_Y_gate__Y_tos = (-var_chaste_interface__Itos_Y_gate__Y_tos + var_Itos_Y_gate__Y_tos_infinity) / var_Itos_Y_gate__tau_Y_tos; // 1 / millisecond + const double var_cytosolic_Ca_buffer__Bmax_Calmodulin = 0.024; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_SRB = 0.017100000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC = 0.070000000000000007; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__koff_Calmodulin = 0.23799999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Ca = 0.00046000000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Mg = 5.7000000000000003e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_SRB = 0.059999999999999998; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC = 0.019599999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca = 3.1999999999999999e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg = 0.0033300000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__kon_Calmodulin = 34; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Calmodulin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin * var_cytosolic_Ca_buffer__koff_Calmodulin + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin + var_cytosolic_Ca_buffer__Bmax_Calmodulin) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Calmodulin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin = var_cytosolic_Ca_buffer__dCa_Calmodulin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Ca = 13.800000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Myosin_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin = var_cytosolic_Ca_buffer__dCa_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Mg = 0.015699999999999999; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__kon_SRB = 100; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_SRB = -var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB * var_cytosolic_Ca_buffer__koff_SRB + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB + var_cytosolic_Ca_buffer__Bmax_SRB) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_SRB; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB = var_cytosolic_Ca_buffer__dCa_SRB; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC = 32.700000000000003; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC * var_cytosolic_Ca_buffer__koff_TroponinC + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC + var_cytosolic_Ca_buffer__Bmax_TroponinC) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC = var_cytosolic_Ca_buffer__dCa_TroponinC; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca = 2.3700000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg = 0.0030000000000000001; // per_millimolar_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 = 0.11; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 = 0.059999999999999998; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3 = 100; // per_millimolar2_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Indo1 = 100; // per_millimolar2_per_millisecond + const double var_ion_diffusion__J_Ca_SL_cytosol = 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Ca_SL - 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Cai; // millimole_per_millisecond + const double var_ion_diffusion__J_Ca_jct_SL = 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_jct - 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_SL; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_SL_cytosol = 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Na_SL - 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Nai; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_jct_SL = 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_jct - 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_SL; // millimole_per_millisecond + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_model_parameters__Mgi = 1; // millimolar + const double var_cytosolic_Ca_buffer__dMg_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Mg) * var_cytosolic_Ca_buffer__kon_Myosin_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin = var_cytosolic_Ca_buffer__dMg_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg) * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound = var_cytosolic_Ca_buffer__dCa_Calmodulin + var_cytosolic_Ca_buffer__dCa_Myosin + var_cytosolic_Ca_buffer__dCa_SRB + var_cytosolic_Ca_buffer__dCa_TroponinC + var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__dMg_Myosin + var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar_per_millisecond + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_Jpump_SR__Q_SRCaP = pow(var_Jpump_SR__Q10_SRCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Vol_Cell = 3.1415926540000002e-15 * pow(var_model_parameters__cell_radius, 2) * var_model_parameters__cell_length; // liter + const double var_model_parameters__Vol_SL = 0.02 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_SR = 0.035000000000000003 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_cytosol = 0.65000000000000002 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_SL = -var_chaste_interface__Ca_buffer__Ca_SLB_SL * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_SL + var_Ca_buffer__Bmax_SLB_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_SL = -var_chaste_interface__Ca_buffer__Ca_SLHigh_SL * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_SL + var_Ca_buffer__Bmax_SLHigh_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SL_tot_bound = var_Ca_buffer__dCa_SLB_SL + var_Ca_buffer__dCa_SLHigh_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCalsequestrin = -var_chaste_interface__Ca_buffer__Ca_Calsequestrin * var_Ca_buffer__koff_Calsequestrin + (-var_chaste_interface__Ca_buffer__Ca_Calsequestrin + var_Ca_buffer__Bmax_Calsequestrin * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR) * var_chaste_interface__Ca_buffer__Ca_SR * var_Ca_buffer__kon_Calsequestrin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin = var_Ca_buffer__dCalsequestrin; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL = var_Ca_buffer__dCa_SLB_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL = var_Ca_buffer__dCa_SLHigh_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Na_buffer__Nai = NV_Ith_S(mParameters, 3) * var_ion_diffusion__J_Na_SL_cytosol / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_Jpump_SR__j_pump_SR = (pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) - pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_Jpump_SR__Q_SRCaP * NV_Ith_S(mParameters, 2) * var_model_parameters__Vol_cytosol / ((1 + pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) + pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_model_parameters__Vol_SR); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SR = -var_Ca_buffer__dCalsequestrin - var_Jrel_SR__j_rel_SR - var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR + var_Jpump_SR__j_pump_SR; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Cai = -1 * var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound + var_ion_diffusion__J_Ca_SL_cytosol / var_model_parameters__Vol_cytosol - var_Jpump_SR__j_pump_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_model_parameters__Vol_jct = 0.00051000000000000004 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_jct = -var_chaste_interface__Ca_buffer__Ca_SLB_jct * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLB_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_jct = -var_chaste_interface__Ca_buffer__Ca_SLHigh_jct * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLHigh_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_jct_tot_bound = var_Ca_buffer__dCa_SLB_jct + var_Ca_buffer__dCa_SLHigh_jct; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct = var_Ca_buffer__dCa_SLB_jct; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct = var_Ca_buffer__dCa_SLHigh_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct; // millimolar / millisecond + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_SL_tot = -2 * var_INaCa__i_NaCa_SL + var_ICaL__i_CaL_Ca_SL + var_ICab__i_Cab_SL + var_ICap__i_Cap_SL; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SL = -1 * var_Ca_buffer__dCa_SL_tot_bound + (-var_ion_diffusion__J_Ca_SL_cytosol + var_ion_diffusion__J_Ca_jct_SL) / var_model_parameters__Vol_SL - 0.5 * var_Ca_buffer__i_Ca_SL_tot * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_SL); // millimolar / millisecond + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_jct_tot = -2 * var_INaCa__i_NaCa_jct + var_ICaL__i_CaL_Ca_jct + var_ICab__i_Cab_jct + var_ICap__i_Cap_jct; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_jct = -1 * var_Ca_buffer__dCa_jct_tot_bound - var_ion_diffusion__J_Ca_jct_SL / var_model_parameters__Vol_jct + var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct + var_Jrel_SR__j_rel_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_jct - 0.5 * var_Ca_buffer__i_Ca_jct_tot * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_jct); // millimolar / millisecond + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_SL = (-var_Na_buffer__dNa_SL_buf + (-var_ion_diffusion__J_Na_SL_cytosol + var_ion_diffusion__J_Na_jct_SL) / var_model_parameters__Vol_SL - (3 * var_INaCa__i_NaCa_SL + 3 * var_INaK__i_NaK_SL + var_ICaL__i_CaL_Na_SL + var_INa__i_Na_SL + var_INab__i_Nab_SL) * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_SL)) * NV_Ith_S(mParameters, 3); // millimolar / millisecond + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_jct = (-var_Na_buffer__dNa_jct_buf - var_ion_diffusion__J_Na_jct_SL / var_model_parameters__Vol_jct - (3 * var_INaCa__i_NaCa_jct + 3 * var_INaK__i_NaK_jct + var_ICaL__i_CaL_Na_jct + var_INa__i_Na_jct + var_INab__i_Nab_jct) * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_jct)) * NV_Ith_S(mParameters, 3); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_cell__V = 0.0; + } + else + { + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + d_dt_chaste_interface_var_cell__V = -var_ICaL__i_CaL - var_ICab__i_Cab - var_ICap__i_Cap - var_ICl_Ca__i_Cl_Ca - var_IClb__i_Clb - var_IK1__i_K1 - var_IKr__i_Kr - var_IKs__i_Ks - var_INa__i_Na - var_INaCa__i_NaCa - var_INaK__i_NaK - var_INab__i_Nab - var_Itof__i_tof - var_Itos__i_tos - var_cell__i_Stim; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_cell__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_buffer__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_INa_h_gate__h; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_INa_j_gate__j; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_INa_m_gate__m; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_IKr_Xr_gate__Xr; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_IKs_Xs_gate__Xs; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_Itos_X_gate__X_tos; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_Itos_Y_gate__Y_tos; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_Itos_R_gate__R_tos; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_Itof_X_gate__X_tof; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_Itof_Y_gate__Y_tof; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_ICaL_d_gate__d; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_ICaL_f_gate__f; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_Jrel_SR__R; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_Jrel_SR__I; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_Jrel_SR__O; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_Na_buffer__Na_SL; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_Na_buffer__Na_jct; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_Na_buffer__Na_SL_buf; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_Na_buffer__Na_jct_buf; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Na_buffer__Nai; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Ca_buffer__Ca_SR; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Ca_buffer__Ca_SL; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Ca_buffer__Ca_jct; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct; + NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL; + NV_Ith_S(rDY,30) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct; + NV_Ith_S(rDY,31) = d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin; + NV_Ith_S(rDY,32) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC; + NV_Ith_S(rDY,33) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg; + NV_Ith_S(rDY,34) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg; + NV_Ith_S(rDY,35) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin; + NV_Ith_S(rDY,36) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin; + NV_Ith_S(rDY,37) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin; + NV_Ith_S(rDY,38) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB; + NV_Ith_S(rDY,39) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; + NV_Ith_S(rDY,40) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; + NV_Ith_S(rDY,41) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + NV_Ith_S(rDY,42) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; + NV_Ith_S(rDY,43) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; + NV_Ith_S(rDY,44) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + } + + void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::EvaluateAnalyticJacobian(double var_chaste_interface__environment__time, N_Vector rY, N_Vector rDY, CHASTE_CVODE_DENSE_MATRIX rJacobian, N_Vector rTmp1, N_Vector rTmp2, N_Vector rTmp3) + { + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__Ca_buffer__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 8.6504944644883e-05 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__R = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.890917121306535 + double var_chaste_interface__Jrel_SR__I = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 8.71752603681652e-08 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Na_SL_buf = NV_Ith_S(rY, 21); + // Units: millimolar; Initial value: 0.77606800956492 + double var_chaste_interface__Na_buffer__Na_jct_buf = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 3.55668431730337 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + double var_chaste_interface__Ca_buffer__Ca_SLB_SL = NV_Ith_S(rY, 27); + // Units: millimolar; Initial value: 0.00973710481246467 + double var_chaste_interface__Ca_buffer__Ca_SLB_jct = NV_Ith_S(rY, 28); + // Units: millimolar; Initial value: 0.00774564218017916 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_SL = NV_Ith_S(rY, 29); + // Units: millimolar; Initial value: 0.113168405274355 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_jct = NV_Ith_S(rY, 30); + // Units: millimolar; Initial value: 0.0772568134367606 + double var_chaste_interface__Ca_buffer__Ca_Calsequestrin = NV_Ith_S(rY, 31); + // Units: millimolar; Initial value: 1.18828527890062 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC = NV_Ith_S(rY, 32); + // Units: millimolar; Initial value: 0.00886665040283094 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = NV_Ith_S(rY, 33); + // Units: millimolar; Initial value: 0.117873278193472 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = NV_Ith_S(rY, 34); + // Units: millimolar; Initial value: 0.0103906683506505 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin = NV_Ith_S(rY, 35); + // Units: millimolar; Initial value: 0.000293073957804278 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin = NV_Ith_S(rY, 36); + // Units: millimolar; Initial value: 0.00195899238146509 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin = NV_Ith_S(rY, 37); + // Units: millimolar; Initial value: 0.137523520981802 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB = NV_Ith_S(rY, 38); + // Units: millimolar; Initial value: 0.00215728901718264 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = NV_Ith_S(rY, 39); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = NV_Ith_S(rY, 40); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = NV_Ith_S(rY, 41); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = NV_Ith_S(rY, 42); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = NV_Ith_S(rY, 43); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = NV_Ith_S(rY, 44); + // Units: millimolar; Initial value: 0.0 + const double var_x0 = 1 / var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x1 = 1 + 0.10000000000000001 * var_x0; + const double var_x2 = 1 / var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x3 = 1 + 0.10000000000000001 * var_x2; + const double var_x4 = (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21); + const double var_x5 = NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_Y_gate__Y_tof; + const double var_x6 = exp(-7.0000000000000009 - 1.6666666666666667 * log10(1 * var_chaste_interface__Ca_buffer__Ca_jct)); + const double var_x7 = 1 + var_x6; + const double var_x8 = 0.057000000000000002 + 0.19 / var_x7; + const double var_x9 = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * NV_Ith_S(mParameters, 20); + const double var_x10 = var_x8 * var_x9; + const double var_x11 = exp(-7.0000000000000009 - 1.6666666666666667 * log10(1 * var_chaste_interface__Ca_buffer__Ca_SL)); + const double var_x12 = 1 + var_x11; + const double var_x13 = 0.057000000000000002 + 0.19 / var_x12; + const double var_x14 = var_x13 * var_x9; + const double var_x15 = sqrt(NV_Ith_S(mParameters, 8)); + const double var_x16 = exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V); + const double var_x17 = 1 + var_x16; + const double var_x18 = 0.43033148291193518 / var_x17; + const double var_x19 = pow(var_chaste_interface__INa_m_gate__m, 3); + const double var_x20 = var_x19 * NV_Ith_S(mParameters, 14) * var_chaste_interface__INa_j_gate__j; + const double var_x21 = var_x20 * var_chaste_interface__INa_h_gate__h; + const double var_x22 = log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)); + const double var_x23 = 1 / NV_Ith_S(mParameters, 10); + const double var_x24 = var_x23 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23); + const double var_x25 = var_x22 * var_x24; + const double var_x26 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_x25); + const double var_x27 = 1 + var_x26; + const double var_x28 = 1 / var_x27; + const double var_x29 = exp(-2.4444678999999998 - 0.51429999999999998 * var_chaste_interface__cell__V + 0.51429999999999998 * var_x22 * var_x23 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); + const double var_x30 = 1 + var_x29; + const double var_x31 = 1 / var_x30; + const double var_x32 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_x25); + const double var_x33 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_x25); + const double var_x34 = 1 * var_x32 + 0.49124000000000001 * var_x33; + const double var_x35 = var_x31 * var_x34; + const double var_x36 = 1 / (var_x35 + 1.02 * var_x28); + const double var_x37 = 1 / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); + const double var_x38 = var_x37 * NV_Ith_S(mParameters, 10); + const double var_x39 = exp(0.34999999999999998 * var_x38 * var_chaste_interface__cell__V); + const double var_x40 = pow(var_chaste_interface__Na_buffer__Na_jct, 3); + const double var_x41 = var_x40 * NV_Ith_S(mParameters, 6); + const double var_x42 = var_x39 * var_x41; + const double var_x43 = 0.34999999999999998 * var_x38; + const double var_x44 = var_x38 * var_chaste_interface__cell__V; + const double var_x45 = exp(-0.65000000000000002 * var_x44); + const double var_x46 = pow(NV_Ith_S(mParameters, 9), 3); + const double var_x47 = var_x46 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x48 = var_x45 * var_x47; + const double var_x49 = 0.65000000000000002 * var_x38; + const double var_x50 = (1 + 278.55153203342621 * var_chaste_interface__Ca_buffer__Ca_jct) * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x51 = 1 + 0.00053869674493876331 * var_x40; + const double var_x52 = 0.0035899999999999999 * var_x46; + const double var_x53 = 1 / (var_x41 + var_x47 + 669921.875 * var_x50 + 1.3 * var_x40 + var_x51 * var_x52); + const double var_x54 = 1 + 1.6777215999999998e-11 / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3); + const double var_x55 = 1 / var_x54; + const double var_x56 = 1 + 0.27000000000000002 * var_x45; + const double var_x57 = 1 / var_x56; + const double var_x58 = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23); + const double var_x59 = pow(1.5700000000000001, var_x58); + const double var_x60 = var_x59 * NV_Ith_S(mParameters, 22); + const double var_x61 = var_x57 * var_x60; + const double var_x62 = var_x55 * var_x61; + const double var_x63 = var_x53 * var_x62; + const double var_x64 = var_x63 * (var_x42 * var_x43 + var_x48 * var_x49); + const double var_x65 = pow(var_chaste_interface__Na_buffer__Na_SL, 3); + const double var_x66 = var_x65 * NV_Ith_S(mParameters, 6); + const double var_x67 = var_x39 * var_x66; + const double var_x68 = var_x46 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x69 = var_x45 * var_x68; + const double var_x70 = (1 + 278.55153203342621 * var_chaste_interface__Ca_buffer__Ca_SL) * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x71 = 1 + 0.00053869674493876331 * var_x65; + const double var_x72 = 1 / (var_x66 + var_x68 + 669921.875 * var_x70 + 1.3 * var_x65 + var_x52 * var_x71); + const double var_x73 = 1 + 1.6777215999999998e-11 / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3); + const double var_x74 = 1 / var_x73; + const double var_x75 = var_x61 * var_x74; + const double var_x76 = var_x72 * var_x75; + const double var_x77 = var_x76 * (var_x43 * var_x67 + var_x49 * var_x69); + const double var_x78 = pow(var_x27, (-2)); + const double var_x79 = -var_x25 + var_chaste_interface__cell__V; + const double var_x80 = var_x15 * var_x79; + const double var_x81 = pow(1.49, (-124 + 0.40000000000000002 * NV_Ith_S(mParameters, 23))); + const double var_x82 = 1 / var_chaste_interface__Na_buffer__Na_jct; + const double var_x83 = var_x81 * pow(var_x82, 4); + const double var_x84 = 0.10000000000000001 * var_chaste_interface__cell__V; + const double var_x85 = exp(-var_x38 * var_x84); + const double var_x86 = 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9))) * exp(-var_x44); + const double var_x87 = 1 + var_x86 + 0.1245 * var_x85; + const double var_x88 = pow(1.6299999999999999, var_x58) * NV_Ith_S(mParameters, 8) / (1.5 + NV_Ith_S(mParameters, 8)); + const double var_x89 = var_x88 * (var_x38 * var_x86 + 0.012450000000000001 * var_x38 * var_x85) / pow(var_x87, 2); + const double var_x90 = var_x89 / (1 + 14641 * var_x83); + const double var_x91 = 1 / var_chaste_interface__Na_buffer__Na_SL; + const double var_x92 = var_x81 * pow(var_x91, 4); + const double var_x93 = var_x89 / (1 + 14641 * var_x92); + const double var_x94 = exp(var_x44); + const double var_x95 = 0.75 * var_x94; + const double var_x96 = -0.75 * NV_Ith_S(mParameters, 8) + var_x95 * NV_Ith_S(mParameters, 5); + const double var_x97 = var_x37 * pow(NV_Ith_S(mParameters, 10), 2); + const double var_x98 = -1 + var_x94; + const double var_x99 = 1 / var_x98; + const double var_x100 = pow(1.8, var_x58); + const double var_x101 = var_x100 * var_chaste_interface__ICaL_f_gate__f; + const double var_x102 = var_x101 * var_chaste_interface__ICaL_d_gate__d; + const double var_x103 = var_x102 * var_x99; + const double var_x104 = var_x103 * var_x97; + const double var_x105 = var_x104 * var_x96; + const double var_x106 = 1 - 0.10000000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL - 0.90000000000000002 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct; + const double var_x107 = 1.215e-7 * var_x106; + const double var_x108 = var_x67 - var_x69; + const double var_x109 = var_x108 * var_x72; + const double var_x110 = var_x38 * var_x45 * var_x60 / pow(var_x56, 2); + const double var_x111 = var_x109 * var_x110 * var_x74; + const double var_x112 = var_x42 - var_x48; + const double var_x113 = var_x112 * var_x53; + const double var_x114 = var_x110 * var_x113 * var_x55; + const double var_x115 = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; + const double var_x116 = exp(2 * var_x44); + const double var_x117 = -1 + var_x116; + const double var_x118 = NV_Ith_S(mParameters, 12) / var_x117; + const double var_x119 = var_x102 * var_x118; + const double var_x120 = var_x115 * var_x119; + const double var_x121 = -0.34100000000000003 * NV_Ith_S(mParameters, 6); + const double var_x122 = 0.34100000000000003 * var_x116; + const double var_x123 = var_x121 + var_x122 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x124 = 0.18000000000000002 * var_x123; + const double var_x125 = var_x120 * var_x124 * var_x97; + const double var_x126 = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; + const double var_x127 = var_x126 * var_x97; + const double var_x128 = var_x119 * var_x127; + const double var_x129 = var_x121 + var_x122 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x130 = 1.6200000000000001 * var_x129; + const double var_x131 = var_x128 * var_x130; + const double var_x132 = var_x103 * var_x94; + const double var_x133 = pow(NV_Ith_S(mParameters, 10), 3); + const double var_x134 = pow(NV_Ith_S(mParameters, 11), (-2)); + const double var_x135 = pow(NV_Ith_S(mParameters, 23), (-2)); + const double var_x136 = var_x133 * var_x134 * var_x135 * var_chaste_interface__cell__V; + const double var_x137 = pow(var_x98, (-2)); + const double var_x138 = var_x126 * var_x136; + const double var_x139 = 1.10484 * var_x116 * var_x119 * var_x138 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x140 = var_x116 * var_x120; + const double var_x141 = 0.12276000000000002 * var_x136 * var_x140 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x142 = var_x102 * var_x136; + const double var_x143 = var_x116 * var_x142 * NV_Ith_S(mParameters, 12) / pow(var_x117, 2); + const double var_x144 = 0.36000000000000004 * var_x115 * var_x123 * var_x143; + const double var_x145 = var_x126 * var_x129; + const double var_x146 = 3.2400000000000002 * var_x143 * var_x145; + const double var_x147 = -0.75 * NV_Ith_S(mParameters, 9); + const double var_x148 = var_x147 + var_x95 * var_chaste_interface__Na_buffer__Na_SL; + const double var_x149 = var_x115 * var_x148; + const double var_x150 = 6.7499999999999994e-10 * var_x149; + const double var_x151 = 5.0624999999999998e-10 * var_x115 * var_x94; + const double var_x152 = var_x137 * var_x142 * var_x94; + const double var_x153 = var_x104 * var_x150 - var_x150 * var_x152 + var_x103 * var_x136 * var_x151 * var_chaste_interface__Na_buffer__Na_SL; + const double var_x154 = var_x147 + var_x95 * var_chaste_interface__Na_buffer__Na_jct; + const double var_x155 = var_x103 * var_x154; + const double var_x156 = 6.0749999999999998e-9 * var_x127; + const double var_x157 = 4.5562499999999999e-9 * var_x132; + const double var_x158 = var_x126 * var_x154; + const double var_x159 = var_x155 * var_x156 - 6.0749999999999998e-9 * var_x152 * var_x158 + var_x138 * var_x157 * var_chaste_interface__Na_buffer__Na_jct; + const double var_x160 = -var_x24 * log(var_x82 * NV_Ith_S(mParameters, 9)) + var_chaste_interface__cell__V; + const double var_x161 = 0.11 * var_x160; + const double var_x162 = -var_x24 * log(var_x91 * NV_Ith_S(mParameters, 9)) + var_chaste_interface__cell__V; + const double var_x163 = 0.89000000000000001 * var_x162; + const double var_x164 = NV_Ith_S(mParameters, 14) * var_chaste_interface__INa_h_gate__h; + const double var_x165 = var_x164 * var_x19; + const double var_x166 = var_x164 * pow(var_chaste_interface__INa_m_gate__m, 2) * var_chaste_interface__INa_j_gate__j; + const double var_x167 = var_x160 * var_x166; + const double var_x168 = var_x162 * var_x166; + const double var_x169 = 1 / (0.018329999999999999 * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5)); + const double var_x170 = -var_x24 * log(var_x169 * (0.018329999999999999 * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8))) + var_chaste_interface__cell__V; + const double var_x171 = var_x170 * NV_Ith_S(mParameters, 20) * var_chaste_interface__IKs_Xs_gate__Xs; + const double var_x172 = var_x79 * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; + const double var_x173 = var_x99 * var_chaste_interface__cell__V; + const double var_x174 = var_x101 * var_x173; + const double var_x175 = var_x154 * var_x156; + const double var_x176 = var_x174 * var_x97; + const double var_x177 = var_x107 * var_x96; + const double var_x178 = var_x97 * var_chaste_interface__cell__V; + const double var_x179 = var_x124 * var_x178; + const double var_x180 = var_x101 * var_x118; + const double var_x181 = var_x115 * var_x180; + const double var_x182 = var_x127 * var_chaste_interface__cell__V; + const double var_x183 = var_x130 * var_x182; + const double var_x184 = var_x100 * var_chaste_interface__ICaL_d_gate__d; + const double var_x185 = var_x173 * var_x184; + const double var_x186 = var_x185 * var_x97; + const double var_x187 = var_x118 * var_x184; + const double var_x188 = var_x115 * var_x187; + const double var_x189 = var_x104 * var_chaste_interface__cell__V; + const double var_x190 = var_x105 * var_chaste_interface__cell__V; + const double var_x191 = pow(var_chaste_interface__Na_buffer__Na_SL, 2); + const double var_x192 = 3 * NV_Ith_S(mParameters, 6); + const double var_x193 = 5.8017639429904805e-6 * var_x46; + const double var_x194 = -3.9000000000000004 * var_x191 - var_x191 * var_x192 - var_x191 * var_x193; + const double var_x195 = 5.3588338192419823e-9 * var_x46; + const double var_x196 = var_x108 * var_x75 / pow((var_x70 + 1.9405247813411081e-6 * var_x65 + 1.4927113702623908e-6 * var_x66 + 1.4927113702623908e-6 * var_x68 + var_x195 * var_x71), 2); + const double var_x197 = 1.9830866390704556e-12 * var_x196; + const double var_x198 = var_x39 * NV_Ith_S(mParameters, 6); + const double var_x199 = var_x191 * var_x198 * var_x76; + const double var_x200 = var_x88 / var_x87; + const double var_x201 = var_x200 * var_x91 * var_x92 / pow((6.8301345536507063e-5 + var_x92), 2); + const double var_x202 = var_x24 * var_x91; + const double var_x203 = 0.89000000000000001 * var_x21; + const double var_x204 = 0.00026433000000000001 * var_x202 + var_x151 * var_x189 + var_x202 * var_x203; + const double var_x205 = pow(var_chaste_interface__Na_buffer__Na_jct, 2); + const double var_x206 = -3.9000000000000004 * var_x205 - var_x192 * var_x205 - var_x193 * var_x205; + const double var_x207 = var_x112 * var_x62 / pow((var_x50 + 1.9405247813411081e-6 * var_x40 + 1.4927113702623908e-6 * var_x41 + 1.4927113702623908e-6 * var_x47 + var_x195 * var_x51), 2); + const double var_x208 = 2.4510059584016866e-13 * var_x207; + const double var_x209 = var_x198 * var_x205 * var_x63; + const double var_x210 = var_x200 * var_x82 * var_x83 / pow((6.8301345536507063e-5 + var_x83), 2); + const double var_x211 = var_x24 * var_x82; + const double var_x212 = 0.11 * var_x21; + const double var_x213 = 3.2670000000000004e-5 * var_x211 + var_x157 * var_x182 + var_x211 * var_x212; + const double var_x214 = var_x169 * var_x24; + const double var_x215 = var_x24 * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) + var_chaste_interface__cell__V; + const double var_x216 = var_x170 * var_x9 / log(10); + const double var_x217 = var_x109 * var_x61 / (pow(var_x73, 2) * pow(var_chaste_interface__Ca_buffer__Ca_SL, 4)); + const double var_x218 = 669921.875 + var_x46; + const double var_x219 = -var_x218 - 373215529.24791086 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x220 = pow(2.3500000000000001, var_x58); + const double var_x221 = pow(var_x2, 1.6000000000000001); + const double var_x222 = 0.00011182849999999999 * var_x2 * var_x24 + 0.061380000000000011 * var_x140 * var_x178 + 5.0104537825247566e-7 * var_x2 * var_x220 * var_x221 / pow((1 + 5.2281977629563632e-6 * var_x221), 2); + const double var_x223 = pow(var_chaste_interface__Ca_buffer__Ca_jct, 2); + const double var_x224 = -var_x218 - 373215529.24791086 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x225 = var_x113 * var_x61 / (pow(var_x54, 2) * pow(var_chaste_interface__Ca_buffer__Ca_jct, 4)); + const double var_x226 = pow(var_x0, 1.6000000000000001); + const double var_x227 = 1.38215e-5 * var_x0 * var_x24 + 0.55242000000000002 * var_x116 * var_x128 * var_chaste_interface__cell__V + 6.1926956862665531e-8 * var_x0 * var_x220 * var_x226 / pow((1 + 5.2281977629563632e-6 * var_x226), 2); + const double var_x228 = 32.700000000000003 * var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC; + const double var_x229 = 34 * var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin; + const double var_x230 = 100 * var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB; + const double var_x231 = pow(var_chaste_interface__Ca_buffer__Cai, 0.78699999999999992); + const double var_x232 = pow(var_chaste_interface__Ca_buffer__Ca_SR, 1.7869999999999999); + const double var_x233 = 0.38742512113256738 * var_x232; + const double var_x234 = pow(var_chaste_interface__Ca_buffer__Cai, 1.7869999999999999); + const double var_x235 = 1 / (1 + var_x233 + 2814485.1633595936 * var_x234); + const double var_x236 = pow(2.6000000000000001, var_x58); + const double var_x237 = var_x236 * NV_Ith_S(mParameters, 2); + const double var_x238 = var_x235 * var_x237; + const double var_x239 = var_x237 * (-var_x233 + 2814485.1633595936 * var_x234) / pow((3.5530476870814998e-7 + var_x234 + 1.3765399305573384e-7 * var_x232), 2); + const double var_x240 = var_x231 * var_x239; + const double var_x241 = 2.3700000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg + 2.3700000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg; + const double var_x242 = 13.800000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin + 13.800000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin; + const double var_x243 = pow(var_chaste_interface__Ca_buffer__Ca_SR, 0.78699999999999992); + const double var_x244 = var_x238 * var_x243; + const double var_x245 = var_x239 * var_x243; + const double var_x246 = 0.019599999999999999 + 32.700000000000003 * var_chaste_interface__Ca_buffer__Cai; + const double var_x247 = 2.3700000000000001 * var_chaste_interface__Ca_buffer__Cai; + const double var_x248 = 0.23799999999999999 + 34 * var_chaste_interface__Ca_buffer__Cai; + const double var_x249 = 13.800000000000001 * var_chaste_interface__Ca_buffer__Cai; + const double var_x250 = 100 * var_chaste_interface__Ca_buffer__Cai; + const double var_x251 = 0.059999999999999998 + var_x250; + const double var_x252 = exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 16) - 0.14705882352941177 * var_chaste_interface__cell__V); + const double var_x253 = var_chaste_interface__cell__V < -40; + const double var_x254 = ((var_x253) ? (0.13500000000000001 * var_x252) : (0)); + const double var_x255 = exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 16)); + const double var_x256 = exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 16)); + const double var_x257 = exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 16) - 0.0900900900900901 * var_chaste_interface__cell__V); + const double var_x258 = 1 + var_x257; + const double var_x259 = ((var_x253) ? (310000 * var_x255 + 3.5600000000000001 * var_x256) : (7.6923076923076916 / var_x258)); + const double var_x260 = 1 * var_x254 + 1 * var_x259; + const double var_x261 = ((var_x253) ? (-0.019852941176470591 * var_x252) : (0)); + const double var_x262 = var_x254 + var_x259; + const double var_x263 = 0.01 * NV_Ith_S(mParameters, 15); + const double var_x264 = 1 - var_x263; + const double var_x265 = var_x264 / var_x262; + const double var_x266 = ((var_x253) ? (0.28123999999999999 * var_x256 + 108500 * var_x255) : (0.693000693000693 * var_x257 / pow(var_x258, 2))); + const double var_x267 = exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 16) - 0.13780000000000001 * var_chaste_interface__cell__V); + const double var_x268 = 1 + var_x267; + const double var_x269 = exp(0.01052 * NV_Ith_S(mParameters, 16) - 0.01052 * var_chaste_interface__cell__V); + const double var_x270 = var_x269 / var_x268; + const double var_x271 = exp(-3.2000000000000002 - var_x84 + 0.10000000000000001 * NV_Ith_S(mParameters, 16)); + const double var_x272 = 1 + var_x271; + const double var_x273 = exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 16) - 2.5349999999999999e-7 * var_chaste_interface__cell__V); + const double var_x274 = var_x273 / var_x272; + const double var_x275 = ((var_x253) ? (0.1212 * var_x270) : (0.29999999999999999 * var_x274)); + const double var_x276 = 37.780000000000001 + var_chaste_interface__cell__V; + const double var_x277 = exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 16)); + const double var_x278 = exp(0.043909999999999998 * NV_Ith_S(mParameters, 16) - 0.043909999999999998 * var_chaste_interface__cell__V); + const double var_x279 = -127140 * var_x277 - 3.4740000000000003e-5 * var_x278; + const double var_x280 = exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 16)); + const double var_x281 = 1 + var_x280; + const double var_x282 = 1 / var_x281; + const double var_x283 = var_x279 * var_x282; + const double var_x284 = ((var_x253) ? (var_x276 * var_x283) : (0)); + const double var_x285 = 1 * var_x275 + 1 * var_x284; + const double var_x286 = ((var_x253) ? (var_x283 + var_x276 * var_x282 * (1.5254334000000001e-6 * var_x278 - 31073.016 * var_x277) - 0.311 * var_x276 * var_x279 * var_x280 / pow(var_x281, 2)) : (0)); + const double var_x287 = var_x275 + var_x284; + const double var_x288 = var_x264 / var_x287; + const double var_x289 = ((var_x253) ? (-0.001275024 * var_x270 + 0.016701360000000002 * var_x267 * var_x269 / pow(var_x268, 2)) : (-7.6049999999999996e-8 * var_x274 + 0.029999999999999999 * var_x271 * var_x273 / pow(var_x272, 2))); + const double var_x290 = exp(-4.7130000000000001 - var_x84); + const double var_x291 = 1 - var_x290; + const double var_x292 = 1 / var_x291; + const double var_x293 = exp(-0.090909090909090912 * var_chaste_interface__cell__V); + const double var_x294 = 47.130000000000003 + var_chaste_interface__cell__V; + const double var_x295 = 0.32000000000000001 * var_x292; + const double var_x296 = 0.080000000000000002 * var_x293 + var_x294 * var_x295; + const double var_x297 = 1 / var_x296; + const double var_x298 = 0.032000000000000001 * var_x290 * var_x294 / pow(var_x291, 2); + const double var_x299 = var_x298 + 0.0072727272727272727 * var_x293 - 0.32000000000000001 * var_x292; + const double var_x300 = var_x292 * var_x294; + const double var_x301 = exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V); + const double var_x302 = 1 + var_x301; + const double var_x303 = exp(1.45 + 0.14499999999999999 * var_chaste_interface__cell__V); + const double var_x304 = -1 + var_x303; + const double var_x305 = 1 / var_x304; + const double var_x306 = exp(-0.86099999999999999 - 0.123 * var_chaste_interface__cell__V); + const double var_x307 = 1 - var_x306; + const double var_x308 = 1 / var_x307; + const double var_x309 = 7 + var_chaste_interface__cell__V; + const double var_x310 = 10 + var_chaste_interface__cell__V; + const double var_x311 = 0.00060999999999999997 * var_x305 * var_x310 + 0.0013799999999999999 * var_x308 * var_x309; + const double var_x312 = exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V); + const double var_x313 = 1 + var_x312; + const double var_x314 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V); + const double var_x315 = -1 + var_x314; + const double var_x316 = 1 / var_x315; + const double var_x317 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V); + const double var_x318 = 1 - var_x317; + const double var_x319 = 1 / var_x318; + const double var_x320 = 30 + var_chaste_interface__cell__V; + const double var_x321 = 0.00013100000000000001 * var_x316 * var_x320 + 7.1899999999999999e-5 * var_x319 * var_x320; + const double var_x322 = 0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__cell__V; + const double var_x323 = exp(var_x322); + const double var_x324 = 1 + var_x323; + const double var_x325 = 1 / var_x324; + const double var_x326 = 1 / (0.5 + 9 * var_x325); + const double var_x327 = exp(-var_x322); + const double var_x328 = 1 + var_x327; + const double var_x329 = 0.066666666666666666 * var_x327 / pow(var_x328, 2); + const double var_x330 = -1 / var_x328; + const double var_x331 = 0.10000000000000001 * var_chaste_interface__cell__V; + const double var_x332 = exp(6 + var_x331); + const double var_x333 = 1 + var_x332; + const double var_x334 = 1 / var_x333; + const double var_x335 = 1 / (30 + 3000 * var_x334); + const double var_x336 = exp(3.3500000000000001 + var_x331); + const double var_x337 = 1 + var_x336; + const double var_x338 = pow(var_x337, (-2)); + const double var_x339 = 0.10000000000000001 * var_x336 * var_x338; + const double var_x340 = pow(var_x333, (-2)); + const double var_x341 = 1 / var_x337; + const double var_x342 = -1 * var_x341; + const double var_x343 = 1 / (220 + 2800 * var_x334); + const double var_x344 = exp(-0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2)); + const double var_x345 = 1 / (1.5 + 3.5 * var_x344); + const double var_x346 = 1 / (20 + 20 * var_x341); + const double var_x347 = exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V); + const double var_x348 = 1 - var_x347; + const double var_x349 = 1 / var_x348; + const double var_x350 = 1 + var_x347; + const double var_x351 = 1 / var_x350; + const double var_x352 = -var_chaste_interface__ICaL_d_gate__d + 1 * var_x351; + const double var_x353 = 14.5 + var_chaste_interface__cell__V; + const double var_x354 = 0.0058333333333333336 * var_x347 * var_x353; + const double var_x355 = 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2)); + const double var_x356 = 0.02 + var_x355; + const double var_x357 = exp(9.7388888888888889 + 0.27777777777777779 * var_chaste_interface__cell__V); + const double var_x358 = 1 + var_x357; + const double var_x359 = exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V); + const double var_x360 = 1 + var_x359; + const double var_x361 = 1 / var_chaste_interface__Ca_buffer__Ca_SR; + const double var_x362 = pow(var_x361, 2.5); + const double var_x363 = 1 + 0.13584112963311223 * var_x362; + const double var_x364 = 1 / var_x363; + const double var_x365 = 7.5 - 7 * var_x364; + const double var_x366 = var_x365 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x367 = 1 / (15 - 14 * var_x364); + const double var_x368 = 10 * var_x223 * var_x367; + const double var_x369 = pow(var_x363, (-2)); + const double var_x370 = var_x361 * var_x362 * var_x369; + const double var_x371 = 0.21130842387373014 * var_x223 * var_x370 / pow((1 - 0.93333333333333335 * var_x364), 2); + const double var_x372 = var_x371 * var_chaste_interface__Jrel_SR__R; + const double var_x373 = 20 * var_x367; + const double var_x374 = var_x373 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R; + const double var_x375 = 2.3772197685794643 * var_x370 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O; + const double var_x376 = 1 - var_chaste_interface__Jrel_SR__I - var_chaste_interface__Jrel_SR__O - var_chaste_interface__Jrel_SR__R; + const double var_x377 = var_x365 * var_chaste_interface__Jrel_SR__O; + const double var_x378 = M_PI * var_x23; + const double var_x379 = 62.109246076532294 * var_x378; + const double var_x380 = var_x379 * NV_Ith_S(mParameters, 3); + const double var_x381 = var_x378 * NV_Ith_S(mParameters, 3); + const double var_x382 = var_x20 * var_x381; + const double var_x383 = 55.277229008113743 * var_x162; + const double var_x384 = var_x165 * var_x381; + const double var_x385 = var_x101 * var_x99; + const double var_x386 = M_PI * var_x44; + const double var_x387 = var_x386 * NV_Ith_S(mParameters, 3); + const double var_x388 = 4.1923741101659298e-8 * var_x387; + const double var_x389 = var_x149 * var_x388; + const double var_x390 = var_x184 * var_x99; + const double var_x391 = 0.0001 * var_chaste_interface__Na_buffer__Na_SL_buf; + const double var_x392 = 5.9492599172113663e-12 * var_x196; + const double var_x393 = 0.001 + 0.0001 * var_chaste_interface__Na_buffer__Na_SL; + const double var_x394 = var_x45 * var_x46; + const double var_x395 = var_x394 * var_x76; + const double var_x396 = 2435.6567088836191 * var_x378; + const double var_x397 = var_x396 * NV_Ith_S(mParameters, 3); + const double var_x398 = 267.92223797719811 * var_x160; + const double var_x399 = 1.4796614506467986e-5 * var_x387; + const double var_x400 = var_x158 * var_x399; + const double var_x401 = 0.0001 * var_chaste_interface__Na_buffer__Na_jct_buf; + const double var_x402 = 7.3530178752050587e-13 * var_x207; + const double var_x403 = 0.001 + 0.0001 * var_chaste_interface__Na_buffer__Na_jct; + const double var_x404 = var_x394 * var_x63; + const double var_x405 = 0.076376893524206985 * NV_Ith_S(mParameters, 3); + const double var_x406 = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * NV_Ith_S(mParameters, 1); + const double var_x407 = 100 * var_chaste_interface__Ca_buffer__Ca_Calsequestrin; + const double var_x408 = var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); + const double var_x409 = var_x408 + 18.571428571428569 * NV_Ith_S(mParameters, 0); + const double var_x410 = 65 + 100 * var_chaste_interface__Ca_buffer__Ca_SR; + const double var_x411 = 31.054623038266147 * var_x378; + const double var_x412 = 5.5898321468879066 * var_x123 * var_x386; + const double var_x413 = 3.9661732781409111e-12 * var_x196; + const double var_x414 = 100 * var_chaste_interface__Ca_buffer__Ca_SLB_SL; + const double var_x415 = 100 * var_chaste_interface__Ca_buffer__Ca_SLHigh_SL; + const double var_x416 = 100 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x417 = 1.3 + var_x416; + const double var_x418 = 0.029999999999999999 + var_x416; + const double var_x419 = 1217.8283544418096 * var_x378; + const double var_x420 = 1972.8819341957317 * var_x386; + const double var_x421 = var_x145 * var_x420; + const double var_x422 = 4.9020119168033731e-13 * var_x207; + const double var_x423 = 68.627450980392155 * var_x408 + 1274.5098039215686 * NV_Ith_S(mParameters, 0); + const double var_x424 = 100 * var_chaste_interface__Ca_buffer__Ca_SLB_jct; + const double var_x425 = 100 * var_chaste_interface__Ca_buffer__Ca_SLHigh_jct; + const double var_x426 = 100 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x427 = 1.3 + var_x426; + const double var_x428 = 0.029999999999999999 + var_x426; + const double var_x429 = 0.025000000000000001 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; + const double var_x430 = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol - 0.030769230769230767 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL - 0.00078461538461538469 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + const double var_x431 = 100 * var_x430; + const double var_x432 = var_x429 * var_chaste_interface__Ca_buffer__Cai; + const double var_x433 = 0.025024999999999999 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; + const double var_x434 = var_x433 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x435 = 0.025490196078431372 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + const double var_x436 = var_x435 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x437 = 0.025000000000000001 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; + const double var_x438 = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol - 0.030769230769230767 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL - 0.00078461538461538469 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + const double var_x439 = 100 * var_x438; + const double var_x440 = var_x437 * var_chaste_interface__Ca_buffer__Cai; + const double var_x441 = 0.025024999999999999 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; + const double var_x442 = var_x441 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x443 = 0.025490196078431372 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + const double var_x444 = var_x443 * var_chaste_interface__Ca_buffer__Ca_jct; + + // Matrix entries + IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (-0.00054830000000000005 + var_x144 + var_x146 - var_x125 - var_x131 - var_x139 - var_x141 - var_x153 - var_x159 - NV_Ith_S(mParameters, 13) - 0.11 * var_x10 - 0.11 * var_x64 - 0.89000000000000001 * var_x14 - 0.89000000000000001 * var_x77 - 0.15619500000000003 * var_x111 - 1 * var_x21 - 0.01205875 / var_x1 - 0.019305000000000003 * var_x114 - 0.097566250000000007 / var_x3 - 0.21009999999999998 * var_x90 - 1.6999 * var_x93 - var_x105 * var_x107 - var_x4 * var_chaste_interface__Itos_X_gate__X_tos - var_x5 * var_chaste_interface__Itof_X_gate__X_tof - var_x15 * var_x18 * NV_Ith_S(mParameters, 19) * var_chaste_interface__IKr_Xr_gate__Xr - 9.1125000000000004e-8 * var_x106 * var_x132 * var_x136 * NV_Ith_S(mParameters, 5) - 0.4389381125701739 * var_x15 * var_x28 * var_x36 * NV_Ith_S(mParameters, 18) - 0.42189361069797565 * var_x28 * var_x80 * (-var_x31 * (0.061749999999999999 * var_x32 + 0.039456396800000001 * var_x33) + 0.24326999999999999 * var_x26 * var_x78 - 0.51429999999999998 * var_x29 * var_x34 / pow(var_x30, 2)) * NV_Ith_S(mParameters, 18) / pow((var_x28 + 0.98039215686274506 * var_x35), 2) + 0.10468673984798647 * var_x15 * var_x26 * var_x36 * var_x78 * var_x79 * NV_Ith_S(mParameters, 18) + 0.019211226915711394 * var_x15 * var_x16 * var_x79 * NV_Ith_S(mParameters, 19) * var_chaste_interface__IKr_Xr_gate__Xr / pow(var_x17, 2) + 1.215e-7 * var_x100 * var_x106 * var_x133 * var_x134 * var_x135 * var_x137 * var_x94 * var_x96 * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V); + IJth(rJacobian, 2, 0) = var_x260 * (var_x261 * var_x265 + var_x254 * var_x264 * (-var_x261 - var_x266) / pow(var_x262, 2)) + (1 * var_x261 + 1 * var_x266) * (var_x263 - var_chaste_interface__INa_h_gate__h + var_x254 * var_x265); + IJth(rJacobian, 3, 0) = var_x285 * (var_x286 * var_x288 + var_x264 * var_x284 * (-var_x286 - var_x289) / pow(var_x287, 2)) + (1 * var_x286 + 1 * var_x289) * (var_x263 - var_chaste_interface__INa_j_gate__j + var_x284 * var_x288); + IJth(rJacobian, 4, 0) = var_x296 * (var_x295 * var_x297 - var_x297 * var_x298 + 3.125 * var_x299 * var_x300 / pow((var_x300 + 0.25 * var_x293), 2)) - var_x299 * (-var_chaste_interface__INa_m_gate__m + 0.32000000000000001 * var_x292 * var_x294 * var_x297); + IJth(rJacobian, 5, 0) = (-var_chaste_interface__IKr_Xr_gate__Xr + 1 / var_x302) * (0.00060999999999999997 * var_x305 + 0.0013799999999999999 * var_x308 - 0.00016973999999999998 * var_x306 * var_x309 / pow(var_x307, 2) - 8.8449999999999995e-5 * var_x303 * var_x310 / pow(var_x304, 2)) + 0.13333333333333333 * var_x301 * var_x311 / pow(var_x302, 2); + IJth(rJacobian, 6, 0) = (-var_chaste_interface__IKs_Xs_gate__Xs + 1 / var_x313) * (0.00013100000000000001 * var_x316 + 7.1899999999999999e-5 * var_x319 - 8.9997000000000013e-6 * var_x314 * var_x320 / pow(var_x315, 2) - 1.0641199999999999e-5 * var_x317 * var_x320 / pow(var_x318, 2)) + 0.059880239520958084 * var_x312 * var_x321 / pow(var_x313, 2); + IJth(rJacobian, 7, 0) = var_x326 * var_x329 + 0.0074074074074074077 * var_x323 * (-var_x330 - var_chaste_interface__Itos_X_gate__X_tos) / (pow(var_x324, 2) * pow((0.055555555555555552 + var_x325), 2)); + IJth(rJacobian, 8, 0) = -var_x335 * var_x339 + 3.3333333333333335e-5 * var_x332 * var_x340 * (-var_x342 - var_chaste_interface__Itos_Y_gate__Y_tos) / pow((0.01 + var_x334), 2); + IJth(rJacobian, 9, 0) = -var_x339 * var_x343 + 3.5714285714285717e-5 * var_x332 * var_x340 * (-var_x342 - var_chaste_interface__Itos_R_gate__R_tos) / pow((0.07857142857142857 + var_x334), 2); + IJth(rJacobian, 10, 0) = var_x329 * var_x345 + 0.00063492063492063492 * var_x344 * (-var_x330 - var_chaste_interface__Itof_X_gate__X_tof) * var_chaste_interface__cell__V / pow((0.42857142857142855 + var_x344), 2); + IJth(rJacobian, 11, 0) = -var_x339 * var_x346 + 0.0050000000000000001 * var_x336 * var_x338 * (-var_x342 - var_chaste_interface__Itof_Y_gate__Y_tof) / pow((1 + var_x341), 2); + IJth(rJacobian, 12, 0) = -var_x349 * var_x352 * var_x354 + 0.035000000000000003 * var_x349 * var_x350 * var_x352 - var_x350 * var_x352 * var_x354 / pow(var_x348, 2) + 0.0058333333333333336 * var_x347 * var_x349 * var_x351 * var_x353; + IJth(rJacobian, 13, 0) = var_x356 * (0.029999999999999999 * var_x359 / pow(var_x360, 2) - 0.27777777777777779 * var_x357 / pow(var_x358, 2)) + var_x355 * (-0.032935010000000001 - 0.0022713799999999999 * var_chaste_interface__cell__V) * (-var_chaste_interface__ICaL_f_gate__f + 1 / var_x358 + 0.59999999999999998 / var_x360); + IJth(rJacobian, 19, 0) = -var_x380 * (0.00026433000000000001 + var_x153 + var_x203 + 2.6699999999999999 * var_x77 + 5.0996999999999995 * var_x93 + 0.46858500000000003 * var_x111); + IJth(rJacobian, 20, 0) = -var_x397 * (3.2670000000000004e-5 + var_x159 + var_x212 + 0.33000000000000002 * var_x64 + 0.63029999999999997 * var_x90 + 0.057915000000000008 * var_x114); + IJth(rJacobian, 25, 0) = -var_x411 * (0.00022365699999999999 + var_x125 + var_x141 - var_x144 - 1.78 * var_x77 - 0.31239000000000006 * var_x111); + IJth(rJacobian, 26, 0) = -var_x419 * (2.7642999999999999e-5 + var_x131 + var_x139 - var_x146 - 0.22 * var_x64 - 0.038610000000000005 * var_x114); + IJth(rJacobian, 1, 1) = -7.2523935948689155 + var_x228 + var_x229 + var_x230 + var_x241 + var_x242 + 6.3492962168146398e-7 * var_x240 - 5029484.9869235931 * var_x231 * var_x238; + IJth(rJacobian, 24, 1) = -1.1791550116941473e-5 * var_x240 + 93404721.185723871 * var_x231 * var_x235 * var_x236 * NV_Ith_S(mParameters, 2); + IJth(rJacobian, 25, 1) = 5.6417918332397381; + IJth(rJacobian, 32, 1) = 2.2890000000000006 - var_x228; + IJth(rJacobian, 33, 1) = 0.33180000000000004 - var_x241; + IJth(rJacobian, 35, 1) = 0.81600000000000006 - var_x229; + IJth(rJacobian, 36, 1) = 1.9320000000000004 - var_x242; + IJth(rJacobian, 38, 1) = 1.71 - var_x230; + IJth(rJacobian, 39, 1) = var_x429 * var_x431; + IJth(rJacobian, 42, 1) = var_x437 * var_x439; + IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x161 * var_x20 - var_x163 * var_x20); + IJth(rJacobian, 2, 2) = -var_x260; + IJth(rJacobian, 19, 2) = -var_x382 * var_x383; + IJth(rJacobian, 20, 2) = -var_x382 * var_x398; + IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x161 * var_x165 - var_x163 * var_x165); + IJth(rJacobian, 3, 3) = -var_x285; + IJth(rJacobian, 19, 3) = -var_x383 * var_x384; + IJth(rJacobian, 20, 3) = -var_x384 * var_x398; + IJth(rJacobian, 0, 4) = mSetVoltageDerivativeToZero ? 0.0 : (-0.33000000000000002 * var_x167 - 2.6699999999999999 * var_x168); + IJth(rJacobian, 4, 4) = -var_x296; + IJth(rJacobian, 19, 4) = -165.83168702434122 * var_x168 * var_x381; + IJth(rJacobian, 20, 4) = -803.76671393159438 * var_x167 * var_x381; + IJth(rJacobian, 0, 5) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x18 * var_x80 * NV_Ith_S(mParameters, 19)); + IJth(rJacobian, 5, 5) = -var_x311; + IJth(rJacobian, 0, 6) = mSetVoltageDerivativeToZero ? 0.0 : (-0.22 * var_x171 * var_x8 - 1.78 * var_x13 * var_x171); + IJth(rJacobian, 6, 6) = -var_x321; + IJth(rJacobian, 0, 7) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x4 * var_x79); + IJth(rJacobian, 7, 7) = -var_x326; + IJth(rJacobian, 0, 8) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x172); + IJth(rJacobian, 8, 8) = -var_x335; + IJth(rJacobian, 0, 9) = mSetVoltageDerivativeToZero ? 0.0 : (-0.5 * var_x172); + IJth(rJacobian, 9, 9) = -var_x343; + IJth(rJacobian, 0, 10) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x5 * var_x79); + IJth(rJacobian, 10, 10) = -var_x345; + IJth(rJacobian, 0, 11) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x79 * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof); + IJth(rJacobian, 11, 11) = -var_x346; + IJth(rJacobian, 0, 12) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x150 * var_x176 - var_x174 * var_x175 - var_x176 * var_x177 - var_x179 * var_x181 - var_x180 * var_x183); + IJth(rJacobian, 12, 12) = -0.035000000000000003 * var_x349 * var_x350 * var_x353; + IJth(rJacobian, 19, 12) = -var_x385 * var_x389; + IJth(rJacobian, 20, 12) = -var_x385 * var_x400; + IJth(rJacobian, 25, 12) = -var_x181 * var_x412; + IJth(rJacobian, 26, 12) = -var_x180 * var_x421; + IJth(rJacobian, 0, 13) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x150 * var_x186 - var_x175 * var_x185 - var_x177 * var_x186 - var_x179 * var_x188 - var_x183 * var_x187); + IJth(rJacobian, 13, 13) = -var_x356; + IJth(rJacobian, 19, 13) = -var_x389 * var_x390; + IJth(rJacobian, 20, 13) = -var_x390 * var_x400; + IJth(rJacobian, 25, 13) = -var_x188 * var_x412; + IJth(rJacobian, 26, 13) = -var_x187 * var_x421; + IJth(rJacobian, 0, 14) = mSetVoltageDerivativeToZero ? 0.0 : (1.2150000000000001e-8 * var_x190 + var_x119 * var_x179 + 6.7499999999999994e-10 * var_x148 * var_x189); + IJth(rJacobian, 14, 14) = -0.011900000000000001 - 1.7 * var_chaste_interface__Ca_buffer__Ca_SL; + IJth(rJacobian, 19, 14) = var_x103 * var_x148 * var_x388; + IJth(rJacobian, 25, 14) = var_x119 * var_x412; + IJth(rJacobian, 0, 15) = mSetVoltageDerivativeToZero ? 0.0 : (1.0935000000000001e-7 * var_x190 + 6.0749999999999998e-9 * var_x155 * var_x178 + var_x119 * var_x130 * var_x178); + IJth(rJacobian, 15, 15) = -0.011900000000000001 - 1.7 * var_chaste_interface__Ca_buffer__Ca_jct; + IJth(rJacobian, 20, 15) = var_x155 * var_x399; + IJth(rJacobian, 26, 15) = var_x119 * var_x129 * var_x420; + IJth(rJacobian, 16, 16) = -0.0050000000000000001 - var_x366 - var_x368; + IJth(rJacobian, 17, 16) = -var_x368; + IJth(rJacobian, 18, 16) = var_x368; + IJth(rJacobian, 16, 17) = -0.0050000000000000001; + IJth(rJacobian, 17, 17) = -0.065000000000000002 - var_x368; + IJth(rJacobian, 18, 17) = 0.0050000000000000001; + IJth(rJacobian, 16, 18) = 0.055; + IJth(rJacobian, 17, 18) = var_x366 - var_x368; + IJth(rJacobian, 18, 18) = -0.059999999999999998 - var_x366; + IJth(rJacobian, 24, 18) = -var_x406; + IJth(rJacobian, 26, 18) = 68.627450980392155 * var_x406; + IJth(rJacobian, 0, 19) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x204 - 2.6699999999999999 * var_x199 - 0.00046442182911003347 * var_x201 - var_x194 * var_x197); + IJth(rJacobian, 19, 19) = (-2.5101556644976917 + var_x391 - var_x379 * (var_x204 + 8.0099999999999998 * var_x199 + 0.0013932654873301004 * var_x201 + var_x194 * var_x392)) * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 20, 19) = 1.0879068612142859 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 21, 19) = 0.000165 - var_x391; + IJth(rJacobian, 23, 19) = var_x405; + IJth(rJacobian, 25, 19) = -var_x411 * (-5.3399999999999999 * var_x199 - var_x194 * var_x413); + IJth(rJacobian, 0, 20) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x213 - 0.33000000000000002 * var_x209 - 5.7400450788880541e-5 * var_x210 - var_x206 * var_x208); + IJth(rJacobian, 19, 20) = 0.02774162496096429 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 20, 20) = (-1.0886629612142857 + var_x401 - var_x396 * (var_x213 + 0.98999999999999999 * var_x209 + 0.00017220135236664162 * var_x210 + var_x206 * var_x402)) * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 22, 20) = 0.0007561 - var_x401; + IJth(rJacobian, 26, 20) = -var_x419 * (-0.66000000000000003 * var_x209 - var_x206 * var_x422); + IJth(rJacobian, 19, 21) = var_x393 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 21, 21) = -var_x393; + IJth(rJacobian, 20, 22) = var_x403 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 22, 22) = -var_x403; + IJth(rJacobian, 0, 23) = mSetVoltageDerivativeToZero ? 0.0 : (-0.0020162999999999999 * var_x10 * var_x214 - 0.0163137 * var_x14 * var_x214); + IJth(rJacobian, 19, 23) = 2.4822490395367272 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 23, 23) = -var_x405; + IJth(rJacobian, 1, 24) = 0.69232869146389786 * var_x244 + 8.7400597733819945e-14 * var_x245; + IJth(rJacobian, 16, 24) = -var_x372 + 2.3772197685794643 * var_x361 * var_x362 * var_x369 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R; + IJth(rJacobian, 17, 24) = -var_x375 + var_x371 * var_x376; + IJth(rJacobian, 18, 24) = var_x372 + var_x375; + IJth(rJacobian, 24, 24) = -260 + var_x407 - var_x409 - 1.6231539579137989e-12 * var_x245 - 12.857532841472388 * var_x244; + IJth(rJacobian, 26, 24) = var_x423; + IJth(rJacobian, 31, 24) = 260 - var_x407; + IJth(rJacobian, 0, 25) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x222 - 4.4795166719999994e-11 * var_x217 - var_x197 * var_x219 - 0.0097566250000000014 * var_x215 / (pow(var_x3, 2) * pow(var_chaste_interface__Ca_buffer__Ca_SL, 2)) - 0.28183333333333332 * var_x11 * var_x2 * var_x216 / pow(var_x12, 2) + 0.89000000000000001 * var_x45 * var_x46 * var_x57 * var_x59 * var_x72 * var_x74 * NV_Ith_S(mParameters, 22)); + IJth(rJacobian, 1, 25) = 0.17359359486891501; + IJth(rJacobian, 14, 25) = 1.7 - 1.7 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL; + IJth(rJacobian, 19, 25) = -var_x380 * (1.3438550016e-10 * var_x217 - 2.6699999999999999 * var_x395 + var_x219 * var_x392); + IJth(rJacobian, 25, 25) = -171.99023312516786 + var_x414 + var_x415 - var_x411 * (var_x222 + 1.78 * var_x395 - 8.9590333439999989e-11 * var_x217 - var_x219 * var_x413); + IJth(rJacobian, 26, 25) = 48.958482036396518; + IJth(rJacobian, 27, 25) = 121.55000000000001 - var_x414; + IJth(rJacobian, 29, 25) = 43.550000000000004 - var_x415; + IJth(rJacobian, 40, 25) = var_x431 * var_x433; + IJth(rJacobian, 43, 25) = var_x439 * var_x441; + IJth(rJacobian, 0, 26) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x227 - 5.5364812799999996e-12 * var_x225 - var_x208 * var_x224 - 0.0012058750000000001 * var_x215 / (pow(var_x1, 2) * var_x223) - 0.034833333333333334 * var_x0 * var_x216 * var_x6 / pow(var_x7, 2) + 0.11 * var_x45 * var_x46 * var_x53 * var_x55 * var_x57 * var_x59 * NV_Ith_S(mParameters, 22)); + IJth(rJacobian, 15, 26) = 1.7 - 1.7 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct; + IJth(rJacobian, 16, 26) = -var_x374 - var_x365 * var_chaste_interface__Jrel_SR__R; + IJth(rJacobian, 17, 26) = var_x377 + var_x373 * var_x376 * var_chaste_interface__Ca_buffer__Ca_jct; + IJth(rJacobian, 18, 26) = var_x374 - var_x377; + IJth(rJacobian, 20, 26) = -var_x397 * (1.6609443839999999e-11 * var_x225 - 0.33000000000000002 * var_x404 + var_x224 * var_x402); + IJth(rJacobian, 24, 26) = var_x409; + IJth(rJacobian, 25, 26) = 1.2484412919281114; + IJth(rJacobian, 26, 26) = -128.61534478149457 + var_x424 + var_x425 - var_x423 - var_x419 * (var_x227 + 0.22 * var_x404 - 1.1072962559999999e-11 * var_x225 - var_x224 * var_x422); + IJth(rJacobian, 28, 26) = 58.627450980392155 - var_x424; + IJth(rJacobian, 30, 26) = 21.029411764705884 - var_x425; + IJth(rJacobian, 41, 26) = var_x431 * var_x435; + IJth(rJacobian, 44, 26) = var_x439 * var_x443; + IJth(rJacobian, 25, 27) = var_x417; + IJth(rJacobian, 27, 27) = -var_x417; + IJth(rJacobian, 26, 28) = var_x427; + IJth(rJacobian, 28, 28) = -var_x427; + IJth(rJacobian, 25, 29) = var_x418; + IJth(rJacobian, 29, 29) = -var_x418; + IJth(rJacobian, 26, 30) = var_x428; + IJth(rJacobian, 30, 30) = -var_x428; + IJth(rJacobian, 24, 31) = var_x410; + IJth(rJacobian, 31, 31) = -var_x410; + IJth(rJacobian, 1, 32) = var_x246; + IJth(rJacobian, 32, 32) = -var_x246; + IJth(rJacobian, 1, 33) = 0.003032 + var_x247; + IJth(rJacobian, 33, 33) = -3.1999999999999999e-5 - var_x247; + IJth(rJacobian, 34, 33) = -0.0030000000000000001; + IJth(rJacobian, 1, 34) = 0.0063300000000000006 + var_x247; + IJth(rJacobian, 33, 34) = -var_x247; + IJth(rJacobian, 34, 34) = -0.0063300000000000006; + IJth(rJacobian, 1, 35) = var_x248; + IJth(rJacobian, 35, 35) = -var_x248; + IJth(rJacobian, 1, 36) = 0.016159999999999997 + var_x249; + IJth(rJacobian, 36, 36) = -0.00046000000000000001 - var_x249; + IJth(rJacobian, 37, 36) = -0.015699999999999999; + IJth(rJacobian, 1, 37) = 0.015757 + var_x249; + IJth(rJacobian, 36, 37) = -var_x249; + IJth(rJacobian, 37, 37) = -0.015757; + IJth(rJacobian, 1, 38) = var_x251; + IJth(rJacobian, 38, 38) = -var_x251; + IJth(rJacobian, 39, 39) = -0.059999999999999998 - var_x250 * var_x429 - var_x250 * var_x430; + IJth(rJacobian, 40, 39) = -var_x416 * var_x433; + IJth(rJacobian, 41, 39) = -var_x426 * var_x435; + IJth(rJacobian, 39, 40) = -3.0769230769230771 * var_x432; + IJth(rJacobian, 40, 40) = -0.059999999999999998 - 3.0769230769230771 * var_x434 - var_x416 * var_x430; + IJth(rJacobian, 41, 40) = -3.0769230769230771 * var_x436; + IJth(rJacobian, 39, 41) = -0.078461538461538471 * var_x432; + IJth(rJacobian, 40, 41) = -0.078461538461538471 * var_x434; + IJth(rJacobian, 41, 41) = -0.059999999999999998 - 0.078461538461538471 * var_x436 - var_x426 * var_x430; + IJth(rJacobian, 42, 42) = -0.11 - var_x250 * var_x437 - var_x250 * var_x438; + IJth(rJacobian, 43, 42) = -var_x416 * var_x441; + IJth(rJacobian, 44, 42) = -var_x426 * var_x443; + IJth(rJacobian, 42, 43) = -3.0769230769230771 * var_x440; + IJth(rJacobian, 43, 43) = -0.11 - 3.0769230769230771 * var_x442 - var_x416 * var_x438; + IJth(rJacobian, 44, 43) = -3.0769230769230771 * var_x444; + IJth(rJacobian, 42, 44) = -0.078461538461538471 * var_x440; + IJth(rJacobian, 43, 44) = -0.078461538461538471 * var_x442; + IJth(rJacobian, 44, 44) = -0.11 - 0.078461538461538471 * var_x444 - var_x426 * var_x438; + } + + N_Vector Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + + // Mathematics + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jrel_SR__j_rel_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); // millimolar_per_millisecond + const double var_ICaL_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-0.23877882250000002 * pow((1 + 0.068965517241379309 * var_chaste_interface__cell__V), 2))); // millisecond + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 16) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 16)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 16))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 16) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__tau_h = 1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 16)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 16) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 16)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 16) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 16) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 16) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 16) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__tau_j = 1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // millisecond + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Cm_converted = 1000000 * var_model_parameters__Cm; // uF + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(23, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(23); +#endif + NV_Ith_S(dqs, 0) = var_Jrel_SR__j_rel_SR; + NV_Ith_S(dqs, 1) = var_reversal_potentials__E_Cl; + NV_Ith_S(dqs, 2) = var_ICaL__i_CaL_converted; + NV_Ith_S(dqs, 3) = var_ICaL_fCa_gate__fCa_SL; + NV_Ith_S(dqs, 4) = var_ICaL_f_gate__tau_f; + NV_Ith_S(dqs, 5) = var_ICab__i_Cab_converted; + NV_Ith_S(dqs, 6) = var_IClb__i_Clb_converted; + NV_Ith_S(dqs, 7) = var_INab__i_Nab_converted; + NV_Ith_S(dqs, 8) = var_ICap__i_Cap_converted; + NV_Ith_S(dqs, 9) = var_model_parameters__Cm_converted; + NV_Ith_S(dqs, 10) = var_INa__i_Na_converted; + NV_Ith_S(dqs, 11) = var_INa_h_gate__tau_h; + NV_Ith_S(dqs, 12) = var_INa_j_gate__tau_j; + NV_Ith_S(dqs, 13) = var_Itof__i_tof_converted; + NV_Ith_S(dqs, 14) = var_IK1__i_K1_converted; + NV_Ith_S(dqs, 15) = var_IK1__G_K1; + NV_Ith_S(dqs, 16) = var_IKr__i_Kr_converted; + NV_Ith_S(dqs, 17) = var_IKs__i_Ks_converted; + NV_Ith_S(dqs, 18) = var_Itos__i_tos_converted; + NV_Ith_S(dqs, 19) = var_INaCa__i_NaCa_converted; + NV_Ith_S(dqs, 20) = var_cell__i_Stim_converted; + NV_Ith_S(dqs, 21) = var_reversal_potentials__E_K; + NV_Ith_S(dqs, 22) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "shannon_wang_puglisi_weber_bers_2004_model_updated"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-85.721630473733); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.6504944644883e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.98714602875678); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.991826348770428); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0013702407736465); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("IKr_Xr_gate__Xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00846906175020028); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("IKs_Xs_gate__Xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00613557812033723); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("Itos_X_gate__X_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401072468238921); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("Itos_Y_gate__Y_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.31555225368514); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("Itos_R_gate__R_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.402577243036347); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("Itof_X_gate__X_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401068798369438); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("Itof_Y_gate__Y_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.994632857675454); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.99526086177479e-06); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.00067601563206); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_SL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0150193299768419); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_jct"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0244048782575591); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("Jrel_SR__R"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.890917121306535); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("Jrel_SR__I"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.71752603681652e-08); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("Jrel_SR__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.1199533741995e-07); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87161932058707); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87031835089116); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("Na_buffer__Na_SL_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.77606800956492); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("Na_buffer__Na_jct_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(3.55668431730337); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87200572571131); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.547125831028543); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000104971310105451); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000174045152623969); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00973710481246467); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00774564218017916); + + // NV_Ith_S(rY, 29): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.113168405274355); + + // NV_Ith_S(rY, 30): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0772568134367606); + + // NV_Ith_S(rY, 31): + this->mVariableNames.push_back("Ca_buffer__Ca_Calsequestrin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.18828527890062); + + // NV_Ith_S(rY, 32): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00886665040283094); + + // NV_Ith_S(rY, 33): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.117873278193472); + + // NV_Ith_S(rY, 34): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0103906683506505); + + // NV_Ith_S(rY, 35): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Calmodulin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000293073957804278); + + // NV_Ith_S(rY, 36): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00195899238146509); + + // NV_Ith_S(rY, 37): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.137523520981802); + + // NV_Ith_S(rY, 38): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_SRB"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00215728901718264); + + // NV_Ith_S(rY, 39): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 40): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 41): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 42): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 43): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 44): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("cytosolic_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[9]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[10]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[11]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kilomole_kelvin"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("litre_per_farad_millisecond"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_background_chloride_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[22]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[23]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mDerivedQuantityUnits.push_back("dimensionless"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_background_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_background_chloride_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_background_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode(pSolver, pStimulus); + } + +} +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004--sympy_1_14.cpp new file mode 100644 index 00000000..6ec2a494 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Cvode_with_jacobian/dynamic_Shannon2004--sympy_1_14.cpp @@ -0,0 +1,2163 @@ +#ifdef CHASTE_CVODE +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: shannon_wang_puglisi_weber_bers_2004_model_updated +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: AnalyticCvode) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_Shannon2004.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#if CHASTE_SUNDIALS_VERSION >= 60000 +#include "CvodeContextManager.hpp" +#endif + +#include "ModelFactory.hpp" + +AbstractCvodeCell* Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode(p_solver, p_stimulus); +} + +bool Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::registered = ModelFactory::Register("dynamic_Shannon2004", "AnalyticCvode", (ModelFactory::TCreateMethod)Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::CreateMethod); + + + + boost::shared_ptr Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -9.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 5; // millisecond + const double var_chaste_interface__cell__stim_period = 1000; // millisecond + const double var_chaste_interface__cell__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + double Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::GetIntracellularCalciumConcentration() + { + return NV_Ith_S(mStateVariables, 1); + } + + Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode(boost::shared_ptr pOdeSolver /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractCvodeCell( + pOdeSolver, + 45, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + mUseAnalyticJacobian = true; + mHasAnalyticJacobian = true; + + NV_Ith_S(this->mParameters, 0) = 5.3480000000000003e-6; // (var_Jleak_SR__KSRleak) [per_millisecond] + NV_Ith_S(this->mParameters, 1) = 25; // (var_Jrel_SR__ks) [per_millisecond] + NV_Ith_S(this->mParameters, 2) = 0.00028600000000000001; // (var_Jpump_SR__V_max) [millimolar_per_millisecond] + NV_Ith_S(this->mParameters, 3) = 1; // (var_Na_buffer__conc_clamp) [dimensionless] + NV_Ith_S(this->mParameters, 4) = 15; // (var_model_parameters__Cli) [millimolar] + NV_Ith_S(this->mParameters, 5) = 135; // (var_model_parameters__Ki) [millimolar] + NV_Ith_S(this->mParameters, 6) = 1.8; // (var_model_parameters__Cao) [millimolar] + NV_Ith_S(this->mParameters, 7) = 150; // (var_model_parameters__Clo) [millimolar] + NV_Ith_S(this->mParameters, 8) = 5.4000000000000004; // (var_model_parameters__Ko) [millimolar] + NV_Ith_S(this->mParameters, 9) = 140; // (var_model_parameters__Nao) [millimolar] + NV_Ith_S(this->mParameters, 10) = 96486.699999999997; // (var_model_parameters__F) [coulomb_per_mole] + NV_Ith_S(this->mParameters, 11) = 8314.2999999999993; // (var_model_parameters__R) [joule_per_kilomole_kelvin] + NV_Ith_S(this->mParameters, 12) = 0.00054000000000000001; // (var_ICaL__PCa) [litre_per_farad_millisecond] + NV_Ith_S(this->mParameters, 13) = 0.0089999999999999993; // (var_IClb__G_ClBk) [milliS_per_microF] + NV_Ith_S(this->mParameters, 14) = 16; // (var_INa__G_INa) [milliS_per_microF] + NV_Ith_S(this->mParameters, 15) = 0; // (var_INa__perc_reduced_inact_for_IpNa) [dimensionless] + NV_Ith_S(this->mParameters, 16) = 0; // (var_INa__shift_INa_inact) [millivolt] + NV_Ith_S(this->mParameters, 17) = 0.02; // (var_Itof__G_tof) [milliS_per_microF] + NV_Ith_S(this->mParameters, 18) = 0.90000000000000002; // (var_IK1__G_K1_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 19) = 0.029999999999999999; // (var_IKr__G_IKr_const) [milliS_per_microF] + NV_Ith_S(this->mParameters, 20) = 0.070000000000000007; // (var_IKs__G_Ks_max) [milliS_per_microF] + NV_Ith_S(this->mParameters, 21) = 0.059999999999999998; // (var_Itos__G_tos) [milliS_per_microF] + NV_Ith_S(this->mParameters, 22) = 9; // (var_INaCa__V_max) [microA_per_microF] + NV_Ith_S(this->mParameters, 23) = 310; // (var_model_parameters__T) [kelvin] + } + + Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::~Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode() + { + } + + + void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::VerifyStateVariables() + { + + const double tol = 100*this->mAbsTol; + N_Vector rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 45; i++) + { + if(std::isnan(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(NV_Ith_S(rY, i))){ + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) < -tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && NV_Ith_S(rY, i) > 1 + tol) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + N_Vector rY; + bool made_new_cvode_vector = false; + if (!pStateVariables) + { + rY = rGetStateVariables(); + } + else + { + made_new_cvode_vector = true; + rY = MakeNVector(*pStateVariables); + } + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_ICl_Ca__i_Cl_Ca + HeartConfig::Instance()->GetCapacitance() * var_INaK__i_NaK + var_ICaL__i_CaL_converted + var_ICab__i_Cab_converted + var_ICap__i_Cap_converted + var_IClb__i_Clb_converted + var_IK1__i_K1_converted + var_IKr__i_Kr_converted + var_IKs__i_Ks_converted + var_INa__i_Na_converted + var_INaCa__i_NaCa_converted + var_INab__i_Nab_converted + var_Itof__i_tof_converted + var_Itos__i_tos_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + if (made_new_cvode_vector) + { + DeleteVector(rY); + } + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::EvaluateYDerivatives(double var_chaste_interface__environment__time, const N_Vector rY, N_Vector rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__Ca_buffer__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 8.6504944644883e-05 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__R = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.890917121306535 + double var_chaste_interface__Jrel_SR__I = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 8.71752603681652e-08 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Na_SL_buf = NV_Ith_S(rY, 21); + // Units: millimolar; Initial value: 0.77606800956492 + double var_chaste_interface__Na_buffer__Na_jct_buf = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 3.55668431730337 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + double var_chaste_interface__Ca_buffer__Ca_SLB_SL = NV_Ith_S(rY, 27); + // Units: millimolar; Initial value: 0.00973710481246467 + double var_chaste_interface__Ca_buffer__Ca_SLB_jct = NV_Ith_S(rY, 28); + // Units: millimolar; Initial value: 0.00774564218017916 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_SL = NV_Ith_S(rY, 29); + // Units: millimolar; Initial value: 0.113168405274355 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_jct = NV_Ith_S(rY, 30); + // Units: millimolar; Initial value: 0.0772568134367606 + double var_chaste_interface__Ca_buffer__Ca_Calsequestrin = NV_Ith_S(rY, 31); + // Units: millimolar; Initial value: 1.18828527890062 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC = NV_Ith_S(rY, 32); + // Units: millimolar; Initial value: 0.00886665040283094 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = NV_Ith_S(rY, 33); + // Units: millimolar; Initial value: 0.117873278193472 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = NV_Ith_S(rY, 34); + // Units: millimolar; Initial value: 0.0103906683506505 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin = NV_Ith_S(rY, 35); + // Units: millimolar; Initial value: 0.000293073957804278 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin = NV_Ith_S(rY, 36); + // Units: millimolar; Initial value: 0.00195899238146509 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin = NV_Ith_S(rY, 37); + // Units: millimolar; Initial value: 0.137523520981802 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB = NV_Ith_S(rY, 38); + // Units: millimolar; Initial value: 0.00215728901718264 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = NV_Ith_S(rY, 39); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = NV_Ith_S(rY, 40); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = NV_Ith_S(rY, 41); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = NV_Ith_S(rY, 42); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = NV_Ith_S(rY, 43); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = NV_Ith_S(rY, 44); + // Units: millimolar; Initial value: 0.0 + + // Mathematics + double d_dt_chaste_interface_var_cell__V; + const double var_Ca_buffer__Bmax_Calsequestrin = 0.14000000000000001; // millimolar + const double var_Ca_buffer__Bmax_SLB_SL = 0.037400000000000003; // millimolar + const double var_Ca_buffer__Bmax_SLB_jct = 0.0045999999999999999; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_SL = 0.0134; // millimolar + const double var_Ca_buffer__Bmax_SLHigh_jct = 0.00165; // millimolar + const double var_Ca_buffer__koff_Calsequestrin = 65; // per_millisecond + const double var_Ca_buffer__koff_SLB = 1.3; // per_millisecond + const double var_Ca_buffer__koff_SLHigh = 0.029999999999999999; // per_millisecond + const double var_Ca_buffer__kon_Calsequestrin = 100; // per_millimolar_per_millisecond + const double var_Ca_buffer__kon_SL = 100; // per_millimolar_per_millisecond + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL) * var_chaste_interface__Ca_buffer__Ca_SL; // 1 / millisecond + const double d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct = -0.011900000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct + 1.7 * (1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct) * var_chaste_interface__Ca_buffer__Ca_jct; // 1 / millisecond + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INaK__Fx_NaK_SL = 0.89000000000000001; // dimensionless + const double var_INaK__Fx_NaK_jct = 0.11; // dimensionless + const double var_INaK__H_NaK = 4; // dimensionless + const double var_INaK__I_NaK_max = 1.9099999999999999; // microA_per_microF + const double var_INaK__Km_Ko = 1.5; // millimolar + const double var_INaK__Km_Nai = 11; // millimolar + const double var_INaK__Q10_Km_Nai = 1.49; // dimensionless + const double var_INaK__Q10_NaK = 1.6299999999999999; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jleak_SR__j_leak_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * NV_Ith_S(mParameters, 0); // millimolar_per_millisecond + const double var_Jpump_SR__H = 1.7869999999999999; // dimensionless + const double var_Jpump_SR__Kmf = 0.00024600000000000002; // millimolar + const double var_Jpump_SR__Kmr = 1.7; // millimolar + const double var_Jpump_SR__Q10_SRCaP = 2.6000000000000001; // dimensionless + const double var_Jrel_SR__EC50_SR = 0.45000000000000001; // millimolar + const double var_Jrel_SR__HSR = 2.5; // dimensionless + const double var_Jrel_SR__Max_SR = 15; // dimensionless + const double var_Jrel_SR__Min_SR = 1; // dimensionless + const double var_Jrel_SR__RI = 1 - var_chaste_interface__Jrel_SR__I - var_chaste_interface__Jrel_SR__O - var_chaste_interface__Jrel_SR__R; // dimensionless + const double var_Jrel_SR__kCaSR = -(-var_Jrel_SR__Min_SR + var_Jrel_SR__Max_SR) / (1 + pow((var_Jrel_SR__EC50_SR / var_chaste_interface__Ca_buffer__Ca_SR), var_Jrel_SR__HSR)) + var_Jrel_SR__Max_SR; // dimensionless + const double var_Jrel_SR__kiCa = 0.5; // per_millimolar_per_millisecond + const double var_Jrel_SR__kiSRCa = var_Jrel_SR__kCaSR * var_Jrel_SR__kiCa; // per_millimolar_per_millisecond + const double var_Jrel_SR__kim = 0.0050000000000000001; // per_millisecond + const double var_Jrel_SR__koCa = 10; // per_millimolar2_per_millisecond + const double var_Jrel_SR__koSRCa = var_Jrel_SR__koCa / var_Jrel_SR__kCaSR; // per_millimolar2_per_millisecond + const double var_Jrel_SR__kom = 0.059999999999999998; // per_millisecond + const double d_dt_chaste_interface_var_Jrel_SR__I = -var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_Jrel_SR__RI * var_Jrel_SR__koSRCa + var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__O = var_chaste_interface__Jrel_SR__I * var_Jrel_SR__kim - var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double d_dt_chaste_interface_var_Jrel_SR__R = var_chaste_interface__Jrel_SR__O * var_Jrel_SR__kom + var_Jrel_SR__RI * var_Jrel_SR__kim - pow(var_chaste_interface__Ca_buffer__Ca_jct, 2) * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__koSRCa - var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R * var_Jrel_SR__kiSRCa; // 1 / millisecond + const double var_Jrel_SR__j_rel_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); // millimolar_per_millisecond + const double var_Na_buffer__Bmax_SL = 1.6499999999999999; // millimolar + const double var_Na_buffer__Bmax_jct = 7.5609999999999999; // millimolar + const double var_Na_buffer__koff = 0.001; // per_millisecond + const double var_Na_buffer__kon = 0.0001; // per_millimolar_per_millisecond + const double var_Na_buffer__dNa_SL_buf = -var_chaste_interface__Na_buffer__Na_SL_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_SL_buf + var_Na_buffer__Bmax_SL) * var_chaste_interface__Na_buffer__Na_SL * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_SL_buf = var_Na_buffer__dNa_SL_buf; // millimolar / millisecond + const double var_Na_buffer__dNa_jct_buf = -var_chaste_interface__Na_buffer__Na_jct_buf * var_Na_buffer__koff + (-var_chaste_interface__Na_buffer__Na_jct_buf + var_Na_buffer__Bmax_jct) * var_chaste_interface__Na_buffer__Na_jct * var_Na_buffer__kon; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Na_buffer__Na_jct_buf = var_Na_buffer__dNa_jct_buf; // millimolar / millisecond + const double var_ICaL_d_gate__d_infinity = 1 / (1 + exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_d_gate__tau_d = 28.571428571428569 * (1 - exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V)) * var_ICaL_d_gate__d_infinity / (14.5 + var_chaste_interface__cell__V); // millisecond + const double d_dt_chaste_interface_var_ICaL_d_gate__d = (-var_chaste_interface__ICaL_d_gate__d + var_ICaL_d_gate__d_infinity) / var_ICaL_d_gate__tau_d; // 1 / millisecond + const double var_ICaL_f_gate__f_infinity = 1 / (1 + exp(9.7388888888888889 + 0.27777777777777779 * var_chaste_interface__cell__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-pow((0.48865000000000003 + 0.033700000000000001 * var_chaste_interface__cell__V), 2))); // millisecond + const double d_dt_chaste_interface_var_ICaL_f_gate__f = (-var_chaste_interface__ICaL_f_gate__f + var_ICaL_f_gate__f_infinity) / var_ICaL_f_gate__tau_f; // 1 / millisecond + const double var_IKr_Xr_gate__Xr_infinity = 1 / (1 + exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr_Xr_gate__tau_Xr = 1 / (0.00060999999999999997 * (10 + var_chaste_interface__cell__V) / (-1 + exp(1.45 + 0.14499999999999999 * var_chaste_interface__cell__V)) + 0.0013799999999999999 * (7 + var_chaste_interface__cell__V) / (1 - exp(-0.86099999999999999 - 0.123 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKr_Xr_gate__Xr = (-var_chaste_interface__IKr_Xr_gate__Xr + var_IKr_Xr_gate__Xr_infinity) / var_IKr_Xr_gate__tau_Xr; // 1 / millisecond + const double var_IKs_Xs_gate__Xs_infinity = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKs_Xs_gate__tau_Xs = 1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))); // millisecond + const double d_dt_chaste_interface_var_IKs_Xs_gate__Xs = (-var_chaste_interface__IKs_Xs_gate__Xs + var_IKs_Xs_gate__Xs_infinity) / var_IKs_Xs_gate__tau_Xs; // 1 / millisecond + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 16) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 16)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 16))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 16) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__h_infinity = 0.01 * NV_Ith_S(mParameters, 15) + (1 - 0.01 * NV_Ith_S(mParameters, 15)) * var_INa_h_gate__alpha_h / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // dimensionless + const double var_INa_h_gate__tau_h = 1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // millisecond + const double d_dt_chaste_interface_var_INa_h_gate__h = (-var_chaste_interface__INa_h_gate__h + var_INa_h_gate__h_infinity) / var_INa_h_gate__tau_h; // 1 / millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 16)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 16) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 16)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 16) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 16) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 16) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 16) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__j_infinity = 0.01 * NV_Ith_S(mParameters, 15) + (1 - 0.01 * NV_Ith_S(mParameters, 15)) * var_INa_j_gate__alpha_j / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // dimensionless + const double var_INa_j_gate__tau_j = 1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // millisecond + const double d_dt_chaste_interface_var_INa_j_gate__j = (-var_chaste_interface__INa_j_gate__j + var_INa_j_gate__j_infinity) / var_INa_j_gate__tau_j; // 1 / millisecond + const double var_INa_m_gate__alpha_m = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__cell__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_millisecond + const double var_INa_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__cell__V); // per_millisecond + const double var_INa_m_gate__m_infinity = var_INa_m_gate__alpha_m / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // dimensionless + const double var_INa_m_gate__tau_m = 1 / (var_INa_m_gate__alpha_m + var_INa_m_gate__beta_m); // millisecond + const double d_dt_chaste_interface_var_INa_m_gate__m = (-var_chaste_interface__INa_m_gate__m + var_INa_m_gate__m_infinity) / var_INa_m_gate__tau_m; // 1 / millisecond + const double var_Itof_X_gate__X_tof_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_X_gate__tau_X_tof = 1.5 + 3.5 * exp(-0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2)); // millisecond + const double d_dt_chaste_interface_var_Itof_X_gate__X_tof = (-var_chaste_interface__Itof_X_gate__X_tof + var_Itof_X_gate__X_tof_infinity) / var_Itof_X_gate__tau_X_tof; // 1 / millisecond + const double var_Itof_Y_gate__Y_tof_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itof_Y_gate__tau_Y_tof = 20 + 20 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itof_Y_gate__Y_tof = (-var_chaste_interface__Itof_Y_gate__Y_tof + var_Itof_Y_gate__Y_tof_infinity) / var_Itof_Y_gate__tau_Y_tof; // 1 / millisecond + const double var_Itos_R_gate__R_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_R_gate__tau_R_tos = 220 + 2800 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_R_gate__R_tos = (-var_chaste_interface__Itos_R_gate__R_tos + var_Itos_R_gate__R_tos_infinity) / var_Itos_R_gate__tau_R_tos; // 1 / millisecond + const double var_Itos_X_gate__X_tos_infinity = 1 / (1 + exp(-0.20000000000000001 - 0.066666666666666666 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_X_gate__tau_X_tos = 0.5 + 9 / (1 + exp(0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_X_gate__X_tos = (-var_chaste_interface__Itos_X_gate__X_tos + var_Itos_X_gate__X_tos_infinity) / var_Itos_X_gate__tau_X_tos; // 1 / millisecond + const double var_Itos_Y_gate__Y_tos_infinity = 1 / (1 + exp(3.3500000000000001 + 0.10000000000000001 * var_chaste_interface__cell__V)); // dimensionless + const double var_Itos_Y_gate__tau_Y_tos = 30 + 3000 / (1 + exp(6 + 0.10000000000000001 * var_chaste_interface__cell__V)); // millisecond + const double d_dt_chaste_interface_var_Itos_Y_gate__Y_tos = (-var_chaste_interface__Itos_Y_gate__Y_tos + var_Itos_Y_gate__Y_tos_infinity) / var_Itos_Y_gate__tau_Y_tos; // 1 / millisecond + const double var_cytosolic_Ca_buffer__Bmax_Calmodulin = 0.024; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_Myosin_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_SRB = 0.017100000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC = 0.070000000000000007; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg = 0.14000000000000001; // millimolar + const double var_cytosolic_Ca_buffer__koff_Calmodulin = 0.23799999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Ca = 0.00046000000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_Myosin_Mg = 5.7000000000000003e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_SRB = 0.059999999999999998; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC = 0.019599999999999999; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca = 3.1999999999999999e-5; // per_millisecond + const double var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg = 0.0033300000000000001; // per_millisecond + const double var_cytosolic_Ca_buffer__kon_Calmodulin = 34; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Calmodulin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin * var_cytosolic_Ca_buffer__koff_Calmodulin + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin + var_cytosolic_Ca_buffer__Bmax_Calmodulin) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Calmodulin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin = var_cytosolic_Ca_buffer__dCa_Calmodulin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Ca = 13.800000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_Myosin_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin = var_cytosolic_Ca_buffer__dCa_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_Myosin_Mg = 0.015699999999999999; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__kon_SRB = 100; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_SRB = -var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB * var_cytosolic_Ca_buffer__koff_SRB + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB + var_cytosolic_Ca_buffer__Bmax_SRB) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_SRB; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB = var_cytosolic_Ca_buffer__dCa_SRB; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC = 32.700000000000003; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC * var_cytosolic_Ca_buffer__koff_TroponinC + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC + var_cytosolic_Ca_buffer__Bmax_TroponinC) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC = var_cytosolic_Ca_buffer__dCa_TroponinC; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca = 2.3700000000000001; // per_millimolar_per_millisecond + const double var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Ca + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Ca) * var_chaste_interface__Ca_buffer__Cai * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Ca; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg = 0.0030000000000000001; // per_millimolar_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol = 0.025000000000000001; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL = 0.00076999999999999996; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct = 2.0000000000000002e-5; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1 = 0; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 = 0.11; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 = 0.059999999999999998; // per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3 = 100; // per_millimolar2_per_millisecond + const double var_indo_fluo_Ca_buffer_not_connected__kon_Indo1 = 100; // per_millimolar2_per_millisecond + const double var_ion_diffusion__J_Ca_SL_cytosol = 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Ca_SL - 3.7243000000000002e-12 * var_chaste_interface__Ca_buffer__Cai; // millimole_per_millisecond + const double var_ion_diffusion__J_Ca_jct_SL = 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_jct - 8.2413000000000004e-13 * var_chaste_interface__Ca_buffer__Ca_SL; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_SL_cytosol = 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Na_SL - 1.6385999999999999e-12 * var_chaste_interface__Na_buffer__Nai; // millimole_per_millisecond + const double var_ion_diffusion__J_Na_jct_SL = 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_jct - 1.8312999999999999e-14 * var_chaste_interface__Na_buffer__Na_SL; // millimole_per_millisecond + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_model_parameters__Mgi = 1; // millimolar + const double var_cytosolic_Ca_buffer__dMg_Myosin = -var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin * var_cytosolic_Ca_buffer__koff_Myosin_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin - var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin + var_cytosolic_Ca_buffer__Bmax_Myosin_Mg) * var_cytosolic_Ca_buffer__kon_Myosin_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin = var_cytosolic_Ca_buffer__dMg_Myosin; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg = -var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg * var_cytosolic_Ca_buffer__koff_TroponinC_Ca_Mg_Mg + (-var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg - var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__Bmax_TroponinC_Ca_Mg_Mg) * var_cytosolic_Ca_buffer__kon_TroponinC_Ca_Mg_Mg * var_model_parameters__Mgi; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar / millisecond + const double var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound = var_cytosolic_Ca_buffer__dCa_Calmodulin + var_cytosolic_Ca_buffer__dCa_Myosin + var_cytosolic_Ca_buffer__dCa_SRB + var_cytosolic_Ca_buffer__dCa_TroponinC + var_cytosolic_Ca_buffer__dCa_TroponinC_Ca_Mg + var_cytosolic_Ca_buffer__dMg_Myosin + var_cytosolic_Ca_buffer__dMg_TroponinC_Ca_Mg; // millimolar_per_millisecond + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9)); // dimensionless + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaK__Q_Km_Nai = pow(var_INaK__Q10_Km_Nai, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__Q_NaK = pow(var_INaK__Q10_NaK, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) + 0.036499999999999998 * var_INaK__sigma * exp(-var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // dimensionless + const double var_INaK__i_NaK_SL = var_INaK__Fx_NaK_SL * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_SL), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_INaK__i_NaK_jct = var_INaK__Fx_NaK_jct * var_INaK__I_NaK_max * var_INaK__Q_NaK * var_INaK__f_NaK * NV_Ith_S(mParameters, 8) / ((1 + pow((var_INaK__Km_Nai * var_INaK__Q_Km_Nai / var_chaste_interface__Na_buffer__Na_jct), var_INaK__H_NaK)) * (var_INaK__Km_Ko + NV_Ith_S(mParameters, 8))); // microA_per_microF + const double var_Jpump_SR__Q_SRCaP = pow(var_Jpump_SR__Q10_SRCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Vol_Cell = 3.1415926540000002e-15 * pow(var_model_parameters__cell_radius, 2) * var_model_parameters__cell_length; // liter + const double var_model_parameters__Vol_SL = 0.02 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_SR = 0.035000000000000003 * var_model_parameters__Vol_Cell; // liter + const double var_model_parameters__Vol_cytosol = 0.65000000000000002 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_SL = -var_chaste_interface__Ca_buffer__Ca_SLB_SL * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_SL + var_Ca_buffer__Bmax_SLB_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_SL = -var_chaste_interface__Ca_buffer__Ca_SLHigh_SL * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_SL + var_Ca_buffer__Bmax_SLHigh_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * var_chaste_interface__Ca_buffer__Ca_SL * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SL_tot_bound = var_Ca_buffer__dCa_SLB_SL + var_Ca_buffer__dCa_SLHigh_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCalsequestrin = -var_chaste_interface__Ca_buffer__Ca_Calsequestrin * var_Ca_buffer__koff_Calsequestrin + (-var_chaste_interface__Ca_buffer__Ca_Calsequestrin + var_Ca_buffer__Bmax_Calsequestrin * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR) * var_chaste_interface__Ca_buffer__Ca_SR * var_Ca_buffer__kon_Calsequestrin; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin = var_Ca_buffer__dCalsequestrin; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL = var_Ca_buffer__dCa_SLB_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL = var_Ca_buffer__dCa_SLHigh_SL; // millimolar / millisecond + const double d_dt_chaste_interface_var_Na_buffer__Nai = NV_Ith_S(mParameters, 3) * var_ion_diffusion__J_Na_SL_cytosol / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_Jpump_SR__j_pump_SR = (pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) - pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_Jpump_SR__Q_SRCaP * NV_Ith_S(mParameters, 2) * var_model_parameters__Vol_cytosol / ((1 + pow((var_chaste_interface__Ca_buffer__Cai / var_Jpump_SR__Kmf), var_Jpump_SR__H) + pow((var_chaste_interface__Ca_buffer__Ca_SR / var_Jpump_SR__Kmr), var_Jpump_SR__H)) * var_model_parameters__Vol_SR); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SR = -var_Ca_buffer__dCalsequestrin - var_Jrel_SR__j_rel_SR - var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SR + var_Jpump_SR__j_pump_SR; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Cai = -1 * var_cytosolic_Ca_buffer__dCa_cytosol_tot_bound + var_ion_diffusion__J_Ca_SL_cytosol / var_model_parameters__Vol_cytosol - var_Jpump_SR__j_pump_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_cytosol; // millimolar / millisecond + const double var_model_parameters__Vol_jct = 0.00051000000000000004 * var_model_parameters__Vol_Cell; // liter + const double var_Ca_buffer__dCa_SLB_jct = -var_chaste_interface__Ca_buffer__Ca_SLB_jct * var_Ca_buffer__koff_SLB + (-var_chaste_interface__Ca_buffer__Ca_SLB_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLB_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_SLHigh_jct = -var_chaste_interface__Ca_buffer__Ca_SLHigh_jct * var_Ca_buffer__koff_SLHigh + (-var_chaste_interface__Ca_buffer__Ca_SLHigh_jct + 0.10000000000000001 * var_Ca_buffer__Bmax_SLHigh_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * var_chaste_interface__Ca_buffer__Ca_jct * var_Ca_buffer__kon_SL; // millimolar_per_millisecond + const double var_Ca_buffer__dCa_jct_tot_bound = var_Ca_buffer__dCa_SLB_jct + var_Ca_buffer__dCa_SLHigh_jct; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct = var_Ca_buffer__dCa_SLB_jct; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct = var_Ca_buffer__dCa_SLHigh_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__Indo1Bound = var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_model_parameters__Vol_SL / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_model_parameters__Vol_jct / var_model_parameters__Vol_cytosol + var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; // millimolar + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Fluo3 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Fluo3_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Fluo3Bound + var_indo_fluo_Ca_buffer_not_connected__Fluo3) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Fluo3; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Fluo3_jct; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_Cytosol) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Cai * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_Cytosol; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_SL * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_SL) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_SL * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_SL; // millimolar / millisecond + const double var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct * var_indo_fluo_Ca_buffer_not_connected__koff_Indo1 + (-var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct + var_indo_fluo_Ca_buffer_not_connected__Bmax_Indo1_jct * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct) * (-var_indo_fluo_Ca_buffer_not_connected__Indo1Bound + var_indo_fluo_Ca_buffer_not_connected__Indo1) * var_chaste_interface__Ca_buffer__Ca_jct * var_indo_fluo_Ca_buffer_not_connected__kon_Indo1; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = var_indo_fluo_Ca_buffer_not_connected__dCa_Indo1_jct; // millimolar / millisecond + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_SL_tot = -2 * var_INaCa__i_NaCa_SL + var_ICaL__i_CaL_Ca_SL + var_ICab__i_Cab_SL + var_ICap__i_Cap_SL; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_SL = -1 * var_Ca_buffer__dCa_SL_tot_bound + (-var_ion_diffusion__J_Ca_SL_cytosol + var_ion_diffusion__J_Ca_jct_SL) / var_model_parameters__Vol_SL - 0.5 * var_Ca_buffer__i_Ca_SL_tot * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_SL); // millimolar / millisecond + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_Ca_buffer__i_Ca_jct_tot = -2 * var_INaCa__i_NaCa_jct + var_ICaL__i_CaL_Ca_jct + var_ICab__i_Cab_jct + var_ICap__i_Cap_jct; // microA_per_microF + const double d_dt_chaste_interface_var_Ca_buffer__Ca_jct = -1 * var_Ca_buffer__dCa_jct_tot_bound - var_ion_diffusion__J_Ca_jct_SL / var_model_parameters__Vol_jct + var_Jleak_SR__j_leak_SR * var_model_parameters__Vol_cytosol / var_model_parameters__Vol_jct + var_Jrel_SR__j_rel_SR * var_model_parameters__Vol_SR / var_model_parameters__Vol_jct - 0.5 * var_Ca_buffer__i_Ca_jct_tot * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_jct); // millimolar / millisecond + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_SL = (-var_Na_buffer__dNa_SL_buf + (-var_ion_diffusion__J_Na_SL_cytosol + var_ion_diffusion__J_Na_jct_SL) / var_model_parameters__Vol_SL - (3 * var_INaCa__i_NaCa_SL + 3 * var_INaK__i_NaK_SL + var_ICaL__i_CaL_Na_SL + var_INa__i_Na_SL + var_INab__i_Nab_SL) * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_SL)) * NV_Ith_S(mParameters, 3); // millimolar / millisecond + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double d_dt_chaste_interface_var_Na_buffer__Na_jct = (-var_Na_buffer__dNa_jct_buf - var_ion_diffusion__J_Na_jct_SL / var_model_parameters__Vol_jct - (3 * var_INaCa__i_NaCa_jct + 3 * var_INaK__i_NaK_jct + var_ICaL__i_CaL_Na_jct + var_INa__i_Na_jct + var_INab__i_Nab_jct) * var_model_parameters__Cm / (NV_Ith_S(mParameters, 10) * var_model_parameters__Vol_jct)) * NV_Ith_S(mParameters, 3); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_cell__V = 0.0; + } + else + { + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICl_Ca__Fx_Cl_SL = 0.89000000000000001; // dimensionless + const double var_ICl_Ca__Fx_Cl_jct = 0.11; // dimensionless + const double var_ICl_Ca__G_Cl = 0.109625; // milliS_per_microF + const double var_ICl_Ca__Kd_ClCa = 0.10000000000000001; // millimolar + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaK__i_NaK = var_INaK__i_NaK_SL + var_INaK__i_NaK_jct; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICl_Ca__i_Cl_Ca = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * (var_ICl_Ca__Fx_Cl_SL / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_SL) + var_ICl_Ca__Fx_Cl_jct / (1 + var_ICl_Ca__Kd_ClCa / var_chaste_interface__Ca_buffer__Ca_jct)) * var_ICl_Ca__G_Cl; // microA_per_microF + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + d_dt_chaste_interface_var_cell__V = -var_ICaL__i_CaL - var_ICab__i_Cab - var_ICap__i_Cap - var_ICl_Ca__i_Cl_Ca - var_IClb__i_Clb - var_IK1__i_K1 - var_IKr__i_Kr - var_IKs__i_Ks - var_INa__i_Na - var_INaCa__i_NaCa - var_INaK__i_NaK - var_INab__i_Nab - var_Itof__i_tof - var_Itos__i_tos - var_cell__i_Stim; // millivolt / millisecond + } + + NV_Ith_S(rDY,0) = d_dt_chaste_interface_var_cell__V; + NV_Ith_S(rDY,1) = d_dt_chaste_interface_var_Ca_buffer__Cai; + NV_Ith_S(rDY,2) = d_dt_chaste_interface_var_INa_h_gate__h; + NV_Ith_S(rDY,3) = d_dt_chaste_interface_var_INa_j_gate__j; + NV_Ith_S(rDY,4) = d_dt_chaste_interface_var_INa_m_gate__m; + NV_Ith_S(rDY,5) = d_dt_chaste_interface_var_IKr_Xr_gate__Xr; + NV_Ith_S(rDY,6) = d_dt_chaste_interface_var_IKs_Xs_gate__Xs; + NV_Ith_S(rDY,7) = d_dt_chaste_interface_var_Itos_X_gate__X_tos; + NV_Ith_S(rDY,8) = d_dt_chaste_interface_var_Itos_Y_gate__Y_tos; + NV_Ith_S(rDY,9) = d_dt_chaste_interface_var_Itos_R_gate__R_tos; + NV_Ith_S(rDY,10) = d_dt_chaste_interface_var_Itof_X_gate__X_tof; + NV_Ith_S(rDY,11) = d_dt_chaste_interface_var_Itof_Y_gate__Y_tof; + NV_Ith_S(rDY,12) = d_dt_chaste_interface_var_ICaL_d_gate__d; + NV_Ith_S(rDY,13) = d_dt_chaste_interface_var_ICaL_f_gate__f; + NV_Ith_S(rDY,14) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_SL; + NV_Ith_S(rDY,15) = d_dt_chaste_interface_var_ICaL_fCa_gate__fCaB_jct; + NV_Ith_S(rDY,16) = d_dt_chaste_interface_var_Jrel_SR__R; + NV_Ith_S(rDY,17) = d_dt_chaste_interface_var_Jrel_SR__I; + NV_Ith_S(rDY,18) = d_dt_chaste_interface_var_Jrel_SR__O; + NV_Ith_S(rDY,19) = d_dt_chaste_interface_var_Na_buffer__Na_SL; + NV_Ith_S(rDY,20) = d_dt_chaste_interface_var_Na_buffer__Na_jct; + NV_Ith_S(rDY,21) = d_dt_chaste_interface_var_Na_buffer__Na_SL_buf; + NV_Ith_S(rDY,22) = d_dt_chaste_interface_var_Na_buffer__Na_jct_buf; + NV_Ith_S(rDY,23) = d_dt_chaste_interface_var_Na_buffer__Nai; + NV_Ith_S(rDY,24) = d_dt_chaste_interface_var_Ca_buffer__Ca_SR; + NV_Ith_S(rDY,25) = d_dt_chaste_interface_var_Ca_buffer__Ca_SL; + NV_Ith_S(rDY,26) = d_dt_chaste_interface_var_Ca_buffer__Ca_jct; + NV_Ith_S(rDY,27) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_SL; + NV_Ith_S(rDY,28) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLB_jct; + NV_Ith_S(rDY,29) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_SL; + NV_Ith_S(rDY,30) = d_dt_chaste_interface_var_Ca_buffer__Ca_SLHigh_jct; + NV_Ith_S(rDY,31) = d_dt_chaste_interface_var_Ca_buffer__Ca_Calsequestrin; + NV_Ith_S(rDY,32) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC; + NV_Ith_S(rDY,33) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg; + NV_Ith_S(rDY,34) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg; + NV_Ith_S(rDY,35) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Calmodulin; + NV_Ith_S(rDY,36) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_Myosin; + NV_Ith_S(rDY,37) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Mg_Myosin; + NV_Ith_S(rDY,38) = d_dt_chaste_interface_var_cytosolic_Ca_buffer__Ca_SRB; + NV_Ith_S(rDY,39) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; + NV_Ith_S(rDY,40) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; + NV_Ith_S(rDY,41) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + NV_Ith_S(rDY,42) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; + NV_Ith_S(rDY,43) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; + NV_Ith_S(rDY,44) = d_dt_chaste_interface_var_indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + } + + void Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::EvaluateAnalyticJacobian(double var_chaste_interface__environment__time, N_Vector rY, N_Vector rDY, CHASTE_CVODE_DENSE_MATRIX rJacobian, N_Vector rTmp1, N_Vector rTmp2, N_Vector rTmp3) + { + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__Ca_buffer__Cai = NV_Ith_S(rY, 1); + // Units: millimolar; Initial value: 8.6504944644883e-05 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__R = NV_Ith_S(rY, 16); + // Units: dimensionless; Initial value: 0.890917121306535 + double var_chaste_interface__Jrel_SR__I = NV_Ith_S(rY, 17); + // Units: dimensionless; Initial value: 8.71752603681652e-08 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Na_SL_buf = NV_Ith_S(rY, 21); + // Units: millimolar; Initial value: 0.77606800956492 + double var_chaste_interface__Na_buffer__Na_jct_buf = NV_Ith_S(rY, 22); + // Units: millimolar; Initial value: 3.55668431730337 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + double var_chaste_interface__Ca_buffer__Ca_SLB_SL = NV_Ith_S(rY, 27); + // Units: millimolar; Initial value: 0.00973710481246467 + double var_chaste_interface__Ca_buffer__Ca_SLB_jct = NV_Ith_S(rY, 28); + // Units: millimolar; Initial value: 0.00774564218017916 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_SL = NV_Ith_S(rY, 29); + // Units: millimolar; Initial value: 0.113168405274355 + double var_chaste_interface__Ca_buffer__Ca_SLHigh_jct = NV_Ith_S(rY, 30); + // Units: millimolar; Initial value: 0.0772568134367606 + double var_chaste_interface__Ca_buffer__Ca_Calsequestrin = NV_Ith_S(rY, 31); + // Units: millimolar; Initial value: 1.18828527890062 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC = NV_Ith_S(rY, 32); + // Units: millimolar; Initial value: 0.00886665040283094 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg = NV_Ith_S(rY, 33); + // Units: millimolar; Initial value: 0.117873278193472 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg = NV_Ith_S(rY, 34); + // Units: millimolar; Initial value: 0.0103906683506505 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin = NV_Ith_S(rY, 35); + // Units: millimolar; Initial value: 0.000293073957804278 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin = NV_Ith_S(rY, 36); + // Units: millimolar; Initial value: 0.00195899238146509 + double var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin = NV_Ith_S(rY, 37); + // Units: millimolar; Initial value: 0.137523520981802 + double var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB = NV_Ith_S(rY, 38); + // Units: millimolar; Initial value: 0.00215728901718264 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol = NV_Ith_S(rY, 39); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL = NV_Ith_S(rY, 40); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct = NV_Ith_S(rY, 41); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol = NV_Ith_S(rY, 42); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL = NV_Ith_S(rY, 43); + // Units: millimolar; Initial value: 0.0 + double var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct = NV_Ith_S(rY, 44); + // Units: millimolar; Initial value: 0.0 + const double var_x0 = 1 / var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x1 = 1 + 0.10000000000000001 * var_x0; + const double var_x2 = 1 / var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x3 = 1 + 0.10000000000000001 * var_x2; + const double var_x4 = (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21); + const double var_x5 = NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_Y_gate__Y_tof; + const double var_x6 = exp(-7.0000000000000009 - 1.6666666666666667 * log10(1 * var_chaste_interface__Ca_buffer__Ca_jct)); + const double var_x7 = 1 + var_x6; + const double var_x8 = 0.057000000000000002 + 0.19 / var_x7; + const double var_x9 = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * NV_Ith_S(mParameters, 20); + const double var_x10 = var_x8 * var_x9; + const double var_x11 = exp(-7.0000000000000009 - 1.6666666666666667 * log10(1 * var_chaste_interface__Ca_buffer__Ca_SL)); + const double var_x12 = 1 + var_x11; + const double var_x13 = 0.057000000000000002 + 0.19 / var_x12; + const double var_x14 = var_x13 * var_x9; + const double var_x15 = sqrt(NV_Ith_S(mParameters, 8)); + const double var_x16 = exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V); + const double var_x17 = 1 + var_x16; + const double var_x18 = 0.43033148291193518 / var_x17; + const double var_x19 = pow(var_chaste_interface__INa_m_gate__m, 3); + const double var_x20 = var_x19 * NV_Ith_S(mParameters, 14) * var_chaste_interface__INa_j_gate__j; + const double var_x21 = var_x20 * var_chaste_interface__INa_h_gate__h; + const double var_x22 = log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)); + const double var_x23 = 1 / NV_Ith_S(mParameters, 10); + const double var_x24 = var_x23 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23); + const double var_x25 = var_x22 * var_x24; + const double var_x26 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_x25); + const double var_x27 = 1 + var_x26; + const double var_x28 = 1 / var_x27; + const double var_x29 = exp(-2.4444678999999998 - 0.51429999999999998 * var_chaste_interface__cell__V + 0.51429999999999998 * var_x22 * var_x23 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); + const double var_x30 = 1 + var_x29; + const double var_x31 = 1 / var_x30; + const double var_x32 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_x25); + const double var_x33 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_x25); + const double var_x34 = 1 * var_x32 + 0.49124000000000001 * var_x33; + const double var_x35 = 1.02 * var_x28 + var_x31 * var_x34; + const double var_x36 = 1 / var_x35; + const double var_x37 = 0.4389381125701739 * var_x28; + const double var_x38 = 1 + 1.6777215999999998e-11 / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3); + const double var_x39 = 1 / var_x38; + const double var_x40 = 0.11 * var_x39; + const double var_x41 = 1 / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); + const double var_x42 = var_x41 * NV_Ith_S(mParameters, 10); + const double var_x43 = exp(0.34999999999999998 * var_x42 * var_chaste_interface__cell__V); + const double var_x44 = pow(var_chaste_interface__Na_buffer__Na_jct, 3); + const double var_x45 = var_x44 * NV_Ith_S(mParameters, 6); + const double var_x46 = var_x43 * var_x45; + const double var_x47 = 0.34999999999999998 * var_x42; + const double var_x48 = var_x42 * var_chaste_interface__cell__V; + const double var_x49 = exp(-0.65000000000000002 * var_x48); + const double var_x50 = pow(NV_Ith_S(mParameters, 9), 3); + const double var_x51 = var_x50 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x52 = var_x49 * var_x51; + const double var_x53 = 0.65000000000000002 * var_x42; + const double var_x54 = 0.0035899999999999999 * var_x50; + const double var_x55 = var_x45 + var_x51 + 1.3 * var_x44 + var_x54 * (1 + 0.00053869674493876331 * var_x44) + 669921.875 * (1 + 278.55153203342621 * var_chaste_interface__Ca_buffer__Ca_jct) * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x56 = 1 / var_x55; + const double var_x57 = 1 + 0.27000000000000002 * var_x49; + const double var_x58 = 1 / var_x57; + const double var_x59 = -31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23); + const double var_x60 = pow(1.5700000000000001, var_x59); + const double var_x61 = var_x60 * NV_Ith_S(mParameters, 22); + const double var_x62 = var_x58 * var_x61; + const double var_x63 = var_x56 * var_x62; + const double var_x64 = var_x63 * (var_x46 * var_x47 + var_x52 * var_x53); + const double var_x65 = 1 + 1.6777215999999998e-11 / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3); + const double var_x66 = 1 / var_x65; + const double var_x67 = 0.89000000000000001 * var_x66; + const double var_x68 = pow(var_chaste_interface__Na_buffer__Na_SL, 3); + const double var_x69 = var_x68 * NV_Ith_S(mParameters, 6); + const double var_x70 = var_x43 * var_x69; + const double var_x71 = var_x50 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x72 = var_x49 * var_x71; + const double var_x73 = var_x69 + var_x71 + 1.3 * var_x68 + var_x54 * (1 + 0.00053869674493876331 * var_x68) + 669921.875 * (1 + 278.55153203342621 * var_chaste_interface__Ca_buffer__Ca_SL) * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x74 = 1 / var_x73; + const double var_x75 = var_x62 * var_x74; + const double var_x76 = var_x75 * (var_x47 * var_x70 + var_x53 * var_x72); + const double var_x77 = 1 / var_chaste_interface__Na_buffer__Na_jct; + const double var_x78 = pow(var_x77, 4); + const double var_x79 = pow(1.49, (-124 + 0.40000000000000002 * NV_Ith_S(mParameters, 23))); + const double var_x80 = 14641 * var_x79; + const double var_x81 = 1 + var_x78 * var_x80; + const double var_x82 = 0.10000000000000001 * var_chaste_interface__cell__V; + const double var_x83 = exp(-var_x42 * var_x82); + const double var_x84 = 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * NV_Ith_S(mParameters, 9))) * exp(-var_x48); + const double var_x85 = 1 + var_x84 + 0.1245 * var_x83; + const double var_x86 = pow(1.6299999999999999, var_x59) * NV_Ith_S(mParameters, 8) / (1.5 + NV_Ith_S(mParameters, 8)); + const double var_x87 = var_x86 * (var_x42 * var_x84 + 0.012450000000000001 * var_x42 * var_x83) / pow(var_x85, 2); + const double var_x88 = var_x87 / var_x81; + const double var_x89 = 1 / var_chaste_interface__Na_buffer__Na_SL; + const double var_x90 = pow(var_x89, 4); + const double var_x91 = 1 + var_x80 * var_x90; + const double var_x92 = var_x87 / var_x91; + const double var_x93 = pow(var_x27, (-2)); + const double var_x94 = -var_x25 + var_chaste_interface__cell__V; + const double var_x95 = var_x15 * var_x94; + const double var_x96 = exp(var_x48); + const double var_x97 = 0.75 * var_x96; + const double var_x98 = -0.75 * NV_Ith_S(mParameters, 8) + var_x97 * NV_Ith_S(mParameters, 5); + const double var_x99 = var_x41 * pow(NV_Ith_S(mParameters, 10), 2); + const double var_x100 = -1 + var_x96; + const double var_x101 = 1 / var_x100; + const double var_x102 = pow(1.8, var_x59); + const double var_x103 = var_x102 * var_chaste_interface__ICaL_f_gate__f; + const double var_x104 = var_x103 * var_chaste_interface__ICaL_d_gate__d; + const double var_x105 = var_x101 * var_x104; + const double var_x106 = var_x105 * var_x99; + const double var_x107 = var_x106 * var_x98; + const double var_x108 = 1 - 0.10000000000000001 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL - 0.90000000000000002 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct; + const double var_x109 = 1.215e-7 * var_x108; + const double var_x110 = var_x70 - var_x72; + const double var_x111 = var_x42 * var_x49 * var_x61 / pow(var_x57, 2); + const double var_x112 = var_x110 * var_x111 * var_x66 * var_x74; + const double var_x113 = var_x46 - var_x52; + const double var_x114 = var_x111 * var_x113 * var_x39 * var_x56; + const double var_x115 = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; + const double var_x116 = exp(2 * var_x48); + const double var_x117 = -1 + var_x116; + const double var_x118 = NV_Ith_S(mParameters, 12) / var_x117; + const double var_x119 = var_x104 * var_x118; + const double var_x120 = var_x115 * var_x119; + const double var_x121 = -0.34100000000000003 * NV_Ith_S(mParameters, 6); + const double var_x122 = 0.34100000000000003 * var_x116; + const double var_x123 = var_x121 + var_x122 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x124 = 0.18000000000000002 * var_x123; + const double var_x125 = var_x120 * var_x124 * var_x99; + const double var_x126 = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; + const double var_x127 = var_x126 * var_x99; + const double var_x128 = var_x119 * var_x127; + const double var_x129 = var_x121 + var_x122 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x130 = 1.6200000000000001 * var_x129; + const double var_x131 = var_x128 * var_x130; + const double var_x132 = var_x105 * var_x96; + const double var_x133 = pow(NV_Ith_S(mParameters, 10), 3); + const double var_x134 = pow(NV_Ith_S(mParameters, 11), (-2)); + const double var_x135 = pow(NV_Ith_S(mParameters, 23), (-2)); + const double var_x136 = var_x133 * var_x134 * var_x135 * var_chaste_interface__cell__V; + const double var_x137 = pow(var_x100, (-2)); + const double var_x138 = var_x126 * var_x136; + const double var_x139 = 1.10484 * var_x116 * var_x119 * var_x138 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x140 = var_x116 * var_x120; + const double var_x141 = 0.12276000000000002 * var_x136 * var_x140 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x142 = var_x104 * var_x136; + const double var_x143 = var_x116 * var_x142 * NV_Ith_S(mParameters, 12) / pow(var_x117, 2); + const double var_x144 = 0.36000000000000004 * var_x115 * var_x123 * var_x143; + const double var_x145 = var_x126 * var_x129; + const double var_x146 = 3.2400000000000002 * var_x143 * var_x145; + const double var_x147 = -0.75 * NV_Ith_S(mParameters, 9); + const double var_x148 = var_x147 + var_x97 * var_chaste_interface__Na_buffer__Na_SL; + const double var_x149 = var_x115 * var_x148; + const double var_x150 = 6.7499999999999994e-10 * var_x149; + const double var_x151 = 5.0624999999999998e-10 * var_x115 * var_x96; + const double var_x152 = var_x137 * var_x142 * var_x96; + const double var_x153 = var_x106 * var_x150 - var_x150 * var_x152 + var_x105 * var_x136 * var_x151 * var_chaste_interface__Na_buffer__Na_SL; + const double var_x154 = var_x147 + var_x97 * var_chaste_interface__Na_buffer__Na_jct; + const double var_x155 = var_x105 * var_x154; + const double var_x156 = 6.0749999999999998e-9 * var_x127; + const double var_x157 = 4.5562499999999999e-9 * var_x132; + const double var_x158 = var_x126 * var_x154; + const double var_x159 = var_x155 * var_x156 - 6.0749999999999998e-9 * var_x152 * var_x158 + var_x138 * var_x157 * var_chaste_interface__Na_buffer__Na_jct; + const double var_x160 = -var_x24 * log(var_x77 * NV_Ith_S(mParameters, 9)) + var_chaste_interface__cell__V; + const double var_x161 = 0.11 * var_x160; + const double var_x162 = -var_x24 * log(var_x89 * NV_Ith_S(mParameters, 9)) + var_chaste_interface__cell__V; + const double var_x163 = 0.89000000000000001 * var_x162; + const double var_x164 = NV_Ith_S(mParameters, 14) * var_chaste_interface__INa_h_gate__h; + const double var_x165 = var_x164 * var_x19; + const double var_x166 = var_x164 * pow(var_chaste_interface__INa_m_gate__m, 2) * var_chaste_interface__INa_j_gate__j; + const double var_x167 = var_x160 * var_x166; + const double var_x168 = var_x162 * var_x166; + const double var_x169 = 1 / (0.018329999999999999 * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5)); + const double var_x170 = -var_x24 * log(var_x169 * (0.018329999999999999 * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8))) + var_chaste_interface__cell__V; + const double var_x171 = var_x170 * NV_Ith_S(mParameters, 20) * var_chaste_interface__IKs_Xs_gate__Xs; + const double var_x172 = var_x94 * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; + const double var_x173 = var_x101 * var_chaste_interface__cell__V; + const double var_x174 = var_x103 * var_x173; + const double var_x175 = var_x154 * var_x156; + const double var_x176 = var_x174 * var_x99; + const double var_x177 = var_x109 * var_x98; + const double var_x178 = var_x99 * var_chaste_interface__cell__V; + const double var_x179 = var_x124 * var_x178; + const double var_x180 = var_x103 * var_x118; + const double var_x181 = var_x115 * var_x180; + const double var_x182 = var_x127 * var_chaste_interface__cell__V; + const double var_x183 = var_x130 * var_x182; + const double var_x184 = var_x102 * var_chaste_interface__ICaL_d_gate__d; + const double var_x185 = var_x173 * var_x184; + const double var_x186 = var_x185 * var_x99; + const double var_x187 = var_x118 * var_x184; + const double var_x188 = var_x115 * var_x187; + const double var_x189 = var_x106 * var_chaste_interface__cell__V; + const double var_x190 = var_x107 * var_chaste_interface__cell__V; + const double var_x191 = pow(var_chaste_interface__Na_buffer__Na_SL, 2); + const double var_x192 = 3 * NV_Ith_S(mParameters, 6); + const double var_x193 = 5.8017639429904805e-6 * var_x50; + const double var_x194 = -3.9000000000000004 * var_x191 - var_x191 * var_x192 - var_x191 * var_x193; + const double var_x195 = var_x110 * var_x62 / pow(var_x73, 2); + const double var_x196 = var_x195 * var_x67; + const double var_x197 = 2.6699999999999999 * var_x66; + const double var_x198 = var_x43 * NV_Ith_S(mParameters, 6); + const double var_x199 = var_x191 * var_x198 * var_x75; + const double var_x200 = var_x79 * var_x86 / var_x85; + const double var_x201 = var_x200 * var_x89 * var_x90 / pow(var_x91, 2); + const double var_x202 = var_x24 * var_x89; + const double var_x203 = 0.89000000000000001 * var_x21; + const double var_x204 = 0.00026433000000000001 * var_x202 + var_x151 * var_x189 + var_x202 * var_x203; + const double var_x205 = pow(var_chaste_interface__Na_buffer__Na_jct, 2); + const double var_x206 = -3.9000000000000004 * var_x205 - var_x192 * var_x205 - var_x193 * var_x205; + const double var_x207 = var_x113 * var_x62 / pow(var_x55, 2); + const double var_x208 = var_x207 * var_x40; + const double var_x209 = 0.33000000000000002 * var_x39; + const double var_x210 = var_x198 * var_x205 * var_x63; + const double var_x211 = var_x200 * var_x77 * var_x78 / pow(var_x81, 2); + const double var_x212 = var_x24 * var_x77; + const double var_x213 = 0.11 * var_x21; + const double var_x214 = 3.2670000000000004e-5 * var_x212 + var_x157 * var_x182 + var_x212 * var_x213; + const double var_x215 = var_x169 * var_x24; + const double var_x216 = var_x24 * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) + var_chaste_interface__cell__V; + const double var_x217 = 669921.875 + var_x50; + const double var_x218 = -var_x217 - 373215529.24791086 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x219 = var_x170 * var_x9 / log(10); + const double var_x220 = var_x110 * var_x75 / (pow(var_x65, 2) * pow(var_chaste_interface__Ca_buffer__Ca_SL, 4)); + const double var_x221 = pow(2.3500000000000001, var_x59); + const double var_x222 = pow(var_x2, 1.6000000000000001); + const double var_x223 = 0.00011182849999999999 * var_x2 * var_x24 + 0.061380000000000011 * var_x140 * var_x178 + 5.0104537825247566e-7 * var_x2 * var_x221 * var_x222 / pow((1 + 5.2281977629563632e-6 * var_x222), 2); + const double var_x224 = pow(var_chaste_interface__Ca_buffer__Ca_jct, 2); + const double var_x225 = -var_x217 - 373215529.24791086 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x226 = var_x113 * var_x63 / (pow(var_x38, 2) * pow(var_chaste_interface__Ca_buffer__Ca_jct, 4)); + const double var_x227 = pow(var_x0, 1.6000000000000001); + const double var_x228 = 1.38215e-5 * var_x0 * var_x24 + 0.55242000000000002 * var_x116 * var_x128 * var_chaste_interface__cell__V + 6.1926956862665531e-8 * var_x0 * var_x221 * var_x227 / pow((1 + 5.2281977629563632e-6 * var_x227), 2); + const double var_x229 = 32.700000000000003 * var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC; + const double var_x230 = 34 * var_chaste_interface__cytosolic_Ca_buffer__Ca_Calmodulin; + const double var_x231 = 100 * var_chaste_interface__cytosolic_Ca_buffer__Ca_SRB; + const double var_x232 = pow(var_chaste_interface__Ca_buffer__Cai, 0.78699999999999992); + const double var_x233 = 0.38742512113256738 * pow(var_chaste_interface__Ca_buffer__Ca_SR, 1.7869999999999999); + const double var_x234 = pow(var_chaste_interface__Ca_buffer__Cai, 1.7869999999999999); + const double var_x235 = 1 + var_x233 + 2814485.1633595936 * var_x234; + const double var_x236 = 1 / var_x235; + const double var_x237 = pow(2.6000000000000001, var_x59); + const double var_x238 = var_x237 * NV_Ith_S(mParameters, 2); + const double var_x239 = var_x236 * var_x238; + const double var_x240 = var_x238 * (-var_x233 + 2814485.1633595936 * var_x234) / pow(var_x235, 2); + const double var_x241 = var_x232 * var_x240; + const double var_x242 = 2.3700000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg + 2.3700000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg; + const double var_x243 = 13.800000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Ca_Myosin + 13.800000000000001 * var_chaste_interface__cytosolic_Ca_buffer__Mg_Myosin; + const double var_x244 = pow(var_chaste_interface__Ca_buffer__Ca_SR, 0.78699999999999992); + const double var_x245 = var_x239 * var_x244; + const double var_x246 = var_x240 * var_x244; + const double var_x247 = 0.019599999999999999 + 32.700000000000003 * var_chaste_interface__Ca_buffer__Cai; + const double var_x248 = 2.3700000000000001 * var_chaste_interface__Ca_buffer__Cai; + const double var_x249 = 0.23799999999999999 + 34 * var_chaste_interface__Ca_buffer__Cai; + const double var_x250 = 13.800000000000001 * var_chaste_interface__Ca_buffer__Cai; + const double var_x251 = 100 * var_chaste_interface__Ca_buffer__Cai; + const double var_x252 = 0.059999999999999998 + var_x251; + const double var_x253 = exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 16) - 0.14705882352941177 * var_chaste_interface__cell__V); + const double var_x254 = var_chaste_interface__cell__V < -40; + const double var_x255 = ((var_x254) ? (0.13500000000000001 * var_x253) : (0)); + const double var_x256 = exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 16)); + const double var_x257 = exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 16)); + const double var_x258 = exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 16) - 0.0900900900900901 * var_chaste_interface__cell__V); + const double var_x259 = 1 + var_x258; + const double var_x260 = ((var_x254) ? (310000 * var_x256 + 3.5600000000000001 * var_x257) : (7.6923076923076916 / var_x259)); + const double var_x261 = 1 * var_x255 + 1 * var_x260; + const double var_x262 = ((var_x254) ? (-0.019852941176470591 * var_x253) : (0)); + const double var_x263 = var_x255 + var_x260; + const double var_x264 = 0.01 * NV_Ith_S(mParameters, 15); + const double var_x265 = 1 - var_x264; + const double var_x266 = var_x265 / var_x263; + const double var_x267 = ((var_x254) ? (0.28123999999999999 * var_x257 + 108500 * var_x256) : (0.693000693000693 * var_x258 / pow(var_x259, 2))); + const double var_x268 = exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 16) - 0.13780000000000001 * var_chaste_interface__cell__V); + const double var_x269 = 1 + var_x268; + const double var_x270 = exp(0.01052 * NV_Ith_S(mParameters, 16) - 0.01052 * var_chaste_interface__cell__V); + const double var_x271 = var_x270 / var_x269; + const double var_x272 = exp(-3.2000000000000002 - var_x82 + 0.10000000000000001 * NV_Ith_S(mParameters, 16)); + const double var_x273 = 1 + var_x272; + const double var_x274 = exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 16) - 2.5349999999999999e-7 * var_chaste_interface__cell__V); + const double var_x275 = var_x274 / var_x273; + const double var_x276 = ((var_x254) ? (0.1212 * var_x271) : (0.29999999999999999 * var_x275)); + const double var_x277 = 37.780000000000001 + var_chaste_interface__cell__V; + const double var_x278 = exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 16)); + const double var_x279 = exp(0.043909999999999998 * NV_Ith_S(mParameters, 16) - 0.043909999999999998 * var_chaste_interface__cell__V); + const double var_x280 = -127140 * var_x278 - 3.4740000000000003e-5 * var_x279; + const double var_x281 = exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 16)); + const double var_x282 = 1 + var_x281; + const double var_x283 = 1 / var_x282; + const double var_x284 = var_x280 * var_x283; + const double var_x285 = ((var_x254) ? (var_x277 * var_x284) : (0)); + const double var_x286 = 1 * var_x276 + 1 * var_x285; + const double var_x287 = ((var_x254) ? (var_x284 + var_x277 * var_x283 * (1.5254334000000001e-6 * var_x279 - 31073.016 * var_x278) - 0.311 * var_x277 * var_x280 * var_x281 / pow(var_x282, 2)) : (0)); + const double var_x288 = var_x276 + var_x285; + const double var_x289 = var_x265 / var_x288; + const double var_x290 = ((var_x254) ? (-0.001275024 * var_x271 + 0.016701360000000002 * var_x268 * var_x270 / pow(var_x269, 2)) : (-7.6049999999999996e-8 * var_x275 + 0.029999999999999999 * var_x272 * var_x274 / pow(var_x273, 2))); + const double var_x291 = exp(-4.7130000000000001 - var_x82); + const double var_x292 = 1 - var_x291; + const double var_x293 = 1 / var_x292; + const double var_x294 = exp(-0.090909090909090912 * var_chaste_interface__cell__V); + const double var_x295 = 47.130000000000003 + var_chaste_interface__cell__V; + const double var_x296 = 0.32000000000000001 * var_x293; + const double var_x297 = var_x295 * var_x296; + const double var_x298 = var_x297 + 0.080000000000000002 * var_x294; + const double var_x299 = 1 / var_x298; + const double var_x300 = 0.032000000000000001 * var_x291 * var_x295 / pow(var_x292, 2); + const double var_x301 = var_x300 + 0.0072727272727272727 * var_x294 - 0.32000000000000001 * var_x293; + const double var_x302 = exp(-6.666666666666667 - 0.13333333333333333 * var_chaste_interface__cell__V); + const double var_x303 = 1 + var_x302; + const double var_x304 = exp(1.45 + 0.14499999999999999 * var_chaste_interface__cell__V); + const double var_x305 = -1 + var_x304; + const double var_x306 = 1 / var_x305; + const double var_x307 = exp(-0.86099999999999999 - 0.123 * var_chaste_interface__cell__V); + const double var_x308 = 1 - var_x307; + const double var_x309 = 1 / var_x308; + const double var_x310 = 7 + var_chaste_interface__cell__V; + const double var_x311 = 10 + var_chaste_interface__cell__V; + const double var_x312 = 0.00060999999999999997 * var_x306 * var_x311 + 0.0013799999999999999 * var_x309 * var_x310; + const double var_x313 = exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V); + const double var_x314 = 1 + var_x313; + const double var_x315 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V); + const double var_x316 = -1 + var_x315; + const double var_x317 = 1 / var_x316; + const double var_x318 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V); + const double var_x319 = 1 - var_x318; + const double var_x320 = 1 / var_x319; + const double var_x321 = 30 + var_chaste_interface__cell__V; + const double var_x322 = 0.00013100000000000001 * var_x317 * var_x321 + 7.1899999999999999e-5 * var_x320 * var_x321; + const double var_x323 = 0.20000000000000001 + 0.066666666666666666 * var_chaste_interface__cell__V; + const double var_x324 = exp(var_x323); + const double var_x325 = 1 + var_x324; + const double var_x326 = 0.5 + 9 / var_x325; + const double var_x327 = 1 / var_x326; + const double var_x328 = exp(-var_x323); + const double var_x329 = 1 + var_x328; + const double var_x330 = 0.066666666666666666 * var_x328 / pow(var_x329, 2); + const double var_x331 = -1 / var_x329; + const double var_x332 = 0.10000000000000001 * var_chaste_interface__cell__V; + const double var_x333 = exp(6 + var_x332); + const double var_x334 = 1 + var_x333; + const double var_x335 = 1 / var_x334; + const double var_x336 = 30 + 3000 * var_x335; + const double var_x337 = 1 / var_x336; + const double var_x338 = exp(3.3500000000000001 + var_x332); + const double var_x339 = 1 + var_x338; + const double var_x340 = pow(var_x339, (-2)); + const double var_x341 = 0.10000000000000001 * var_x338 * var_x340; + const double var_x342 = pow(var_x334, (-2)); + const double var_x343 = 1 / var_x339; + const double var_x344 = -1 * var_x343; + const double var_x345 = 220 + 2800 * var_x335; + const double var_x346 = 1 / var_x345; + const double var_x347 = exp(-0.0011111111111111111 * pow(var_chaste_interface__cell__V, 2)); + const double var_x348 = 1.5 + 3.5 * var_x347; + const double var_x349 = 1 / var_x348; + const double var_x350 = 20 + 20 * var_x343; + const double var_x351 = 1 / var_x350; + const double var_x352 = exp(-2.4166666666666665 - 0.16666666666666666 * var_chaste_interface__cell__V); + const double var_x353 = 1 - var_x352; + const double var_x354 = 1 / var_x353; + const double var_x355 = 1 + var_x352; + const double var_x356 = 1 / var_x355; + const double var_x357 = -var_chaste_interface__ICaL_d_gate__d + 1 * var_x356; + const double var_x358 = 14.5 + var_chaste_interface__cell__V; + const double var_x359 = 0.0058333333333333336 * var_x352 * var_x358; + const double var_x360 = 0.019699999999999999 * exp(-pow((0.48865000000000003 + 0.033700000000000001 * var_chaste_interface__cell__V), 2)); + const double var_x361 = 0.02 + var_x360; + const double var_x362 = exp(9.7388888888888889 + 0.27777777777777779 * var_chaste_interface__cell__V); + const double var_x363 = 1 + var_x362; + const double var_x364 = exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V); + const double var_x365 = 1 + var_x364; + const double var_x366 = 1 / var_chaste_interface__Ca_buffer__Ca_SR; + const double var_x367 = pow(var_x366, 2.5); + const double var_x368 = 1 + 0.13584112963311223 * var_x367; + const double var_x369 = 1 / var_x368; + const double var_x370 = 7.5 - 7 * var_x369; + const double var_x371 = var_x370 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x372 = 15 - 14 * var_x369; + const double var_x373 = 1 / var_x372; + const double var_x374 = 10 * var_x224 * var_x373; + const double var_x375 = pow(var_x368, (-2)); + const double var_x376 = var_x366 * var_x367 * var_x375; + const double var_x377 = 47.544395371589282 * var_x224 * var_x376 / pow(var_x372, 2); + const double var_x378 = var_x377 * var_chaste_interface__Jrel_SR__R; + const double var_x379 = 20 * var_x373; + const double var_x380 = var_x379 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R; + const double var_x381 = 2.3772197685794643 * var_x376 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__O; + const double var_x382 = 1 - var_chaste_interface__Jrel_SR__I - var_chaste_interface__Jrel_SR__O - var_chaste_interface__Jrel_SR__R; + const double var_x383 = var_x370 * var_chaste_interface__Jrel_SR__O; + const double var_x384 = var_x66 * var_x76; + const double var_x385 = M_PI * var_x23; + const double var_x386 = 62.109246076532294 * var_x385; + const double var_x387 = var_x386 * NV_Ith_S(mParameters, 3); + const double var_x388 = var_x385 * NV_Ith_S(mParameters, 3); + const double var_x389 = var_x20 * var_x388; + const double var_x390 = 55.277229008113743 * var_x162; + const double var_x391 = var_x165 * var_x388; + const double var_x392 = var_x101 * var_x103; + const double var_x393 = M_PI * var_x48; + const double var_x394 = var_x393 * NV_Ith_S(mParameters, 3); + const double var_x395 = 4.1923741101659298e-8 * var_x394; + const double var_x396 = var_x149 * var_x395; + const double var_x397 = var_x101 * var_x184; + const double var_x398 = 0.0001 * var_chaste_interface__Na_buffer__Na_SL_buf; + const double var_x399 = var_x195 * var_x197; + const double var_x400 = var_x199 * var_x66; + const double var_x401 = 0.001 + 0.0001 * var_chaste_interface__Na_buffer__Na_SL; + const double var_x402 = var_x49 * var_x50; + const double var_x403 = var_x402 * var_x75; + const double var_x404 = var_x39 * var_x64; + const double var_x405 = 2435.6567088836191 * var_x385; + const double var_x406 = var_x405 * NV_Ith_S(mParameters, 3); + const double var_x407 = 267.92223797719811 * var_x160; + const double var_x408 = 1.4796614506467986e-5 * var_x394; + const double var_x409 = var_x158 * var_x408; + const double var_x410 = 0.0001 * var_chaste_interface__Na_buffer__Na_jct_buf; + const double var_x411 = var_x207 * var_x209; + const double var_x412 = var_x210 * var_x39; + const double var_x413 = 0.001 + 0.0001 * var_chaste_interface__Na_buffer__Na_jct; + const double var_x414 = var_x402 * var_x63; + const double var_x415 = 0.076376893524206985 * NV_Ith_S(mParameters, 3); + const double var_x416 = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * NV_Ith_S(mParameters, 1); + const double var_x417 = 100 * var_chaste_interface__Ca_buffer__Ca_Calsequestrin; + const double var_x418 = var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); + const double var_x419 = var_x418 + 18.571428571428569 * NV_Ith_S(mParameters, 0); + const double var_x420 = 65 + 100 * var_chaste_interface__Ca_buffer__Ca_SR; + const double var_x421 = 31.054623038266147 * var_x385; + const double var_x422 = 5.5898321468879066 * var_x123 * var_x393; + const double var_x423 = 1.78 * var_x66; + const double var_x424 = var_x195 * var_x423; + const double var_x425 = 100 * var_chaste_interface__Ca_buffer__Ca_SLB_SL; + const double var_x426 = 100 * var_chaste_interface__Ca_buffer__Ca_SLHigh_SL; + const double var_x427 = 100 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x428 = 1.3 + var_x427; + const double var_x429 = 0.029999999999999999 + var_x427; + const double var_x430 = 1217.8283544418096 * var_x385; + const double var_x431 = 1972.8819341957317 * var_x393; + const double var_x432 = var_x145 * var_x431; + const double var_x433 = 0.22 * var_x39; + const double var_x434 = var_x207 * var_x433; + const double var_x435 = 68.627450980392155 * var_x418 + 1274.5098039215686 * NV_Ith_S(mParameters, 0); + const double var_x436 = 100 * var_chaste_interface__Ca_buffer__Ca_SLB_jct; + const double var_x437 = 100 * var_chaste_interface__Ca_buffer__Ca_SLHigh_jct; + const double var_x438 = 100 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x439 = 1.3 + var_x438; + const double var_x440 = 0.029999999999999999 + var_x438; + const double var_x441 = 0.025000000000000001 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol; + const double var_x442 = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol - 0.030769230769230767 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL - 0.00078461538461538469 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + const double var_x443 = 100 * var_x442; + const double var_x444 = var_x441 * var_chaste_interface__Ca_buffer__Cai; + const double var_x445 = 0.025024999999999999 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL; + const double var_x446 = var_x445 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x447 = 0.025490196078431372 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct; + const double var_x448 = var_x447 * var_chaste_interface__Ca_buffer__Ca_jct; + const double var_x449 = 0.025000000000000001 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol; + const double var_x450 = -var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol - 0.030769230769230767 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL - 0.00078461538461538469 * var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + const double var_x451 = 100 * var_x450; + const double var_x452 = var_x449 * var_chaste_interface__Ca_buffer__Cai; + const double var_x453 = 0.025024999999999999 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL; + const double var_x454 = var_x453 * var_chaste_interface__Ca_buffer__Ca_SL; + const double var_x455 = 0.025490196078431372 - var_chaste_interface__indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct; + const double var_x456 = var_x455 * var_chaste_interface__Ca_buffer__Ca_jct; + + // Matrix entries + IJth(rJacobian, 0, 0) = mSetVoltageDerivativeToZero ? 0.0 : (-0.00054830000000000005 + var_x144 + var_x146 - var_x125 - var_x131 - var_x139 - var_x141 - var_x153 - var_x159 - NV_Ith_S(mParameters, 13) - 0.11 * var_x10 - 0.89000000000000001 * var_x14 - 0.15619500000000003 * var_x112 - 1 * var_x21 - 0.01205875 / var_x1 - 0.019305000000000003 * var_x114 - 0.097566250000000007 / var_x3 - 0.21009999999999998 * var_x88 - 1.6999 * var_x92 - var_x107 * var_x109 - var_x4 * var_chaste_interface__Itos_X_gate__X_tos - var_x40 * var_x64 - var_x5 * var_chaste_interface__Itof_X_gate__X_tof - var_x67 * var_x76 - var_x15 * var_x18 * NV_Ith_S(mParameters, 19) * var_chaste_interface__IKr_Xr_gate__Xr - var_x15 * var_x36 * var_x37 * NV_Ith_S(mParameters, 18) - 9.1125000000000004e-8 * var_x108 * var_x132 * var_x136 * NV_Ith_S(mParameters, 5) - var_x37 * var_x95 * (-var_x31 * (0.061749999999999999 * var_x32 + 0.039456396800000001 * var_x33) + 0.24326999999999999 * var_x26 * var_x93 - 0.51429999999999998 * var_x29 * var_x34 / pow(var_x30, 2)) * NV_Ith_S(mParameters, 18) / pow(var_x35, 2) + 0.10468673984798647 * var_x15 * var_x26 * var_x36 * var_x93 * var_x94 * NV_Ith_S(mParameters, 18) + 0.019211226915711394 * var_x15 * var_x16 * var_x94 * NV_Ith_S(mParameters, 19) * var_chaste_interface__IKr_Xr_gate__Xr / pow(var_x17, 2) + 1.215e-7 * var_x102 * var_x108 * var_x133 * var_x134 * var_x135 * var_x137 * var_x96 * var_x98 * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V); + IJth(rJacobian, 2, 0) = var_x261 * (var_x262 * var_x266 + var_x255 * var_x265 * (-var_x262 - var_x267) / pow(var_x263, 2)) + (1 * var_x262 + 1 * var_x267) * (var_x264 - var_chaste_interface__INa_h_gate__h + var_x255 * var_x266); + IJth(rJacobian, 3, 0) = var_x286 * (var_x287 * var_x289 + var_x265 * var_x285 * (-var_x287 - var_x290) / pow(var_x288, 2)) + (1 * var_x287 + 1 * var_x290) * (var_x264 - var_chaste_interface__INa_j_gate__j + var_x285 * var_x289); + IJth(rJacobian, 4, 0) = var_x298 * (var_x296 * var_x299 - var_x299 * var_x300 + var_x297 * var_x301 / pow(var_x298, 2)) - var_x301 * (-var_chaste_interface__INa_m_gate__m + 0.32000000000000001 * var_x293 * var_x295 * var_x299); + IJth(rJacobian, 5, 0) = (-var_chaste_interface__IKr_Xr_gate__Xr + 1 / var_x303) * (0.00060999999999999997 * var_x306 + 0.0013799999999999999 * var_x309 - 0.00016973999999999998 * var_x307 * var_x310 / pow(var_x308, 2) - 8.8449999999999995e-5 * var_x304 * var_x311 / pow(var_x305, 2)) + 0.13333333333333333 * var_x302 * var_x312 / pow(var_x303, 2); + IJth(rJacobian, 6, 0) = (-var_chaste_interface__IKs_Xs_gate__Xs + 1 / var_x314) * (0.00013100000000000001 * var_x317 + 7.1899999999999999e-5 * var_x320 - 8.9997000000000013e-6 * var_x315 * var_x321 / pow(var_x316, 2) - 1.0641199999999999e-5 * var_x318 * var_x321 / pow(var_x319, 2)) + 0.059880239520958084 * var_x313 * var_x322 / pow(var_x314, 2); + IJth(rJacobian, 7, 0) = var_x327 * var_x330 + 0.59999999999999998 * var_x324 * (-var_x331 - var_chaste_interface__Itos_X_gate__X_tos) / (pow(var_x325, 2) * pow(var_x326, 2)); + IJth(rJacobian, 8, 0) = -var_x337 * var_x341 + 300 * var_x333 * var_x342 * (-var_x344 - var_chaste_interface__Itos_Y_gate__Y_tos) / pow(var_x336, 2); + IJth(rJacobian, 9, 0) = -var_x341 * var_x346 + 280 * var_x333 * var_x342 * (-var_x344 - var_chaste_interface__Itos_R_gate__R_tos) / pow(var_x345, 2); + IJth(rJacobian, 10, 0) = var_x330 * var_x349 + 0.0077777777777777776 * var_x347 * (-var_x331 - var_chaste_interface__Itof_X_gate__X_tof) * var_chaste_interface__cell__V / pow(var_x348, 2); + IJth(rJacobian, 11, 0) = -var_x341 * var_x351 + 2 * var_x338 * var_x340 * (-var_x344 - var_chaste_interface__Itof_Y_gate__Y_tof) / pow(var_x350, 2); + IJth(rJacobian, 12, 0) = -var_x354 * var_x357 * var_x359 + 0.035000000000000003 * var_x354 * var_x355 * var_x357 - var_x355 * var_x357 * var_x359 / pow(var_x353, 2) + 0.0058333333333333336 * var_x352 * var_x354 * var_x356 * var_x358; + IJth(rJacobian, 13, 0) = var_x361 * (0.029999999999999999 * var_x364 / pow(var_x365, 2) - 0.27777777777777779 * var_x362 / pow(var_x363, 2)) + var_x360 * (-0.032935010000000001 - 0.0022713799999999999 * var_chaste_interface__cell__V) * (-var_chaste_interface__ICaL_f_gate__f + 1 / var_x363 + 0.59999999999999998 / var_x365); + IJth(rJacobian, 19, 0) = -var_x387 * (0.00026433000000000001 + var_x153 + var_x203 + 2.6699999999999999 * var_x384 + 5.0996999999999995 * var_x92 + 0.46858500000000003 * var_x112); + IJth(rJacobian, 20, 0) = -var_x406 * (3.2670000000000004e-5 + var_x159 + var_x213 + 0.33000000000000002 * var_x404 + 0.63029999999999997 * var_x88 + 0.057915000000000008 * var_x114); + IJth(rJacobian, 25, 0) = -var_x421 * (0.00022365699999999999 + var_x125 + var_x141 - var_x144 - 1.78 * var_x384 - 0.31239000000000006 * var_x112); + IJth(rJacobian, 26, 0) = -var_x430 * (2.7642999999999999e-5 + var_x131 + var_x139 - var_x146 - 0.22 * var_x404 - 0.038610000000000005 * var_x114); + IJth(rJacobian, 1, 1) = -7.2523935948689155 + var_x229 + var_x230 + var_x231 + var_x242 + var_x243 + 5029484.9869235931 * var_x241 - 5029484.9869235931 * var_x232 * var_x239; + IJth(rJacobian, 24, 1) = -93404721.185723871 * var_x241 + 93404721.185723871 * var_x232 * var_x236 * var_x237 * NV_Ith_S(mParameters, 2); + IJth(rJacobian, 25, 1) = 5.6417918332397381; + IJth(rJacobian, 32, 1) = 2.2890000000000006 - var_x229; + IJth(rJacobian, 33, 1) = 0.33180000000000004 - var_x242; + IJth(rJacobian, 35, 1) = 0.81600000000000006 - var_x230; + IJth(rJacobian, 36, 1) = 1.9320000000000004 - var_x243; + IJth(rJacobian, 38, 1) = 1.71 - var_x231; + IJth(rJacobian, 39, 1) = var_x441 * var_x443; + IJth(rJacobian, 42, 1) = var_x449 * var_x451; + IJth(rJacobian, 0, 2) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x161 * var_x20 - var_x163 * var_x20); + IJth(rJacobian, 2, 2) = -var_x261; + IJth(rJacobian, 19, 2) = -var_x389 * var_x390; + IJth(rJacobian, 20, 2) = -var_x389 * var_x407; + IJth(rJacobian, 0, 3) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x161 * var_x165 - var_x163 * var_x165); + IJth(rJacobian, 3, 3) = -var_x286; + IJth(rJacobian, 19, 3) = -var_x390 * var_x391; + IJth(rJacobian, 20, 3) = -var_x391 * var_x407; + IJth(rJacobian, 0, 4) = mSetVoltageDerivativeToZero ? 0.0 : (-0.33000000000000002 * var_x167 - 2.6699999999999999 * var_x168); + IJth(rJacobian, 4, 4) = -var_x298; + IJth(rJacobian, 19, 4) = -165.83168702434122 * var_x168 * var_x388; + IJth(rJacobian, 20, 4) = -803.76671393159438 * var_x167 * var_x388; + IJth(rJacobian, 0, 5) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x18 * var_x95 * NV_Ith_S(mParameters, 19)); + IJth(rJacobian, 5, 5) = -var_x312; + IJth(rJacobian, 0, 6) = mSetVoltageDerivativeToZero ? 0.0 : (-0.22 * var_x171 * var_x8 - 1.78 * var_x13 * var_x171); + IJth(rJacobian, 6, 6) = -var_x322; + IJth(rJacobian, 0, 7) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x4 * var_x94); + IJth(rJacobian, 7, 7) = -var_x327; + IJth(rJacobian, 0, 8) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x172); + IJth(rJacobian, 8, 8) = -var_x337; + IJth(rJacobian, 0, 9) = mSetVoltageDerivativeToZero ? 0.0 : (-0.5 * var_x172); + IJth(rJacobian, 9, 9) = -var_x346; + IJth(rJacobian, 0, 10) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x5 * var_x94); + IJth(rJacobian, 10, 10) = -var_x349; + IJth(rJacobian, 0, 11) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x94 * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof); + IJth(rJacobian, 11, 11) = -var_x351; + IJth(rJacobian, 0, 12) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x150 * var_x176 - var_x174 * var_x175 - var_x176 * var_x177 - var_x179 * var_x181 - var_x180 * var_x183); + IJth(rJacobian, 12, 12) = -0.035000000000000003 * var_x354 * var_x355 * var_x358; + IJth(rJacobian, 19, 12) = -var_x392 * var_x396; + IJth(rJacobian, 20, 12) = -var_x392 * var_x409; + IJth(rJacobian, 25, 12) = -var_x181 * var_x422; + IJth(rJacobian, 26, 12) = -var_x180 * var_x432; + IJth(rJacobian, 0, 13) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x150 * var_x186 - var_x175 * var_x185 - var_x177 * var_x186 - var_x179 * var_x188 - var_x183 * var_x187); + IJth(rJacobian, 13, 13) = -var_x361; + IJth(rJacobian, 19, 13) = -var_x396 * var_x397; + IJth(rJacobian, 20, 13) = -var_x397 * var_x409; + IJth(rJacobian, 25, 13) = -var_x188 * var_x422; + IJth(rJacobian, 26, 13) = -var_x187 * var_x432; + IJth(rJacobian, 0, 14) = mSetVoltageDerivativeToZero ? 0.0 : (1.2150000000000001e-8 * var_x190 + var_x119 * var_x179 + 6.7499999999999994e-10 * var_x148 * var_x189); + IJth(rJacobian, 14, 14) = -0.011900000000000001 - 1.7 * var_chaste_interface__Ca_buffer__Ca_SL; + IJth(rJacobian, 19, 14) = var_x105 * var_x148 * var_x395; + IJth(rJacobian, 25, 14) = var_x119 * var_x422; + IJth(rJacobian, 0, 15) = mSetVoltageDerivativeToZero ? 0.0 : (1.0935000000000001e-7 * var_x190 + 6.0749999999999998e-9 * var_x155 * var_x178 + var_x119 * var_x130 * var_x178); + IJth(rJacobian, 15, 15) = -0.011900000000000001 - 1.7 * var_chaste_interface__Ca_buffer__Ca_jct; + IJth(rJacobian, 20, 15) = var_x155 * var_x408; + IJth(rJacobian, 26, 15) = var_x119 * var_x129 * var_x431; + IJth(rJacobian, 16, 16) = -0.0050000000000000001 - var_x371 - var_x374; + IJth(rJacobian, 17, 16) = -var_x374; + IJth(rJacobian, 18, 16) = var_x374; + IJth(rJacobian, 16, 17) = -0.0050000000000000001; + IJth(rJacobian, 17, 17) = -0.065000000000000002 - var_x374; + IJth(rJacobian, 18, 17) = 0.0050000000000000001; + IJth(rJacobian, 16, 18) = 0.055; + IJth(rJacobian, 17, 18) = var_x371 - var_x374; + IJth(rJacobian, 18, 18) = -0.059999999999999998 - var_x371; + IJth(rJacobian, 24, 18) = -var_x416; + IJth(rJacobian, 26, 18) = 68.627450980392155 * var_x416; + IJth(rJacobian, 0, 19) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x204 - 99552.943599999999 * var_x201 - var_x194 * var_x196 - var_x197 * var_x199); + IJth(rJacobian, 19, 19) = (-2.5101556644976917 + var_x398 - var_x386 * (var_x204 + 8.0099999999999998 * var_x400 + 298658.8308 * var_x201 + var_x194 * var_x399)) * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 20, 19) = 1.0879068612142859 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 21, 19) = 0.000165 - var_x398; + IJth(rJacobian, 23, 19) = var_x415; + IJth(rJacobian, 25, 19) = -var_x421 * (-5.3399999999999999 * var_x400 - var_x194 * var_x424); + IJth(rJacobian, 0, 20) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x214 - 12304.296399999999 * var_x211 - var_x206 * var_x208 - var_x209 * var_x210); + IJth(rJacobian, 19, 20) = 0.02774162496096429 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 20, 20) = (-1.0886629612142857 + var_x410 - var_x405 * (var_x214 + 0.98999999999999999 * var_x412 + 36912.889199999998 * var_x211 + var_x206 * var_x411)) * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 22, 20) = 0.0007561 - var_x410; + IJth(rJacobian, 26, 20) = -var_x430 * (-0.66000000000000003 * var_x412 - var_x206 * var_x434); + IJth(rJacobian, 19, 21) = var_x401 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 21, 21) = -var_x401; + IJth(rJacobian, 20, 22) = var_x413 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 22, 22) = -var_x413; + IJth(rJacobian, 0, 23) = mSetVoltageDerivativeToZero ? 0.0 : (-0.0020162999999999999 * var_x10 * var_x215 - 0.0163137 * var_x14 * var_x215); + IJth(rJacobian, 19, 23) = 2.4822490395367272 * NV_Ith_S(mParameters, 3); + IJth(rJacobian, 23, 23) = -var_x415; + IJth(rJacobian, 1, 24) = 0.69232869146389786 * var_x245 + 0.69232869146389786 * var_x246; + IJth(rJacobian, 16, 24) = -var_x378 + 2.3772197685794643 * var_x366 * var_x367 * var_x375 * var_chaste_interface__Ca_buffer__Ca_jct * var_chaste_interface__Jrel_SR__R; + IJth(rJacobian, 17, 24) = -var_x381 + var_x377 * var_x382; + IJth(rJacobian, 18, 24) = var_x378 + var_x381; + IJth(rJacobian, 24, 24) = -260 + var_x417 - var_x419 - 12.857532841472388 * var_x245 - 12.857532841472388 * var_x246; + IJth(rJacobian, 26, 24) = var_x435; + IJth(rJacobian, 31, 24) = 260 - var_x417; + IJth(rJacobian, 0, 25) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x223 - 4.4795166719999994e-11 * var_x220 - var_x196 * var_x218 - 0.0097566250000000014 * var_x216 / (pow(var_x3, 2) * pow(var_chaste_interface__Ca_buffer__Ca_SL, 2)) - 0.28183333333333332 * var_x11 * var_x2 * var_x219 / pow(var_x12, 2) + 0.89000000000000001 * var_x49 * var_x50 * var_x58 * var_x60 * var_x66 * var_x74 * NV_Ith_S(mParameters, 22)); + IJth(rJacobian, 1, 25) = 0.17359359486891501; + IJth(rJacobian, 14, 25) = 1.7 - 1.7 * var_chaste_interface__ICaL_fCa_gate__fCaB_SL; + IJth(rJacobian, 19, 25) = -var_x387 * (1.3438550016e-10 * var_x220 + var_x218 * var_x399 - var_x197 * var_x403); + IJth(rJacobian, 25, 25) = -171.99023312516786 + var_x425 + var_x426 - var_x421 * (var_x223 - 8.9590333439999989e-11 * var_x220 + var_x403 * var_x423 - var_x218 * var_x424); + IJth(rJacobian, 26, 25) = 48.958482036396518; + IJth(rJacobian, 27, 25) = 121.55000000000001 - var_x425; + IJth(rJacobian, 29, 25) = 43.550000000000004 - var_x426; + IJth(rJacobian, 40, 25) = var_x443 * var_x445; + IJth(rJacobian, 43, 25) = var_x451 * var_x453; + IJth(rJacobian, 0, 26) = mSetVoltageDerivativeToZero ? 0.0 : (-var_x228 - 5.5364812799999996e-12 * var_x226 - var_x208 * var_x225 - 0.0012058750000000001 * var_x216 / (pow(var_x1, 2) * var_x224) - 0.034833333333333334 * var_x0 * var_x219 * var_x6 / pow(var_x7, 2) + 0.11 * var_x39 * var_x49 * var_x50 * var_x56 * var_x58 * var_x60 * NV_Ith_S(mParameters, 22)); + IJth(rJacobian, 15, 26) = 1.7 - 1.7 * var_chaste_interface__ICaL_fCa_gate__fCaB_jct; + IJth(rJacobian, 16, 26) = -var_x380 - var_x370 * var_chaste_interface__Jrel_SR__R; + IJth(rJacobian, 17, 26) = var_x383 + var_x379 * var_x382 * var_chaste_interface__Ca_buffer__Ca_jct; + IJth(rJacobian, 18, 26) = var_x380 - var_x383; + IJth(rJacobian, 20, 26) = -var_x406 * (1.6609443839999999e-11 * var_x226 + var_x225 * var_x411 - var_x209 * var_x414); + IJth(rJacobian, 24, 26) = var_x419; + IJth(rJacobian, 25, 26) = 1.2484412919281114; + IJth(rJacobian, 26, 26) = -128.61534478149457 + var_x436 + var_x437 - var_x435 - var_x430 * (var_x228 - 1.1072962559999999e-11 * var_x226 + var_x414 * var_x433 - var_x225 * var_x434); + IJth(rJacobian, 28, 26) = 58.627450980392155 - var_x436; + IJth(rJacobian, 30, 26) = 21.029411764705884 - var_x437; + IJth(rJacobian, 41, 26) = var_x443 * var_x447; + IJth(rJacobian, 44, 26) = var_x451 * var_x455; + IJth(rJacobian, 25, 27) = var_x428; + IJth(rJacobian, 27, 27) = -var_x428; + IJth(rJacobian, 26, 28) = var_x439; + IJth(rJacobian, 28, 28) = -var_x439; + IJth(rJacobian, 25, 29) = var_x429; + IJth(rJacobian, 29, 29) = -var_x429; + IJth(rJacobian, 26, 30) = var_x440; + IJth(rJacobian, 30, 30) = -var_x440; + IJth(rJacobian, 24, 31) = var_x420; + IJth(rJacobian, 31, 31) = -var_x420; + IJth(rJacobian, 1, 32) = var_x247; + IJth(rJacobian, 32, 32) = -var_x247; + IJth(rJacobian, 1, 33) = 0.003032 + var_x248; + IJth(rJacobian, 33, 33) = -3.1999999999999999e-5 - var_x248; + IJth(rJacobian, 34, 33) = -0.0030000000000000001; + IJth(rJacobian, 1, 34) = 0.0063300000000000006 + var_x248; + IJth(rJacobian, 33, 34) = -var_x248; + IJth(rJacobian, 34, 34) = -0.0063300000000000006; + IJth(rJacobian, 1, 35) = var_x249; + IJth(rJacobian, 35, 35) = -var_x249; + IJth(rJacobian, 1, 36) = 0.016159999999999997 + var_x250; + IJth(rJacobian, 36, 36) = -0.00046000000000000001 - var_x250; + IJth(rJacobian, 37, 36) = -0.015699999999999999; + IJth(rJacobian, 1, 37) = 0.015757 + var_x250; + IJth(rJacobian, 36, 37) = -var_x250; + IJth(rJacobian, 37, 37) = -0.015757; + IJth(rJacobian, 1, 38) = var_x252; + IJth(rJacobian, 38, 38) = -var_x252; + IJth(rJacobian, 39, 39) = -0.059999999999999998 - var_x251 * var_x441 - var_x251 * var_x442; + IJth(rJacobian, 40, 39) = -var_x427 * var_x445; + IJth(rJacobian, 41, 39) = -var_x438 * var_x447; + IJth(rJacobian, 39, 40) = -3.0769230769230771 * var_x444; + IJth(rJacobian, 40, 40) = -0.059999999999999998 - 3.0769230769230771 * var_x446 - var_x427 * var_x442; + IJth(rJacobian, 41, 40) = -3.0769230769230771 * var_x448; + IJth(rJacobian, 39, 41) = -0.078461538461538471 * var_x444; + IJth(rJacobian, 40, 41) = -0.078461538461538471 * var_x446; + IJth(rJacobian, 41, 41) = -0.059999999999999998 - 0.078461538461538471 * var_x448 - var_x438 * var_x442; + IJth(rJacobian, 42, 42) = -0.11 - var_x251 * var_x449 - var_x251 * var_x450; + IJth(rJacobian, 43, 42) = -var_x427 * var_x453; + IJth(rJacobian, 44, 42) = -var_x438 * var_x455; + IJth(rJacobian, 42, 43) = -3.0769230769230771 * var_x452; + IJth(rJacobian, 43, 43) = -0.11 - 3.0769230769230771 * var_x454 - var_x427 * var_x450; + IJth(rJacobian, 44, 43) = -3.0769230769230771 * var_x456; + IJth(rJacobian, 42, 44) = -0.078461538461538471 * var_x452; + IJth(rJacobian, 43, 44) = -0.078461538461538471 * var_x454; + IJth(rJacobian, 44, 44) = -0.11 - 0.078461538461538471 * var_x456 - var_x438 * var_x450; + } + + N_Vector Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const N_Vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : NV_Ith_S(rY, 0)); + // Units: millivolt; Initial value: -85.721630473733 + double var_chaste_interface__INa_h_gate__h = NV_Ith_S(rY, 2); + // Units: dimensionless; Initial value: 0.98714602875678 + double var_chaste_interface__INa_j_gate__j = NV_Ith_S(rY, 3); + // Units: dimensionless; Initial value: 0.991826348770428 + double var_chaste_interface__INa_m_gate__m = NV_Ith_S(rY, 4); + // Units: dimensionless; Initial value: 0.0013702407736465 + double var_chaste_interface__IKr_Xr_gate__Xr = NV_Ith_S(rY, 5); + // Units: dimensionless; Initial value: 0.00846906175020028 + double var_chaste_interface__IKs_Xs_gate__Xs = NV_Ith_S(rY, 6); + // Units: dimensionless; Initial value: 0.00613557812033723 + double var_chaste_interface__Itos_X_gate__X_tos = NV_Ith_S(rY, 7); + // Units: dimensionless; Initial value: 0.00401072468238921 + double var_chaste_interface__Itos_Y_gate__Y_tos = NV_Ith_S(rY, 8); + // Units: dimensionless; Initial value: 0.31555225368514 + double var_chaste_interface__Itos_R_gate__R_tos = NV_Ith_S(rY, 9); + // Units: dimensionless; Initial value: 0.402577243036347 + double var_chaste_interface__Itof_X_gate__X_tof = NV_Ith_S(rY, 10); + // Units: dimensionless; Initial value: 0.00401068798369438 + double var_chaste_interface__Itof_Y_gate__Y_tof = NV_Ith_S(rY, 11); + // Units: dimensionless; Initial value: 0.994632857675454 + double var_chaste_interface__ICaL_d_gate__d = NV_Ith_S(rY, 12); + // Units: dimensionless; Initial value: 6.99526086177479e-06 + double var_chaste_interface__ICaL_f_gate__f = NV_Ith_S(rY, 13); + // Units: dimensionless; Initial value: 1.00067601563206 + double var_chaste_interface__ICaL_fCa_gate__fCaB_SL = NV_Ith_S(rY, 14); + // Units: dimensionless; Initial value: 0.0150193299768419 + double var_chaste_interface__ICaL_fCa_gate__fCaB_jct = NV_Ith_S(rY, 15); + // Units: dimensionless; Initial value: 0.0244048782575591 + double var_chaste_interface__Jrel_SR__O = NV_Ith_S(rY, 18); + // Units: dimensionless; Initial value: 7.1199533741995e-07 + double var_chaste_interface__Na_buffer__Na_SL = NV_Ith_S(rY, 19); + // Units: millimolar; Initial value: 8.87161932058707 + double var_chaste_interface__Na_buffer__Na_jct = NV_Ith_S(rY, 20); + // Units: millimolar; Initial value: 8.87031835089116 + double var_chaste_interface__Na_buffer__Nai = NV_Ith_S(rY, 23); + // Units: millimolar; Initial value: 8.87200572571131 + double var_chaste_interface__Ca_buffer__Ca_SR = NV_Ith_S(rY, 24); + // Units: millimolar; Initial value: 0.547125831028543 + double var_chaste_interface__Ca_buffer__Ca_SL = NV_Ith_S(rY, 25); + // Units: millimolar; Initial value: 0.000104971310105451 + double var_chaste_interface__Ca_buffer__Ca_jct = NV_Ith_S(rY, 26); + // Units: millimolar; Initial value: 0.000174045152623969 + + // Mathematics + const double var_ICaL__Fx_ICaL_SL = 0.10000000000000001; // dimensionless + const double var_ICaL__Fx_ICaL_jct = 0.90000000000000002; // dimensionless + const double var_ICaL__PK = 2.7000000000000001e-7; // litre_per_farad_millisecond + const double var_ICaL__PNa = 1.4999999999999999e-8; // litre_per_farad_millisecond + const double var_ICaL__Q10_CaL = 1.8; // dimensionless + const double var_ICaL__gamma_Cai = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_ICaL__gamma_Ki = 0.75; // dimensionless + const double var_ICaL__gamma_Ko = 0.75; // dimensionless + const double var_ICaL__gamma_Nai = 0.75; // dimensionless + const double var_ICaL__gamma_Nao = 0.75; // dimensionless + const double var_ICaL_fCa_gate__fCa_SL = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_SL; // dimensionless + const double var_ICaL_fCa_gate__fCa_jct = 1 - var_chaste_interface__ICaL_fCa_gate__fCaB_jct; // dimensionless + const double var_ICab__Fx_CaBk_SL = 0.89000000000000001; // dimensionless + const double var_ICab__Fx_CaBk_jct = 0.11; // dimensionless + const double var_ICab__G_CaBk = 0.00025129999999999998; // milliS_per_microF + const double var_ICap__Fx_SLCaP_SL = 0.89000000000000001; // dimensionless + const double var_ICap__Fx_SLCaP_jct = 0.11; // dimensionless + const double var_ICap__H = 1.6000000000000001; // dimensionless + const double var_ICap__Km = 0.00050000000000000001; // millimolar + const double var_ICap__Q10_SLCaP = 2.3500000000000001; // dimensionless + const double var_ICap__V_maxAF = 0.067299999999999999; // microA_per_microF + const double var_IKs__Fx_Ks_SL = 0.89000000000000001; // dimensionless + const double var_IKs__Fx_Ks_jct = 0.11; // dimensionless + const double var_IKs__pCa_SL = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_SL); // dimensionless + const double var_IKs__G_Ks_SL = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_SL))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pCa_jct = 3 - log10(1 * var_chaste_interface__Ca_buffer__Ca_jct); // dimensionless + const double var_IKs__G_Ks_jct = (0.057000000000000002 + 0.19 / (1 + exp(-12 + 1.6666666666666667 * var_IKs__pCa_jct))) * NV_Ith_S(mParameters, 20); // milliS_per_microF + const double var_IKs__pKNa = 0.018329999999999999; // dimensionless + const double var_INa__Fx_Na_SL = 0.89000000000000001; // dimensionless + const double var_INa__Fx_Na_jct = 0.11; // dimensionless + const double var_INaCa__Fx_NCX_SL = 0.89000000000000001; // dimensionless + const double var_INaCa__Fx_NCX_jct = 0.11; // dimensionless + const double var_INaCa__HNa = 3; // dimensionless + const double var_INaCa__K_mCai = 0.0035899999999999999; // millimolar + const double var_INaCa__K_mCao = 1.3; // millimolar + const double var_INaCa__K_mNai = 12.289999999999999; // millimolar + const double var_INaCa__K_mNao = 87.5; // millimolar + const double var_INaCa__Kd_act = 0.00025599999999999999; // millimolar + const double var_INaCa__Ka_SL = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_SL, 3)); // dimensionless + const double var_INaCa__Ka_jct = 1 / (1 + pow(var_INaCa__Kd_act, 3) / pow(var_chaste_interface__Ca_buffer__Ca_jct, 3)); // dimensionless + const double var_INaCa__Q10_NCX = 1.5700000000000001; // dimensionless + const double var_INaCa__eta = 0.34999999999999998; // dimensionless + const double var_INaCa__ksat = 0.27000000000000002; // dimensionless + const double var_INa__openProb = pow(var_chaste_interface__INa_m_gate__m, 3) * var_chaste_interface__INa_h_gate__h * var_chaste_interface__INa_j_gate__j; // dimensionless + const double var_INab__Fx_NaBk_SL = 0.89000000000000001; // dimensionless + const double var_INab__Fx_NaBk_jct = 0.11; // dimensionless + const double var_INab__G_NaBk = 0.00029700000000000001; // milliS_per_microF + const double var_Jrel_SR__j_rel_SR = (-var_chaste_interface__Ca_buffer__Ca_jct + var_chaste_interface__Ca_buffer__Ca_SR) * var_chaste_interface__Jrel_SR__O * NV_Ith_S(mParameters, 1); // millimolar_per_millisecond + const double var_ICaL_f_gate__tau_f = 1 / (0.02 + 0.019699999999999999 * exp(-pow((0.48865000000000003 + 0.033700000000000001 * var_chaste_interface__cell__V), 2))); // millisecond + const double var_IKr_Rr_gate__Rr = 1 / (1 + exp(1.4732142857142858 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_INa_h_gate__alpha_h = ((var_chaste_interface__cell__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * NV_Ith_S(mParameters, 16) - 0.14705882352941177 * var_chaste_interface__cell__V)) : (0)); // per_millisecond + const double var_INa_h_gate__beta_h = ((var_chaste_interface__cell__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * NV_Ith_S(mParameters, 16)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * NV_Ith_S(mParameters, 16))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * NV_Ith_S(mParameters, 16) - 0.0900900900900901 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_h_gate__tau_h = 1 / (var_INa_h_gate__alpha_h + var_INa_h_gate__beta_h); // millisecond + const double var_INa_j_gate__alpha_j = ((var_chaste_interface__cell__V < -40) ? (1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * NV_Ith_S(mParameters, 16)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * NV_Ith_S(mParameters, 16) - 0.043909999999999998 * var_chaste_interface__cell__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V - 0.311 * NV_Ith_S(mParameters, 16)))) : (0)); // per_millisecond + const double var_INa_j_gate__beta_j = ((var_chaste_interface__cell__V < -40) ? (0.1212 * exp(0.01052 * NV_Ith_S(mParameters, 16) - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * NV_Ith_S(mParameters, 16) - 0.13780000000000001 * var_chaste_interface__cell__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * NV_Ith_S(mParameters, 16) - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * NV_Ith_S(mParameters, 16) - 0.10000000000000001 * var_chaste_interface__cell__V)))); // per_millisecond + const double var_INa_j_gate__tau_j = 1 / (var_INa_j_gate__alpha_j + var_INa_j_gate__beta_j); // millisecond + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_model_parameters__Cm_per_area = 1.9999999999999999e-6; // farad_per_cm2 + const double var_IK1__G_K1 = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 18); // milliS_per_microF + const double var_IKr__G_IKr = 0.43033148291193518 * sqrt(NV_Ith_S(mParameters, 8)) * NV_Ith_S(mParameters, 19); // milliS_per_microF + const double var_ICaL__Q_CaL = pow(var_ICaL__Q10_CaL, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICaL__temp = 0.45000000000000001 * pow(NV_Ith_S(mParameters, 10), 2) * var_ICaL__Q_CaL * var_chaste_interface__ICaL_d_gate__d * var_chaste_interface__ICaL_f_gate__f * var_chaste_interface__cell__V / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)); // coulomb_per_mole + const double var_ICaL__i_CaL_Ca_SL = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_SL * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Ca_jct = 4 * (-var_ICaL__gamma_Cao * NV_Ith_S(mParameters, 6) + var_chaste_interface__Ca_buffer__Ca_jct * var_ICaL__gamma_Cai * exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * NV_Ith_S(mParameters, 12) * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(2 * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_K = (var_ICaL__Fx_ICaL_SL * var_ICaL_fCa_gate__fCa_SL + var_ICaL__Fx_ICaL_jct * var_ICaL_fCa_gate__fCa_jct) * (-var_ICaL__gamma_Ko * NV_Ith_S(mParameters, 8) + var_ICaL__gamma_Ki * NV_Ith_S(mParameters, 5) * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__PK * var_ICaL__temp / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_SL = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_SL * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_SL * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_SL / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL_Na_jct = (-var_ICaL__gamma_Nao * NV_Ith_S(mParameters, 9) + var_ICaL__gamma_Nai * var_chaste_interface__Na_buffer__Na_jct * exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) * var_ICaL__Fx_ICaL_jct * var_ICaL__PNa * var_ICaL__temp * var_ICaL_fCa_gate__fCa_jct / (-1 + exp(var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // microA_per_microF + const double var_ICaL__i_CaL = var_ICaL__i_CaL_Ca_SL + var_ICaL__i_CaL_Ca_jct + var_ICaL__i_CaL_K + var_ICaL__i_CaL_Na_SL + var_ICaL__i_CaL_Na_jct; // microA_per_microF + const double var_ICaL__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__i_CaL; // uA_per_cm2 + const double var_ICap__Q_SLCaP = pow(var_ICap__Q10_SLCaP, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_ICap__i_Cap_SL = var_ICap__Fx_SLCaP_SL * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_SL), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap_jct = var_ICap__Fx_SLCaP_jct * var_ICap__Q_SLCaP * var_ICap__V_maxAF / (1 + pow((var_ICap__Km / var_chaste_interface__Ca_buffer__Ca_jct), var_ICap__H)); // microA_per_microF + const double var_ICap__i_Cap = var_ICap__i_Cap_SL + var_ICap__i_Cap_jct; // microA_per_microF + const double var_ICap__i_Cap_converted = HeartConfig::Instance()->GetCapacitance() * var_ICap__i_Cap; // uA_per_cm2 + const double var_IKs__E_Ks = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log((var_IKs__pKNa * NV_Ith_S(mParameters, 9) + NV_Ith_S(mParameters, 8)) / (var_IKs__pKNa * var_chaste_interface__Na_buffer__Nai + NV_Ith_S(mParameters, 5))) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IKs__i_Ks_SL = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_SL * var_IKs__G_Ks_SL; // microA_per_microF + const double var_IKs__i_Ks_jct = pow(var_chaste_interface__IKs_Xs_gate__Xs, 2) * (-var_IKs__E_Ks + var_chaste_interface__cell__V) * var_IKs__Fx_Ks_jct * var_IKs__G_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks = var_IKs__i_Ks_SL + var_IKs__i_Ks_jct; // microA_per_microF + const double var_IKs__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__i_Ks; // uA_per_cm2 + const double var_INaCa__Q_NCX = pow(var_INaCa__Q10_NCX, (-31 + 0.10000000000000001 * NV_Ith_S(mParameters, 23))); // dimensionless + const double var_INaCa__temp_SL = (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_SL = var_INaCa__Fx_NCX_SL * var_INaCa__Ka_SL * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_SL / (pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_SL, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_SL + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_SL / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_SL + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_SL / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__temp_jct = (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) * exp(var_INaCa__eta * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23))) - pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))) / (1 + var_INaCa__ksat * exp((-1 + var_INaCa__eta) * var_chaste_interface__cell__V * NV_Ith_S(mParameters, 10) / (NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23)))); // millimolar4 + const double var_INaCa__i_NaCa_jct = var_INaCa__Fx_NCX_jct * var_INaCa__Ka_jct * var_INaCa__Q_NCX * NV_Ith_S(mParameters, 22) * var_INaCa__temp_jct / (pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * var_INaCa__K_mCao + pow(var_chaste_interface__Na_buffer__Na_jct, var_INaCa__HNa) * NV_Ith_S(mParameters, 6) + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * var_chaste_interface__Ca_buffer__Ca_jct + pow(var_INaCa__K_mNao, var_INaCa__HNa) * (1 + var_chaste_interface__Ca_buffer__Ca_jct / var_INaCa__K_mCai) * var_chaste_interface__Ca_buffer__Ca_jct + pow(NV_Ith_S(mParameters, 9), var_INaCa__HNa) * (1 + pow((var_chaste_interface__Na_buffer__Na_jct / var_INaCa__K_mNai), var_INaCa__HNa)) * var_INaCa__K_mCai); // microA_per_microF + const double var_INaCa__i_NaCa = var_INaCa__i_NaCa_SL + var_INaCa__i_NaCa_jct; // microA_per_microF + const double var_INaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__i_NaCa; // uA_per_cm2 + const double var_model_parameters__cell_length = 100; // micrometre + const double var_model_parameters__cell_radius = 10.25; // micrometre + const double var_model_parameters__Cm = 2.0e-8 * M_PI * var_model_parameters__Cm_per_area * var_model_parameters__cell_length * var_model_parameters__cell_radius; // farad + const double var_model_parameters__Cm_converted = 1000000 * var_model_parameters__Cm; // uF + const double var_reversal_potentials__E_Ca_SL = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_SL = (-var_reversal_potentials__E_Ca_SL + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_SL * var_ICab__G_CaBk; // microA_per_microF + const double var_reversal_potentials__E_Ca_jct = 0.5 * NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 6) / var_chaste_interface__Ca_buffer__Ca_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_ICab__i_Cab_jct = (-var_reversal_potentials__E_Ca_jct + var_chaste_interface__cell__V) * var_ICab__Fx_CaBk_jct * var_ICab__G_CaBk; // microA_per_microF + const double var_ICab__i_Cab = var_ICab__i_Cab_SL + var_ICab__i_Cab_jct; // microA_per_microF + const double var_ICab__i_Cab_converted = HeartConfig::Instance()->GetCapacitance() * var_ICab__i_Cab; // uA_per_cm2 + const double var_reversal_potentials__E_Cl = -NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 7) / NV_Ith_S(mParameters, 4)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IClb__i_Clb = (-var_reversal_potentials__E_Cl + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 13); // microA_per_microF + const double var_IClb__i_Clb_converted = HeartConfig::Instance()->GetCapacitance() * var_IClb__i_Clb; // uA_per_cm2 + const double var_reversal_potentials__E_K = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 8) / NV_Ith_S(mParameters, 5)) / NV_Ith_S(mParameters, 10); // millivolt + const double var_IK1_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__E_K)); // per_millisecond + const double var_IK1_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__E_K) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__E_K - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_millisecond + const double var_IK1_K1_gate__K1_infinity = var_IK1_K1_gate__alpha_K1 / (var_IK1_K1_gate__alpha_K1 + var_IK1_K1_gate__beta_K1); // dimensionless + const double var_IK1__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IK1__G_K1 * var_IK1_K1_gate__K1_infinity; // microA_per_microF + const double var_IK1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__i_K1; // uA_per_cm2 + const double var_IKr__i_Kr = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * var_IKr__G_IKr * var_IKr_Rr_gate__Rr * var_chaste_interface__IKr_Xr_gate__Xr; // microA_per_microF + const double var_IKr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__i_Kr; // uA_per_cm2 + const double var_Itof__i_tof = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * NV_Ith_S(mParameters, 17) * var_chaste_interface__Itof_X_gate__X_tof * var_chaste_interface__Itof_Y_gate__Y_tof; // microA_per_microF + const double var_Itof__i_tof_converted = HeartConfig::Instance()->GetCapacitance() * var_Itof__i_tof; // uA_per_cm2 + const double var_Itos__i_tos = (-var_reversal_potentials__E_K + var_chaste_interface__cell__V) * (0.5 * var_chaste_interface__Itos_R_gate__R_tos + var_chaste_interface__Itos_Y_gate__Y_tos) * NV_Ith_S(mParameters, 21) * var_chaste_interface__Itos_X_gate__X_tos; // microA_per_microF + const double var_Itos__i_tos_converted = HeartConfig::Instance()->GetCapacitance() * var_Itos__i_tos; // uA_per_cm2 + const double var_reversal_potentials__E_Na_SL = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_SL) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INa__Fx_Na_SL * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INab__i_Nab_SL = (-var_reversal_potentials__E_Na_SL + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_SL * var_INab__G_NaBk; // microA_per_microF + const double var_reversal_potentials__E_Na_jct = NV_Ith_S(mParameters, 11) * NV_Ith_S(mParameters, 23) * log(NV_Ith_S(mParameters, 9) / var_chaste_interface__Na_buffer__Na_jct) / NV_Ith_S(mParameters, 10); // millivolt + const double var_INa__i_Na_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INa__Fx_Na_jct * NV_Ith_S(mParameters, 14) * var_INa__openProb; // microA_per_microF + const double var_INa__i_Na = var_INa__i_Na_SL + var_INa__i_Na_jct; // microA_per_microF + const double var_INa__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__i_Na; // uA_per_cm2 + const double var_INab__i_Nab_jct = (-var_reversal_potentials__E_Na_jct + var_chaste_interface__cell__V) * var_INab__Fx_NaBk_jct * var_INab__G_NaBk; // microA_per_microF + const double var_INab__i_Nab = var_INab__i_Nab_SL + var_INab__i_Nab_jct; // microA_per_microF + const double var_INab__i_Nab_converted = HeartConfig::Instance()->GetCapacitance() * var_INab__i_Nab; // uA_per_cm2 + +#if CHASTE_SUNDIALS_VERSION >= 60000 + N_Vector dqs = N_VNew_Serial(23, CvodeContextManager::Instance()->GetSundialsContext()); +#else + N_Vector dqs = N_VNew_Serial(23); +#endif + NV_Ith_S(dqs, 0) = var_Jrel_SR__j_rel_SR; + NV_Ith_S(dqs, 1) = var_reversal_potentials__E_Cl; + NV_Ith_S(dqs, 2) = var_ICaL__i_CaL_converted; + NV_Ith_S(dqs, 3) = var_ICaL_fCa_gate__fCa_SL; + NV_Ith_S(dqs, 4) = var_ICaL_f_gate__tau_f; + NV_Ith_S(dqs, 5) = var_ICab__i_Cab_converted; + NV_Ith_S(dqs, 6) = var_IClb__i_Clb_converted; + NV_Ith_S(dqs, 7) = var_INab__i_Nab_converted; + NV_Ith_S(dqs, 8) = var_ICap__i_Cap_converted; + NV_Ith_S(dqs, 9) = var_model_parameters__Cm_converted; + NV_Ith_S(dqs, 10) = var_INa__i_Na_converted; + NV_Ith_S(dqs, 11) = var_INa_h_gate__tau_h; + NV_Ith_S(dqs, 12) = var_INa_j_gate__tau_j; + NV_Ith_S(dqs, 13) = var_Itof__i_tof_converted; + NV_Ith_S(dqs, 14) = var_IK1__i_K1_converted; + NV_Ith_S(dqs, 15) = var_IK1__G_K1; + NV_Ith_S(dqs, 16) = var_IKr__i_Kr_converted; + NV_Ith_S(dqs, 17) = var_IKs__i_Ks_converted; + NV_Ith_S(dqs, 18) = var_Itos__i_tos_converted; + NV_Ith_S(dqs, 19) = var_INaCa__i_NaCa_converted; + NV_Ith_S(dqs, 20) = var_cell__i_Stim_converted; + NV_Ith_S(dqs, 21) = var_reversal_potentials__E_K; + NV_Ith_S(dqs, 22) = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "shannon_wang_puglisi_weber_bers_2004_model_updated"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // NV_Ith_S(rY, 0): + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-85.721630473733); + + // NV_Ith_S(rY, 1): + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.6504944644883e-05); + + // NV_Ith_S(rY, 2): + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.98714602875678); + + // NV_Ith_S(rY, 3): + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.991826348770428); + + // NV_Ith_S(rY, 4): + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0013702407736465); + + // NV_Ith_S(rY, 5): + this->mVariableNames.push_back("IKr_Xr_gate__Xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00846906175020028); + + // NV_Ith_S(rY, 6): + this->mVariableNames.push_back("IKs_Xs_gate__Xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00613557812033723); + + // NV_Ith_S(rY, 7): + this->mVariableNames.push_back("Itos_X_gate__X_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401072468238921); + + // NV_Ith_S(rY, 8): + this->mVariableNames.push_back("Itos_Y_gate__Y_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.31555225368514); + + // NV_Ith_S(rY, 9): + this->mVariableNames.push_back("Itos_R_gate__R_tos"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.402577243036347); + + // NV_Ith_S(rY, 10): + this->mVariableNames.push_back("Itof_X_gate__X_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00401068798369438); + + // NV_Ith_S(rY, 11): + this->mVariableNames.push_back("Itof_Y_gate__Y_tof"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.994632857675454); + + // NV_Ith_S(rY, 12): + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.99526086177479e-06); + + // NV_Ith_S(rY, 13): + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.00067601563206); + + // NV_Ith_S(rY, 14): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_SL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0150193299768419); + + // NV_Ith_S(rY, 15): + this->mVariableNames.push_back("ICaL_fCa_gate__fCaB_jct"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0244048782575591); + + // NV_Ith_S(rY, 16): + this->mVariableNames.push_back("Jrel_SR__R"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.890917121306535); + + // NV_Ith_S(rY, 17): + this->mVariableNames.push_back("Jrel_SR__I"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.71752603681652e-08); + + // NV_Ith_S(rY, 18): + this->mVariableNames.push_back("Jrel_SR__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.1199533741995e-07); + + // NV_Ith_S(rY, 19): + this->mVariableNames.push_back("submembrane_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87161932058707); + + // NV_Ith_S(rY, 20): + this->mVariableNames.push_back("dyadic_space_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87031835089116); + + // NV_Ith_S(rY, 21): + this->mVariableNames.push_back("Na_buffer__Na_SL_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.77606800956492); + + // NV_Ith_S(rY, 22): + this->mVariableNames.push_back("Na_buffer__Na_jct_buf"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(3.55668431730337); + + // NV_Ith_S(rY, 23): + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8.87200572571131); + + // NV_Ith_S(rY, 24): + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.547125831028543); + + // NV_Ith_S(rY, 25): + this->mVariableNames.push_back("submembrane_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000104971310105451); + + // NV_Ith_S(rY, 26): + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000174045152623969); + + // NV_Ith_S(rY, 27): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00973710481246467); + + // NV_Ith_S(rY, 28): + this->mVariableNames.push_back("Ca_buffer__Ca_SLB_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00774564218017916); + + // NV_Ith_S(rY, 29): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.113168405274355); + + // NV_Ith_S(rY, 30): + this->mVariableNames.push_back("Ca_buffer__Ca_SLHigh_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0772568134367606); + + // NV_Ith_S(rY, 31): + this->mVariableNames.push_back("Ca_buffer__Ca_Calsequestrin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.18828527890062); + + // NV_Ith_S(rY, 32): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00886665040283094); + + // NV_Ith_S(rY, 33): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.117873278193472); + + // NV_Ith_S(rY, 34): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_TroponinC_Ca_Mg"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0103906683506505); + + // NV_Ith_S(rY, 35): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Calmodulin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000293073957804278); + + // NV_Ith_S(rY, 36): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00195899238146509); + + // NV_Ith_S(rY, 37): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Mg_Myosin"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.137523520981802); + + // NV_Ith_S(rY, 38): + this->mVariableNames.push_back("cytosolic_Ca_buffer__Ca_SRB"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00215728901718264); + + // NV_Ith_S(rY, 39): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 40): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 41): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Indo1_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 42): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_Cytosol"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 43): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_SL"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // NV_Ith_S(rY, 44): + this->mVariableNames.push_back("indo_fluo_Ca_buffer_not_connected__Ca_Fluo3_jct"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("cytosolic_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_chloride_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[9]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[10]: + this->mParameterNames.push_back("faraday_constant"); + this->mParameterUnits.push_back("coulomb_per_mole"); + + // mParameters[11]: + this->mParameterNames.push_back("gas_constant"); + this->mParameterUnits.push_back("joule_per_kilomole_kelvin"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("litre_per_farad_millisecond"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_background_chloride_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_fast_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[20]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[21]: + this->mParameterNames.push_back("membrane_slow_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[22]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[23]: + this->mParameterNames.push_back("temperature"); + this->mParameterUnits.push_back("kelvin"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("chloride_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mDerivedQuantityUnits.push_back("dimensionless"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_background_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_background_chloride_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_background_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_calcium_pump_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_fast_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [16]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [17]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [18]: + this->mDerivedQuantityNames.push_back("membrane_slow_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [19]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [20]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [21]: + this->mDerivedQuantityNames.push_back("potassium_reversal_potential"); + this->mDerivedQuantityUnits.push_back("millivolt"); + + // Derived Quantity index [22]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicshannon_wang_puglisi_weber_bers_2004FromCellMLCvode(pSolver, pStimulus); + } + +} +#endif // CHASTE_CVODE diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994--sympy_1_11.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994--sympy_1_11.cpp new file mode 100644 index 00000000..63c8bc49 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994--sympy_1_11.cpp @@ -0,0 +1,2832 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: demir_model_1994 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenFirstOrder) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_demir_model_1994.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + double Dynamicdemir_model_1994FromCellMLGRL1::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamicdemir_model_1994FromCellMLGRL1::Dynamicdemir_model_1994FromCellMLGRL1(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 27, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + this->mParameters[0] = 0.021149999999999999; // (var_L_type_Ca_channel__g_Ca_L) [microS] + this->mParameters[1] = 5.5000000000000002e-5; // (var_membrane__Cm) [microF] + this->mParameters[2] = 0.0069300000000000004; // (var_delayed_rectifying_potassium_current__g_K_max) [microS] + this->mParameters[3] = 0.0034399999999999999; // (var_sodium_current__P_Na) [mul_per_second] + this->mParameters[4] = 0.0128821; // (var_hyperpolarisation_activated_current__g_f_K) [microS] + this->mParameters[5] = 0.0067478; // (var_hyperpolarisation_activated_current__g_f_Na) [microS] + } + + Dynamicdemir_model_1994FromCellMLGRL1::~Dynamicdemir_model_1994FromCellMLGRL1() + { + } + + + void Dynamicdemir_model_1994FromCellMLGRL1::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 27; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicdemir_model_1994FromCellMLGRL1::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / mParameters[1]; // uA_per_cm2 + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA + const double var_hyperpolarisation_activated_current__i_f_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_hyperpolarisation_activated_current__i_f / mParameters[1]; // uA_per_cm2 + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_delayed_rectifying_potassium_current__i_K_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifying_potassium_current__i_K / mParameters[1]; // uA_per_cm2 + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_linear_background_current__i_B = var_linear_background_current__i_B_Ca + var_linear_background_current__i_B_K + var_linear_background_current__i_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_current__i_Na_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / mParameters[1]; // uA_per_cm2 + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_delayed_rectifying_potassium_current__i_K_converted + var_hyperpolarisation_activated_current__i_f_converted + var_sodium_current__i_Na_converted) * mParameters[1] + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_calcium_pump_current__i_Ca_P + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_linear_background_current__i_B + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_pump__i_NaCa + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK) / mParameters[1]; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicdemir_model_1994FromCellMLGRL1::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_linear_background_current__i_B = var_linear_background_current__i_B_Ca + var_linear_background_current__i_B_K + var_linear_background_current__i_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_membrane__V_orig_deriv = (-var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f - var_linear_background_current__i_B - var_sodium_calcium_pump__i_NaCa - var_sodium_current__i_Na - var_sodium_potassium_pump__i_NaK) / mParameters[1]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + double evalF = d_dt_chaste_interface_var_membrane__V; + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Dynamicdemir_model_1994FromCellMLGRL1::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const double delta = 1e-8; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; + // Units: dimensionless; Initial value: 0.1411678 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; + // Units: dimensionless; Initial value: 0.07331396 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; + // Units: dimensionless; Initial value: 0.9528726 + double var_chaste_interface__SR_Ca_uptake_and_release__F1 = rY[24]; + // Units: dimensionless; Initial value: 0.1133251 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + double var_chaste_interface__SR_Ca_uptake_and_release__F3 = rY[26]; + // Units: dimensionless; Initial value: 0.8859153 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_SR_Ca_uptake_and_release__alpha_rel = 0.5; // nanoA_per_millimolar + const double var_SR_Ca_uptake_and_release__alpha_up = 0.080000000000000002; // nanoA + const double var_SR_Ca_uptake_and_release__beta_up = 0.071999999999999995; // nanoA + const double var_SR_Ca_uptake_and_release__i_rel = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel * var_SR_Ca_uptake_and_release__alpha_rel / pow((0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2), 2); // nanoA + const double var_SR_Ca_uptake_and_release__k_SRCa = 22; // millimolar + const double var_SR_Ca_uptake_and_release__k_cyca = 5.0000000000000002e-5; // millimolar + const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar + const double var_SR_Ca_uptake_and_release__k_xcs = 0.90000000000000002; // dimensionless + const double var_SR_Ca_uptake_and_release__K1 = var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs / var_SR_Ca_uptake_and_release__k_SRCa; // dimensionless + const double var_SR_Ca_uptake_and_release__phi_Calse = -641 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse + 770 * (1 - var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; // per_second + const double var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv = var_SR_Ca_uptake_and_release__phi_Calse; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse = 0.001 * var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv; // 1 / millisecond + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__Ca_b = 2; // millimolar + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_cleft_space_equations__Na_b = 140; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = 0.01; // second + const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_SR_Ca_uptake_and_release__K2 = var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 + var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs + var_SR_Ca_uptake_and_release__k_cyca + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // millimolar + const double var_SR_Ca_uptake_and_release__i_up = (var_SR_Ca_uptake_and_release__alpha_up * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 * var_SR_Ca_uptake_and_release__beta_up) / var_SR_Ca_uptake_and_release__K2; // nanoA + const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F3_orig_deriv = -0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 + var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3 = 0.001 * var_SR_Ca_uptake_and_release__F3_orig_deriv; // 1 / millisecond + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__Mg_i = 2.5; // millimolar + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_SR_Ca_uptake_and_release__V_rel = 0.0012960000000000001 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_SR_Ca_uptake_and_release__V_up = 0.01166 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_intracellular_concentrations_and_buffer_equations__phi_C = -307 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_C; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv; // 1 / millisecond + const double var_intracellular_concentrations_and_buffer_equations__F_C = 0.089999999999999997 * var_intracellular_concentrations_and_buffer_equations__phi_C; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TC = -252 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 50500 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TC; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv; // 1 / millisecond + const double var_intracellular_concentrations_and_buffer_equations__F_TC = 0.031 * var_intracellular_concentrations_and_buffer_equations__phi_TC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -4.25 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv; // 1 / millisecond + const double var_intracellular_concentrations_and_buffer_equations__F_TMgC = 0.062 * var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_B = var_intracellular_concentrations_and_buffer_equations__F_C + var_intracellular_concentrations_and_buffer_equations__F_TC + var_intracellular_concentrations_and_buffer_equations__F_TMgC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgM = -429 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop + 1290 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_intracellular_concentrations_and_buffer_equations__Mg_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgM; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv; // 1 / millisecond + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_SR_Ca_uptake_and_release__i_tr = 31.162355874104083 * (-var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel + var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) * var_SR_Ca_uptake_and_release__V_up * var_membrane__F; // nanoA + const double var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv = -11.48 * var_SR_Ca_uptake_and_release__phi_Calse + 0.5 * (-var_SR_Ca_uptake_and_release__i_rel + var_SR_Ca_uptake_and_release__i_tr) / (var_SR_Ca_uptake_and_release__V_rel * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel = 0.001 * var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv; // millimolar / millisecond + const double var_SR_Ca_uptake_and_release__Ca_up_orig_deriv = 0.5 * (-var_SR_Ca_uptake_and_release__i_tr + var_SR_Ca_uptake_and_release__i_up) / (var_SR_Ca_uptake_and_release__V_up * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up = 0.001 * var_SR_Ca_uptake_and_release__Ca_up_orig_deriv; // millimolar / millisecond + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__alpha_d_L = -28.390000000000001 * (35 + var_chaste_interface__membrane__V) / (-1 + exp(-14 - 0.40000000000000002 * var_chaste_interface__membrane__V)) - 84.900000000000006 * var_chaste_interface__membrane__V / (-1 + exp(-0.20799999999999999 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__beta_d_L = 11.43 * (-5 + var_chaste_interface__membrane__V) / (-1 + exp(-2 + 0.40000000000000002 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_L_type_Ca_channel_d_gate__tau_d_L = 1 / (var_L_type_Ca_channel_d_gate__alpha_d_L + var_L_type_Ca_channel_d_gate__beta_d_L); // second + const double var_L_type_Ca_channel_d_gate__d_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_d_gate__d_L + var_L_type_Ca_channel_d_gate__d_L_infinity) / var_L_type_Ca_channel_d_gate__tau_d_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L = 0.001 * var_L_type_Ca_channel_d_gate__d_L_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel_f_gate__alpha_f_L = 3.75 * (28 + var_chaste_interface__membrane__V) / (-1 + exp(7 + 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__beta_f_L = 30 / (1 + exp(-7 - 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__f_L_infinity = 1 / (1 + exp(6 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f_L = 1 / (var_L_type_Ca_channel_f_gate__alpha_f_L + var_L_type_Ca_channel_f_gate__beta_f_L); // second + const double var_L_type_Ca_channel_f_gate__f_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_f_gate__f_L + var_L_type_Ca_channel_f_gate__f_L_infinity) / var_L_type_Ca_channel_f_gate__tau_f_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L = 0.001 * var_L_type_Ca_channel_f_gate__f_L_orig_deriv; // 1 / millisecond + const double var_SR_Ca_uptake_and_release__r_act = 240 * exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F1_orig_deriv = 0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 - var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1 = 0.001 * var_SR_Ca_uptake_and_release__F1_orig_deriv; // 1 / millisecond + const double var_SR_Ca_uptake_and_release__F2_orig_deriv = var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act - var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2 = 0.001 * var_SR_Ca_uptake_and_release__F2_orig_deriv; // 1 / millisecond + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_T_type_Ca_channel_d_gate__alpha_d_T = 1068 * exp(0.87666666666666671 + 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__beta_d_T = 1068 * exp(-0.87666666666666671 - 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__d_T_infinity = 1 / (1 + exp(-4.3833333333333337 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_T_type_Ca_channel_d_gate__tau_d_T = 1 / (var_T_type_Ca_channel_d_gate__alpha_d_T + var_T_type_Ca_channel_d_gate__beta_d_T); // second + const double var_T_type_Ca_channel_d_gate__d_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_d_gate__d_T + var_T_type_Ca_channel_d_gate__d_T_infinity) / var_T_type_Ca_channel_d_gate__tau_d_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T = 0.001 * var_T_type_Ca_channel_d_gate__d_T_orig_deriv; // 1 / millisecond + const double var_T_type_Ca_channel_f_gate__alpha_f_T = 15.300000000000001 * exp(-0.74069627851140463 - 0.012004801920768308 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__beta_f_T = 15 * exp(4.0117035110533159 + 0.065019505851755519 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__f_T_infinity = 1 / (1 + exp(11.017857142857144 + 0.17857142857142858 * var_chaste_interface__membrane__V)); // dimensionless + const double var_T_type_Ca_channel_f_gate__tau_f_T = 1 / (var_T_type_Ca_channel_f_gate__alpha_f_T + var_T_type_Ca_channel_f_gate__beta_f_T); // second + const double var_T_type_Ca_channel_f_gate__f_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_f_gate__f_T + var_T_type_Ca_channel_f_gate__f_T_infinity) / var_T_type_Ca_channel_f_gate__tau_f_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T = 0.001 * var_T_type_Ca_channel_f_gate__f_T_orig_deriv; // 1 / millisecond + const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity = 1 / (1 + exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a = 1 / (17 * exp(0.039800000000000002 * var_chaste_interface__membrane__V) + 2.1099999999999999 * exp(-0.050999999999999997 * var_chaste_interface__membrane__V)); // second + const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv = (-var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a + var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity) / var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a = 0.001 * var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv; // 1 / millisecond + const double var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i = 100 * exp(-0.0183 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i = 656 * exp(0.0094199999999999996 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv = (1 - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i) * var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i * var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i = 0.001 * var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv; // 1 / millisecond + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current_y_gate__tau_y = 1 / (1.6483000000000001 * exp(-2.2219482120838472 - 0.041101520756267988 * var_chaste_interface__membrane__V) + 14.01055 / (0.69999999999999996 + exp(-10.909090909090908 - 0.18181818181818182 * var_chaste_interface__membrane__V))); // second + const double var_hyperpolarisation_activated_current_y_gate__y_infinity = 1 / (1 + exp(8.0222222222222221 + 0.1111111111111111 * var_chaste_interface__membrane__V)); // dimensionless + const double var_hyperpolarisation_activated_current_y_gate__y_orig_deriv = (-var_chaste_interface__hyperpolarisation_activated_current_y_gate__y + var_hyperpolarisation_activated_current_y_gate__y_infinity) / var_hyperpolarisation_activated_current_y_gate__tau_y; // 1 / second + const double d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y = 0.001 * var_hyperpolarisation_activated_current_y_gate__y_orig_deriv; // 1 / millisecond + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_cleft_space_equations__Ca_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Ca_c + var_cleft_space_equations__Ca_b) / var_cleft_space_equations__tau_p + 0.5 * (-2 * var_sodium_calcium_pump__i_NaCa + var_L_type_Ca_channel__i_Ca_L + var_T_type_Ca_channel__i_Ca_T + var_calcium_pump_current__i_Ca_P + var_linear_background_current__i_B_Ca) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__Ca_c = 0.001 * var_cleft_space_equations__Ca_c_orig_deriv; // millimolar / millisecond + const double var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv = -var_intracellular_concentrations_and_buffer_equations__phi_B + 0.5 * (-var_L_type_Ca_channel__i_Ca_L - var_SR_Ca_uptake_and_release__i_up - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_linear_background_current__i_B_Ca + 2 * var_sodium_calcium_pump__i_NaCa + var_SR_Ca_uptake_and_release__i_rel) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv; // millimolar / millisecond + const double var_sodium_current_h_gate__alpha_h1 = 165 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_h_gate__h1_infinity = var_sodium_current_h_gate__alpha_h1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // dimensionless + const double var_sodium_current_h_gate__h2_infinity = var_sodium_current_h_gate__h1_infinity; // dimensionless + const double var_sodium_current_h_gate__tau_h1 = 1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // second + const double var_sodium_current_h_gate__h1_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h1 + var_sodium_current_h_gate__h1_infinity) / var_sodium_current_h_gate__tau_h1; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h_gate__h1 = 0.001 * var_sodium_current_h_gate__h1_orig_deriv; // 1 / millisecond + const double var_sodium_current_h_gate__tau_h2 = 20 * var_sodium_current_h_gate__tau_h1; // second + const double var_sodium_current_h_gate__h2_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h2 + var_sodium_current_h_gate__h2_infinity) / var_sodium_current_h_gate__tau_h2; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h_gate__h2 = 0.001 * var_sodium_current_h_gate__h2_orig_deriv; // 1 / millisecond + const double var_sodium_current_m_gate__alpha_m = -824 * (51.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_m_gate__beta_m = 32960 * exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_current_m_gate__m_infinity = var_sodium_current_m_gate__alpha_m / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // dimensionless + const double var_sodium_current_m_gate__tau_m = 1.5e-5 + 1 / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // second + const double var_sodium_current_m_gate__m_orig_deriv = (-var_chaste_interface__sodium_current_m_gate__m + var_sodium_current_m_gate__m_infinity) / var_sodium_current_m_gate__tau_m; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_m_gate__m = 0.001 * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_cleft_space_equations__K_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__K_c + var_cleft_space_equations__K_b) / var_cleft_space_equations__tau_p + (-2 * var_sodium_potassium_pump__i_NaK + var_delayed_rectifying_potassium_current__i_K + var_hyperpolarisation_activated_current__i_f_K + var_linear_background_current__i_B_K) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__K_c = 0.001 * var_cleft_space_equations__K_c_orig_deriv; // millimolar / millisecond + const double var_cleft_space_equations__Na_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Na_c + var_cleft_space_equations__Na_b) / var_cleft_space_equations__tau_p + (3 * var_sodium_calcium_pump__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_hyperpolarisation_activated_current__i_f_Na + var_linear_background_current__i_B_Na + var_sodium_current__i_Na) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__Na_c = 0.001 * var_cleft_space_equations__Na_c_orig_deriv; // millimolar / millisecond + const double var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv = (-var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f_K - var_linear_background_current__i_B_K + 2 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv; // millimolar / millisecond + const double var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv = (-var_hyperpolarisation_activated_current__i_f_Na - var_linear_background_current__i_B_Na - var_sodium_current__i_Na - 3 * var_sodium_calcium_pump__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv; // millimolar / millisecond + + mEvalF[1] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i; + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[2] = d_dt_chaste_interface_var_sodium_current_m_gate__m; + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[3] = d_dt_chaste_interface_var_sodium_current_h_gate__h1; + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[4] = d_dt_chaste_interface_var_sodium_current_h_gate__h2; + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[5] = d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L; + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[6] = d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L; + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[7] = d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T; + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[8] = d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T; + mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[9] = d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a; + mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[10] = d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i; + mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[11] = d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y; + mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[12] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i; + mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[13] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i; + mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[14] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod; + mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[15] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop; + mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[16] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop; + mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[17] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop; + mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[18] = d_dt_chaste_interface_var_cleft_space_equations__Na_c; + mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[19] = d_dt_chaste_interface_var_cleft_space_equations__Ca_c; + mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[20] = d_dt_chaste_interface_var_cleft_space_equations__K_c; + mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[21] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up; + mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[22] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel; + mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[23] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse; + mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[24] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1; + mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[25] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2; + mPartialF[25] = EvaluatePartialDerivative25(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[26] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3; + mPartialF[26] = EvaluatePartialDerivative26(var_chaste_interface__environment__time_converted, rY, delta); + + { + if (fabs(mPartialF[1]) < delta){ + rY[1] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i; + } + else + { + rY[1] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i/mPartialF[1])*(exp(mPartialF[1]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[2]) < delta){ + rY[2] += mDt*d_dt_chaste_interface_var_sodium_current_m_gate__m; + } + else + { + rY[2] += (d_dt_chaste_interface_var_sodium_current_m_gate__m/mPartialF[2])*(exp(mPartialF[2]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[3]) < delta){ + rY[3] += mDt*d_dt_chaste_interface_var_sodium_current_h_gate__h1; + } + else + { + rY[3] += (d_dt_chaste_interface_var_sodium_current_h_gate__h1/mPartialF[3])*(exp(mPartialF[3]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[4]) < delta){ + rY[4] += mDt*d_dt_chaste_interface_var_sodium_current_h_gate__h2; + } + else + { + rY[4] += (d_dt_chaste_interface_var_sodium_current_h_gate__h2/mPartialF[4])*(exp(mPartialF[4]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[5]) < delta){ + rY[5] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L; + } + else + { + rY[5] += (d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L/mPartialF[5])*(exp(mPartialF[5]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[6]) < delta){ + rY[6] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L; + } + else + { + rY[6] += (d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L/mPartialF[6])*(exp(mPartialF[6]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[7]) < delta){ + rY[7] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T; + } + else + { + rY[7] += (d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T/mPartialF[7])*(exp(mPartialF[7]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[8]) < delta){ + rY[8] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T; + } + else + { + rY[8] += (d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T/mPartialF[8])*(exp(mPartialF[8]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[9]) < delta){ + rY[9] += mDt*d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a; + } + else + { + rY[9] += (d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a/mPartialF[9])*(exp(mPartialF[9]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[10]) < delta){ + rY[10] += mDt*d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i; + } + else + { + rY[10] += (d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i/mPartialF[10])*(exp(mPartialF[10]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[11]) < delta){ + rY[11] += mDt*d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y; + } + else + { + rY[11] += (d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y/mPartialF[11])*(exp(mPartialF[11]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[12]) < delta){ + rY[12] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i; + } + else + { + rY[12] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i/mPartialF[12])*(exp(mPartialF[12]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[13]) < delta){ + rY[13] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i; + } + else + { + rY[13] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i/mPartialF[13])*(exp(mPartialF[13]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[14]) < delta){ + rY[14] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod; + } + else + { + rY[14] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod/mPartialF[14])*(exp(mPartialF[14]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[15]) < delta){ + rY[15] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop; + } + else + { + rY[15] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop/mPartialF[15])*(exp(mPartialF[15]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[16]) < delta){ + rY[16] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop; + } + else + { + rY[16] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop/mPartialF[16])*(exp(mPartialF[16]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[17]) < delta){ + rY[17] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop; + } + else + { + rY[17] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop/mPartialF[17])*(exp(mPartialF[17]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[18]) < delta){ + rY[18] += mDt*d_dt_chaste_interface_var_cleft_space_equations__Na_c; + } + else + { + rY[18] += (d_dt_chaste_interface_var_cleft_space_equations__Na_c/mPartialF[18])*(exp(mPartialF[18]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[19]) < delta){ + rY[19] += mDt*d_dt_chaste_interface_var_cleft_space_equations__Ca_c; + } + else + { + rY[19] += (d_dt_chaste_interface_var_cleft_space_equations__Ca_c/mPartialF[19])*(exp(mPartialF[19]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[20]) < delta){ + rY[20] += mDt*d_dt_chaste_interface_var_cleft_space_equations__K_c; + } + else + { + rY[20] += (d_dt_chaste_interface_var_cleft_space_equations__K_c/mPartialF[20])*(exp(mPartialF[20]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[21]) < delta){ + rY[21] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up; + } + else + { + rY[21] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up/mPartialF[21])*(exp(mPartialF[21]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[22]) < delta){ + rY[22] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel; + } + else + { + rY[22] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel/mPartialF[22])*(exp(mPartialF[22]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[23]) < delta){ + rY[23] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse; + } + else + { + rY[23] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse/mPartialF[23])*(exp(mPartialF[23]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[24]) < delta){ + rY[24] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1; + } + else + { + rY[24] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1/mPartialF[24])*(exp(mPartialF[24]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[25]) < delta){ + rY[25] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2; + } + else + { + rY[25] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2/mPartialF[25])*(exp(mPartialF[25]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[26]) < delta){ + rY[26] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3; + } + else + { + rY[26] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3/mPartialF[26])*(exp(mPartialF[26]*mDt)-1.0); + } + + } + + } + + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_linear_background_current__i_B = var_linear_background_current__i_B_Ca + var_linear_background_current__i_B_K + var_linear_background_current__i_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_membrane__V_orig_deriv = (-var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f - var_linear_background_current__i_B - var_sodium_calcium_pump__i_NaCa - var_sodium_current__i_Na - var_sodium_potassium_pump__i_NaK) / mParameters[1]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + return d_dt_chaste_interface_var_membrane__V; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + const double var_x0 = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2); + const double var_x1 = var_x0 * mParameters[4]; + const double var_x2 = var_x0 * mParameters[5]; + const double var_x3 = 0.16666666666666666 * var_chaste_interface__membrane__V; + const double var_x4 = exp(-2.3500000000000001 - var_x3); + const double var_x5 = 1 + var_x4; + const double var_x6 = 1 / var_x5; + const double var_x7 = (0.095000000000000001 * var_x6 + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; + const double var_x8 = var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x20 = 0.018714999999999999 * var_x17 + 0.018714999999999999 * var_x19; + const double var_x21 = var_x14 * var_x20; + const double var_x22 = mParameters[2] * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; + const double var_x23 = var_x22 * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a; + const double var_x24 = (-46.399999999999999 + var_chaste_interface__membrane__V) * mParameters[0]; + const double var_x25 = var_x4 / pow(var_x5, 2); + const double var_x26 = var_x24 * var_x25; + const double var_x27 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); + const double var_x28 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; + const double var_x29 = pow(var_x28, (-2)); + const double var_x30 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); + const double var_x31 = 1 + 0.18315018315018314 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x32 = pow(var_x31, (-3)); + const double var_x33 = pow((1 + 0.66666666666666663 * var_x27), (-2)); + const double var_x34 = var_x11 * var_x27 * var_x29 * var_x30 * var_x32 * var_x33; + const double var_x35 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x36 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x37 = var_x36 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x38 = exp(var_x35 - 1 * log(var_x37)); + const double var_x39 = -1 + var_x38; + const double var_x40 = var_x39 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x41 = exp(var_x35); + const double var_x42 = -1 + var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x45 = var_x43 * var_x44 * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; + const double var_x46 = 3611.8217397063127 * var_x45; + const double var_x47 = var_x45 * var_chaste_interface__membrane__V; + const double var_x48 = var_x38 * var_x47; + const double var_x49 = var_x48 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x50 = pow(var_x42, (-2)); + const double var_x51 = 1 / mParameters[1]; + const double var_x52 = 0.001 * var_x51; + + partialF = var_x52 * (-0.00026580000000000001 - var_x1 - var_x2 - var_x7 - 0.02521 * var_x8 - 1.2480000000000001e-5 * var_x21 - 0.015833333333333335 * var_x26 - 135.20454067538472 * var_x49 - 2.7046577588354044 * var_x23 - 2.3940879178437715e-5 * var_x34 - var_x40 * var_x46 + 135.20454067538472 * var_x39 * var_x41 * var_x44 * var_x50 * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; + // Units: dimensionless; Initial value: 0.1411678 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; + // Units: dimensionless; Initial value: 0.07331396 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_SR_Ca_uptake_and_release__alpha_rel = 0.5; // nanoA_per_millimolar + const double var_SR_Ca_uptake_and_release__alpha_up = 0.080000000000000002; // nanoA + const double var_SR_Ca_uptake_and_release__beta_up = 0.071999999999999995; // nanoA + const double var_SR_Ca_uptake_and_release__i_rel = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel * var_SR_Ca_uptake_and_release__alpha_rel / pow((0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2), 2); // nanoA + const double var_SR_Ca_uptake_and_release__k_SRCa = 22; // millimolar + const double var_SR_Ca_uptake_and_release__k_cyca = 5.0000000000000002e-5; // millimolar + const double var_SR_Ca_uptake_and_release__k_xcs = 0.90000000000000002; // dimensionless + const double var_SR_Ca_uptake_and_release__K1 = var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs / var_SR_Ca_uptake_and_release__k_SRCa; // dimensionless + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_SR_Ca_uptake_and_release__K2 = var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 + var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs + var_SR_Ca_uptake_and_release__k_cyca + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // millimolar + const double var_SR_Ca_uptake_and_release__i_up = (var_SR_Ca_uptake_and_release__alpha_up * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 * var_SR_Ca_uptake_and_release__beta_up) / var_SR_Ca_uptake_and_release__K2; // nanoA + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_intracellular_concentrations_and_buffer_equations__phi_C = -307 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__F_C = 0.089999999999999997 * var_intracellular_concentrations_and_buffer_equations__phi_C; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TC = -252 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 50500 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__F_TC = 0.031 * var_intracellular_concentrations_and_buffer_equations__phi_TC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -4.25 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__F_TMgC = 0.062 * var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_B = var_intracellular_concentrations_and_buffer_equations__F_C + var_intracellular_concentrations_and_buffer_equations__F_TC + var_intracellular_concentrations_and_buffer_equations__F_TMgC; // millimolar_per_second + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv = -var_intracellular_concentrations_and_buffer_equations__phi_B + 0.5 * (-var_L_type_Ca_channel__i_Ca_L - var_SR_Ca_uptake_and_release__i_up - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_linear_background_current__i_B_Ca + 2 * var_sodium_calcium_pump__i_NaCa + var_SR_Ca_uptake_and_release__i_rel) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; + // Units: dimensionless; Initial value: 0.1411678 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; + // Units: dimensionless; Initial value: 0.07331396 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + + + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x53 = 0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x54 = 1 / var_x53; + const double var_x55 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x56 = pow(var_x53, (-2)); + const double var_x59 = var_x16 * var_x9; + const double var_x60 = pow(var_x13, (-2)); + const double var_x61 = var_x19 - var_x17; + const double var_x62 = var_x60 * var_x61; + const double var_x100 = 9.5000000000000005e-5 + 2.0454545454545457e-6 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x101 = 1 / var_x100; + const double var_x102 = pow(var_x100, (-2)); + const double var_x103 = 0.080000000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - 1.4727272727272728e-7 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up; + const double var_x104 = 7.9543493648916639e-12 * var_x62; + const double var_x105 = 7.9543493648916641e-8 * var_x14; + + partialF = -21.173500000000001 + 11.609999999999999 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 1.5654999999999999 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 7.9980000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 7.9980000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop - 9.1430401954624137e-5 * var_x54 - 0.00025494709502857897 * var_x101 - 1.5494105166262771e-6 * var_x55 - var_x104 * var_x9 - var_x105 * var_x59 + 9.1430401954624137e-5 * var_x56 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + 0.0031868386878572369 * var_x102 * var_x103; + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + + + // Mathematics + const double var_sodium_current_m_gate__alpha_m = -824 * (51.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_m_gate__beta_m = 32960 * exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_m_gate__m_infinity = var_sodium_current_m_gate__alpha_m / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // dimensionless + const double var_sodium_current_m_gate__tau_m = 1.5e-5 + 1 / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // second + const double var_sodium_current_m_gate__m_orig_deriv = (-var_chaste_interface__sodium_current_m_gate__m + var_sodium_current_m_gate__m_infinity) / var_sodium_current_m_gate__tau_m; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_m_gate__m = 0.001 * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_m_gate__m; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x116 = exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V); + const double var_x117 = 51.899999999999999 + var_chaste_interface__membrane__V; + const double var_x118 = -1 + var_x116; + const double var_x119 = 1 / var_x118; + const double var_x120 = 824 * var_x119; + const double var_x121 = var_x117 * var_x120; + const double var_x122 = 1 / (-var_x121 + 32960 * var_x116); + const double var_x126 = 1.5e-5 + var_x122; + const double var_x127 = 0.001 / var_x126; + + partialF = -var_x127; + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + + + // Mathematics + const double var_sodium_current_h_gate__alpha_h1 = 165 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_h_gate__h1_infinity = var_sodium_current_h_gate__alpha_h1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // dimensionless + const double var_sodium_current_h_gate__tau_h1 = 1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // second + const double var_sodium_current_h_gate__h1_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h1 + var_sodium_current_h_gate__h1_infinity) / var_sodium_current_h_gate__tau_h1; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h_gate__h1 = 0.001 * var_sodium_current_h_gate__h1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_h_gate__h1; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x128 = exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); + const double var_x129 = 1 / (1 + 320 * var_x128); + + partialF = -0.16500000000000001 * var_x128 - 12.359999999999999 * var_x129; + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + + + // Mathematics + const double var_sodium_current_h_gate__alpha_h1 = 165 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_h_gate__h1_infinity = var_sodium_current_h_gate__alpha_h1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // dimensionless + const double var_sodium_current_h_gate__h2_infinity = var_sodium_current_h_gate__h1_infinity; // dimensionless + const double var_sodium_current_h_gate__tau_h1 = 1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // second + const double var_sodium_current_h_gate__tau_h2 = 20 * var_sodium_current_h_gate__tau_h1; // second + const double var_sodium_current_h_gate__h2_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h2 + var_sodium_current_h_gate__h2_infinity) / var_sodium_current_h_gate__tau_h2; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h_gate__h2 = 0.001 * var_sodium_current_h_gate__h2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_h_gate__h2; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x128 = exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); + const double var_x129 = 1 / (1 + 320 * var_x128); + + partialF = -0.61799999999999999 * var_x129 - 0.0082500000000000004 * var_x128; + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + + + // Mathematics + const double var_L_type_Ca_channel_d_gate__alpha_d_L = -28.390000000000001 * (35 + var_chaste_interface__membrane__V) / (-1 + exp(-14 - 0.40000000000000002 * var_chaste_interface__membrane__V)) - 84.900000000000006 * var_chaste_interface__membrane__V / (-1 + exp(-0.20799999999999999 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__beta_d_L = 11.43 * (-5 + var_chaste_interface__membrane__V) / (-1 + exp(-2 + 0.40000000000000002 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d_L = 1 / (var_L_type_Ca_channel_d_gate__alpha_d_L + var_L_type_Ca_channel_d_gate__beta_d_L); // second + const double var_L_type_Ca_channel_d_gate__d_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_d_gate__d_L + var_L_type_Ca_channel_d_gate__d_L_infinity) / var_L_type_Ca_channel_d_gate__tau_d_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L = 0.001 * var_L_type_Ca_channel_d_gate__d_L_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x137 = exp(-14 - 0.40000000000000002 * var_chaste_interface__membrane__V); + const double var_x138 = -1 + var_x137; + const double var_x139 = 1 / var_x138; + const double var_x141 = exp(-0.20799999999999999 * var_chaste_interface__membrane__V); + const double var_x142 = -1 + var_x141; + const double var_x143 = 1 / var_x142; + const double var_x145 = exp(-2 + 0.40000000000000002 * var_chaste_interface__membrane__V); + const double var_x146 = -1 + var_x145; + const double var_x147 = 1 / var_x146; + const double var_x148 = 35 + var_chaste_interface__membrane__V; + const double var_x149 = -5 + var_chaste_interface__membrane__V; + + partialF = 0.028390000000000002 * var_x139 * var_x148 + 0.084900000000000003 * var_x143 * var_chaste_interface__membrane__V - 0.011429999999999999 * var_x147 * var_x149; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + + + // Mathematics + const double var_L_type_Ca_channel_f_gate__alpha_f_L = 3.75 * (28 + var_chaste_interface__membrane__V) / (-1 + exp(7 + 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__beta_f_L = 30 / (1 + exp(-7 - 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__f_L_infinity = 1 / (1 + exp(6 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f_L = 1 / (var_L_type_Ca_channel_f_gate__alpha_f_L + var_L_type_Ca_channel_f_gate__beta_f_L); // second + const double var_L_type_Ca_channel_f_gate__f_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_f_gate__f_L + var_L_type_Ca_channel_f_gate__f_L_infinity) / var_L_type_Ca_channel_f_gate__tau_f_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L = 0.001 * var_L_type_Ca_channel_f_gate__f_L_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x152 = 7 + 0.25 * var_chaste_interface__membrane__V; + const double var_x153 = exp(var_x152); + const double var_x154 = -1 + var_x153; + const double var_x155 = 1 / var_x154; + const double var_x157 = exp(-var_x152); + const double var_x158 = 1 + var_x157; + const double var_x159 = 28 + var_chaste_interface__membrane__V; + const double var_x160 = 1 / var_x158; + + partialF = -0.029999999999999999 * var_x160 - 0.0037499999999999999 * var_x155 * var_x159; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + + + // Mathematics + const double var_T_type_Ca_channel_d_gate__alpha_d_T = 1068 * exp(0.87666666666666671 + 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__beta_d_T = 1068 * exp(-0.87666666666666671 - 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__d_T_infinity = 1 / (1 + exp(-4.3833333333333337 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_T_type_Ca_channel_d_gate__tau_d_T = 1 / (var_T_type_Ca_channel_d_gate__alpha_d_T + var_T_type_Ca_channel_d_gate__beta_d_T); // second + const double var_T_type_Ca_channel_d_gate__d_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_d_gate__d_T + var_T_type_Ca_channel_d_gate__d_T_infinity) / var_T_type_Ca_channel_d_gate__tau_d_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T = 0.001 * var_T_type_Ca_channel_d_gate__d_T_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x163 = 0.87666666666666671 + 0.033333333333333333 * var_chaste_interface__membrane__V; + const double var_x164 = exp(-var_x163); + const double var_x165 = exp(var_x163); + + partialF = -1.0680000000000001 * var_x164 - 1.0680000000000001 * var_x165; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + + + // Mathematics + const double var_T_type_Ca_channel_f_gate__alpha_f_T = 15.300000000000001 * exp(-0.74069627851140463 - 0.012004801920768308 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__beta_f_T = 15 * exp(4.0117035110533159 + 0.065019505851755519 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__f_T_infinity = 1 / (1 + exp(11.017857142857144 + 0.17857142857142858 * var_chaste_interface__membrane__V)); // dimensionless + const double var_T_type_Ca_channel_f_gate__tau_f_T = 1 / (var_T_type_Ca_channel_f_gate__alpha_f_T + var_T_type_Ca_channel_f_gate__beta_f_T); // second + const double var_T_type_Ca_channel_f_gate__f_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_f_gate__f_T + var_T_type_Ca_channel_f_gate__f_T_infinity) / var_T_type_Ca_channel_f_gate__tau_f_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T = 0.001 * var_T_type_Ca_channel_f_gate__f_T_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x168 = exp(-0.74069627851140463 - 0.012004801920768308 * var_chaste_interface__membrane__V); + const double var_x169 = exp(4.0117035110533159 + 0.065019505851755519 * var_chaste_interface__membrane__V); + + partialF = -0.015300000000000001 * var_x168 - 0.014999999999999999 * var_x169; + } + else + { + const double y_save = rY[8]; + rY[8] += delta; + const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[8])/delta; + rY[8] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + + + // Mathematics + const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity = 1 / (1 + exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a = 1 / (17 * exp(0.039800000000000002 * var_chaste_interface__membrane__V) + 2.1099999999999999 * exp(-0.050999999999999997 * var_chaste_interface__membrane__V)); // second + const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv = (-var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a + var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity) / var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a = 0.001 * var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x172 = exp(-0.050999999999999997 * var_chaste_interface__membrane__V); + const double var_x173 = exp(0.039800000000000002 * var_chaste_interface__membrane__V); + + partialF = -0.0021099999999999999 * var_x172 - 0.017000000000000001 * var_x173; + } + else + { + const double y_save = rY[9]; + rY[9] += delta; + const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[9])/delta; + rY[9] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + + + // Mathematics + const double var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i = 100 * exp(-0.0183 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i = 656 * exp(0.0094199999999999996 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv = (1 - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i) * var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i * var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i = 0.001 * var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x174 = exp(-0.0183 * var_chaste_interface__membrane__V); + const double var_x175 = exp(0.0094199999999999996 * var_chaste_interface__membrane__V); + + partialF = -0.65600000000000003 * var_x175 - 0.10000000000000001 * var_x174; + } + else + { + const double y_save = rY[10]; + rY[10] += delta; + const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[10])/delta; + rY[10] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + + + // Mathematics + const double var_hyperpolarisation_activated_current_y_gate__tau_y = 1 / (1.6483000000000001 * exp(-2.2219482120838472 - 0.041101520756267988 * var_chaste_interface__membrane__V) + 14.01055 / (0.69999999999999996 + exp(-10.909090909090908 - 0.18181818181818182 * var_chaste_interface__membrane__V))); // second + const double var_hyperpolarisation_activated_current_y_gate__y_infinity = 1 / (1 + exp(8.0222222222222221 + 0.1111111111111111 * var_chaste_interface__membrane__V)); // dimensionless + const double var_hyperpolarisation_activated_current_y_gate__y_orig_deriv = (-var_chaste_interface__hyperpolarisation_activated_current_y_gate__y + var_hyperpolarisation_activated_current_y_gate__y_infinity) / var_hyperpolarisation_activated_current_y_gate__tau_y; // 1 / second + const double d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y = 0.001 * var_hyperpolarisation_activated_current_y_gate__y_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x178 = exp(-2.2219482120838472 - 0.041101520756267988 * var_chaste_interface__membrane__V); + const double var_x179 = exp(-10.909090909090908 - 0.18181818181818182 * var_chaste_interface__membrane__V); + const double var_x180 = 0.69999999999999996 + var_x179; + const double var_x181 = 1 / var_x180; + + partialF = -0.0016483000000000001 * var_x178 - 0.01401055 * var_x181; + } + else + { + const double y_save = rY[11]; + rY[11] += delta; + const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[11])/delta; + rY[11] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv = (-var_hyperpolarisation_activated_current__i_f_Na - var_linear_background_current__i_B_Na - var_sodium_current__i_Na - 3 * var_sodium_calcium_pump__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x27 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); + const double var_x28 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; + const double var_x29 = pow(var_x28, (-2)); + const double var_x30 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); + const double var_x31 = 1 + 0.18315018315018314 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x32 = pow(var_x31, (-3)); + const double var_x35 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x36 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x37 = var_x36 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x38 = exp(var_x35 - 1 * log(var_x37)); + const double var_x41 = exp(var_x35); + const double var_x42 = -1 + var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x45 = var_x43 * var_x44 * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; + const double var_x47 = var_x45 * var_chaste_interface__membrane__V; + const double var_x48 = var_x38 * var_x47; + const double var_x60 = pow(var_x13, (-2)); + const double var_x61 = var_x19 - var_x17; + const double var_x80 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 2); + const double var_x81 = var_x80 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x82 = var_x18 * var_x81; + const double var_x83 = 1 / (1.5 + var_x27); + const double var_x84 = var_x29 * var_x30 * var_x83; + const double var_x85 = var_x32 * var_x80 * var_x84; + const double var_x86 = pow(var_x31, (-4)); + const double var_x189 = 7.1589144284024978e-7 * var_x14; + const double var_x190 = 23.020586507479816 * var_x48; + + partialF = -0.00012359906637920097 * var_x85 - 2.7242382709912566e-5 * var_x36 - var_x189 * var_x82 - var_x190 * var_x37 + 7.158914428402498e-11 * var_x60 * var_x61 * var_x80 * var_chaste_interface__cleft_space_equations__Ca_c + 2.2637191644542304e-5 * var_x11 * var_x29 * var_x30 * var_x83 * var_x86; + } + else + { + const double y_save = rY[12]; + rY[12] += delta; + const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[12])/delta; + rY[12] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv = (-var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f_K - var_linear_background_current__i_B_K + 2 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + + + const double var_x22 = mParameters[2] * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; + const double var_x23 = var_x22 * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a; + const double var_x72 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i; + const double var_x194 = 0.46050826103455306 * var_x23; + + partialF = -1.1816383500424576e-5 * var_x72 - var_x194 * var_x72; + } + else + { + const double y_save = rY[13]; + rY[13] += delta; + const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[13])/delta; + rY[13] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; + // Units: dimensionless; Initial value: 0.1411678 + + + // Mathematics + const double var_intracellular_concentrations_and_buffer_equations__phi_C = -307 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_C; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + const double var_x196 = 129 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + + partialF = -0.307 - var_x196; + } + else + { + const double y_save = rY[14]; + rY[14] += delta; + const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[14])/delta; + rY[14] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; + // Units: dimensionless; Initial value: 0.07331396 + + + // Mathematics + const double var_intracellular_concentrations_and_buffer_equations__phi_TC = -252 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 50500 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TC; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + + partialF = -0.252 - 50.5 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + } + else + { + const double y_save = rY[15]; + rY[15] += delta; + const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[15])/delta; + rY[15] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + + + // Mathematics + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -4.25 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + const double var_x196 = 129 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + + partialF = -0.0042500000000000003 - var_x196; + } + else + { + const double y_save = rY[16]; + rY[16] += delta; + const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[16])/delta; + rY[16] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + + + // Mathematics + const double var_intracellular_concentrations_and_buffer_equations__Mg_i = 2.5; // millimolar + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgM = -429 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop + 1290 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_intracellular_concentrations_and_buffer_equations__Mg_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgM; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -3.6539999999999999; + } + else + { + const double y_save = rY[17]; + rY[17] += delta; + const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[17])/delta; + rY[17] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_cleft_space_equations__Na_b = 140; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = 0.01; // second + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_cleft_space_equations__Na_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Na_c + var_cleft_space_equations__Na_b) / var_cleft_space_equations__tau_p + (3 * var_sodium_calcium_pump__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_hyperpolarisation_activated_current__i_f_Na + var_linear_background_current__i_B_Na + var_sodium_current__i_Na) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__Na_c = 0.001 * var_cleft_space_equations__Na_c_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_cleft_space_equations__Na_c; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + + + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x35 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x36 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x37 = var_x36 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x38 = exp(var_x35 - 1 * log(var_x37)); + const double var_x39 = -1 + var_x38; + const double var_x41 = exp(var_x35); + const double var_x42 = -1 + var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x45 = var_x43 * var_x44 * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; + const double var_x47 = var_x45 * var_chaste_interface__membrane__V; + const double var_x48 = var_x38 * var_x47; + const double var_x60 = pow(var_x13, (-2)); + const double var_x61 = var_x19 - var_x17; + const double var_x62 = var_x60 * var_x61; + const double var_x89 = 1 / var_chaste_interface__cleft_space_equations__Na_c; + const double var_x90 = pow(var_chaste_interface__cleft_space_equations__Na_c, 2) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x91 = var_x16 * var_x90; + const double var_x202 = 2.447717065593501e-6 * var_x14; + const double var_x203 = 2.4477170655935014e-10 * var_x62; + const double var_x204 = 78.710093573368496 * var_x48; + + partialF = -0.099999999999999992 - var_x204 - 9.3144911471392233e-5 * var_x89 - var_x202 * var_x91 - var_x203 * var_x90 + 78.710093573368496 * var_x39 * var_x43 * var_x44 * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; + } + else + { + const double y_save = rY[18]; + rY[18] += delta; + const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[18])/delta; + rY[18] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__Ca_b = 2; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = 0.01; // second + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_cleft_space_equations__Ca_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Ca_c + var_cleft_space_equations__Ca_b) / var_cleft_space_equations__tau_p + 0.5 * (-2 * var_sodium_calcium_pump__i_NaCa + var_L_type_Ca_channel__i_Ca_L + var_T_type_Ca_channel__i_Ca_T + var_calcium_pump_current__i_Ca_P + var_linear_background_current__i_B_Ca) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__Ca_c = 0.001 * var_cleft_space_equations__Ca_c_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_cleft_space_equations__Ca_c; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + + + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x60 = pow(var_x13, (-2)); + const double var_x61 = var_x19 - var_x17; + const double var_x92 = 1 / var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x93 = var_x11 * var_x18; + const double var_x205 = 2.7196856284372236e-7 * var_x14; + + partialF = -0.099999999999999992 - 5.2976168399354324e-6 * var_x92 - var_x205 * var_x93 + 2.7196856284372237e-11 * var_x11 * var_x60 * var_x61; + } + else + { + const double y_save = rY[19]; + rY[19] += delta; + const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[19])/delta; + rY[19] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = 0.01; // second + const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_cleft_space_equations__K_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__K_c + var_cleft_space_equations__K_b) / var_cleft_space_equations__tau_p + (-2 * var_sodium_potassium_pump__i_NaK + var_delayed_rectifying_potassium_current__i_K + var_hyperpolarisation_activated_current__i_f_K + var_linear_background_current__i_B_K) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__K_c = 0.001 * var_cleft_space_equations__K_c_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_cleft_space_equations__K_c; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x22 = mParameters[2] * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; + const double var_x23 = var_x22 * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a; + const double var_x27 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); + const double var_x28 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; + const double var_x29 = pow(var_x28, (-2)); + const double var_x30 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); + const double var_x31 = 1 + 0.18315018315018314 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x32 = pow(var_x31, (-3)); + const double var_x83 = 1 / (1.5 + var_x27); + const double var_x94 = 1 / var_chaste_interface__cleft_space_equations__K_c; + const double var_x95 = var_x11 * var_x32 * var_x83; + const double var_x97 = pow(var_x28, (-3)); + const double var_x99 = var_x29 * var_chaste_interface__cleft_space_equations__K_c; + const double var_x209 = 1.5745319219196114 * var_x23; + + partialF = -0.099999999999999992 - 4.040160535071638e-5 * var_x94 - var_x209 * var_x94 - 0.00018782211067427598 * var_x95 * var_x99 + 0.00018782211067427598 * var_x11 * var_x30 * var_x32 * var_x83 * var_x97; + } + else + { + const double y_save = rY[20]; + rY[20] += delta; + const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[20])/delta; + rY[20] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__alpha_up = 0.080000000000000002; // nanoA + const double var_SR_Ca_uptake_and_release__beta_up = 0.071999999999999995; // nanoA + const double var_SR_Ca_uptake_and_release__k_SRCa = 22; // millimolar + const double var_SR_Ca_uptake_and_release__k_cyca = 5.0000000000000002e-5; // millimolar + const double var_SR_Ca_uptake_and_release__k_xcs = 0.90000000000000002; // dimensionless + const double var_SR_Ca_uptake_and_release__K1 = var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs / var_SR_Ca_uptake_and_release__k_SRCa; // dimensionless + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_SR_Ca_uptake_and_release__K2 = var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 + var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs + var_SR_Ca_uptake_and_release__k_cyca + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // millimolar + const double var_SR_Ca_uptake_and_release__i_up = (var_SR_Ca_uptake_and_release__alpha_up * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 * var_SR_Ca_uptake_and_release__beta_up) / var_SR_Ca_uptake_and_release__K2; // nanoA + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_SR_Ca_uptake_and_release__V_up = 0.01166 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_SR_Ca_uptake_and_release__i_tr = 31.162355874104083 * (-var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel + var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) * var_SR_Ca_uptake_and_release__V_up * var_membrane__F; // nanoA + const double var_SR_Ca_uptake_and_release__Ca_up_orig_deriv = 0.5 * (-var_SR_Ca_uptake_and_release__i_tr + var_SR_Ca_uptake_and_release__i_up) / (var_SR_Ca_uptake_and_release__V_up * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up = 0.001 * var_SR_Ca_uptake_and_release__Ca_up_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + + + const double var_x100 = 9.5000000000000005e-5 + 2.0454545454545457e-6 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x101 = 1 / var_x100; + const double var_x102 = pow(var_x100, (-2)); + const double var_x103 = 0.080000000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - 1.4727272727272728e-7 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up; + const double var_x110 = var_x102 * var_x103; + + partialF = -0.015581177937052042 - 4.0251665946738841e-8 * var_x101 - 5.5905091592692838e-7 * var_x110; + } + else + { + const double y_save = rY[21]; + rY[21] += delta; + const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[21])/delta; + rY[21] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; + // Units: dimensionless; Initial value: 0.9528726 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__alpha_rel = 0.5; // nanoA_per_millimolar + const double var_SR_Ca_uptake_and_release__i_rel = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel * var_SR_Ca_uptake_and_release__alpha_rel / pow((0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2), 2); // nanoA + const double var_SR_Ca_uptake_and_release__phi_Calse = -641 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse + 770 * (1 - var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; // per_second + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_SR_Ca_uptake_and_release__V_rel = 0.0012960000000000001 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_SR_Ca_uptake_and_release__V_up = 0.01166 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_SR_Ca_uptake_and_release__i_tr = 31.162355874104083 * (-var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel + var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) * var_SR_Ca_uptake_and_release__V_up * var_membrane__F; // nanoA + const double var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv = -11.48 * var_SR_Ca_uptake_and_release__phi_Calse + 0.5 * (-var_SR_Ca_uptake_and_release__i_rel + var_SR_Ca_uptake_and_release__i_tr) / (var_SR_Ca_uptake_and_release__V_rel * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel = 0.001 * var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; + // Units: dimensionless; Initial value: 0.9528726 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + + + const double var_x111 = 0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2; + const double var_x112 = pow(var_x111, (-2)); + const double var_x113 = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2); + const double var_x114 = var_x112 * var_x113; + + partialF = -8.979782511378108 + 8.8396000000000008 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse - 1.2294902345128229 * var_x114; + } + else + { + const double y_save = rY[22]; + rY[22] += delta; + const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[22])/delta; + rY[22] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; + // Units: dimensionless; Initial value: 0.9528726 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__phi_Calse = -641 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse + 770 * (1 - var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; // per_second + const double var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv = var_SR_Ca_uptake_and_release__phi_Calse; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse = 0.001 * var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + + + + partialF = -0.64100000000000001 - 0.77000000000000002 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; + } + else + { + const double y_save = rY[23]; + rY[23] += delta; + const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[23])/delta; + rY[23] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__F1 = rY[24]; + // Units: dimensionless; Initial value: 0.1133251 + double var_chaste_interface__SR_Ca_uptake_and_release__F3 = rY[26]; + // Units: dimensionless; Initial value: 0.8859153 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar + const double var_SR_Ca_uptake_and_release__r_act = 240 * exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F1_orig_deriv = 0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 - var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1 = 0.001 * var_SR_Ca_uptake_and_release__F1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + const double var_x211 = exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V); + const double var_x213 = 0.0040000000000000001 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x214 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4); + const double var_x215 = pow(var_x213, (-4)); + const double var_x218 = 0.23999999999999999 * var_x214 * var_x215; + const double var_x219 = var_x218 + 0.23999999999999999 * var_x211; + + partialF = -var_x219; + } + else + { + const double y_save = rY[24]; + rY[24] += delta; + const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[24])/delta; + rY[24] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__F1 = rY[24]; + // Units: dimensionless; Initial value: 0.1133251 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar + const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__r_act = 240 * exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F2_orig_deriv = var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act - var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2 = 0.001 * var_SR_Ca_uptake_and_release__F2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + const double var_x213 = 0.0040000000000000001 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x214 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4); + const double var_x215 = pow(var_x213, (-4)); + const double var_x218 = 0.23999999999999999 * var_x214 * var_x215; + const double var_x221 = 0.040000000000000001 + var_x218; + + partialF = -var_x221; + } + else + { + const double y_save = rY[25]; + rY[25] += delta; + const double temp = EvaluateYDerivative25(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[25])/delta; + rY[25] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + double var_chaste_interface__SR_Ca_uptake_and_release__F3 = rY[26]; + // Units: dimensionless; Initial value: 0.8859153 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar + const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F3_orig_deriv = -0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 + var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3 = 0.001 * var_SR_Ca_uptake_and_release__F3_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -0.00095999999999999992; + } + else + { + const double y_save = rY[26]; + rY[26] += delta; + const double temp = EvaluateYDerivative26(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[26])/delta; + rY[26] = y_save; + } + return partialF; + } + + std::vector Dynamicdemir_model_1994FromCellMLGRL1::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_delayed_rectifying_potassium_current__g_K = pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / mParameters[1]; // uA_per_cm2 + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA + const double var_hyperpolarisation_activated_current__i_f_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_hyperpolarisation_activated_current__i_f / mParameters[1]; // uA_per_cm2 + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_delayed_rectifying_potassium_current__i_K_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifying_potassium_current__i_K / mParameters[1]; // uA_per_cm2 + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_current__i_Na_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / mParameters[1]; // uA_per_cm2 + + std::vector dqs(7); + dqs[0] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[1] = var_delayed_rectifying_potassium_current__i_K_converted; + dqs[2] = var_sodium_current__i_Na_converted; + dqs[3] = var_hyperpolarisation_activated_current__i_f_converted; + dqs[4] = var_hyperpolarisation_activated_current__i_f_K; + dqs[5] = var_hyperpolarisation_activated_current__i_f_Na; + dqs[6] = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "demir_model_1994"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-49.54105); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0003787018); + + // rY[2]: + this->mVariableNames.push_back("sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.250113); + + // rY[3]: + this->mVariableNames.push_back("sodium_current_h_gate__h1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001386897); + + // rY[4]: + this->mVariableNames.push_back("sodium_current_h_gate__h2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002065463); + + // rY[5]: + this->mVariableNames.push_back("L_type_Ca_channel_d_gate__d_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002572773); + + // rY[6]: + this->mVariableNames.push_back("L_type_Ca_channel_f_gate__f_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.98651); + + // rY[7]: + this->mVariableNames.push_back("T_type_Ca_channel_d_gate__d_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.02012114); + + // rY[8]: + this->mVariableNames.push_back("T_type_Ca_channel_f_gate__f_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.1945111); + + // rY[9]: + this->mVariableNames.push_back("delayed_rectifying_potassium_current_P_a_gate__P_a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.02302278); + + // rY[10]: + this->mVariableNames.push_back("delayed_rectifying_potassium_current_P_i_gate__P_i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.3777728); + + // rY[11]: + this->mVariableNames.push_back("hyperpolarisation_activated_current_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09227776); + + // rY[12]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.701621); + + // rY[13]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(140.7347); + + // rY[14]: + this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Ca_Calmod"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.1411678); + + // rY[15]: + this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Ca_Trop"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.07331396); + + // rY[16]: + this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7618549); + + // rY[17]: + this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.2097049); + + // rY[18]: + this->mVariableNames.push_back("extracellular_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(139.9988); + + // rY[19]: + this->mVariableNames.push_back("extracellular_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.00474); + + // rY[20]: + this->mVariableNames.push_back("extracellular_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(5.389014); + + // rY[21]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(16.95311); + + // rY[22]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__Ca_rel"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(16.85024); + + // rY[23]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__Ca_Calse"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9528726); + + // rY[24]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__F1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.1133251); + + // rY[25]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__F2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0007594214); + + // rY[26]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__F3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8859153); + + // mParameters[0]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[1]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF"); + + // mParameters[2]: + this->mParameterNames.push_back("membrane_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mul_per_second"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component_conductance"); + this->mParameterUnits.push_back("microS"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component"); + this->mDerivedQuantityUnits.push_back("nanoA"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component"); + this->mDerivedQuantityUnits.push_back("nanoA"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicdemir_model_1994FromCellMLGRL1) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicdemir_model_1994FromCellMLGRL1(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994--sympy_1_13.cpp new file mode 100644 index 00000000..1eaacfb9 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994--sympy_1_13.cpp @@ -0,0 +1,2832 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: demir_model_1994 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenFirstOrder) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_demir_model_1994.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + double Dynamicdemir_model_1994FromCellMLGRL1::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamicdemir_model_1994FromCellMLGRL1::Dynamicdemir_model_1994FromCellMLGRL1(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 27, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + this->mParameters[0] = 0.021149999999999999; // (var_L_type_Ca_channel__g_Ca_L) [microS] + this->mParameters[1] = 5.5000000000000002e-5; // (var_membrane__Cm) [microF] + this->mParameters[2] = 0.0069300000000000004; // (var_delayed_rectifying_potassium_current__g_K_max) [microS] + this->mParameters[3] = 0.0034399999999999999; // (var_sodium_current__P_Na) [mul_per_second] + this->mParameters[4] = 0.0128821; // (var_hyperpolarisation_activated_current__g_f_K) [microS] + this->mParameters[5] = 0.0067478; // (var_hyperpolarisation_activated_current__g_f_Na) [microS] + } + + Dynamicdemir_model_1994FromCellMLGRL1::~Dynamicdemir_model_1994FromCellMLGRL1() + { + } + + + void Dynamicdemir_model_1994FromCellMLGRL1::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 27; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicdemir_model_1994FromCellMLGRL1::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / mParameters[1]; // uA_per_cm2 + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA + const double var_hyperpolarisation_activated_current__i_f_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_hyperpolarisation_activated_current__i_f / mParameters[1]; // uA_per_cm2 + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_delayed_rectifying_potassium_current__i_K_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifying_potassium_current__i_K / mParameters[1]; // uA_per_cm2 + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_linear_background_current__i_B = var_linear_background_current__i_B_Ca + var_linear_background_current__i_B_K + var_linear_background_current__i_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_current__i_Na_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / mParameters[1]; // uA_per_cm2 + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_delayed_rectifying_potassium_current__i_K_converted + var_hyperpolarisation_activated_current__i_f_converted + var_sodium_current__i_Na_converted) * mParameters[1] + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_calcium_pump_current__i_Ca_P + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_linear_background_current__i_B + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_pump__i_NaCa + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK) / mParameters[1]; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicdemir_model_1994FromCellMLGRL1::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_linear_background_current__i_B = var_linear_background_current__i_B_Ca + var_linear_background_current__i_B_K + var_linear_background_current__i_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_membrane__V_orig_deriv = (-var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f - var_linear_background_current__i_B - var_sodium_calcium_pump__i_NaCa - var_sodium_current__i_Na - var_sodium_potassium_pump__i_NaK) / mParameters[1]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + double evalF = d_dt_chaste_interface_var_membrane__V; + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Dynamicdemir_model_1994FromCellMLGRL1::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const double delta = 1e-8; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; + // Units: dimensionless; Initial value: 0.1411678 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; + // Units: dimensionless; Initial value: 0.07331396 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; + // Units: dimensionless; Initial value: 0.9528726 + double var_chaste_interface__SR_Ca_uptake_and_release__F1 = rY[24]; + // Units: dimensionless; Initial value: 0.1133251 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + double var_chaste_interface__SR_Ca_uptake_and_release__F3 = rY[26]; + // Units: dimensionless; Initial value: 0.8859153 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_SR_Ca_uptake_and_release__alpha_rel = 0.5; // nanoA_per_millimolar + const double var_SR_Ca_uptake_and_release__alpha_up = 0.080000000000000002; // nanoA + const double var_SR_Ca_uptake_and_release__beta_up = 0.071999999999999995; // nanoA + const double var_SR_Ca_uptake_and_release__i_rel = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel * var_SR_Ca_uptake_and_release__alpha_rel / pow((0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2), 2); // nanoA + const double var_SR_Ca_uptake_and_release__k_SRCa = 22; // millimolar + const double var_SR_Ca_uptake_and_release__k_cyca = 5.0000000000000002e-5; // millimolar + const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar + const double var_SR_Ca_uptake_and_release__k_xcs = 0.90000000000000002; // dimensionless + const double var_SR_Ca_uptake_and_release__K1 = var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs / var_SR_Ca_uptake_and_release__k_SRCa; // dimensionless + const double var_SR_Ca_uptake_and_release__phi_Calse = -641 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse + 770 * (1 - var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; // per_second + const double var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv = var_SR_Ca_uptake_and_release__phi_Calse; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse = 0.001 * var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv; // 1 / millisecond + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__Ca_b = 2; // millimolar + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_cleft_space_equations__Na_b = 140; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = 0.01; // second + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_SR_Ca_uptake_and_release__K2 = var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 + var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs + var_SR_Ca_uptake_and_release__k_cyca + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // millimolar + const double var_SR_Ca_uptake_and_release__i_up = (var_SR_Ca_uptake_and_release__alpha_up * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 * var_SR_Ca_uptake_and_release__beta_up) / var_SR_Ca_uptake_and_release__K2; // nanoA + const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F3_orig_deriv = -0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 + var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3 = 0.001 * var_SR_Ca_uptake_and_release__F3_orig_deriv; // 1 / millisecond + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__Mg_i = 2.5; // millimolar + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_SR_Ca_uptake_and_release__V_rel = 0.0012960000000000001 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_SR_Ca_uptake_and_release__V_up = 0.01166 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_intracellular_concentrations_and_buffer_equations__phi_C = -307 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_C; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv; // 1 / millisecond + const double var_intracellular_concentrations_and_buffer_equations__F_C = 0.089999999999999997 * var_intracellular_concentrations_and_buffer_equations__phi_C; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TC = -252 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 50500 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TC; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv; // 1 / millisecond + const double var_intracellular_concentrations_and_buffer_equations__F_TC = 0.031 * var_intracellular_concentrations_and_buffer_equations__phi_TC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -4.25 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv; // 1 / millisecond + const double var_intracellular_concentrations_and_buffer_equations__F_TMgC = 0.062 * var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_B = var_intracellular_concentrations_and_buffer_equations__F_C + var_intracellular_concentrations_and_buffer_equations__F_TC + var_intracellular_concentrations_and_buffer_equations__F_TMgC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgM = -429 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop + 1290 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_intracellular_concentrations_and_buffer_equations__Mg_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgM; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv; // 1 / millisecond + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_SR_Ca_uptake_and_release__i_tr = 31.162355874104083 * (-var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel + var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) * var_SR_Ca_uptake_and_release__V_up * var_membrane__F; // nanoA + const double var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv = -11.48 * var_SR_Ca_uptake_and_release__phi_Calse + 0.5 * (-var_SR_Ca_uptake_and_release__i_rel + var_SR_Ca_uptake_and_release__i_tr) / (var_SR_Ca_uptake_and_release__V_rel * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel = 0.001 * var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv; // millimolar / millisecond + const double var_SR_Ca_uptake_and_release__Ca_up_orig_deriv = 0.5 * (-var_SR_Ca_uptake_and_release__i_tr + var_SR_Ca_uptake_and_release__i_up) / (var_SR_Ca_uptake_and_release__V_up * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up = 0.001 * var_SR_Ca_uptake_and_release__Ca_up_orig_deriv; // millimolar / millisecond + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__alpha_d_L = -28.390000000000001 * (35 + var_chaste_interface__membrane__V) / (-1 + exp(-14 - 0.40000000000000002 * var_chaste_interface__membrane__V)) - 84.900000000000006 * var_chaste_interface__membrane__V / (-1 + exp(-0.20799999999999999 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__beta_d_L = 11.43 * (-5 + var_chaste_interface__membrane__V) / (-1 + exp(-2 + 0.40000000000000002 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_L_type_Ca_channel_d_gate__tau_d_L = 1 / (var_L_type_Ca_channel_d_gate__alpha_d_L + var_L_type_Ca_channel_d_gate__beta_d_L); // second + const double var_L_type_Ca_channel_d_gate__d_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_d_gate__d_L + var_L_type_Ca_channel_d_gate__d_L_infinity) / var_L_type_Ca_channel_d_gate__tau_d_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L = 0.001 * var_L_type_Ca_channel_d_gate__d_L_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel_f_gate__alpha_f_L = 3.75 * (28 + var_chaste_interface__membrane__V) / (-1 + exp(7 + 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__beta_f_L = 30 / (1 + exp(-7 - 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__f_L_infinity = 1 / (1 + exp(6 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f_L = 1 / (var_L_type_Ca_channel_f_gate__alpha_f_L + var_L_type_Ca_channel_f_gate__beta_f_L); // second + const double var_L_type_Ca_channel_f_gate__f_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_f_gate__f_L + var_L_type_Ca_channel_f_gate__f_L_infinity) / var_L_type_Ca_channel_f_gate__tau_f_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L = 0.001 * var_L_type_Ca_channel_f_gate__f_L_orig_deriv; // 1 / millisecond + const double var_SR_Ca_uptake_and_release__r_act = 240 * exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F1_orig_deriv = 0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 - var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1 = 0.001 * var_SR_Ca_uptake_and_release__F1_orig_deriv; // 1 / millisecond + const double var_SR_Ca_uptake_and_release__F2_orig_deriv = var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act - var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2 = 0.001 * var_SR_Ca_uptake_and_release__F2_orig_deriv; // 1 / millisecond + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_T_type_Ca_channel_d_gate__alpha_d_T = 1068 * exp(0.87666666666666671 + 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__beta_d_T = 1068 * exp(-0.87666666666666671 - 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__d_T_infinity = 1 / (1 + exp(-4.3833333333333337 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_T_type_Ca_channel_d_gate__tau_d_T = 1 / (var_T_type_Ca_channel_d_gate__alpha_d_T + var_T_type_Ca_channel_d_gate__beta_d_T); // second + const double var_T_type_Ca_channel_d_gate__d_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_d_gate__d_T + var_T_type_Ca_channel_d_gate__d_T_infinity) / var_T_type_Ca_channel_d_gate__tau_d_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T = 0.001 * var_T_type_Ca_channel_d_gate__d_T_orig_deriv; // 1 / millisecond + const double var_T_type_Ca_channel_f_gate__alpha_f_T = 15.300000000000001 * exp(-0.74069627851140463 - 0.012004801920768308 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__beta_f_T = 15 * exp(4.0117035110533159 + 0.065019505851755519 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__f_T_infinity = 1 / (1 + exp(11.017857142857144 + 0.17857142857142858 * var_chaste_interface__membrane__V)); // dimensionless + const double var_T_type_Ca_channel_f_gate__tau_f_T = 1 / (var_T_type_Ca_channel_f_gate__alpha_f_T + var_T_type_Ca_channel_f_gate__beta_f_T); // second + const double var_T_type_Ca_channel_f_gate__f_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_f_gate__f_T + var_T_type_Ca_channel_f_gate__f_T_infinity) / var_T_type_Ca_channel_f_gate__tau_f_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T = 0.001 * var_T_type_Ca_channel_f_gate__f_T_orig_deriv; // 1 / millisecond + const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity = 1 / (1 + exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a = 1 / (17 * exp(0.039800000000000002 * var_chaste_interface__membrane__V) + 2.1099999999999999 * exp(-0.050999999999999997 * var_chaste_interface__membrane__V)); // second + const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv = (-var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a + var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity) / var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a = 0.001 * var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv; // 1 / millisecond + const double var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i = 100 * exp(-0.0183 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i = 656 * exp(0.0094199999999999996 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv = (1 - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i) * var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i * var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i = 0.001 * var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv; // 1 / millisecond + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current_y_gate__tau_y = 1 / (1.6483000000000001 * exp(-2.2219482120838472 - 0.041101520756267988 * var_chaste_interface__membrane__V) + 14.01055 / (0.69999999999999996 + exp(-10.909090909090908 - 0.18181818181818182 * var_chaste_interface__membrane__V))); // second + const double var_hyperpolarisation_activated_current_y_gate__y_infinity = 1 / (1 + exp(8.0222222222222221 + 0.1111111111111111 * var_chaste_interface__membrane__V)); // dimensionless + const double var_hyperpolarisation_activated_current_y_gate__y_orig_deriv = (-var_chaste_interface__hyperpolarisation_activated_current_y_gate__y + var_hyperpolarisation_activated_current_y_gate__y_infinity) / var_hyperpolarisation_activated_current_y_gate__tau_y; // 1 / second + const double d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y = 0.001 * var_hyperpolarisation_activated_current_y_gate__y_orig_deriv; // 1 / millisecond + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_cleft_space_equations__Ca_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Ca_c + var_cleft_space_equations__Ca_b) / var_cleft_space_equations__tau_p + 0.5 * (-2 * var_sodium_calcium_pump__i_NaCa + var_L_type_Ca_channel__i_Ca_L + var_T_type_Ca_channel__i_Ca_T + var_calcium_pump_current__i_Ca_P + var_linear_background_current__i_B_Ca) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__Ca_c = 0.001 * var_cleft_space_equations__Ca_c_orig_deriv; // millimolar / millisecond + const double var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv = -var_intracellular_concentrations_and_buffer_equations__phi_B + 0.5 * (-var_L_type_Ca_channel__i_Ca_L - var_SR_Ca_uptake_and_release__i_up - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_linear_background_current__i_B_Ca + 2 * var_sodium_calcium_pump__i_NaCa + var_SR_Ca_uptake_and_release__i_rel) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv; // millimolar / millisecond + const double var_sodium_current_h_gate__alpha_h1 = 165 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_h_gate__h1_infinity = var_sodium_current_h_gate__alpha_h1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // dimensionless + const double var_sodium_current_h_gate__h2_infinity = var_sodium_current_h_gate__h1_infinity; // dimensionless + const double var_sodium_current_h_gate__tau_h1 = 1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // second + const double var_sodium_current_h_gate__h1_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h1 + var_sodium_current_h_gate__h1_infinity) / var_sodium_current_h_gate__tau_h1; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h_gate__h1 = 0.001 * var_sodium_current_h_gate__h1_orig_deriv; // 1 / millisecond + const double var_sodium_current_h_gate__tau_h2 = 20 * var_sodium_current_h_gate__tau_h1; // second + const double var_sodium_current_h_gate__h2_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h2 + var_sodium_current_h_gate__h2_infinity) / var_sodium_current_h_gate__tau_h2; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h_gate__h2 = 0.001 * var_sodium_current_h_gate__h2_orig_deriv; // 1 / millisecond + const double var_sodium_current_m_gate__alpha_m = -824 * (51.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_m_gate__beta_m = 32960 * exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_current_m_gate__m_infinity = var_sodium_current_m_gate__alpha_m / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // dimensionless + const double var_sodium_current_m_gate__tau_m = 1.5e-5 + 1 / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // second + const double var_sodium_current_m_gate__m_orig_deriv = (-var_chaste_interface__sodium_current_m_gate__m + var_sodium_current_m_gate__m_infinity) / var_sodium_current_m_gate__tau_m; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_m_gate__m = 0.001 * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_cleft_space_equations__K_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__K_c + var_cleft_space_equations__K_b) / var_cleft_space_equations__tau_p + (-2 * var_sodium_potassium_pump__i_NaK + var_delayed_rectifying_potassium_current__i_K + var_hyperpolarisation_activated_current__i_f_K + var_linear_background_current__i_B_K) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__K_c = 0.001 * var_cleft_space_equations__K_c_orig_deriv; // millimolar / millisecond + const double var_cleft_space_equations__Na_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Na_c + var_cleft_space_equations__Na_b) / var_cleft_space_equations__tau_p + (3 * var_sodium_calcium_pump__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_hyperpolarisation_activated_current__i_f_Na + var_linear_background_current__i_B_Na + var_sodium_current__i_Na) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__Na_c = 0.001 * var_cleft_space_equations__Na_c_orig_deriv; // millimolar / millisecond + const double var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv = (-var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f_K - var_linear_background_current__i_B_K + 2 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv; // millimolar / millisecond + const double var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv = (-var_hyperpolarisation_activated_current__i_f_Na - var_linear_background_current__i_B_Na - var_sodium_current__i_Na - 3 * var_sodium_calcium_pump__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv; // millimolar / millisecond + + mEvalF[1] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i; + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[2] = d_dt_chaste_interface_var_sodium_current_m_gate__m; + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[3] = d_dt_chaste_interface_var_sodium_current_h_gate__h1; + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[4] = d_dt_chaste_interface_var_sodium_current_h_gate__h2; + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[5] = d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L; + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[6] = d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L; + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[7] = d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T; + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[8] = d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T; + mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[9] = d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a; + mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[10] = d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i; + mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[11] = d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y; + mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[12] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i; + mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[13] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i; + mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[14] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod; + mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[15] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop; + mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[16] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop; + mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[17] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop; + mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[18] = d_dt_chaste_interface_var_cleft_space_equations__Na_c; + mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[19] = d_dt_chaste_interface_var_cleft_space_equations__Ca_c; + mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[20] = d_dt_chaste_interface_var_cleft_space_equations__K_c; + mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[21] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up; + mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[22] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel; + mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[23] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse; + mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[24] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1; + mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[25] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2; + mPartialF[25] = EvaluatePartialDerivative25(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[26] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3; + mPartialF[26] = EvaluatePartialDerivative26(var_chaste_interface__environment__time_converted, rY, delta); + + { + if (fabs(mPartialF[1]) < delta){ + rY[1] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i; + } + else + { + rY[1] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i/mPartialF[1])*(exp(mPartialF[1]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[2]) < delta){ + rY[2] += mDt*d_dt_chaste_interface_var_sodium_current_m_gate__m; + } + else + { + rY[2] += (d_dt_chaste_interface_var_sodium_current_m_gate__m/mPartialF[2])*(exp(mPartialF[2]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[3]) < delta){ + rY[3] += mDt*d_dt_chaste_interface_var_sodium_current_h_gate__h1; + } + else + { + rY[3] += (d_dt_chaste_interface_var_sodium_current_h_gate__h1/mPartialF[3])*(exp(mPartialF[3]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[4]) < delta){ + rY[4] += mDt*d_dt_chaste_interface_var_sodium_current_h_gate__h2; + } + else + { + rY[4] += (d_dt_chaste_interface_var_sodium_current_h_gate__h2/mPartialF[4])*(exp(mPartialF[4]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[5]) < delta){ + rY[5] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L; + } + else + { + rY[5] += (d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L/mPartialF[5])*(exp(mPartialF[5]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[6]) < delta){ + rY[6] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L; + } + else + { + rY[6] += (d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L/mPartialF[6])*(exp(mPartialF[6]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[7]) < delta){ + rY[7] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T; + } + else + { + rY[7] += (d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T/mPartialF[7])*(exp(mPartialF[7]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[8]) < delta){ + rY[8] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T; + } + else + { + rY[8] += (d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T/mPartialF[8])*(exp(mPartialF[8]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[9]) < delta){ + rY[9] += mDt*d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a; + } + else + { + rY[9] += (d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a/mPartialF[9])*(exp(mPartialF[9]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[10]) < delta){ + rY[10] += mDt*d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i; + } + else + { + rY[10] += (d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i/mPartialF[10])*(exp(mPartialF[10]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[11]) < delta){ + rY[11] += mDt*d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y; + } + else + { + rY[11] += (d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y/mPartialF[11])*(exp(mPartialF[11]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[12]) < delta){ + rY[12] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i; + } + else + { + rY[12] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i/mPartialF[12])*(exp(mPartialF[12]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[13]) < delta){ + rY[13] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i; + } + else + { + rY[13] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i/mPartialF[13])*(exp(mPartialF[13]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[14]) < delta){ + rY[14] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod; + } + else + { + rY[14] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod/mPartialF[14])*(exp(mPartialF[14]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[15]) < delta){ + rY[15] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop; + } + else + { + rY[15] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop/mPartialF[15])*(exp(mPartialF[15]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[16]) < delta){ + rY[16] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop; + } + else + { + rY[16] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop/mPartialF[16])*(exp(mPartialF[16]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[17]) < delta){ + rY[17] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop; + } + else + { + rY[17] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop/mPartialF[17])*(exp(mPartialF[17]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[18]) < delta){ + rY[18] += mDt*d_dt_chaste_interface_var_cleft_space_equations__Na_c; + } + else + { + rY[18] += (d_dt_chaste_interface_var_cleft_space_equations__Na_c/mPartialF[18])*(exp(mPartialF[18]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[19]) < delta){ + rY[19] += mDt*d_dt_chaste_interface_var_cleft_space_equations__Ca_c; + } + else + { + rY[19] += (d_dt_chaste_interface_var_cleft_space_equations__Ca_c/mPartialF[19])*(exp(mPartialF[19]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[20]) < delta){ + rY[20] += mDt*d_dt_chaste_interface_var_cleft_space_equations__K_c; + } + else + { + rY[20] += (d_dt_chaste_interface_var_cleft_space_equations__K_c/mPartialF[20])*(exp(mPartialF[20]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[21]) < delta){ + rY[21] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up; + } + else + { + rY[21] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up/mPartialF[21])*(exp(mPartialF[21]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[22]) < delta){ + rY[22] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel; + } + else + { + rY[22] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel/mPartialF[22])*(exp(mPartialF[22]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[23]) < delta){ + rY[23] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse; + } + else + { + rY[23] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse/mPartialF[23])*(exp(mPartialF[23]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[24]) < delta){ + rY[24] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1; + } + else + { + rY[24] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1/mPartialF[24])*(exp(mPartialF[24]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[25]) < delta){ + rY[25] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2; + } + else + { + rY[25] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2/mPartialF[25])*(exp(mPartialF[25]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[26]) < delta){ + rY[26] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3; + } + else + { + rY[26] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3/mPartialF[26])*(exp(mPartialF[26]*mDt)-1.0); + } + + } + + } + + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_linear_background_current__i_B = var_linear_background_current__i_B_Ca + var_linear_background_current__i_B_K + var_linear_background_current__i_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_membrane__V_orig_deriv = (-var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f - var_linear_background_current__i_B - var_sodium_calcium_pump__i_NaCa - var_sodium_current__i_Na - var_sodium_potassium_pump__i_NaK) / mParameters[1]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + return d_dt_chaste_interface_var_membrane__V; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + const double var_x0 = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2); + const double var_x1 = var_x0 * mParameters[4]; + const double var_x2 = var_x0 * mParameters[5]; + const double var_x3 = 0.16666666666666666 * var_chaste_interface__membrane__V; + const double var_x4 = exp(-2.3500000000000001 - var_x3); + const double var_x5 = 1 + var_x4; + const double var_x6 = 1 / var_x5; + const double var_x7 = (0.095000000000000001 * var_x6 + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; + const double var_x8 = var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x20 = 0.018714999999999999 * var_x17 + 0.018714999999999999 * var_x19; + const double var_x21 = var_x14 * var_x20; + const double var_x22 = mParameters[2] * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; + const double var_x23 = var_x22 * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a; + const double var_x24 = (-46.399999999999999 + var_chaste_interface__membrane__V) * mParameters[0]; + const double var_x25 = var_x4 / pow(var_x5, 2); + const double var_x26 = var_x24 * var_x25; + const double var_x27 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); + const double var_x28 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; + const double var_x29 = pow(var_x28, (-2)); + const double var_x30 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); + const double var_x31 = 1 + 0.18315018315018314 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x32 = pow(var_x31, (-3)); + const double var_x33 = pow((1 + 0.66666666666666663 * var_x27), (-2)); + const double var_x34 = var_x11 * var_x27 * var_x29 * var_x30 * var_x32 * var_x33; + const double var_x35 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x36 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x37 = var_x36 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x38 = exp(var_x35 - 1 * log(var_x37)); + const double var_x39 = -1 + var_x38; + const double var_x40 = var_x39 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x41 = exp(var_x35); + const double var_x42 = -1 + var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x45 = var_x43 * var_x44 * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; + const double var_x46 = 3611.8217397063127 * var_x45; + const double var_x47 = var_x45 * var_chaste_interface__membrane__V; + const double var_x48 = var_x38 * var_x47; + const double var_x49 = var_x48 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x50 = pow(var_x42, (-2)); + const double var_x51 = 1 / mParameters[1]; + const double var_x52 = 0.001 * var_x51; + + partialF = var_x52 * (-0.00026580000000000001 - var_x1 - var_x2 - var_x7 - 0.02521 * var_x8 - 1.2480000000000001e-5 * var_x21 - 0.015833333333333335 * var_x26 - 135.20454067538472 * var_x49 - 2.7046577588354044 * var_x23 - 2.3940879178437715e-5 * var_x34 - var_x40 * var_x46 + 135.20454067538472 * var_x39 * var_x41 * var_x44 * var_x50 * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; + // Units: dimensionless; Initial value: 0.1411678 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; + // Units: dimensionless; Initial value: 0.07331396 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_SR_Ca_uptake_and_release__alpha_rel = 0.5; // nanoA_per_millimolar + const double var_SR_Ca_uptake_and_release__alpha_up = 0.080000000000000002; // nanoA + const double var_SR_Ca_uptake_and_release__beta_up = 0.071999999999999995; // nanoA + const double var_SR_Ca_uptake_and_release__i_rel = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel * var_SR_Ca_uptake_and_release__alpha_rel / pow((0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2), 2); // nanoA + const double var_SR_Ca_uptake_and_release__k_SRCa = 22; // millimolar + const double var_SR_Ca_uptake_and_release__k_cyca = 5.0000000000000002e-5; // millimolar + const double var_SR_Ca_uptake_and_release__k_xcs = 0.90000000000000002; // dimensionless + const double var_SR_Ca_uptake_and_release__K1 = var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs / var_SR_Ca_uptake_and_release__k_SRCa; // dimensionless + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_SR_Ca_uptake_and_release__K2 = var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 + var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs + var_SR_Ca_uptake_and_release__k_cyca + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // millimolar + const double var_SR_Ca_uptake_and_release__i_up = (var_SR_Ca_uptake_and_release__alpha_up * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 * var_SR_Ca_uptake_and_release__beta_up) / var_SR_Ca_uptake_and_release__K2; // nanoA + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_intracellular_concentrations_and_buffer_equations__phi_C = -307 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__F_C = 0.089999999999999997 * var_intracellular_concentrations_and_buffer_equations__phi_C; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TC = -252 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 50500 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__F_TC = 0.031 * var_intracellular_concentrations_and_buffer_equations__phi_TC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -4.25 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__F_TMgC = 0.062 * var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_B = var_intracellular_concentrations_and_buffer_equations__F_C + var_intracellular_concentrations_and_buffer_equations__F_TC + var_intracellular_concentrations_and_buffer_equations__F_TMgC; // millimolar_per_second + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv = -var_intracellular_concentrations_and_buffer_equations__phi_B + 0.5 * (-var_L_type_Ca_channel__i_Ca_L - var_SR_Ca_uptake_and_release__i_up - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_linear_background_current__i_B_Ca + 2 * var_sodium_calcium_pump__i_NaCa + var_SR_Ca_uptake_and_release__i_rel) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; + // Units: dimensionless; Initial value: 0.1411678 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; + // Units: dimensionless; Initial value: 0.07331396 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + + + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x53 = 0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x54 = 1 / var_x53; + const double var_x55 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x56 = pow(var_x53, (-2)); + const double var_x59 = var_x16 * var_x9; + const double var_x60 = pow(var_x13, (-2)); + const double var_x61 = var_x19 - var_x17; + const double var_x62 = var_x60 * var_x61; + const double var_x100 = 9.5000000000000005e-5 + 2.0454545454545457e-6 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x101 = 1 / var_x100; + const double var_x102 = pow(var_x100, (-2)); + const double var_x103 = 0.080000000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - 1.4727272727272728e-7 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up; + const double var_x104 = 7.9543493648916639e-12 * var_x62; + const double var_x105 = 7.9543493648916641e-8 * var_x14; + + partialF = -21.173500000000001 + 11.609999999999999 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 1.5654999999999999 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 7.9980000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 7.9980000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop - 9.1430401954624137e-5 * var_x54 - 0.00025494709502857897 * var_x101 - 1.5494105166262771e-6 * var_x55 - var_x104 * var_x9 - var_x105 * var_x59 + 9.1430401954624137e-5 * var_x56 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + 0.0031868386878572369 * var_x102 * var_x103; + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + + + // Mathematics + const double var_sodium_current_m_gate__alpha_m = -824 * (51.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_m_gate__beta_m = 32960 * exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_m_gate__m_infinity = var_sodium_current_m_gate__alpha_m / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // dimensionless + const double var_sodium_current_m_gate__tau_m = 1.5e-5 + 1 / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // second + const double var_sodium_current_m_gate__m_orig_deriv = (-var_chaste_interface__sodium_current_m_gate__m + var_sodium_current_m_gate__m_infinity) / var_sodium_current_m_gate__tau_m; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_m_gate__m = 0.001 * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_m_gate__m; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x116 = exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V); + const double var_x117 = 51.899999999999999 + var_chaste_interface__membrane__V; + const double var_x118 = -1 + var_x116; + const double var_x119 = 1 / var_x118; + const double var_x120 = 824 * var_x119; + const double var_x121 = var_x117 * var_x120; + const double var_x122 = 1 / (-var_x121 + 32960 * var_x116); + const double var_x126 = 1.5e-5 + 1 * var_x122; + const double var_x127 = 0.001 / var_x126; + + partialF = -var_x127; + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + + + // Mathematics + const double var_sodium_current_h_gate__alpha_h1 = 165 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_h_gate__h1_infinity = var_sodium_current_h_gate__alpha_h1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // dimensionless + const double var_sodium_current_h_gate__tau_h1 = 1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // second + const double var_sodium_current_h_gate__h1_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h1 + var_sodium_current_h_gate__h1_infinity) / var_sodium_current_h_gate__tau_h1; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h_gate__h1 = 0.001 * var_sodium_current_h_gate__h1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_h_gate__h1; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x128 = exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); + const double var_x129 = 1 / (1 + 320 * var_x128); + + partialF = -0.16500000000000001 * var_x128 - 12.359999999999999 * var_x129; + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + + + // Mathematics + const double var_sodium_current_h_gate__alpha_h1 = 165 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_h_gate__h1_infinity = var_sodium_current_h_gate__alpha_h1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // dimensionless + const double var_sodium_current_h_gate__h2_infinity = var_sodium_current_h_gate__h1_infinity; // dimensionless + const double var_sodium_current_h_gate__tau_h1 = 1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // second + const double var_sodium_current_h_gate__tau_h2 = 20 * var_sodium_current_h_gate__tau_h1; // second + const double var_sodium_current_h_gate__h2_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h2 + var_sodium_current_h_gate__h2_infinity) / var_sodium_current_h_gate__tau_h2; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h_gate__h2 = 0.001 * var_sodium_current_h_gate__h2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_h_gate__h2; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x128 = exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); + const double var_x129 = 1 / (1 + 320 * var_x128); + + partialF = -0.61799999999999999 * var_x129 - 0.0082500000000000004 * var_x128; + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + + + // Mathematics + const double var_L_type_Ca_channel_d_gate__alpha_d_L = -28.390000000000001 * (35 + var_chaste_interface__membrane__V) / (-1 + exp(-14 - 0.40000000000000002 * var_chaste_interface__membrane__V)) - 84.900000000000006 * var_chaste_interface__membrane__V / (-1 + exp(-0.20799999999999999 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__beta_d_L = 11.43 * (-5 + var_chaste_interface__membrane__V) / (-1 + exp(-2 + 0.40000000000000002 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d_L = 1 / (var_L_type_Ca_channel_d_gate__alpha_d_L + var_L_type_Ca_channel_d_gate__beta_d_L); // second + const double var_L_type_Ca_channel_d_gate__d_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_d_gate__d_L + var_L_type_Ca_channel_d_gate__d_L_infinity) / var_L_type_Ca_channel_d_gate__tau_d_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L = 0.001 * var_L_type_Ca_channel_d_gate__d_L_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x137 = exp(-14 - 0.40000000000000002 * var_chaste_interface__membrane__V); + const double var_x138 = -1 + var_x137; + const double var_x139 = 1 / var_x138; + const double var_x141 = exp(-0.20799999999999999 * var_chaste_interface__membrane__V); + const double var_x142 = -1 + var_x141; + const double var_x143 = 1 / var_x142; + const double var_x145 = exp(-2 + 0.40000000000000002 * var_chaste_interface__membrane__V); + const double var_x146 = -1 + var_x145; + const double var_x147 = 1 / var_x146; + const double var_x148 = 35 + var_chaste_interface__membrane__V; + const double var_x149 = -5 + var_chaste_interface__membrane__V; + + partialF = 0.028390000000000002 * var_x139 * var_x148 + 0.084900000000000003 * var_x143 * var_chaste_interface__membrane__V - 0.011429999999999999 * var_x147 * var_x149; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + + + // Mathematics + const double var_L_type_Ca_channel_f_gate__alpha_f_L = 3.75 * (28 + var_chaste_interface__membrane__V) / (-1 + exp(7 + 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__beta_f_L = 30 / (1 + exp(-7 - 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__f_L_infinity = 1 / (1 + exp(6 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f_L = 1 / (var_L_type_Ca_channel_f_gate__alpha_f_L + var_L_type_Ca_channel_f_gate__beta_f_L); // second + const double var_L_type_Ca_channel_f_gate__f_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_f_gate__f_L + var_L_type_Ca_channel_f_gate__f_L_infinity) / var_L_type_Ca_channel_f_gate__tau_f_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L = 0.001 * var_L_type_Ca_channel_f_gate__f_L_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x152 = 7 + 0.25 * var_chaste_interface__membrane__V; + const double var_x153 = exp(var_x152); + const double var_x154 = -1 + var_x153; + const double var_x155 = 1 / var_x154; + const double var_x157 = exp(-var_x152); + const double var_x158 = 1 + var_x157; + const double var_x159 = 28 + var_chaste_interface__membrane__V; + const double var_x160 = 1 / var_x158; + + partialF = -0.029999999999999999 * var_x160 - 0.0037499999999999999 * var_x155 * var_x159; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + + + // Mathematics + const double var_T_type_Ca_channel_d_gate__alpha_d_T = 1068 * exp(0.87666666666666671 + 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__beta_d_T = 1068 * exp(-0.87666666666666671 - 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__d_T_infinity = 1 / (1 + exp(-4.3833333333333337 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_T_type_Ca_channel_d_gate__tau_d_T = 1 / (var_T_type_Ca_channel_d_gate__alpha_d_T + var_T_type_Ca_channel_d_gate__beta_d_T); // second + const double var_T_type_Ca_channel_d_gate__d_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_d_gate__d_T + var_T_type_Ca_channel_d_gate__d_T_infinity) / var_T_type_Ca_channel_d_gate__tau_d_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T = 0.001 * var_T_type_Ca_channel_d_gate__d_T_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x163 = 0.87666666666666671 + 0.033333333333333333 * var_chaste_interface__membrane__V; + const double var_x164 = exp(-var_x163); + const double var_x165 = exp(var_x163); + + partialF = -1.0680000000000001 * var_x164 - 1.0680000000000001 * var_x165; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + + + // Mathematics + const double var_T_type_Ca_channel_f_gate__alpha_f_T = 15.300000000000001 * exp(-0.74069627851140463 - 0.012004801920768308 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__beta_f_T = 15 * exp(4.0117035110533159 + 0.065019505851755519 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__f_T_infinity = 1 / (1 + exp(11.017857142857144 + 0.17857142857142858 * var_chaste_interface__membrane__V)); // dimensionless + const double var_T_type_Ca_channel_f_gate__tau_f_T = 1 / (var_T_type_Ca_channel_f_gate__alpha_f_T + var_T_type_Ca_channel_f_gate__beta_f_T); // second + const double var_T_type_Ca_channel_f_gate__f_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_f_gate__f_T + var_T_type_Ca_channel_f_gate__f_T_infinity) / var_T_type_Ca_channel_f_gate__tau_f_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T = 0.001 * var_T_type_Ca_channel_f_gate__f_T_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x168 = exp(-0.74069627851140463 - 0.012004801920768308 * var_chaste_interface__membrane__V); + const double var_x169 = exp(4.0117035110533159 + 0.065019505851755519 * var_chaste_interface__membrane__V); + + partialF = -0.015300000000000001 * var_x168 - 0.014999999999999999 * var_x169; + } + else + { + const double y_save = rY[8]; + rY[8] += delta; + const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[8])/delta; + rY[8] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + + + // Mathematics + const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity = 1 / (1 + exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a = 1 / (17 * exp(0.039800000000000002 * var_chaste_interface__membrane__V) + 2.1099999999999999 * exp(-0.050999999999999997 * var_chaste_interface__membrane__V)); // second + const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv = (-var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a + var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity) / var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a = 0.001 * var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x172 = exp(-0.050999999999999997 * var_chaste_interface__membrane__V); + const double var_x173 = exp(0.039800000000000002 * var_chaste_interface__membrane__V); + + partialF = -0.0021099999999999999 * var_x172 - 0.017000000000000001 * var_x173; + } + else + { + const double y_save = rY[9]; + rY[9] += delta; + const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[9])/delta; + rY[9] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + + + // Mathematics + const double var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i = 100 * exp(-0.0183 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i = 656 * exp(0.0094199999999999996 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv = (1 - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i) * var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i * var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i = 0.001 * var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x174 = exp(-0.0183 * var_chaste_interface__membrane__V); + const double var_x175 = exp(0.0094199999999999996 * var_chaste_interface__membrane__V); + + partialF = -0.65600000000000003 * var_x175 - 0.10000000000000001 * var_x174; + } + else + { + const double y_save = rY[10]; + rY[10] += delta; + const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[10])/delta; + rY[10] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + + + // Mathematics + const double var_hyperpolarisation_activated_current_y_gate__tau_y = 1 / (1.6483000000000001 * exp(-2.2219482120838472 - 0.041101520756267988 * var_chaste_interface__membrane__V) + 14.01055 / (0.69999999999999996 + exp(-10.909090909090908 - 0.18181818181818182 * var_chaste_interface__membrane__V))); // second + const double var_hyperpolarisation_activated_current_y_gate__y_infinity = 1 / (1 + exp(8.0222222222222221 + 0.1111111111111111 * var_chaste_interface__membrane__V)); // dimensionless + const double var_hyperpolarisation_activated_current_y_gate__y_orig_deriv = (-var_chaste_interface__hyperpolarisation_activated_current_y_gate__y + var_hyperpolarisation_activated_current_y_gate__y_infinity) / var_hyperpolarisation_activated_current_y_gate__tau_y; // 1 / second + const double d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y = 0.001 * var_hyperpolarisation_activated_current_y_gate__y_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x178 = exp(-2.2219482120838472 - 0.041101520756267988 * var_chaste_interface__membrane__V); + const double var_x179 = exp(-10.909090909090908 - 0.18181818181818182 * var_chaste_interface__membrane__V); + const double var_x180 = 0.69999999999999996 + var_x179; + const double var_x181 = 1 / var_x180; + + partialF = -0.0016483000000000001 * var_x178 - 0.01401055 * var_x181; + } + else + { + const double y_save = rY[11]; + rY[11] += delta; + const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[11])/delta; + rY[11] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv = (-var_hyperpolarisation_activated_current__i_f_Na - var_linear_background_current__i_B_Na - var_sodium_current__i_Na - 3 * var_sodium_calcium_pump__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x27 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); + const double var_x28 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; + const double var_x29 = pow(var_x28, (-2)); + const double var_x30 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); + const double var_x31 = 1 + 0.18315018315018314 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x32 = pow(var_x31, (-3)); + const double var_x35 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x36 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x37 = var_x36 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x38 = exp(var_x35 - 1 * log(var_x37)); + const double var_x41 = exp(var_x35); + const double var_x42 = -1 + var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x45 = var_x43 * var_x44 * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; + const double var_x47 = var_x45 * var_chaste_interface__membrane__V; + const double var_x48 = var_x38 * var_x47; + const double var_x60 = pow(var_x13, (-2)); + const double var_x61 = var_x19 - var_x17; + const double var_x80 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 2); + const double var_x81 = var_x80 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x82 = var_x18 * var_x81; + const double var_x83 = 1 / (1.5 + var_x27); + const double var_x84 = var_x29 * var_x30 * var_x83; + const double var_x85 = var_x32 * var_x80 * var_x84; + const double var_x86 = pow(var_x31, (-4)); + const double var_x189 = 7.1589144284024978e-7 * var_x14; + const double var_x190 = 23.020586507479816 * var_x48; + + partialF = -0.00012359906637920097 * var_x85 - 2.7242382709912566e-5 * var_x36 - var_x189 * var_x82 - var_x190 * var_x37 + 7.158914428402498e-11 * var_x60 * var_x61 * var_x80 * var_chaste_interface__cleft_space_equations__Ca_c + 2.2637191644542304e-5 * var_x11 * var_x29 * var_x30 * var_x83 * var_x86; + } + else + { + const double y_save = rY[12]; + rY[12] += delta; + const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[12])/delta; + rY[12] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv = (-var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f_K - var_linear_background_current__i_B_K + 2 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + + + const double var_x22 = mParameters[2] * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; + const double var_x23 = var_x22 * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a; + const double var_x72 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i; + const double var_x194 = 0.46050826103455306 * var_x23; + + partialF = -1.1816383500424576e-5 * var_x72 - var_x194 * var_x72; + } + else + { + const double y_save = rY[13]; + rY[13] += delta; + const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[13])/delta; + rY[13] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; + // Units: dimensionless; Initial value: 0.1411678 + + + // Mathematics + const double var_intracellular_concentrations_and_buffer_equations__phi_C = -307 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_C; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + const double var_x196 = 129 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + + partialF = -0.307 - var_x196; + } + else + { + const double y_save = rY[14]; + rY[14] += delta; + const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[14])/delta; + rY[14] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; + // Units: dimensionless; Initial value: 0.07331396 + + + // Mathematics + const double var_intracellular_concentrations_and_buffer_equations__phi_TC = -252 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 50500 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TC; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + + partialF = -0.252 - 50.5 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + } + else + { + const double y_save = rY[15]; + rY[15] += delta; + const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[15])/delta; + rY[15] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + + + // Mathematics + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -4.25 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + const double var_x196 = 129 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + + partialF = -0.0042500000000000003 - var_x196; + } + else + { + const double y_save = rY[16]; + rY[16] += delta; + const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[16])/delta; + rY[16] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + + + // Mathematics + const double var_intracellular_concentrations_and_buffer_equations__Mg_i = 2.5; // millimolar + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgM = -429 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop + 1290 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_intracellular_concentrations_and_buffer_equations__Mg_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgM; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -3.6539999999999999; + } + else + { + const double y_save = rY[17]; + rY[17] += delta; + const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[17])/delta; + rY[17] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_cleft_space_equations__Na_b = 140; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = 0.01; // second + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_cleft_space_equations__Na_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Na_c + var_cleft_space_equations__Na_b) / var_cleft_space_equations__tau_p + (3 * var_sodium_calcium_pump__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_hyperpolarisation_activated_current__i_f_Na + var_linear_background_current__i_B_Na + var_sodium_current__i_Na) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__Na_c = 0.001 * var_cleft_space_equations__Na_c_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_cleft_space_equations__Na_c; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + + + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x35 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x36 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x37 = var_x36 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x38 = exp(var_x35 - 1 * log(var_x37)); + const double var_x39 = -1 + var_x38; + const double var_x41 = exp(var_x35); + const double var_x42 = -1 + var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x45 = var_x43 * var_x44 * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; + const double var_x47 = var_x45 * var_chaste_interface__membrane__V; + const double var_x48 = var_x38 * var_x47; + const double var_x60 = pow(var_x13, (-2)); + const double var_x61 = var_x19 - var_x17; + const double var_x62 = var_x60 * var_x61; + const double var_x89 = 1 / var_chaste_interface__cleft_space_equations__Na_c; + const double var_x90 = pow(var_chaste_interface__cleft_space_equations__Na_c, 2) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x91 = var_x16 * var_x90; + const double var_x202 = 2.447717065593501e-6 * var_x14; + const double var_x203 = 2.4477170655935014e-10 * var_x62; + const double var_x204 = 78.710093573368496 * var_x48; + + partialF = -0.099999999999999992 - var_x204 - 9.3144911471392233e-5 * var_x89 - var_x202 * var_x91 - var_x203 * var_x90 + 78.710093573368496 * var_x39 * var_x43 * var_x44 * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; + } + else + { + const double y_save = rY[18]; + rY[18] += delta; + const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[18])/delta; + rY[18] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__Ca_b = 2; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = 0.01; // second + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_cleft_space_equations__Ca_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Ca_c + var_cleft_space_equations__Ca_b) / var_cleft_space_equations__tau_p + 0.5 * (-2 * var_sodium_calcium_pump__i_NaCa + var_L_type_Ca_channel__i_Ca_L + var_T_type_Ca_channel__i_Ca_T + var_calcium_pump_current__i_Ca_P + var_linear_background_current__i_B_Ca) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__Ca_c = 0.001 * var_cleft_space_equations__Ca_c_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_cleft_space_equations__Ca_c; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + + + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x60 = pow(var_x13, (-2)); + const double var_x61 = var_x19 - var_x17; + const double var_x92 = 1 / var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x93 = var_x11 * var_x18; + const double var_x205 = 2.7196856284372236e-7 * var_x14; + + partialF = -0.099999999999999992 - 5.2976168399354324e-6 * var_x92 - var_x205 * var_x93 + 2.7196856284372237e-11 * var_x11 * var_x60 * var_x61; + } + else + { + const double y_save = rY[19]; + rY[19] += delta; + const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[19])/delta; + rY[19] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = 0.01; // second + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_cleft_space_equations__K_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__K_c + var_cleft_space_equations__K_b) / var_cleft_space_equations__tau_p + (-2 * var_sodium_potassium_pump__i_NaK + var_delayed_rectifying_potassium_current__i_K + var_hyperpolarisation_activated_current__i_f_K + var_linear_background_current__i_B_K) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__K_c = 0.001 * var_cleft_space_equations__K_c_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_cleft_space_equations__K_c; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x22 = mParameters[2] * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; + const double var_x23 = var_x22 * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a; + const double var_x27 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); + const double var_x28 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; + const double var_x29 = pow(var_x28, (-2)); + const double var_x30 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); + const double var_x31 = 1 + 0.18315018315018314 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x32 = pow(var_x31, (-3)); + const double var_x83 = 1 / (1.5 + var_x27); + const double var_x94 = 1 / var_chaste_interface__cleft_space_equations__K_c; + const double var_x95 = var_x11 * var_x32 * var_x83; + const double var_x97 = pow(var_x28, (-3)); + const double var_x99 = var_x29 * var_chaste_interface__cleft_space_equations__K_c; + const double var_x209 = 1.5745319219196114 * var_x23; + + partialF = -0.099999999999999992 - 4.040160535071638e-5 * var_x94 - var_x209 * var_x94 - 0.00018782211067427598 * var_x95 * var_x99 + 0.00018782211067427598 * var_x11 * var_x30 * var_x32 * var_x83 * var_x97; + } + else + { + const double y_save = rY[20]; + rY[20] += delta; + const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[20])/delta; + rY[20] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__alpha_up = 0.080000000000000002; // nanoA + const double var_SR_Ca_uptake_and_release__beta_up = 0.071999999999999995; // nanoA + const double var_SR_Ca_uptake_and_release__k_SRCa = 22; // millimolar + const double var_SR_Ca_uptake_and_release__k_cyca = 5.0000000000000002e-5; // millimolar + const double var_SR_Ca_uptake_and_release__k_xcs = 0.90000000000000002; // dimensionless + const double var_SR_Ca_uptake_and_release__K1 = var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs / var_SR_Ca_uptake_and_release__k_SRCa; // dimensionless + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_SR_Ca_uptake_and_release__K2 = var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 + var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs + var_SR_Ca_uptake_and_release__k_cyca + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // millimolar + const double var_SR_Ca_uptake_and_release__i_up = (var_SR_Ca_uptake_and_release__alpha_up * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 * var_SR_Ca_uptake_and_release__beta_up) / var_SR_Ca_uptake_and_release__K2; // nanoA + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_SR_Ca_uptake_and_release__V_up = 0.01166 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_SR_Ca_uptake_and_release__i_tr = 31.162355874104083 * (-var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel + var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) * var_SR_Ca_uptake_and_release__V_up * var_membrane__F; // nanoA + const double var_SR_Ca_uptake_and_release__Ca_up_orig_deriv = 0.5 * (-var_SR_Ca_uptake_and_release__i_tr + var_SR_Ca_uptake_and_release__i_up) / (var_SR_Ca_uptake_and_release__V_up * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up = 0.001 * var_SR_Ca_uptake_and_release__Ca_up_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + + + const double var_x100 = 9.5000000000000005e-5 + 2.0454545454545457e-6 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x101 = 1 / var_x100; + const double var_x102 = pow(var_x100, (-2)); + const double var_x103 = 0.080000000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - 1.4727272727272728e-7 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up; + const double var_x110 = var_x102 * var_x103; + + partialF = -0.015581177937052042 - 4.0251665946738841e-8 * var_x101 - 5.5905091592692838e-7 * var_x110; + } + else + { + const double y_save = rY[21]; + rY[21] += delta; + const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[21])/delta; + rY[21] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; + // Units: dimensionless; Initial value: 0.9528726 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__alpha_rel = 0.5; // nanoA_per_millimolar + const double var_SR_Ca_uptake_and_release__i_rel = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel * var_SR_Ca_uptake_and_release__alpha_rel / pow((0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2), 2); // nanoA + const double var_SR_Ca_uptake_and_release__phi_Calse = -641 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse + 770 * (1 - var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; // per_second + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_SR_Ca_uptake_and_release__V_rel = 0.0012960000000000001 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_SR_Ca_uptake_and_release__V_up = 0.01166 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_SR_Ca_uptake_and_release__i_tr = 31.162355874104083 * (-var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel + var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) * var_SR_Ca_uptake_and_release__V_up * var_membrane__F; // nanoA + const double var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv = -11.48 * var_SR_Ca_uptake_and_release__phi_Calse + 0.5 * (-var_SR_Ca_uptake_and_release__i_rel + var_SR_Ca_uptake_and_release__i_tr) / (var_SR_Ca_uptake_and_release__V_rel * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel = 0.001 * var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; + // Units: dimensionless; Initial value: 0.9528726 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + + + const double var_x111 = 0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2; + const double var_x112 = pow(var_x111, (-2)); + const double var_x113 = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2); + const double var_x114 = var_x112 * var_x113; + + partialF = -8.979782511378108 + 8.8396000000000008 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse - 1.2294902345128229 * var_x114; + } + else + { + const double y_save = rY[22]; + rY[22] += delta; + const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[22])/delta; + rY[22] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; + // Units: dimensionless; Initial value: 0.9528726 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__phi_Calse = -641 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse + 770 * (1 - var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; // per_second + const double var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv = var_SR_Ca_uptake_and_release__phi_Calse; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse = 0.001 * var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + + + + partialF = -0.64100000000000001 - 0.77000000000000002 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; + } + else + { + const double y_save = rY[23]; + rY[23] += delta; + const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[23])/delta; + rY[23] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__F1 = rY[24]; + // Units: dimensionless; Initial value: 0.1133251 + double var_chaste_interface__SR_Ca_uptake_and_release__F3 = rY[26]; + // Units: dimensionless; Initial value: 0.8859153 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar + const double var_SR_Ca_uptake_and_release__r_act = 240 * exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F1_orig_deriv = 0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 - var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1 = 0.001 * var_SR_Ca_uptake_and_release__F1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + const double var_x211 = exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V); + const double var_x213 = 0.0040000000000000001 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x214 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4); + const double var_x215 = pow(var_x213, (-4)); + const double var_x218 = 0.23999999999999999 * var_x214 * var_x215; + const double var_x219 = var_x218 + 0.23999999999999999 * var_x211; + + partialF = -var_x219; + } + else + { + const double y_save = rY[24]; + rY[24] += delta; + const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[24])/delta; + rY[24] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__F1 = rY[24]; + // Units: dimensionless; Initial value: 0.1133251 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar + const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__r_act = 240 * exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F2_orig_deriv = var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act - var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2 = 0.001 * var_SR_Ca_uptake_and_release__F2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + const double var_x213 = 0.0040000000000000001 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x214 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4); + const double var_x215 = pow(var_x213, (-4)); + const double var_x218 = 0.23999999999999999 * var_x214 * var_x215; + const double var_x221 = 0.040000000000000001 + var_x218; + + partialF = -var_x221; + } + else + { + const double y_save = rY[25]; + rY[25] += delta; + const double temp = EvaluateYDerivative25(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[25])/delta; + rY[25] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + double var_chaste_interface__SR_Ca_uptake_and_release__F3 = rY[26]; + // Units: dimensionless; Initial value: 0.8859153 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar + const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F3_orig_deriv = -0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 + var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3 = 0.001 * var_SR_Ca_uptake_and_release__F3_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -0.00095999999999999992; + } + else + { + const double y_save = rY[26]; + rY[26] += delta; + const double temp = EvaluateYDerivative26(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[26])/delta; + rY[26] = y_save; + } + return partialF; + } + + std::vector Dynamicdemir_model_1994FromCellMLGRL1::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / mParameters[1]; // uA_per_cm2 + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA + const double var_hyperpolarisation_activated_current__i_f_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_hyperpolarisation_activated_current__i_f / mParameters[1]; // uA_per_cm2 + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_delayed_rectifying_potassium_current__i_K_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifying_potassium_current__i_K / mParameters[1]; // uA_per_cm2 + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_current__i_Na_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / mParameters[1]; // uA_per_cm2 + + std::vector dqs(7); + dqs[0] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[1] = var_delayed_rectifying_potassium_current__i_K_converted; + dqs[2] = var_sodium_current__i_Na_converted; + dqs[3] = var_hyperpolarisation_activated_current__i_f_converted; + dqs[4] = var_hyperpolarisation_activated_current__i_f_K; + dqs[5] = var_hyperpolarisation_activated_current__i_f_Na; + dqs[6] = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "demir_model_1994"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-49.54105); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0003787018); + + // rY[2]: + this->mVariableNames.push_back("sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.250113); + + // rY[3]: + this->mVariableNames.push_back("sodium_current_h_gate__h1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001386897); + + // rY[4]: + this->mVariableNames.push_back("sodium_current_h_gate__h2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002065463); + + // rY[5]: + this->mVariableNames.push_back("L_type_Ca_channel_d_gate__d_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002572773); + + // rY[6]: + this->mVariableNames.push_back("L_type_Ca_channel_f_gate__f_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.98651); + + // rY[7]: + this->mVariableNames.push_back("T_type_Ca_channel_d_gate__d_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.02012114); + + // rY[8]: + this->mVariableNames.push_back("T_type_Ca_channel_f_gate__f_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.1945111); + + // rY[9]: + this->mVariableNames.push_back("delayed_rectifying_potassium_current_P_a_gate__P_a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.02302278); + + // rY[10]: + this->mVariableNames.push_back("delayed_rectifying_potassium_current_P_i_gate__P_i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.3777728); + + // rY[11]: + this->mVariableNames.push_back("hyperpolarisation_activated_current_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09227776); + + // rY[12]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.701621); + + // rY[13]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(140.7347); + + // rY[14]: + this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Ca_Calmod"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.1411678); + + // rY[15]: + this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Ca_Trop"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.07331396); + + // rY[16]: + this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7618549); + + // rY[17]: + this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.2097049); + + // rY[18]: + this->mVariableNames.push_back("extracellular_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(139.9988); + + // rY[19]: + this->mVariableNames.push_back("extracellular_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.00474); + + // rY[20]: + this->mVariableNames.push_back("extracellular_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(5.389014); + + // rY[21]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(16.95311); + + // rY[22]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__Ca_rel"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(16.85024); + + // rY[23]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__Ca_Calse"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9528726); + + // rY[24]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__F1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.1133251); + + // rY[25]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__F2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0007594214); + + // rY[26]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__F3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8859153); + + // mParameters[0]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[1]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF"); + + // mParameters[2]: + this->mParameterNames.push_back("membrane_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mul_per_second"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component_conductance"); + this->mParameterUnits.push_back("microS"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component"); + this->mDerivedQuantityUnits.push_back("nanoA"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component"); + this->mDerivedQuantityUnits.push_back("nanoA"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicdemir_model_1994FromCellMLGRL1) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicdemir_model_1994FromCellMLGRL1(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994--sympy_1_14.cpp new file mode 100644 index 00000000..a2e1d01f --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1/dynamic_demir_model_1994--sympy_1_14.cpp @@ -0,0 +1,2839 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: demir_model_1994 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenFirstOrder) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_demir_model_1994.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + double Dynamicdemir_model_1994FromCellMLGRL1::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamicdemir_model_1994FromCellMLGRL1::Dynamicdemir_model_1994FromCellMLGRL1(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 27, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + this->mParameters[0] = 0.021149999999999999; // (var_L_type_Ca_channel__g_Ca_L) [microS] + this->mParameters[1] = 5.5000000000000002e-5; // (var_membrane__Cm) [microF] + this->mParameters[2] = 0.0069300000000000004; // (var_delayed_rectifying_potassium_current__g_K_max) [microS] + this->mParameters[3] = 0.0034399999999999999; // (var_sodium_current__P_Na) [mul_per_second] + this->mParameters[4] = 0.0128821; // (var_hyperpolarisation_activated_current__g_f_K) [microS] + this->mParameters[5] = 0.0067478; // (var_hyperpolarisation_activated_current__g_f_Na) [microS] + } + + Dynamicdemir_model_1994FromCellMLGRL1::~Dynamicdemir_model_1994FromCellMLGRL1() + { + } + + + void Dynamicdemir_model_1994FromCellMLGRL1::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 27; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicdemir_model_1994FromCellMLGRL1::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / mParameters[1]; // uA_per_cm2 + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA + const double var_hyperpolarisation_activated_current__i_f_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_hyperpolarisation_activated_current__i_f / mParameters[1]; // uA_per_cm2 + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_delayed_rectifying_potassium_current__i_K_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifying_potassium_current__i_K / mParameters[1]; // uA_per_cm2 + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_linear_background_current__i_B = var_linear_background_current__i_B_Ca + var_linear_background_current__i_B_K + var_linear_background_current__i_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_current__i_Na_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / mParameters[1]; // uA_per_cm2 + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_chaste_interface__i_ionic = ((var_L_type_Ca_channel__i_Ca_L_converted + var_delayed_rectifying_potassium_current__i_K_converted + var_hyperpolarisation_activated_current__i_f_converted + var_sodium_current__i_Na_converted) * mParameters[1] + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_calcium_pump_current__i_Ca_P + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_linear_background_current__i_B + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_pump__i_NaCa + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK) / mParameters[1]; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicdemir_model_1994FromCellMLGRL1::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_linear_background_current__i_B = var_linear_background_current__i_B_Ca + var_linear_background_current__i_B_K + var_linear_background_current__i_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_membrane__V_orig_deriv = (-var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f - var_linear_background_current__i_B - var_sodium_calcium_pump__i_NaCa - var_sodium_current__i_Na - var_sodium_potassium_pump__i_NaK) / mParameters[1]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + double evalF = d_dt_chaste_interface_var_membrane__V; + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Dynamicdemir_model_1994FromCellMLGRL1::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const double delta = 1e-8; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; + // Units: dimensionless; Initial value: 0.1411678 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; + // Units: dimensionless; Initial value: 0.07331396 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; + // Units: dimensionless; Initial value: 0.9528726 + double var_chaste_interface__SR_Ca_uptake_and_release__F1 = rY[24]; + // Units: dimensionless; Initial value: 0.1133251 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + double var_chaste_interface__SR_Ca_uptake_and_release__F3 = rY[26]; + // Units: dimensionless; Initial value: 0.8859153 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_SR_Ca_uptake_and_release__alpha_rel = 0.5; // nanoA_per_millimolar + const double var_SR_Ca_uptake_and_release__alpha_up = 0.080000000000000002; // nanoA + const double var_SR_Ca_uptake_and_release__beta_up = 0.071999999999999995; // nanoA + const double var_SR_Ca_uptake_and_release__i_rel = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel * var_SR_Ca_uptake_and_release__alpha_rel / pow((0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2), 2); // nanoA + const double var_SR_Ca_uptake_and_release__k_SRCa = 22; // millimolar + const double var_SR_Ca_uptake_and_release__k_cyca = 5.0000000000000002e-5; // millimolar + const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar + const double var_SR_Ca_uptake_and_release__k_xcs = 0.90000000000000002; // dimensionless + const double var_SR_Ca_uptake_and_release__K1 = var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs / var_SR_Ca_uptake_and_release__k_SRCa; // dimensionless + const double var_SR_Ca_uptake_and_release__phi_Calse = -641 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse + 770 * (1 - var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; // per_second + const double var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv = var_SR_Ca_uptake_and_release__phi_Calse; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse = 0.001 * var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv; // 1 / millisecond + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__Ca_b = 2; // millimolar + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_cleft_space_equations__Na_b = 140; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = 0.01; // second + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_SR_Ca_uptake_and_release__K2 = var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 + var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs + var_SR_Ca_uptake_and_release__k_cyca + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // millimolar + const double var_SR_Ca_uptake_and_release__i_up = (var_SR_Ca_uptake_and_release__alpha_up * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 * var_SR_Ca_uptake_and_release__beta_up) / var_SR_Ca_uptake_and_release__K2; // nanoA + const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F3_orig_deriv = -0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 + var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3 = 0.001 * var_SR_Ca_uptake_and_release__F3_orig_deriv; // 1 / millisecond + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__Mg_i = 2.5; // millimolar + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_SR_Ca_uptake_and_release__V_rel = 0.0012960000000000001 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_SR_Ca_uptake_and_release__V_up = 0.01166 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_intracellular_concentrations_and_buffer_equations__phi_C = -307 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_C; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv; // 1 / millisecond + const double var_intracellular_concentrations_and_buffer_equations__F_C = 0.089999999999999997 * var_intracellular_concentrations_and_buffer_equations__phi_C; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TC = -252 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 50500 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TC; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv; // 1 / millisecond + const double var_intracellular_concentrations_and_buffer_equations__F_TC = 0.031 * var_intracellular_concentrations_and_buffer_equations__phi_TC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -4.25 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv; // 1 / millisecond + const double var_intracellular_concentrations_and_buffer_equations__F_TMgC = 0.062 * var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_B = var_intracellular_concentrations_and_buffer_equations__F_C + var_intracellular_concentrations_and_buffer_equations__F_TC + var_intracellular_concentrations_and_buffer_equations__F_TMgC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgM = -429 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop + 1290 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_intracellular_concentrations_and_buffer_equations__Mg_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgM; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv; // 1 / millisecond + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_SR_Ca_uptake_and_release__i_tr = 31.162355874104083 * (-var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel + var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) * var_SR_Ca_uptake_and_release__V_up * var_membrane__F; // nanoA + const double var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv = -11.48 * var_SR_Ca_uptake_and_release__phi_Calse + 0.5 * (-var_SR_Ca_uptake_and_release__i_rel + var_SR_Ca_uptake_and_release__i_tr) / (var_SR_Ca_uptake_and_release__V_rel * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel = 0.001 * var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv; // millimolar / millisecond + const double var_SR_Ca_uptake_and_release__Ca_up_orig_deriv = 0.5 * (-var_SR_Ca_uptake_and_release__i_tr + var_SR_Ca_uptake_and_release__i_up) / (var_SR_Ca_uptake_and_release__V_up * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up = 0.001 * var_SR_Ca_uptake_and_release__Ca_up_orig_deriv; // millimolar / millisecond + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__alpha_d_L = -28.390000000000001 * (35 + var_chaste_interface__membrane__V) / (-1 + exp(-14 - 0.40000000000000002 * var_chaste_interface__membrane__V)) - 84.900000000000006 * var_chaste_interface__membrane__V / (-1 + exp(-0.20799999999999999 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__beta_d_L = 11.43 * (-5 + var_chaste_interface__membrane__V) / (-1 + exp(-2 + 0.40000000000000002 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_L_type_Ca_channel_d_gate__tau_d_L = 1 / (var_L_type_Ca_channel_d_gate__alpha_d_L + var_L_type_Ca_channel_d_gate__beta_d_L); // second + const double var_L_type_Ca_channel_d_gate__d_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_d_gate__d_L + var_L_type_Ca_channel_d_gate__d_L_infinity) / var_L_type_Ca_channel_d_gate__tau_d_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L = 0.001 * var_L_type_Ca_channel_d_gate__d_L_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel_f_gate__alpha_f_L = 3.75 * (28 + var_chaste_interface__membrane__V) / (-1 + exp(7 + 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__beta_f_L = 30 / (1 + exp(-7 - 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__f_L_infinity = 1 / (1 + exp(6 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f_L = 1 / (var_L_type_Ca_channel_f_gate__alpha_f_L + var_L_type_Ca_channel_f_gate__beta_f_L); // second + const double var_L_type_Ca_channel_f_gate__f_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_f_gate__f_L + var_L_type_Ca_channel_f_gate__f_L_infinity) / var_L_type_Ca_channel_f_gate__tau_f_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L = 0.001 * var_L_type_Ca_channel_f_gate__f_L_orig_deriv; // 1 / millisecond + const double var_SR_Ca_uptake_and_release__r_act = 240 * exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F1_orig_deriv = 0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 - var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1 = 0.001 * var_SR_Ca_uptake_and_release__F1_orig_deriv; // 1 / millisecond + const double var_SR_Ca_uptake_and_release__F2_orig_deriv = var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act - var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2 = 0.001 * var_SR_Ca_uptake_and_release__F2_orig_deriv; // 1 / millisecond + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_T_type_Ca_channel_d_gate__alpha_d_T = 1068 * exp(0.87666666666666671 + 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__beta_d_T = 1068 * exp(-0.87666666666666671 - 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__d_T_infinity = 1 / (1 + exp(-4.3833333333333337 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_T_type_Ca_channel_d_gate__tau_d_T = 1 / (var_T_type_Ca_channel_d_gate__alpha_d_T + var_T_type_Ca_channel_d_gate__beta_d_T); // second + const double var_T_type_Ca_channel_d_gate__d_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_d_gate__d_T + var_T_type_Ca_channel_d_gate__d_T_infinity) / var_T_type_Ca_channel_d_gate__tau_d_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T = 0.001 * var_T_type_Ca_channel_d_gate__d_T_orig_deriv; // 1 / millisecond + const double var_T_type_Ca_channel_f_gate__alpha_f_T = 15.300000000000001 * exp(-0.74069627851140463 - 0.012004801920768308 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__beta_f_T = 15 * exp(4.0117035110533159 + 0.065019505851755519 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__f_T_infinity = 1 / (1 + exp(11.017857142857144 + 0.17857142857142858 * var_chaste_interface__membrane__V)); // dimensionless + const double var_T_type_Ca_channel_f_gate__tau_f_T = 1 / (var_T_type_Ca_channel_f_gate__alpha_f_T + var_T_type_Ca_channel_f_gate__beta_f_T); // second + const double var_T_type_Ca_channel_f_gate__f_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_f_gate__f_T + var_T_type_Ca_channel_f_gate__f_T_infinity) / var_T_type_Ca_channel_f_gate__tau_f_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T = 0.001 * var_T_type_Ca_channel_f_gate__f_T_orig_deriv; // 1 / millisecond + const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity = 1 / (1 + exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a = 1 / (17 * exp(0.039800000000000002 * var_chaste_interface__membrane__V) + 2.1099999999999999 * exp(-0.050999999999999997 * var_chaste_interface__membrane__V)); // second + const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv = (-var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a + var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity) / var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a = 0.001 * var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv; // 1 / millisecond + const double var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i = 100 * exp(-0.0183 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i = 656 * exp(0.0094199999999999996 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv = (1 - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i) * var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i * var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i = 0.001 * var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv; // 1 / millisecond + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current_y_gate__tau_y = 1 / (1.6483000000000001 * exp(-2.2219482120838472 - 0.041101520756267988 * var_chaste_interface__membrane__V) + 14.01055 / (0.69999999999999996 + exp(-10.909090909090908 - 0.18181818181818182 * var_chaste_interface__membrane__V))); // second + const double var_hyperpolarisation_activated_current_y_gate__y_infinity = 1 / (1 + exp(8.0222222222222221 + 0.1111111111111111 * var_chaste_interface__membrane__V)); // dimensionless + const double var_hyperpolarisation_activated_current_y_gate__y_orig_deriv = (-var_chaste_interface__hyperpolarisation_activated_current_y_gate__y + var_hyperpolarisation_activated_current_y_gate__y_infinity) / var_hyperpolarisation_activated_current_y_gate__tau_y; // 1 / second + const double d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y = 0.001 * var_hyperpolarisation_activated_current_y_gate__y_orig_deriv; // 1 / millisecond + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_cleft_space_equations__Ca_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Ca_c + var_cleft_space_equations__Ca_b) / var_cleft_space_equations__tau_p + 0.5 * (-2 * var_sodium_calcium_pump__i_NaCa + var_L_type_Ca_channel__i_Ca_L + var_T_type_Ca_channel__i_Ca_T + var_calcium_pump_current__i_Ca_P + var_linear_background_current__i_B_Ca) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__Ca_c = 0.001 * var_cleft_space_equations__Ca_c_orig_deriv; // millimolar / millisecond + const double var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv = -var_intracellular_concentrations_and_buffer_equations__phi_B + 0.5 * (-var_L_type_Ca_channel__i_Ca_L - var_SR_Ca_uptake_and_release__i_up - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_linear_background_current__i_B_Ca + 2 * var_sodium_calcium_pump__i_NaCa + var_SR_Ca_uptake_and_release__i_rel) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv; // millimolar / millisecond + const double var_sodium_current_h_gate__alpha_h1 = 165 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_h_gate__h1_infinity = var_sodium_current_h_gate__alpha_h1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // dimensionless + const double var_sodium_current_h_gate__h2_infinity = var_sodium_current_h_gate__h1_infinity; // dimensionless + const double var_sodium_current_h_gate__tau_h1 = 1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // second + const double var_sodium_current_h_gate__h1_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h1 + var_sodium_current_h_gate__h1_infinity) / var_sodium_current_h_gate__tau_h1; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h_gate__h1 = 0.001 * var_sodium_current_h_gate__h1_orig_deriv; // 1 / millisecond + const double var_sodium_current_h_gate__tau_h2 = 20 * var_sodium_current_h_gate__tau_h1; // second + const double var_sodium_current_h_gate__h2_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h2 + var_sodium_current_h_gate__h2_infinity) / var_sodium_current_h_gate__tau_h2; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h_gate__h2 = 0.001 * var_sodium_current_h_gate__h2_orig_deriv; // 1 / millisecond + const double var_sodium_current_m_gate__alpha_m = -824 * (51.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_m_gate__beta_m = 32960 * exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_current_m_gate__m_infinity = var_sodium_current_m_gate__alpha_m / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // dimensionless + const double var_sodium_current_m_gate__tau_m = 1.5e-5 + 1 / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // second + const double var_sodium_current_m_gate__m_orig_deriv = (-var_chaste_interface__sodium_current_m_gate__m + var_sodium_current_m_gate__m_infinity) / var_sodium_current_m_gate__tau_m; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_m_gate__m = 0.001 * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_cleft_space_equations__K_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__K_c + var_cleft_space_equations__K_b) / var_cleft_space_equations__tau_p + (-2 * var_sodium_potassium_pump__i_NaK + var_delayed_rectifying_potassium_current__i_K + var_hyperpolarisation_activated_current__i_f_K + var_linear_background_current__i_B_K) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__K_c = 0.001 * var_cleft_space_equations__K_c_orig_deriv; // millimolar / millisecond + const double var_cleft_space_equations__Na_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Na_c + var_cleft_space_equations__Na_b) / var_cleft_space_equations__tau_p + (3 * var_sodium_calcium_pump__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_hyperpolarisation_activated_current__i_f_Na + var_linear_background_current__i_B_Na + var_sodium_current__i_Na) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__Na_c = 0.001 * var_cleft_space_equations__Na_c_orig_deriv; // millimolar / millisecond + const double var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv = (-var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f_K - var_linear_background_current__i_B_K + 2 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv; // millimolar / millisecond + const double var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv = (-var_hyperpolarisation_activated_current__i_f_Na - var_linear_background_current__i_B_Na - var_sodium_current__i_Na - 3 * var_sodium_calcium_pump__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv; // millimolar / millisecond + + mEvalF[1] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i; + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[2] = d_dt_chaste_interface_var_sodium_current_m_gate__m; + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[3] = d_dt_chaste_interface_var_sodium_current_h_gate__h1; + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[4] = d_dt_chaste_interface_var_sodium_current_h_gate__h2; + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[5] = d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L; + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[6] = d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L; + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[7] = d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T; + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[8] = d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T; + mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[9] = d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a; + mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[10] = d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i; + mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[11] = d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y; + mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[12] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i; + mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[13] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i; + mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[14] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod; + mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[15] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop; + mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[16] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop; + mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[17] = d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop; + mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[18] = d_dt_chaste_interface_var_cleft_space_equations__Na_c; + mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[19] = d_dt_chaste_interface_var_cleft_space_equations__Ca_c; + mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[20] = d_dt_chaste_interface_var_cleft_space_equations__K_c; + mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[21] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up; + mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[22] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel; + mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[23] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse; + mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[24] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1; + mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[25] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2; + mPartialF[25] = EvaluatePartialDerivative25(var_chaste_interface__environment__time_converted, rY, delta); + mEvalF[26] = d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3; + mPartialF[26] = EvaluatePartialDerivative26(var_chaste_interface__environment__time_converted, rY, delta); + + { + if (fabs(mPartialF[1]) < delta){ + rY[1] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i; + } + else + { + rY[1] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i/mPartialF[1])*(exp(mPartialF[1]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[2]) < delta){ + rY[2] += mDt*d_dt_chaste_interface_var_sodium_current_m_gate__m; + } + else + { + rY[2] += (d_dt_chaste_interface_var_sodium_current_m_gate__m/mPartialF[2])*(exp(mPartialF[2]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[3]) < delta){ + rY[3] += mDt*d_dt_chaste_interface_var_sodium_current_h_gate__h1; + } + else + { + rY[3] += (d_dt_chaste_interface_var_sodium_current_h_gate__h1/mPartialF[3])*(exp(mPartialF[3]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[4]) < delta){ + rY[4] += mDt*d_dt_chaste_interface_var_sodium_current_h_gate__h2; + } + else + { + rY[4] += (d_dt_chaste_interface_var_sodium_current_h_gate__h2/mPartialF[4])*(exp(mPartialF[4]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[5]) < delta){ + rY[5] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L; + } + else + { + rY[5] += (d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L/mPartialF[5])*(exp(mPartialF[5]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[6]) < delta){ + rY[6] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L; + } + else + { + rY[6] += (d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L/mPartialF[6])*(exp(mPartialF[6]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[7]) < delta){ + rY[7] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T; + } + else + { + rY[7] += (d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T/mPartialF[7])*(exp(mPartialF[7]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[8]) < delta){ + rY[8] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T; + } + else + { + rY[8] += (d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T/mPartialF[8])*(exp(mPartialF[8]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[9]) < delta){ + rY[9] += mDt*d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a; + } + else + { + rY[9] += (d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a/mPartialF[9])*(exp(mPartialF[9]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[10]) < delta){ + rY[10] += mDt*d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i; + } + else + { + rY[10] += (d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i/mPartialF[10])*(exp(mPartialF[10]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[11]) < delta){ + rY[11] += mDt*d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y; + } + else + { + rY[11] += (d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y/mPartialF[11])*(exp(mPartialF[11]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[12]) < delta){ + rY[12] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i; + } + else + { + rY[12] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i/mPartialF[12])*(exp(mPartialF[12]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[13]) < delta){ + rY[13] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i; + } + else + { + rY[13] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i/mPartialF[13])*(exp(mPartialF[13]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[14]) < delta){ + rY[14] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod; + } + else + { + rY[14] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod/mPartialF[14])*(exp(mPartialF[14]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[15]) < delta){ + rY[15] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop; + } + else + { + rY[15] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop/mPartialF[15])*(exp(mPartialF[15]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[16]) < delta){ + rY[16] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop; + } + else + { + rY[16] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop/mPartialF[16])*(exp(mPartialF[16]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[17]) < delta){ + rY[17] += mDt*d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop; + } + else + { + rY[17] += (d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop/mPartialF[17])*(exp(mPartialF[17]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[18]) < delta){ + rY[18] += mDt*d_dt_chaste_interface_var_cleft_space_equations__Na_c; + } + else + { + rY[18] += (d_dt_chaste_interface_var_cleft_space_equations__Na_c/mPartialF[18])*(exp(mPartialF[18]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[19]) < delta){ + rY[19] += mDt*d_dt_chaste_interface_var_cleft_space_equations__Ca_c; + } + else + { + rY[19] += (d_dt_chaste_interface_var_cleft_space_equations__Ca_c/mPartialF[19])*(exp(mPartialF[19]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[20]) < delta){ + rY[20] += mDt*d_dt_chaste_interface_var_cleft_space_equations__K_c; + } + else + { + rY[20] += (d_dt_chaste_interface_var_cleft_space_equations__K_c/mPartialF[20])*(exp(mPartialF[20]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[21]) < delta){ + rY[21] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up; + } + else + { + rY[21] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up/mPartialF[21])*(exp(mPartialF[21]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[22]) < delta){ + rY[22] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel; + } + else + { + rY[22] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel/mPartialF[22])*(exp(mPartialF[22]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[23]) < delta){ + rY[23] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse; + } + else + { + rY[23] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse/mPartialF[23])*(exp(mPartialF[23]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[24]) < delta){ + rY[24] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1; + } + else + { + rY[24] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1/mPartialF[24])*(exp(mPartialF[24]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[25]) < delta){ + rY[25] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2; + } + else + { + rY[25] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2/mPartialF[25])*(exp(mPartialF[25]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[26]) < delta){ + rY[26] += mDt*d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3; + } + else + { + rY[26] += (d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3/mPartialF[26])*(exp(mPartialF[26]*mDt)-1.0); + } + + } + + } + + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_linear_background_current__i_B = var_linear_background_current__i_B_Ca + var_linear_background_current__i_B_K + var_linear_background_current__i_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_membrane__V_orig_deriv = (-var_L_type_Ca_channel__i_Ca_L - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f - var_linear_background_current__i_B - var_sodium_calcium_pump__i_NaCa - var_sodium_current__i_Na - var_sodium_potassium_pump__i_NaK) / mParameters[1]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + return d_dt_chaste_interface_var_membrane__V; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + const double var_x0 = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2); + const double var_x1 = var_x0 * mParameters[4]; + const double var_x2 = var_x0 * mParameters[5]; + const double var_x3 = 0.16666666666666666 * var_chaste_interface__membrane__V; + const double var_x4 = exp(-2.3500000000000001 - var_x3); + const double var_x5 = 1 + var_x4; + const double var_x6 = 1 / var_x5; + const double var_x7 = (0.095000000000000001 * var_x6 + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; + const double var_x8 = var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x20 = 0.018714999999999999 * var_x17 + 0.018714999999999999 * var_x19; + const double var_x21 = var_x14 * var_x20; + const double var_x22 = mParameters[2] * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; + const double var_x23 = var_x22 * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a; + const double var_x24 = (-46.399999999999999 + var_chaste_interface__membrane__V) * mParameters[0]; + const double var_x25 = var_x4 / pow(var_x5, 2); + const double var_x26 = var_x24 * var_x25; + const double var_x27 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); + const double var_x28 = 5.46 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x29 = pow(var_x28, (-3)); + const double var_x30 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); + const double var_x31 = 1.5 + var_x30; + const double var_x32 = pow(var_x31, (-2)); + const double var_x33 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; + const double var_x34 = pow(var_x33, (-2)); + const double var_x35 = var_x11 * var_x34; + const double var_x36 = var_x27 * var_x29 * var_x30 * var_x32 * var_x35; + const double var_x37 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x38 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x39 = var_x38 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x40 = exp(var_x37 - 1 * log(var_x39)); + const double var_x41 = -1 + var_x40; + const double var_x42 = var_x41 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x43 = exp(var_x37); + const double var_x44 = -1 + var_x43; + const double var_x45 = 1 / var_x44; + const double var_x46 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x47 = var_x45 * var_x46 * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; + const double var_x48 = 3611.8217397063127 * var_x47; + const double var_x49 = var_x47 * var_chaste_interface__membrane__V; + const double var_x50 = var_x40 * var_x49; + const double var_x51 = var_x50 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x52 = pow(var_x44, (-2)); + const double var_x53 = 1 / mParameters[1]; + const double var_x54 = 0.001 * var_x53; + + partialF = var_x54 * (-0.00026580000000000001 - var_x1 - var_x2 - var_x7 - 0.02521 * var_x8 - 1.2480000000000001e-5 * var_x21 - 0.0087680000000000015 * var_x36 - 0.015833333333333335 * var_x26 - 135.20454067538472 * var_x51 - 2.7046577588354044 * var_x23 - var_x42 * var_x48 + 135.20454067538472 * var_x41 * var_x43 * var_x46 * var_x52 * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; + // Units: dimensionless; Initial value: 0.1411678 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; + // Units: dimensionless; Initial value: 0.07331396 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_SR_Ca_uptake_and_release__alpha_rel = 0.5; // nanoA_per_millimolar + const double var_SR_Ca_uptake_and_release__alpha_up = 0.080000000000000002; // nanoA + const double var_SR_Ca_uptake_and_release__beta_up = 0.071999999999999995; // nanoA + const double var_SR_Ca_uptake_and_release__i_rel = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel * var_SR_Ca_uptake_and_release__alpha_rel / pow((0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2), 2); // nanoA + const double var_SR_Ca_uptake_and_release__k_SRCa = 22; // millimolar + const double var_SR_Ca_uptake_and_release__k_cyca = 5.0000000000000002e-5; // millimolar + const double var_SR_Ca_uptake_and_release__k_xcs = 0.90000000000000002; // dimensionless + const double var_SR_Ca_uptake_and_release__K1 = var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs / var_SR_Ca_uptake_and_release__k_SRCa; // dimensionless + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_SR_Ca_uptake_and_release__K2 = var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 + var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs + var_SR_Ca_uptake_and_release__k_cyca + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // millimolar + const double var_SR_Ca_uptake_and_release__i_up = (var_SR_Ca_uptake_and_release__alpha_up * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 * var_SR_Ca_uptake_and_release__beta_up) / var_SR_Ca_uptake_and_release__K2; // nanoA + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_intracellular_concentrations_and_buffer_equations__phi_C = -307 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__F_C = 0.089999999999999997 * var_intracellular_concentrations_and_buffer_equations__phi_C; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TC = -252 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 50500 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__F_TC = 0.031 * var_intracellular_concentrations_and_buffer_equations__phi_TC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -4.25 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__F_TMgC = 0.062 * var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // millimolar_per_second + const double var_intracellular_concentrations_and_buffer_equations__phi_B = var_intracellular_concentrations_and_buffer_equations__F_C + var_intracellular_concentrations_and_buffer_equations__F_TC + var_intracellular_concentrations_and_buffer_equations__F_TMgC; // millimolar_per_second + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv = -var_intracellular_concentrations_and_buffer_equations__phi_B + 0.5 * (-var_L_type_Ca_channel__i_Ca_L - var_SR_Ca_uptake_and_release__i_up - var_T_type_Ca_channel__i_Ca_T - var_calcium_pump_current__i_Ca_P - var_linear_background_current__i_B_Ca + 2 * var_sodium_calcium_pump__i_NaCa + var_SR_Ca_uptake_and_release__i_rel) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_i_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_i; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; + // Units: dimensionless; Initial value: 0.1411678 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; + // Units: dimensionless; Initial value: 0.07331396 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + + + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x55 = 0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x56 = 1 / var_x55; + const double var_x57 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x58 = pow(var_x55, (-2)); + const double var_x61 = var_x16 * var_x9; + const double var_x62 = pow(var_x13, (-2)); + const double var_x63 = var_x19 - var_x17; + const double var_x64 = var_x62 * var_x63; + const double var_x101 = 9.5000000000000005e-5 + 2.0454545454545457e-6 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x102 = 1 / var_x101; + const double var_x103 = pow(var_x101, (-2)); + const double var_x104 = 0.080000000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - 1.4727272727272728e-7 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up; + const double var_x105 = 7.9543493648916639e-12 * var_x64; + const double var_x106 = 7.9543493648916641e-8 * var_x14; + + partialF = -21.173500000000001 + 11.609999999999999 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 1.5654999999999999 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 7.9980000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 7.9980000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop - 9.1430401954624137e-5 * var_x56 - 0.00025494709502857897 * var_x102 - 1.5494105166262771e-6 * var_x57 - var_x105 * var_x9 - var_x106 * var_x61 + 9.1430401954624137e-5 * var_x58 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + 0.0031868386878572369 * var_x103 * var_x104; + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + + + // Mathematics + const double var_sodium_current_m_gate__alpha_m = -824 * (51.899999999999999 + var_chaste_interface__membrane__V) / (-1 + exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_m_gate__beta_m = 32960 * exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_m_gate__m_infinity = var_sodium_current_m_gate__alpha_m / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // dimensionless + const double var_sodium_current_m_gate__tau_m = 1.5e-5 + 1 / (var_sodium_current_m_gate__alpha_m + var_sodium_current_m_gate__beta_m); // second + const double var_sodium_current_m_gate__m_orig_deriv = (-var_chaste_interface__sodium_current_m_gate__m + var_sodium_current_m_gate__m_infinity) / var_sodium_current_m_gate__tau_m; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_m_gate__m = 0.001 * var_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_m_gate__m; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x117 = exp(-5.8314606741573032 - 0.11235955056179775 * var_chaste_interface__membrane__V); + const double var_x118 = 51.899999999999999 + var_chaste_interface__membrane__V; + const double var_x119 = -1 + var_x117; + const double var_x120 = 824 / var_x119; + const double var_x121 = var_x118 * var_x120; + const double var_x122 = -var_x121 + 32960 * var_x117; + const double var_x123 = 1 / var_x122; + const double var_x126 = 1.5e-5 + 1 * var_x123; + const double var_x127 = 0.001 / var_x126; + + partialF = -var_x127; + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + + + // Mathematics + const double var_sodium_current_h_gate__alpha_h1 = 165 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_h_gate__h1_infinity = var_sodium_current_h_gate__alpha_h1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // dimensionless + const double var_sodium_current_h_gate__tau_h1 = 1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // second + const double var_sodium_current_h_gate__h1_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h1 + var_sodium_current_h_gate__h1_infinity) / var_sodium_current_h_gate__tau_h1; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h_gate__h1 = 0.001 * var_sodium_current_h_gate__h1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_h_gate__h1; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x128 = exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); + const double var_x130 = 1 + 320 * var_x128; + const double var_x131 = 1 / var_x130; + + partialF = -0.16500000000000001 * var_x128 - 12.359999999999999 * var_x131; + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + + + // Mathematics + const double var_sodium_current_h_gate__alpha_h1 = 165 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); // per_second + const double var_sodium_current_h_gate__beta_h1 = 12360 / (1 + 320 * exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V)); // per_second + const double var_sodium_current_h_gate__h1_infinity = var_sodium_current_h_gate__alpha_h1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // dimensionless + const double var_sodium_current_h_gate__h2_infinity = var_sodium_current_h_gate__h1_infinity; // dimensionless + const double var_sodium_current_h_gate__tau_h1 = 1 / (var_sodium_current_h_gate__alpha_h1 + var_sodium_current_h_gate__beta_h1); // second + const double var_sodium_current_h_gate__tau_h2 = 20 * var_sodium_current_h_gate__tau_h1; // second + const double var_sodium_current_h_gate__h2_orig_deriv = (-var_chaste_interface__sodium_current_h_gate__h2 + var_sodium_current_h_gate__h2_infinity) / var_sodium_current_h_gate__tau_h2; // 1 / second + const double d_dt_chaste_interface_var_sodium_current_h_gate__h2 = 0.001 * var_sodium_current_h_gate__h2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_h_gate__h2; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x128 = exp(-8.0396825396825395 - 0.079365079365079361 * var_chaste_interface__membrane__V); + const double var_x130 = 1 + 320 * var_x128; + const double var_x131 = 1 / var_x130; + + partialF = -0.61799999999999999 * var_x131 - 0.0082500000000000004 * var_x128; + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + + + // Mathematics + const double var_L_type_Ca_channel_d_gate__alpha_d_L = -28.390000000000001 * (35 + var_chaste_interface__membrane__V) / (-1 + exp(-14 - 0.40000000000000002 * var_chaste_interface__membrane__V)) - 84.900000000000006 * var_chaste_interface__membrane__V / (-1 + exp(-0.20799999999999999 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__beta_d_L = 11.43 * (-5 + var_chaste_interface__membrane__V) / (-1 + exp(-2 + 0.40000000000000002 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d_L = 1 / (var_L_type_Ca_channel_d_gate__alpha_d_L + var_L_type_Ca_channel_d_gate__beta_d_L); // second + const double var_L_type_Ca_channel_d_gate__d_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_d_gate__d_L + var_L_type_Ca_channel_d_gate__d_L_infinity) / var_L_type_Ca_channel_d_gate__tau_d_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L = 0.001 * var_L_type_Ca_channel_d_gate__d_L_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d_L; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x139 = exp(-14 - 0.40000000000000002 * var_chaste_interface__membrane__V); + const double var_x140 = -1 + var_x139; + const double var_x141 = 1 / var_x140; + const double var_x143 = exp(-0.20799999999999999 * var_chaste_interface__membrane__V); + const double var_x144 = -1 + var_x143; + const double var_x145 = 1 / var_x144; + const double var_x147 = exp(-2 + 0.40000000000000002 * var_chaste_interface__membrane__V); + const double var_x148 = -1 + var_x147; + const double var_x149 = 1 / var_x148; + const double var_x150 = 35 + var_chaste_interface__membrane__V; + const double var_x151 = -5 + var_chaste_interface__membrane__V; + + partialF = 0.028390000000000002 * var_x141 * var_x150 + 0.084900000000000003 * var_x145 * var_chaste_interface__membrane__V - 0.011429999999999999 * var_x149 * var_x151; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + + + // Mathematics + const double var_L_type_Ca_channel_f_gate__alpha_f_L = 3.75 * (28 + var_chaste_interface__membrane__V) / (-1 + exp(7 + 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__beta_f_L = 30 / (1 + exp(-7 - 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__f_L_infinity = 1 / (1 + exp(6 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f_L = 1 / (var_L_type_Ca_channel_f_gate__alpha_f_L + var_L_type_Ca_channel_f_gate__beta_f_L); // second + const double var_L_type_Ca_channel_f_gate__f_L_orig_deriv = (-var_chaste_interface__L_type_Ca_channel_f_gate__f_L + var_L_type_Ca_channel_f_gate__f_L_infinity) / var_L_type_Ca_channel_f_gate__tau_f_L; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L = 0.001 * var_L_type_Ca_channel_f_gate__f_L_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f_L; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x154 = 7 + 0.25 * var_chaste_interface__membrane__V; + const double var_x155 = exp(var_x154); + const double var_x156 = -1 + var_x155; + const double var_x157 = 1 / var_x156; + const double var_x159 = exp(-var_x154); + const double var_x160 = 1 + var_x159; + const double var_x161 = 28 + var_chaste_interface__membrane__V; + const double var_x162 = 1 / var_x160; + + partialF = -0.029999999999999999 * var_x162 - 0.0037499999999999999 * var_x157 * var_x161; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + + + // Mathematics + const double var_T_type_Ca_channel_d_gate__alpha_d_T = 1068 * exp(0.87666666666666671 + 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__beta_d_T = 1068 * exp(-0.87666666666666671 - 0.033333333333333333 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_d_gate__d_T_infinity = 1 / (1 + exp(-4.3833333333333337 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_T_type_Ca_channel_d_gate__tau_d_T = 1 / (var_T_type_Ca_channel_d_gate__alpha_d_T + var_T_type_Ca_channel_d_gate__beta_d_T); // second + const double var_T_type_Ca_channel_d_gate__d_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_d_gate__d_T + var_T_type_Ca_channel_d_gate__d_T_infinity) / var_T_type_Ca_channel_d_gate__tau_d_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T = 0.001 * var_T_type_Ca_channel_d_gate__d_T_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_d_gate__d_T; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x165 = 0.87666666666666671 + 0.033333333333333333 * var_chaste_interface__membrane__V; + const double var_x166 = exp(-var_x165); + const double var_x167 = exp(var_x165); + + partialF = -1.0680000000000001 * var_x166 - 1.0680000000000001 * var_x167; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + + + // Mathematics + const double var_T_type_Ca_channel_f_gate__alpha_f_T = 15.300000000000001 * exp(-0.74069627851140463 - 0.012004801920768308 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__beta_f_T = 15 * exp(4.0117035110533159 + 0.065019505851755519 * var_chaste_interface__membrane__V); // per_second + const double var_T_type_Ca_channel_f_gate__f_T_infinity = 1 / (1 + exp(11.017857142857144 + 0.17857142857142858 * var_chaste_interface__membrane__V)); // dimensionless + const double var_T_type_Ca_channel_f_gate__tau_f_T = 1 / (var_T_type_Ca_channel_f_gate__alpha_f_T + var_T_type_Ca_channel_f_gate__beta_f_T); // second + const double var_T_type_Ca_channel_f_gate__f_T_orig_deriv = (-var_chaste_interface__T_type_Ca_channel_f_gate__f_T + var_T_type_Ca_channel_f_gate__f_T_infinity) / var_T_type_Ca_channel_f_gate__tau_f_T; // 1 / second + const double d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T = 0.001 * var_T_type_Ca_channel_f_gate__f_T_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_f_gate__f_T; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x170 = exp(-0.74069627851140463 - 0.012004801920768308 * var_chaste_interface__membrane__V); + const double var_x171 = exp(4.0117035110533159 + 0.065019505851755519 * var_chaste_interface__membrane__V); + + partialF = -0.015300000000000001 * var_x170 - 0.014999999999999999 * var_x171; + } + else + { + const double y_save = rY[8]; + rY[8] += delta; + const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[8])/delta; + rY[8] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + + + // Mathematics + const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity = 1 / (1 + exp(-0.68918918918918914 - 0.13513513513513511 * var_chaste_interface__membrane__V)); // dimensionless + const double var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a = 1 / (17 * exp(0.039800000000000002 * var_chaste_interface__membrane__V) + 2.1099999999999999 * exp(-0.050999999999999997 * var_chaste_interface__membrane__V)); // second + const double var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv = (-var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a + var_delayed_rectifying_potassium_current_P_a_gate__P_a_infinity) / var_delayed_rectifying_potassium_current_P_a_gate__tau_P_a; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a = 0.001 * var_delayed_rectifying_potassium_current_P_a_gate__P_a_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_a_gate__P_a; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x174 = exp(-0.050999999999999997 * var_chaste_interface__membrane__V); + const double var_x175 = exp(0.039800000000000002 * var_chaste_interface__membrane__V); + + partialF = -0.0021099999999999999 * var_x174 - 0.017000000000000001 * var_x175; + } + else + { + const double y_save = rY[9]; + rY[9] += delta; + const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[9])/delta; + rY[9] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + + + // Mathematics + const double var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i = 100 * exp(-0.0183 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i = 656 * exp(0.0094199999999999996 * var_chaste_interface__membrane__V); // per_second + const double var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv = (1 - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i) * var_delayed_rectifying_potassium_current_P_i_gate__alpha_P_i - var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i * var_delayed_rectifying_potassium_current_P_i_gate__beta_P_i; // 1 / second + const double d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i = 0.001 * var_delayed_rectifying_potassium_current_P_i_gate__P_i_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_delayed_rectifying_potassium_current_P_i_gate__P_i; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x176 = exp(-0.0183 * var_chaste_interface__membrane__V); + const double var_x177 = exp(0.0094199999999999996 * var_chaste_interface__membrane__V); + + partialF = -0.65600000000000003 * var_x177 - 0.10000000000000001 * var_x176; + } + else + { + const double y_save = rY[10]; + rY[10] += delta; + const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[10])/delta; + rY[10] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + + + // Mathematics + const double var_hyperpolarisation_activated_current_y_gate__tau_y = 1 / (1.6483000000000001 * exp(-2.2219482120838472 - 0.041101520756267988 * var_chaste_interface__membrane__V) + 14.01055 / (0.69999999999999996 + exp(-10.909090909090908 - 0.18181818181818182 * var_chaste_interface__membrane__V))); // second + const double var_hyperpolarisation_activated_current_y_gate__y_infinity = 1 / (1 + exp(8.0222222222222221 + 0.1111111111111111 * var_chaste_interface__membrane__V)); // dimensionless + const double var_hyperpolarisation_activated_current_y_gate__y_orig_deriv = (-var_chaste_interface__hyperpolarisation_activated_current_y_gate__y + var_hyperpolarisation_activated_current_y_gate__y_infinity) / var_hyperpolarisation_activated_current_y_gate__tau_y; // 1 / second + const double d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y = 0.001 * var_hyperpolarisation_activated_current_y_gate__y_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_hyperpolarisation_activated_current_y_gate__y; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + + + const double var_x180 = exp(-2.2219482120838472 - 0.041101520756267988 * var_chaste_interface__membrane__V); + const double var_x181 = exp(-10.909090909090908 - 0.18181818181818182 * var_chaste_interface__membrane__V); + const double var_x182 = 0.69999999999999996 + var_x181; + const double var_x183 = 1 / var_x182; + + partialF = -0.0016483000000000001 * var_x180 - 0.01401055 * var_x183; + } + else + { + const double y_save = rY[11]; + rY[11] += delta; + const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[11])/delta; + rY[11] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv = (-var_hyperpolarisation_activated_current__i_f_Na - var_linear_background_current__i_B_Na - var_sodium_current__i_Na - 3 * var_sodium_calcium_pump__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__Na_i_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Na_i; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x27 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); + const double var_x28 = 5.46 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x29 = pow(var_x28, (-3)); + const double var_x30 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); + const double var_x31 = 1.5 + var_x30; + const double var_x33 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; + const double var_x34 = pow(var_x33, (-2)); + const double var_x37 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x38 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x39 = var_x38 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x40 = exp(var_x37 - 1 * log(var_x39)); + const double var_x43 = exp(var_x37); + const double var_x44 = -1 + var_x43; + const double var_x45 = 1 / var_x44; + const double var_x46 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x47 = var_x45 * var_x46 * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; + const double var_x49 = var_x47 * var_chaste_interface__membrane__V; + const double var_x50 = var_x40 * var_x49; + const double var_x62 = pow(var_x13, (-2)); + const double var_x63 = var_x19 - var_x17; + const double var_x82 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 2); + const double var_x83 = var_x82 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x84 = var_x18 * var_x83; + const double var_x85 = 1 / var_x31; + const double var_x86 = var_x29 * var_x85; + const double var_x87 = var_x27 * var_x82 * var_x86; + const double var_x88 = pow(var_x28, (-4)); + const double var_x191 = 7.1589144284024978e-7 * var_x14; + const double var_x192 = 23.020586507479816 * var_x50; + + partialF = -2.7242382709912566e-5 * var_x38 - var_x191 * var_x84 - var_x192 * var_x39 - 0.020118385162895224 * var_x34 * var_x87 + 7.158914428402498e-11 * var_x62 * var_x63 * var_x82 * var_chaste_interface__cleft_space_equations__Ca_c + 0.020118385162895224 * var_x11 * var_x27 * var_x34 * var_x85 * var_x88; + } + else + { + const double y_save = rY[12]; + rY[12] += delta; + const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[12])/delta; + rY[12] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv = (-var_delayed_rectifying_potassium_current__i_K - var_hyperpolarisation_activated_current__i_f_K - var_linear_background_current__i_B_K + 2 * var_sodium_potassium_pump__i_NaK) / (var_intracellular_concentrations_and_buffer_equations__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i = 0.001 * var_intracellular_concentrations_and_buffer_equations__K_i_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__K_i; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + + + const double var_x22 = mParameters[2] * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; + const double var_x23 = var_x22 * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a; + const double var_x74 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i; + const double var_x195 = 0.46050826103455306 * var_x23; + + partialF = -1.1816383500424576e-5 * var_x74 - var_x195 * var_x74; + } + else + { + const double y_save = rY[13]; + rY[13] += delta; + const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[13])/delta; + rY[13] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod = rY[14]; + // Units: dimensionless; Initial value: 0.1411678 + + + // Mathematics + const double var_intracellular_concentrations_and_buffer_equations__phi_C = -307 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Calmod) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_C; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Calmod_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Calmod; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + const double var_x196 = 129 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + + partialF = -0.307 - var_x196; + } + else + { + const double y_save = rY[14]; + rY[14] += delta; + const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[14])/delta; + rY[14] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop = rY[15]; + // Units: dimensionless; Initial value: 0.07331396 + + + // Mathematics + const double var_intracellular_concentrations_and_buffer_equations__phi_TC = -252 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop + 50500 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TC; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Trop_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Trop; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + + partialF = -0.252 - 50.5 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + } + else + { + const double y_save = rY[15]; + rY[15] += delta; + const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[15])/delta; + rY[15] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + + + // Mathematics + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgC = -4.25 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop + 129000 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgC; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + const double var_x196 = 129 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + + partialF = -0.0042500000000000003 - var_x196; + } + else + { + const double y_save = rY[16]; + rY[16] += delta; + const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[16])/delta; + rY[16] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop = rY[16]; + // Units: dimensionless; Initial value: 0.7618549 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = rY[17]; + // Units: dimensionless; Initial value: 0.2097049 + + + // Mathematics + const double var_intracellular_concentrations_and_buffer_equations__Mg_i = 2.5; // millimolar + const double var_intracellular_concentrations_and_buffer_equations__phi_TMgM = -429 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop + 1290 * (1 - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop - var_chaste_interface__intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop) * var_intracellular_concentrations_and_buffer_equations__Mg_i; // per_second + const double var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv = var_intracellular_concentrations_and_buffer_equations__phi_TMgM; // 1 / second + const double d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop = 0.001 * var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -3.6539999999999999; + } + else + { + const double y_save = rY[17]; + rY[17] += delta; + const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[17])/delta; + rY[17] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_cleft_space_equations__Na_b = 140; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = 0.01; // second + const double var_linear_background_current__g_B_Na = 0.00016000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Na; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_cleft_space_equations__Na_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Na_c + var_cleft_space_equations__Na_b) / var_cleft_space_equations__tau_p + (3 * var_sodium_calcium_pump__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_hyperpolarisation_activated_current__i_f_Na + var_linear_background_current__i_B_Na + var_sodium_current__i_Na) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__Na_c = 0.001 * var_cleft_space_equations__Na_c_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_cleft_space_equations__Na_c; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + + + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x37 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x38 = 1 / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x39 = var_x38 * var_chaste_interface__cleft_space_equations__Na_c; + const double var_x40 = exp(var_x37 - 1 * log(var_x39)); + const double var_x41 = -1 + var_x40; + const double var_x43 = exp(var_x37); + const double var_x44 = -1 + var_x43; + const double var_x45 = 1 / var_x44; + const double var_x46 = pow(var_chaste_interface__sodium_current_m_gate__m, 3); + const double var_x47 = var_x45 * var_x46 * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; + const double var_x49 = var_x47 * var_chaste_interface__membrane__V; + const double var_x50 = var_x40 * var_x49; + const double var_x62 = pow(var_x13, (-2)); + const double var_x63 = var_x19 - var_x17; + const double var_x64 = var_x62 * var_x63; + const double var_x91 = 1 / var_chaste_interface__cleft_space_equations__Na_c; + const double var_x92 = pow(var_chaste_interface__cleft_space_equations__Na_c, 2) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x93 = var_x16 * var_x92; + const double var_x202 = 2.447717065593501e-6 * var_x14; + const double var_x203 = 2.4477170655935014e-10 * var_x64; + const double var_x205 = 78.710093573368496 * var_x50; + + partialF = -0.099999999999999992 - var_x205 - 9.3144911471392233e-5 * var_x91 - var_x202 * var_x93 - var_x203 * var_x92 + 78.710093573368496 * var_x41 * var_x45 * var_x46 * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2; + } + else + { + const double y_save = rY[18]; + rY[18] += delta; + const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[18])/delta; + rY[18] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__T_type_Ca_channel_d_gate__d_T = rY[7]; + // Units: dimensionless; Initial value: 0.02012114 + double var_chaste_interface__T_type_Ca_channel_f_gate__f_T = rY[8]; + // Units: dimensionless; Initial value: 0.1945111 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_T_type_Ca_channel__E_Ca_T = 45; // millivolt + const double var_T_type_Ca_channel__g_Ca_T = 0.02521; // microS + const double var_calcium_pump_current__i_Ca_P_max = 0.02869; // nanoA + const double var_cleft_space_equations__Ca_b = 2; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = 0.01; // second + const double var_calcium_pump_current__i_Ca_P = var_calcium_pump_current__i_Ca_P_max * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i / (0.00040000000000000002 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i); // nanoA + const double var_linear_background_current__g_B_Ca = 3.6399999999999997e-5; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_T_type_Ca_channel__i_Ca_T = (-var_T_type_Ca_channel__E_Ca_T + var_chaste_interface__membrane__V) * var_T_type_Ca_channel__g_Ca_T * var_chaste_interface__T_type_Ca_channel_d_gate__d_T * var_chaste_interface__T_type_Ca_channel_f_gate__f_T; // nanoA + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Ca_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i) / var_membrane__F; // millivolt + const double var_linear_background_current__i_B_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_Ca; // nanoA + const double var_sodium_calcium_pump__K_NaCa = 1.2480000000000001e-5; // nanoA + const double var_sodium_calcium_pump__d_NaCa = 0.0001; // dimensionless + const double var_sodium_calcium_pump__gamma = 0.5; // dimensionless + const double var_sodium_calcium_pump__i_NaCa = (pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c * exp(0.037429999999999998 * var_chaste_interface__membrane__V * var_sodium_calcium_pump__gamma) - pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i * exp(0.037429999999999998 * (-1 + var_sodium_calcium_pump__gamma) * var_chaste_interface__membrane__V)) * var_sodium_calcium_pump__K_NaCa / (1 + (pow(var_chaste_interface__cleft_space_equations__Na_c, 3) * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i + pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_chaste_interface__cleft_space_equations__Ca_c) * var_sodium_calcium_pump__d_NaCa); // nanoA + const double var_cleft_space_equations__Ca_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__Ca_c + var_cleft_space_equations__Ca_b) / var_cleft_space_equations__tau_p + 0.5 * (-2 * var_sodium_calcium_pump__i_NaCa + var_L_type_Ca_channel__i_Ca_L + var_T_type_Ca_channel__i_Ca_T + var_calcium_pump_current__i_Ca_P + var_linear_background_current__i_B_Ca) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__Ca_c = 0.001 * var_cleft_space_equations__Ca_c_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_cleft_space_equations__Ca_c; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__Ca_c = rY[19]; + // Units: millimolar; Initial value: 2.00474 + + + const double var_x9 = pow(var_chaste_interface__cleft_space_equations__Na_c, 3); + const double var_x10 = var_x9 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x12 = var_x11 * var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x13 = 1 + 0.0001 * var_x10 + 0.0001 * var_x12; + const double var_x14 = 1 / var_x13; + const double var_x15 = 0.018714999999999999 * var_chaste_interface__membrane__V; + const double var_x16 = exp(-var_x15); + const double var_x17 = var_x10 * var_x16; + const double var_x18 = exp(var_x15); + const double var_x19 = var_x12 * var_x18; + const double var_x62 = pow(var_x13, (-2)); + const double var_x63 = var_x19 - var_x17; + const double var_x94 = 1 / var_chaste_interface__cleft_space_equations__Ca_c; + const double var_x95 = var_x11 * var_x18; + const double var_x206 = 2.7196856284372236e-7 * var_x14; + + partialF = -0.099999999999999992 - 5.2976168399354324e-6 * var_x94 - var_x206 * var_x95 + 2.7196856284372237e-11 * var_x11 * var_x62 * var_x63; + } + else + { + const double y_save = rY[19]; + rY[19] += delta; + const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[19])/delta; + rY[19] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + // Mathematics + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_cleft_space_equations__V_c = 0.13600000000000001 * var_cleft_space_equations__Vol; // microLitre + const double var_cleft_space_equations__tau_p = 0.01; // second + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_linear_background_current__g_B_K = 6.9400000000000006e-5; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_linear_background_current__i_B_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_linear_background_current__g_B_K; // nanoA + const double var_sodium_potassium_pump__K_m_K = 0.621; // millimolar + const double var_sodium_potassium_pump__K_m_Na = 5.46; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.21920000000000001; // nanoA + const double var_sodium_potassium_pump__i_NaK = 1.6000000000000001 * pow(var_chaste_interface__cleft_space_equations__K_c, 2) * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3) * var_sodium_potassium_pump__i_NaK_max / ((1.5 + exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V)) * pow((var_chaste_interface__cleft_space_equations__K_c + var_sodium_potassium_pump__K_m_K), 2) * pow((var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i + var_sodium_potassium_pump__K_m_Na), 3)); // nanoA + const double var_cleft_space_equations__K_c_orig_deriv = (-var_chaste_interface__cleft_space_equations__K_c + var_cleft_space_equations__K_b) / var_cleft_space_equations__tau_p + (-2 * var_sodium_potassium_pump__i_NaK + var_delayed_rectifying_potassium_current__i_K + var_hyperpolarisation_activated_current__i_f_K + var_linear_background_current__i_B_K) / (var_cleft_space_equations__V_c * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_cleft_space_equations__K_c = 0.001 * var_cleft_space_equations__K_c_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_cleft_space_equations__K_c; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + + const double var_x11 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i, 3); + const double var_x22 = mParameters[2] * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; + const double var_x23 = var_x22 * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a; + const double var_x27 = pow(var_chaste_interface__cleft_space_equations__K_c, 2); + const double var_x28 = 5.46 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i; + const double var_x29 = pow(var_x28, (-3)); + const double var_x30 = exp(-1.5 - 0.025000000000000001 * var_chaste_interface__membrane__V); + const double var_x31 = 1.5 + var_x30; + const double var_x33 = 0.621 + var_chaste_interface__cleft_space_equations__K_c; + const double var_x34 = pow(var_x33, (-2)); + const double var_x35 = var_x11 * var_x34; + const double var_x85 = 1 / var_x31; + const double var_x86 = var_x29 * var_x85; + const double var_x96 = 1 / var_chaste_interface__cleft_space_equations__K_c; + const double var_x97 = pow(var_x33, (-3)); + const double var_x100 = var_x35 * var_x86 * var_chaste_interface__cleft_space_equations__K_c; + const double var_x211 = 1.5745319219196114 * var_x23; + + partialF = -0.099999999999999992 - 4.040160535071638e-5 * var_x96 - 0.030572055884791761 * var_x100 - var_x211 * var_x96 + 0.030572055884791761 * var_x11 * var_x27 * var_x29 * var_x85 * var_x97; + } + else + { + const double y_save = rY[20]; + rY[20] += delta; + const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[20])/delta; + rY[20] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__alpha_up = 0.080000000000000002; // nanoA + const double var_SR_Ca_uptake_and_release__beta_up = 0.071999999999999995; // nanoA + const double var_SR_Ca_uptake_and_release__k_SRCa = 22; // millimolar + const double var_SR_Ca_uptake_and_release__k_cyca = 5.0000000000000002e-5; // millimolar + const double var_SR_Ca_uptake_and_release__k_xcs = 0.90000000000000002; // dimensionless + const double var_SR_Ca_uptake_and_release__K1 = var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs / var_SR_Ca_uptake_and_release__k_SRCa; // dimensionless + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_SR_Ca_uptake_and_release__K2 = var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 + var_SR_Ca_uptake_and_release__k_cyca * var_SR_Ca_uptake_and_release__k_xcs + var_SR_Ca_uptake_and_release__k_cyca + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; // millimolar + const double var_SR_Ca_uptake_and_release__i_up = (var_SR_Ca_uptake_and_release__alpha_up * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - var_chaste_interface__SR_Ca_uptake_and_release__Ca_up * var_SR_Ca_uptake_and_release__K1 * var_SR_Ca_uptake_and_release__beta_up) / var_SR_Ca_uptake_and_release__K2; // nanoA + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_SR_Ca_uptake_and_release__V_up = 0.01166 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_SR_Ca_uptake_and_release__i_tr = 31.162355874104083 * (-var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel + var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) * var_SR_Ca_uptake_and_release__V_up * var_membrane__F; // nanoA + const double var_SR_Ca_uptake_and_release__Ca_up_orig_deriv = 0.5 * (-var_SR_Ca_uptake_and_release__i_tr + var_SR_Ca_uptake_and_release__i_up) / (var_SR_Ca_uptake_and_release__V_up * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up = 0.001 * var_SR_Ca_uptake_and_release__Ca_up_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_up; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + + + const double var_x101 = 9.5000000000000005e-5 + 2.0454545454545457e-6 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x102 = 1 / var_x101; + const double var_x103 = pow(var_x101, (-2)); + const double var_x104 = 0.080000000000000002 * var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i - 1.4727272727272728e-7 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_up; + const double var_x111 = var_x103 * var_x104; + + partialF = -0.015581177937052042 - 4.0251665946738841e-8 * var_x102 - 5.5905091592692838e-7 * var_x111; + } + else + { + const double y_save = rY[21]; + rY[21] += delta; + const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[21])/delta; + rY[21] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_up = rY[21]; + // Units: millimolar; Initial value: 16.95311 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; + // Units: dimensionless; Initial value: 0.9528726 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__alpha_rel = 0.5; // nanoA_per_millimolar + const double var_SR_Ca_uptake_and_release__i_rel = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel * var_SR_Ca_uptake_and_release__alpha_rel / pow((0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2), 2); // nanoA + const double var_SR_Ca_uptake_and_release__phi_Calse = -641 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse + 770 * (1 - var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; // per_second + const double var_cleft_space_equations__Vol = 3.4970000000000001e-6; // microLitre + const double var_intracellular_concentrations_and_buffer_equations__V_i = 0.46500000000000002 * var_cleft_space_equations__Vol; // microLitre + const double var_SR_Ca_uptake_and_release__V_rel = 0.0012960000000000001 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_SR_Ca_uptake_and_release__V_up = 0.01166 * var_intracellular_concentrations_and_buffer_equations__V_i; // microLitre + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_SR_Ca_uptake_and_release__i_tr = 31.162355874104083 * (-var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel + var_chaste_interface__SR_Ca_uptake_and_release__Ca_up) * var_SR_Ca_uptake_and_release__V_up * var_membrane__F; // nanoA + const double var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv = -11.48 * var_SR_Ca_uptake_and_release__phi_Calse + 0.5 * (-var_SR_Ca_uptake_and_release__i_rel + var_SR_Ca_uptake_and_release__i_tr) / (var_SR_Ca_uptake_and_release__V_rel * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel = 0.001 * var_SR_Ca_uptake_and_release__Ca_rel_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_rel; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; + // Units: dimensionless; Initial value: 0.9528726 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + + + const double var_x112 = 0.25 + var_chaste_interface__SR_Ca_uptake_and_release__F2; + const double var_x113 = pow(var_x112, (-2)); + const double var_x114 = pow(var_chaste_interface__SR_Ca_uptake_and_release__F2, 2); + const double var_x115 = var_x113 * var_x114; + + partialF = -8.979782511378108 + 8.8396000000000008 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse - 1.2294902345128229 * var_x115; + } + else + { + const double y_save = rY[22]; + rY[22] += delta; + const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[22])/delta; + rY[22] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse = rY[23]; + // Units: dimensionless; Initial value: 0.9528726 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__phi_Calse = -641 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse + 770 * (1 - var_chaste_interface__SR_Ca_uptake_and_release__Ca_Calse) * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; // per_second + const double var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv = var_SR_Ca_uptake_and_release__phi_Calse; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse = 0.001 * var_SR_Ca_uptake_and_release__Ca_Calse_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__Ca_Calse; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel = rY[22]; + // Units: millimolar; Initial value: 16.85024 + + + + partialF = -0.64100000000000001 - 0.77000000000000002 * var_chaste_interface__SR_Ca_uptake_and_release__Ca_rel; + } + else + { + const double y_save = rY[23]; + rY[23] += delta; + const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[23])/delta; + rY[23] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__F1 = rY[24]; + // Units: dimensionless; Initial value: 0.1133251 + double var_chaste_interface__SR_Ca_uptake_and_release__F3 = rY[26]; + // Units: dimensionless; Initial value: 0.8859153 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar + const double var_SR_Ca_uptake_and_release__r_act = 240 * exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F1_orig_deriv = 0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 - var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1 = 0.001 * var_SR_Ca_uptake_and_release__F1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F1; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + const double var_x213 = exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V); + const double var_x215 = 0.0040000000000000001 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x216 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4); + const double var_x217 = pow(var_x215, (-4)); + const double var_x220 = 0.23999999999999999 * var_x216 * var_x217; + const double var_x221 = var_x220 + 0.23999999999999999 * var_x213; + + partialF = -var_x221; + } + else + { + const double y_save = rY[24]; + rY[24] += delta; + const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[24])/delta; + rY[24] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__F1 = rY[24]; + // Units: dimensionless; Initial value: 0.1133251 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar + const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__r_act = 240 * exp(-3.2000000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V) + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F2_orig_deriv = var_chaste_interface__SR_Ca_uptake_and_release__F1 * var_SR_Ca_uptake_and_release__r_act - var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2 = 0.001 * var_SR_Ca_uptake_and_release__F2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F2; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + + + const double var_x215 = 0.0040000000000000001 + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i; + const double var_x216 = pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4); + const double var_x217 = pow(var_x215, (-4)); + const double var_x220 = 0.23999999999999999 * var_x216 * var_x217; + const double var_x223 = 0.040000000000000001 + var_x220; + + partialF = -var_x223; + } + else + { + const double y_save = rY[25]; + rY[25] += delta; + const double temp = EvaluateYDerivative25(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[25])/delta; + rY[25] = y_save; + } + return partialF; + } + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluateYDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.0003787018 + double var_chaste_interface__SR_Ca_uptake_and_release__F2 = rY[25]; + // Units: dimensionless; Initial value: 0.0007594214 + double var_chaste_interface__SR_Ca_uptake_and_release__F3 = rY[26]; + // Units: dimensionless; Initial value: 0.8859153 + + + // Mathematics + const double var_SR_Ca_uptake_and_release__k_rel = 0.0040000000000000001; // millimolar + const double var_SR_Ca_uptake_and_release__r_inact = 40 + 240 * pow(var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i, 4) / pow((var_SR_Ca_uptake_and_release__k_rel + var_chaste_interface__intracellular_concentrations_and_buffer_equations__Ca_i), 4); // per_second + const double var_SR_Ca_uptake_and_release__F3_orig_deriv = -0.95999999999999996 * var_chaste_interface__SR_Ca_uptake_and_release__F3 + var_chaste_interface__SR_Ca_uptake_and_release__F2 * var_SR_Ca_uptake_and_release__r_inact; // 1 / second + const double d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3 = 0.001 * var_SR_Ca_uptake_and_release__F3_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_Ca_uptake_and_release__F3; + } + + double Dynamicdemir_model_1994FromCellMLGRL1::EvaluatePartialDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -0.00095999999999999992; + } + else + { + const double y_save = rY[26]; + rY[26] += delta; + const double temp = EvaluateYDerivative26(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[26])/delta; + rY[26] = y_save; + } + return partialF; + } + + std::vector Dynamicdemir_model_1994FromCellMLGRL1::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -49.54105 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.250113 + double var_chaste_interface__sodium_current_h_gate__h1 = rY[3]; + // Units: dimensionless; Initial value: 0.001386897 + double var_chaste_interface__sodium_current_h_gate__h2 = rY[4]; + // Units: dimensionless; Initial value: 0.002065463 + double var_chaste_interface__L_type_Ca_channel_d_gate__d_L = rY[5]; + // Units: dimensionless; Initial value: 0.002572773 + double var_chaste_interface__L_type_Ca_channel_f_gate__f_L = rY[6]; + // Units: dimensionless; Initial value: 0.98651 + double var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a = rY[9]; + // Units: dimensionless; Initial value: 0.02302278 + double var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i = rY[10]; + // Units: dimensionless; Initial value: 0.3777728 + double var_chaste_interface__hyperpolarisation_activated_current_y_gate__y = rY[11]; + // Units: dimensionless; Initial value: 0.09227776 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i = rY[12]; + // Units: millimolar; Initial value: 9.701621 + double var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i = rY[13]; + // Units: millimolar; Initial value: 140.7347 + double var_chaste_interface__cleft_space_equations__Na_c = rY[18]; + // Units: millimolar; Initial value: 139.9988 + double var_chaste_interface__cleft_space_equations__K_c = rY[20]; + // Units: millimolar; Initial value: 5.389014 + + // Mathematics + const double var_L_type_Ca_channel__E_Ca_L = 46.399999999999999; // millivolt + const double var_cleft_space_equations__K_b = 5.4000000000000004; // millimolar + const double var_delayed_rectifying_potassium_current__g_K = 1 * pow(var_cleft_space_equations__K_b, 0.58999999999999997) * mParameters[2]; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel_d_gate__d_L_infinity = 1 / (1 + exp(-2.3500000000000001 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_channel__i_Ca_L = (-var_L_type_Ca_channel__E_Ca_L + var_chaste_interface__membrane__V) * (0.095000000000000001 * var_L_type_Ca_channel_d_gate__d_L_infinity + var_chaste_interface__L_type_Ca_channel_d_gate__d_L * var_chaste_interface__L_type_Ca_channel_f_gate__f_L) * mParameters[0]; // nanoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / mParameters[1]; // uA_per_cm2 + const double var_hyperpolarisation_activated_current__i_f_K = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (85 + var_chaste_interface__membrane__V) * mParameters[4]; // nanoA + const double var_hyperpolarisation_activated_current__i_f_Na = pow(var_chaste_interface__hyperpolarisation_activated_current_y_gate__y, 2) * (-75 + var_chaste_interface__membrane__V) * mParameters[5]; // nanoA + const double var_hyperpolarisation_activated_current__i_f = var_hyperpolarisation_activated_current__i_f_K + var_hyperpolarisation_activated_current__i_f_Na; // nanoA + const double var_hyperpolarisation_activated_current__i_f_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_hyperpolarisation_activated_current__i_f / mParameters[1]; // uA_per_cm2 + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__K_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__K_i) / var_membrane__F; // millivolt + const double var_delayed_rectifying_potassium_current__i_K = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_delayed_rectifying_potassium_current__g_K * var_chaste_interface__delayed_rectifying_potassium_current_P_a_gate__P_a * var_chaste_interface__delayed_rectifying_potassium_current_P_i_gate__P_i; // nanoA + const double var_delayed_rectifying_potassium_current__i_K_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_delayed_rectifying_potassium_current__i_K / mParameters[1]; // uA_per_cm2 + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(var_chaste_interface__cleft_space_equations__Na_c / var_chaste_interface__intracellular_concentrations_and_buffer_equations__Na_i) / var_membrane__F; // millivolt + const double var_sodium_current__i_Na = pow(var_membrane__F, 2) * pow(var_chaste_interface__sodium_current_m_gate__m, 3) * (-1 + exp((-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_chaste_interface__cleft_space_equations__Na_c * var_chaste_interface__membrane__V * mParameters[3] * var_chaste_interface__sodium_current_h_gate__h1 * var_chaste_interface__sodium_current_h_gate__h2 / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_sodium_current__i_Na_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / mParameters[1]; // uA_per_cm2 + + std::vector dqs(7); + dqs[0] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[1] = var_delayed_rectifying_potassium_current__i_K_converted; + dqs[2] = var_sodium_current__i_Na_converted; + dqs[3] = var_hyperpolarisation_activated_current__i_f_converted; + dqs[4] = var_hyperpolarisation_activated_current__i_f_K; + dqs[5] = var_hyperpolarisation_activated_current__i_f_Na; + dqs[6] = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "demir_model_1994"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-49.54105); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0003787018); + + // rY[2]: + this->mVariableNames.push_back("sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.250113); + + // rY[3]: + this->mVariableNames.push_back("sodium_current_h_gate__h1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001386897); + + // rY[4]: + this->mVariableNames.push_back("sodium_current_h_gate__h2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002065463); + + // rY[5]: + this->mVariableNames.push_back("L_type_Ca_channel_d_gate__d_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002572773); + + // rY[6]: + this->mVariableNames.push_back("L_type_Ca_channel_f_gate__f_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.98651); + + // rY[7]: + this->mVariableNames.push_back("T_type_Ca_channel_d_gate__d_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.02012114); + + // rY[8]: + this->mVariableNames.push_back("T_type_Ca_channel_f_gate__f_T"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.1945111); + + // rY[9]: + this->mVariableNames.push_back("delayed_rectifying_potassium_current_P_a_gate__P_a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.02302278); + + // rY[10]: + this->mVariableNames.push_back("delayed_rectifying_potassium_current_P_i_gate__P_i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.3777728); + + // rY[11]: + this->mVariableNames.push_back("hyperpolarisation_activated_current_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09227776); + + // rY[12]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.701621); + + // rY[13]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(140.7347); + + // rY[14]: + this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Ca_Calmod"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.1411678); + + // rY[15]: + this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Ca_Trop"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.07331396); + + // rY[16]: + this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Ca_Mg_Trop"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7618549); + + // rY[17]: + this->mVariableNames.push_back("intracellular_concentrations_and_buffer_equations__Mg_Mg_Trop"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.2097049); + + // rY[18]: + this->mVariableNames.push_back("extracellular_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(139.9988); + + // rY[19]: + this->mVariableNames.push_back("extracellular_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.00474); + + // rY[20]: + this->mVariableNames.push_back("extracellular_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(5.389014); + + // rY[21]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(16.95311); + + // rY[22]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__Ca_rel"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(16.85024); + + // rY[23]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__Ca_Calse"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9528726); + + // rY[24]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__F1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.1133251); + + // rY[25]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__F2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0007594214); + + // rY[26]: + this->mVariableNames.push_back("SR_Ca_uptake_and_release__F3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8859153); + + // mParameters[0]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[1]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF"); + + // mParameters[2]: + this->mParameterNames.push_back("membrane_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mul_per_second"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component_conductance"); + this->mParameterUnits.push_back("microS"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_potassium_component"); + this->mDerivedQuantityUnits.push_back("nanoA"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_hyperpolarisation_activated_funny_current_sodium_component"); + this->mDerivedQuantityUnits.push_back("nanoA"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicdemir_model_1994FromCellMLGRL1) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicdemir_model_1994FromCellMLGRL1(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003--sympy_1_11.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003--sympy_1_11.cpp new file mode 100644 index 00000000..ea843f94 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003--sympy_1_11.cpp @@ -0,0 +1,5092 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: matsuoka_model_2003 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenFirstOrderOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_matsuoka_model_2003.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractGeneralizedRushLarsenCardiacCell* Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicmatsuoka_model_2003FromCellMLGRL1Opt(p_solver, p_stimulus); +} + +bool Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::registered = ModelFactory::Register("dynamic_matsuoka_model_2003", "GeneralizedRushLarsenFirstOrderOpt", (ModelFactory::TCreateMethod)Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::CreateMethod); + +class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<41; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__Vm) + { + const double _offset_0 = var_chaste_interface__membrane__Vm - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__Vm) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__Vm>mTableMaxs[0] || var_chaste_interface__membrane__Vm= 2){ + EXCEPTION("Lookup table 0 at ["<= 2){ + EXCEPTION("Lookup table 1 at ["<= 2){ + EXCEPTION("Lookup table 2 at ["<= 2){ + EXCEPTION("Lookup table 3 at ["<= 2){ + EXCEPTION("Lookup table 7 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[41]; + + // Lookup tables + double (*_lookup_table_0)[41]; + int _lookup_table_0_num_misshit_piecewise[41] = {0}; + +}; + +std::shared_ptr Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -4000 * HeartConfig::Instance()->GetCapacitance() / mParameters[9]; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 2; // millisecond + const double var_chaste_interface__membrane__stim_period = 400; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::Dynamicmatsuoka_model_2003FromCellMLGRL1Opt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 37, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 459; // (var_SR_L_current__P_SR_L) [picoA_per_millimolar] + this->mParameters[1] = 62000; // (var_RyR_channel__P_RyR) [picoA_per_millimolar] + this->mParameters[2] = 1; // (var_RyR_channel__K_m_Ca_cyt) [millimolar] + this->mParameters[3] = 162500; // (var_SR_calcium_pump__i_max) [picoA] + this->mParameters[4] = 1; // (var_internal_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[5] = 1.8; // (var_external_ion_concentrations__Cao) [millimolar] + this->mParameters[6] = 5.4000000000000004; // (var_external_ion_concentrations__Ko) [millimolar] + this->mParameters[7] = 140; // (var_external_ion_concentrations__Nao) [millimolar] + this->mParameters[8] = 8712; // (var_L_type_Ca_channel__P_CaL) [picoA_per_millimolar] + this->mParameters[9] = 132; // (var_membrane__Cm) [picoF] + this->mParameters[10] = 2860; // (var_sodium_current__P_Na) [picoA_per_millimolar] + this->mParameters[11] = 1.1459999999999999; // (var_time_independent_potassium_current__P_K1_0) [nanoS_per_picoF] + this->mParameters[12] = 0.0086400000000000001; // (var_rapid_time_dependent_potassium_current__P_Kr) [nanoS_per_picoF] + this->mParameters[13] = 5.04; // (var_slow_time_dependent_potassium_current__P_Ks_K) [picoA_per_millimolar] + this->mParameters[14] = 6.8099999999999996; // (var_sodium_calcium_exchanger__P_NaCa) [picoA_per_picoF] + this->mParameters[15] = 0.033000000000000002; // (var_transient_outward_current__P_to_K) [picoA_per_millimolar] + } + + Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::~Dynamicmatsuoka_model_2003FromCellMLGRL1Opt() + { + } + + AbstractLookupTableCollection* Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::GetLookupTableCollection() + { + return Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance(); + } + + void Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 37; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_membrane__i_tot = 0.38500000000000001 * var_constant_field_equations__CF_Na + 0.040000000000000001 * var_constant_field_equations__CF_Ca + 0.15400000000000003 * var_constant_field_equations__CF_K + 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) / (1 + 90.050628437051003 * pow((1 / (mParameters[7] * _lt_0_row[4])), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))) + 0.37 * var_chaste_interface__sodium_potassium_pump_y_gate__y / ((1 + 0.094 / var_chaste_interface__ATP_production__ATPi) * (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))))) * mParameters[9] + 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K + 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na + mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca + (var_chaste_interface__sodium_calcium_exchanger_y_gate__y * _lt_0_row[5] / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)) - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3))) * mParameters[9] * mParameters[14] + 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca + 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na + 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K + 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na + 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2 + 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)) + pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13] + pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2 + var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 + 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y + ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K / (_lt_0_row[7]))); // picoA + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot / mParameters[9]; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + std::vector& rY = rGetStateVariables(); + unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + + double d_dt_chaste_interface_var_membrane__Vm; + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA + const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K / (_lt_0_row[7]))); // picoA + const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + d_dt_chaste_interface_var_membrane__Vm = (-var_L_type_Ca_channel__i_CaL_Ca - var_L_type_Ca_channel__i_CaL_K - var_L_type_Ca_channel__i_CaL_Na - var_T_type_Ca_channel__i_Ca_T - var_background_Cab_current__i_Cab - var_background_KATP_current__i_KATP - var_background_Kpl_current__i_Kpl - var_background_NSC_current__i_bNSC_K - var_background_NSC_current__i_bNSC_Na - var_background_lCa_current__i_lCa_K - var_background_lCa_current__i_lCa_Na - var_membrane__i_ext - var_rapid_time_dependent_potassium_current__i_Kr - var_slow_time_dependent_potassium_current__i_Ks_K - var_slow_time_dependent_potassium_current__i_Ks_Na - var_sodium_calcium_exchanger__i_NaCa - var_sodium_current__i_Na_K - var_sodium_current__i_Na_Na - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to_K - var_transient_outward_current__i_to_Na) / mParameters[9]; // millivolt / millisecond + + double evalF = d_dt_chaste_interface_var_membrane__Vm; + mEvalF[0] = d_dt_chaste_interface_var_membrane__Vm; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + std::vector& rY = rGetStateVariables(); + const double delta = 1e-8; + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; + // Units: dimensionless; Initial value: 0.3556412697995689 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; + // Units: dimensionless; Initial value: 0.40285968661346977 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; + // Units: dimensionless; Initial value: 0.9968480629364956 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; + // Units: dimensionless; Initial value: 0.000877325391245903 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; + // Units: dimensionless; Initial value: 0.4250747299372254 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__RyR_channel__p_close_RyR = rY[30]; + // Units: dimensionless; Initial value: 0.19135178123107768 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__p_CCa = 1 - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; // dimensionless + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL = 1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // dimensionless + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_NL_model__Q_a = -0.0038999999999999998 * var_chaste_interface__NL_model__pCaCB + 0.0038999999999999998 * var_chaste_interface__NL_model__pCa * exp(-0.86212130841993795); // per_millisecond + const double var_NL_model__Q_d2 = 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCaCB; // per_millisecond + const double var_SR_T_current__i_SR_T = 386 * var_chaste_interface__Ca_concentrations_in_SR__Caup - 386 * var_Ca_concentrations_in_SR__Carel; // picoA + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_b = -0.029999999999999999 * var_chaste_interface__NL_model__pCa + 39 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB) * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCa = -var_NL_model__Q_a + var_NL_model__Q_b; // 1 / millisecond + const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCB = -0.12 * var_chaste_interface__NL_model__pCB - 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCB + var_NL_model__Q_r; // 1 / millisecond + const double d_dt_chaste_interface_var_NL_model__pCaCB = -var_NL_model__Q_d2 - var_NL_model__Q_r + var_NL_model__Q_a; // 1 / millisecond + const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA + const double var_SR_L_current__i_SR_L = (-var_internal_ion_concentrations__Cai + var_chaste_interface__Ca_concentrations_in_SR__Caup) * mParameters[0]; // picoA + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA + const double d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y = (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * (0.01 - 0.01 * var_SR_calcium_pump__p_E2Ca + var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) - (1 - 0.98999999999999999 * var_SR_calcium_pump__p_E1Ca) * var_chaste_interface__SR_calcium_pump_y_gate__y; // 1 / millisecond + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total = 3.2387883511406234e-5 * var_SR_T_current__i_SR_T - 3.2387883511406234e-5 * var_RyR_channel__i_RyR; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup = -1.2955153404562494e-5 * var_SR_L_current__i_SR_L - 1.2955153404562494e-5 * var_SR_T_current__i_SR_T - 1.2955153404562494e-5 * var_SR_calcium_pump__i_SR_U; // millimolar / millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y = (1 - var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y) / (_lt_0_row[8]) - var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y / (_lt_0_row[9]); // 1 / millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI = _lt_0_row[10]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP = _lt_0_row[11]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI = _lt_0_row[12]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = 0.0040000000000000001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL - (0.001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; // 1 / millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP = _lt_0_row[13]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = 0.001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL - (0.0040000000000000001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // 1 / millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI = 0.040000000000000001 / (1 + 0.25 * var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI / (var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI * var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP)); // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = (0.040000000000000001 - var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - (var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // 1 / millisecond + const double d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1 = (1 - var_chaste_interface__T_type_Ca_channel_y1_gate__y1) / (_lt_0_row[14]) - var_chaste_interface__T_type_Ca_channel_y1_gate__y1 / (_lt_0_row[15]); // 1 / millisecond + const double d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2 = (1 - var_chaste_interface__T_type_Ca_channel_y2_gate__y2) / (_lt_0_row[16]) - var_chaste_interface__T_type_Ca_channel_y2_gate__y2 / (_lt_0_row[17]); // 1 / millisecond + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C = 0.34999999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + 0.0041999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - (0.14299999999999999 + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C; // 1 / millisecond + const double var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca = 6.9539999999999997 * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U = 0.14299999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C + 2.0019999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa - (0.34999999999999998 + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa = 0.00029999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - 2.3519999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond + const double var_RyR_channel__k1 = 280000 * pow(var_internal_ion_concentrations__Cai, 2) / pow(mParameters[2], 2) - 150 * var_L_type_Ca_channel__p_open_CaL * var_L_type_Ca_channel_Ca_dependent_gate__iCaL; // per_millisecond + const double d_dt_chaste_interface_var_RyR_channel__p_close_RyR = -(0.00084900000000000004 + var_RyR_channel__k1) * var_chaste_interface__RyR_channel__p_close_RyR + 0.000377 * pow(var_Ca_concentrations_in_SR__Carel, 2) * (1 - var_chaste_interface__RyR_channel__p_close_RyR - var_chaste_interface__RyR_channel__p_open_RyR); // 1 / millisecond + const double d_dt_chaste_interface_var_RyR_channel__p_open_RyR = var_RyR_channel__k1 * var_chaste_interface__RyR_channel__p_close_RyR - 0.080000000000000002 * var_chaste_interface__RyR_channel__p_open_RyR / (1 + 0.35999999999999999 / var_Ca_concentrations_in_SR__Carel); // 1 / millisecond + const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA + const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K / (_lt_0_row[7]))); // picoA + const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1 = -(_lt_0_row[18]) * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 + (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) / (_lt_0_row[19]); // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2 = -(_lt_0_row[20]) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2) / (_lt_0_row[21]); // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3 = (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3) / (_lt_0_row[22]) - var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 / (_lt_0_row[23]); // 1 / millisecond + const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1 = (1 - var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1) / (_lt_0_row[24]) - var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 / (_lt_0_row[25]); // 1 / millisecond + const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2 = -0.004444 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 + 3.7000000000000002 * (1 - var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_internal_ion_concentrations__Cai; // 1 / millisecond + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y = (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * (1 / (1 + 1.3799999999999999 * (1 + 1.4927113702623908e-6 * pow(mParameters[7], 3)) / mParameters[5]) + var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) - (1 / (1 + 0.0013799999999999999 * (1 + 0.0014927113702623907 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)) / var_internal_ion_concentrations__Cai) + var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na) * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; // 1 / millisecond + const double var_sodium_calcium_exchanger__i_NaCa = (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total = 0.070000000000000007 * var_NL_model__Q_d2 + 0.070000000000000007 * var_NL_model__Q_r + 6.4775767022812476e-7 * var_RyR_channel__i_RyR + 6.4775767022812476e-7 * var_SR_L_current__i_SR_L + 6.4775767022812476e-7 * var_SR_calcium_pump__i_SR_U + 1.2955153404562495e-6 * var_sodium_calcium_exchanger__i_NaCa - 0.070000000000000007 * var_NL_model__Q_b - 6.4775767022812476e-7 * var_L_type_Ca_channel__i_CaL_Ca - 6.4775767022812476e-7 * var_T_type_Ca_channel__i_Ca_T - 6.4775767022812476e-7 * var_background_Cab_current__i_Cab; // millimolar / millisecond + const double d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y = (1 - var_chaste_interface__sodium_current_ultra_slow_gate__y) / (_lt_0_row[28]) - var_chaste_interface__sodium_current_ultra_slow_gate__y / (_lt_0_row[29]); // 1 / millisecond + const double var_sodium_current_voltage_dependent_gate__k_AI_RI = _lt_0_row[30]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_RP = _lt_0_row[32]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RI_AI = _lt_0_row[33]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_AP = _lt_0_row[34]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_RI = 0.01 / (1 + 8.7499999999999999e-5 * var_sodium_current_voltage_dependent_gate__k_AP_RP * var_sodium_current_voltage_dependent_gate__k_RI_AI / (var_sodium_current_voltage_dependent_gate__k_AI_RI * var_sodium_current_voltage_dependent_gate__k_AP_AI * var_sodium_current_voltage_dependent_gate__k_RP_AP)); // per_millisecond + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na = 8.7499999999999999e-5 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na + var_sodium_current_voltage_dependent_gate__k_RP_AP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na - (var_sodium_current_voltage_dependent_gate__k_AP_AI + var_sodium_current_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // 1 / millisecond + const double var_sodium_current_voltage_dependent_gate__p_RI_Na = 1 - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // dimensionless + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na = var_sodium_current_voltage_dependent_gate__k_AP_AI * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + var_sodium_current_voltage_dependent_gate__k_RI_AI * var_sodium_current_voltage_dependent_gate__p_RI_Na - (8.7499999999999999e-5 + var_sodium_current_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na; // 1 / millisecond + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na = (0.01 - var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_sodium_current_voltage_dependent_gate__p_RI_Na + var_sodium_current_voltage_dependent_gate__k_AP_RP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - (var_sodium_current_voltage_dependent_gate__k_RP_AP + var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // 1 / millisecond + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y = (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * (0.040000000000000001 * var_sodium_potassium_pump__p_E2Na + 0.16500000000000001 / (1 + 0.21928759810465578 * pow((1 / mParameters[6]), 1.1200000000000001) * (1 + 0.011104864200909382 * pow(var_sodium_potassium_pump__Nao_Eff, 1.0600000000000001)))) - (0.01 / (1 + 49.999265664512095 * pow((1 / var_chaste_interface__internal_ion_concentrations__Ki), 1.1200000000000001) * (1 + 0.22703754152993499 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 1.0600000000000001))) + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na) * var_chaste_interface__sodium_potassium_pump_y_gate__y; // 1 / millisecond + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double d_dt_chaste_interface_var_ATP_production__ATPi = 0.014999999999999999 + 3.2387883511406238e-7 * var_SR_calcium_pump__i_SR_U - 0.0030000000000000001 * var_chaste_interface__ATP_production__ATPi - 0.028000000000000004 * var_chaste_interface__NL_model__pCaCB - 1.2955153404562495e-6 * var_sodium_potassium_pump__i_NaK; // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y = (1 - var_chaste_interface__time_independent_potassium_current_y_gate__y) / (7 * exp(-0.32333333333333331 + 0.0033333333333333335 * var_chaste_interface__membrane__Vm - 0.0033333333333333335 * var_time_independent_potassium_current__E_K) + 8000 * exp(-11.411764705882353 + 0.11764705882352941 * var_chaste_interface__membrane__Vm - 0.11764705882352941 * var_time_independent_potassium_current__E_K)) - pow(var_time_independent_potassium_current__fO, 4) * var_chaste_interface__time_independent_potassium_current_y_gate__y / (0.00013999999999999999 * exp(10.659340659340661 + 0.10989010989010989 * var_time_independent_potassium_current__E_K - 0.10989010989010989 * var_chaste_interface__membrane__Vm) + 0.20000000000000001 * exp(0.19400000000000001 + 0.002 * var_time_independent_potassium_current__E_K - 0.002 * var_chaste_interface__membrane__Vm)); // 1 / millisecond + const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1 = (1 - var_chaste_interface__transient_outward_current_y1_gate__y1) / (_lt_0_row[35]) - var_chaste_interface__transient_outward_current_y1_gate__y1 / (_lt_0_row[36]); // 1 / millisecond + const double d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2 = 0.0038 * (1 - var_chaste_interface__transient_outward_current_y2_gate__y2) * _lt_0_row[38] / (_lt_0_row[37]) - 0.0038 * var_chaste_interface__transient_outward_current_y2_gate__y2 * _lt_0_row[40] / (_lt_0_row[39]); // 1 / millisecond + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Ki = -1.2955153404562495e-6 * (-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_K + var_background_KATP_current__i_KATP + var_background_Kpl_current__i_Kpl + var_background_NSC_current__i_bNSC_K + var_background_lCa_current__i_lCa_K + var_membrane__i_ext + var_rapid_time_dependent_potassium_current__i_Kr + var_slow_time_dependent_potassium_current__i_Ks_K + var_sodium_current__i_Na_K + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to_K) * mParameters[4]; // millimolar / millisecond + const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Nai = -1.2955153404562495e-6 * (3 * var_sodium_calcium_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_Na + var_background_NSC_current__i_bNSC_Na + var_background_lCa_current__i_lCa_Na + var_slow_time_dependent_potassium_current__i_Ks_Na + var_sodium_current__i_Na_Na + var_transient_outward_current__i_to_Na) * mParameters[4]; // millimolar / millisecond + + mEvalF[1] = d_dt_chaste_interface_var_internal_ion_concentrations__Nai; + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time, rY, delta); + mEvalF[2] = d_dt_chaste_interface_var_internal_ion_concentrations__Ki; + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time, rY, delta); + mEvalF[3] = d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total; + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time, rY, delta); + mEvalF[4] = d_dt_chaste_interface_var_ATP_production__ATPi; + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time, rY, delta); + mEvalF[5] = d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na; + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time, rY, delta); + mEvalF[6] = d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na; + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time, rY, delta); + mEvalF[7] = d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na; + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time, rY, delta); + mEvalF[8] = d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y; + mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time, rY, delta); + mEvalF[9] = d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time, rY, delta); + mEvalF[10] = d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; + mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time, rY, delta); + mEvalF[11] = d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; + mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time, rY, delta); + mEvalF[12] = d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U; + mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time, rY, delta); + mEvalF[13] = d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa; + mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time, rY, delta); + mEvalF[14] = d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C; + mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time, rY, delta); + mEvalF[15] = d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y; + mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time, rY, delta); + mEvalF[16] = d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1; + mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time, rY, delta); + mEvalF[17] = d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2; + mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time, rY, delta); + mEvalF[18] = d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y; + mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time, rY, delta); + mEvalF[19] = d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1; + mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time, rY, delta); + mEvalF[20] = d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2; + mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time, rY, delta); + mEvalF[21] = d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3; + mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time, rY, delta); + mEvalF[22] = d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1; + mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time, rY, delta); + mEvalF[23] = d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2; + mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time, rY, delta); + mEvalF[24] = d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1; + mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time, rY, delta); + mEvalF[25] = d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2; + mPartialF[25] = EvaluatePartialDerivative25(var_chaste_interface__environment__time, rY, delta); + mEvalF[26] = d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y; + mPartialF[26] = EvaluatePartialDerivative26(var_chaste_interface__environment__time, rY, delta); + mEvalF[27] = d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y; + mPartialF[27] = EvaluatePartialDerivative27(var_chaste_interface__environment__time, rY, delta); + mEvalF[28] = d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y; + mPartialF[28] = EvaluatePartialDerivative28(var_chaste_interface__environment__time, rY, delta); + mEvalF[29] = d_dt_chaste_interface_var_RyR_channel__p_open_RyR; + mPartialF[29] = EvaluatePartialDerivative29(var_chaste_interface__environment__time, rY, delta); + mEvalF[30] = d_dt_chaste_interface_var_RyR_channel__p_close_RyR; + mPartialF[30] = EvaluatePartialDerivative30(var_chaste_interface__environment__time, rY, delta); + mEvalF[31] = d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total; + mPartialF[31] = EvaluatePartialDerivative31(var_chaste_interface__environment__time, rY, delta); + mEvalF[32] = d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup; + mPartialF[32] = EvaluatePartialDerivative32(var_chaste_interface__environment__time, rY, delta); + mEvalF[33] = d_dt_chaste_interface_var_NL_model__pCa; + mPartialF[33] = EvaluatePartialDerivative33(var_chaste_interface__environment__time, rY, delta); + mEvalF[34] = d_dt_chaste_interface_var_NL_model__pCaCB; + mPartialF[34] = EvaluatePartialDerivative34(var_chaste_interface__environment__time, rY, delta); + mEvalF[35] = d_dt_chaste_interface_var_NL_model__pCB; + mPartialF[35] = EvaluatePartialDerivative35(var_chaste_interface__environment__time, rY, delta); + mEvalF[36] = d_dt_chaste_interface_var_NL_model__X; + mPartialF[36] = EvaluatePartialDerivative36(var_chaste_interface__environment__time, rY, delta); + + { + if (fabs(mPartialF[1]) < delta){ + rY[1] += mDt*d_dt_chaste_interface_var_internal_ion_concentrations__Nai; + } + else + { + rY[1] += (d_dt_chaste_interface_var_internal_ion_concentrations__Nai/mPartialF[1])*(exp(mPartialF[1]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[2]) < delta){ + rY[2] += mDt*d_dt_chaste_interface_var_internal_ion_concentrations__Ki; + } + else + { + rY[2] += (d_dt_chaste_interface_var_internal_ion_concentrations__Ki/mPartialF[2])*(exp(mPartialF[2]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[3]) < delta){ + rY[3] += mDt*d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total; + } + else + { + rY[3] += (d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total/mPartialF[3])*(exp(mPartialF[3]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[4]) < delta){ + rY[4] += mDt*d_dt_chaste_interface_var_ATP_production__ATPi; + } + else + { + rY[4] += (d_dt_chaste_interface_var_ATP_production__ATPi/mPartialF[4])*(exp(mPartialF[4]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[5]) < delta){ + rY[5] += mDt*d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na; + } + else + { + rY[5] += (d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na/mPartialF[5])*(exp(mPartialF[5]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[6]) < delta){ + rY[6] += mDt*d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na; + } + else + { + rY[6] += (d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na/mPartialF[6])*(exp(mPartialF[6]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[7]) < delta){ + rY[7] += mDt*d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na; + } + else + { + rY[7] += (d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na/mPartialF[7])*(exp(mPartialF[7]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[8]) < delta){ + rY[8] += mDt*d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y; + } + else + { + rY[8] += (d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y/mPartialF[8])*(exp(mPartialF[8]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[9]) < delta){ + rY[9] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + } + else + { + rY[9] += (d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL/mPartialF[9])*(exp(mPartialF[9]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[10]) < delta){ + rY[10] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; + } + else + { + rY[10] += (d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL/mPartialF[10])*(exp(mPartialF[10]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[11]) < delta){ + rY[11] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; + } + else + { + rY[11] += (d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL/mPartialF[11])*(exp(mPartialF[11]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[12]) < delta){ + rY[12] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U; + } + else + { + rY[12] += (d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U/mPartialF[12])*(exp(mPartialF[12]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[13]) < delta){ + rY[13] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa; + } + else + { + rY[13] += (d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa/mPartialF[13])*(exp(mPartialF[13]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[14]) < delta){ + rY[14] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C; + } + else + { + rY[14] += (d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C/mPartialF[14])*(exp(mPartialF[14]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[15]) < delta){ + rY[15] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y; + } + else + { + rY[15] += (d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y/mPartialF[15])*(exp(mPartialF[15]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[16]) < delta){ + rY[16] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1; + } + else + { + rY[16] += (d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1/mPartialF[16])*(exp(mPartialF[16]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[17]) < delta){ + rY[17] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2; + } + else + { + rY[17] += (d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2/mPartialF[17])*(exp(mPartialF[17]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[18]) < delta){ + rY[18] += mDt*d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y; + } + else + { + rY[18] += (d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y/mPartialF[18])*(exp(mPartialF[18]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[19]) < delta){ + rY[19] += mDt*d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1; + } + else + { + rY[19] += (d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1/mPartialF[19])*(exp(mPartialF[19]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[20]) < delta){ + rY[20] += mDt*d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2; + } + else + { + rY[20] += (d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2/mPartialF[20])*(exp(mPartialF[20]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[21]) < delta){ + rY[21] += mDt*d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3; + } + else + { + rY[21] += (d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3/mPartialF[21])*(exp(mPartialF[21]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[22]) < delta){ + rY[22] += mDt*d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1; + } + else + { + rY[22] += (d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1/mPartialF[22])*(exp(mPartialF[22]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[23]) < delta){ + rY[23] += mDt*d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2; + } + else + { + rY[23] += (d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2/mPartialF[23])*(exp(mPartialF[23]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[24]) < delta){ + rY[24] += mDt*d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1; + } + else + { + rY[24] += (d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1/mPartialF[24])*(exp(mPartialF[24]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[25]) < delta){ + rY[25] += mDt*d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2; + } + else + { + rY[25] += (d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2/mPartialF[25])*(exp(mPartialF[25]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[26]) < delta){ + rY[26] += mDt*d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y; + } + else + { + rY[26] += (d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y/mPartialF[26])*(exp(mPartialF[26]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[27]) < delta){ + rY[27] += mDt*d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y; + } + else + { + rY[27] += (d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y/mPartialF[27])*(exp(mPartialF[27]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[28]) < delta){ + rY[28] += mDt*d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y; + } + else + { + rY[28] += (d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y/mPartialF[28])*(exp(mPartialF[28]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[29]) < delta){ + rY[29] += mDt*d_dt_chaste_interface_var_RyR_channel__p_open_RyR; + } + else + { + rY[29] += (d_dt_chaste_interface_var_RyR_channel__p_open_RyR/mPartialF[29])*(exp(mPartialF[29]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[30]) < delta){ + rY[30] += mDt*d_dt_chaste_interface_var_RyR_channel__p_close_RyR; + } + else + { + rY[30] += (d_dt_chaste_interface_var_RyR_channel__p_close_RyR/mPartialF[30])*(exp(mPartialF[30]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[31]) < delta){ + rY[31] += mDt*d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total; + } + else + { + rY[31] += (d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total/mPartialF[31])*(exp(mPartialF[31]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[32]) < delta){ + rY[32] += mDt*d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup; + } + else + { + rY[32] += (d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup/mPartialF[32])*(exp(mPartialF[32]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[33]) < delta){ + rY[33] += mDt*d_dt_chaste_interface_var_NL_model__pCa; + } + else + { + rY[33] += (d_dt_chaste_interface_var_NL_model__pCa/mPartialF[33])*(exp(mPartialF[33]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[34]) < delta){ + rY[34] += mDt*d_dt_chaste_interface_var_NL_model__pCaCB; + } + else + { + rY[34] += (d_dt_chaste_interface_var_NL_model__pCaCB/mPartialF[34])*(exp(mPartialF[34]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[35]) < delta){ + rY[35] += mDt*d_dt_chaste_interface_var_NL_model__pCB; + } + else + { + rY[35] += (d_dt_chaste_interface_var_NL_model__pCB/mPartialF[35])*(exp(mPartialF[35]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[36]) < delta){ + rY[36] += mDt*d_dt_chaste_interface_var_NL_model__X; + } + else + { + rY[36] += (d_dt_chaste_interface_var_NL_model__X/mPartialF[36])*(exp(mPartialF[36]*mDt)-1.0); + } + + } + + } + + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative0(double var_chaste_interface__environment__time, std::vector& rY) + { + double d_dt_chaste_interface_var_membrane__Vm; + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA + const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K / (_lt_0_row[7]))); // picoA + const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + d_dt_chaste_interface_var_membrane__Vm = (-var_L_type_Ca_channel__i_CaL_Ca - var_L_type_Ca_channel__i_CaL_K - var_L_type_Ca_channel__i_CaL_Na - var_T_type_Ca_channel__i_Ca_T - var_background_Cab_current__i_Cab - var_background_KATP_current__i_KATP - var_background_Kpl_current__i_Kpl - var_background_NSC_current__i_bNSC_K - var_background_NSC_current__i_bNSC_Na - var_background_lCa_current__i_lCa_K - var_background_lCa_current__i_lCa_Na - var_membrane__i_ext - var_rapid_time_dependent_potassium_current__i_Kr - var_slow_time_dependent_potassium_current__i_Ks_K - var_slow_time_dependent_potassium_current__i_Ks_Na - var_sodium_calcium_exchanger__i_NaCa - var_sodium_current__i_Na_K - var_sodium_current__i_Na_Na - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to_K - var_transient_outward_current__i_to_Na) / mParameters[9]; // millivolt / millisecond + + return d_dt_chaste_interface_var_membrane__Vm; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative0(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x0 = 1 / mParameters[9]; + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x10 = var_x3 * mParameters[5]; + const double var_x11 = -0.026190000000000001 + var_x8 + var_x9 - var_x10; + const double var_x12 = var_x11 * var_x5; + const double var_x13 = 0.0056055744906903715 * var_chaste_interface__membrane__Vm; + const double var_x14 = ((var_x1) ? (0) : (0.074870384603595908 * var_x12 + var_x10 * var_x13 * var_x5 - var_x11 * var_x13 * var_x3 / pow(var_x4, 2))); + const double var_x15 = mParameters[14]; + const double var_x16 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x17 = 1 / var_x16; + const double var_x18 = -17.978260869565219 + 362.31884057971018 * var_x7 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x19 = var_x17 * var_x18; + const double var_x20 = _lt_0_row[5]; + const double var_x21 = var_x20 / (1 + 669.921875 * var_x19); + const double var_x22 = pow(mParameters[7], 3); + const double var_x23 = _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / var_x22); + const double var_x24 = 0.011979261536575346 * var_x21 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y + 0.025455930765222609 * var_x23 * (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y); + const double var_x25 = var_x24 * mParameters[9]; + const double var_x26 = 612 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2; + const double var_x27 = var_x26 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1; + const double var_x28 = 1 - var_chaste_interface__sodium_potassium_pump_y_gate__y; + const double var_x29 = _lt_0_row[4]; + const double var_x30 = pow((1 / (var_x29 * mParameters[7])), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001)); + const double var_x31 = var_x30 / pow((0.011104864200909382 + var_x30), 2); + const double var_x32 = var_x28 * var_x31 * mParameters[9]; + const double var_x33 = var_x14 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x34 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x35 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x36 = 1 / (1 + 2.7439999999999993 * var_x35); + const double var_x37 = var_x36 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x38 = var_x34 * var_x37; + const double var_x39 = var_x33 * var_x38; + const double var_x40 = 0.037435192301797954 * var_chaste_interface__membrane__Vm; + const double var_x41 = exp(-var_x40); + const double var_x42 = var_x41 * mParameters[7]; + const double var_x43 = -var_x42 + var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x44 = 1 - var_x41; + const double var_x45 = 1 / var_x44; + const double var_x46 = 0.037435192301797954 * var_x45; + const double var_x47 = 0.0014013936226725929 * var_chaste_interface__membrane__Vm; + const double var_x48 = var_x45 * var_x47; + const double var_x49 = var_x41 * var_x47 / pow(var_x44, 2); + const double var_x50 = ((var_x1) ? (0) : (var_x42 * var_x48 + var_x43 * var_x46 - var_x43 * var_x49)); + const double var_x51 = var_x6 + var_x7; + const double var_x52 = 1 + 1.3823999999999997e-8 / pow(var_x51, 3); + const double var_x53 = 0.11 / var_x52; + const double var_x54 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); + const double var_x55 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; + const double var_x56 = var_x54 * var_x55; + const double var_x57 = 0.2016 * var_x56; + const double var_x58 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); + const double var_x59 = 0.00297 * var_x58; + const double var_x60 = var_x59 * var_chaste_interface__transient_outward_current_y2_gate__y2; + const double var_x61 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; + const double var_x62 = var_x61 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; + const double var_x63 = var_x37 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x64 = var_x34 * var_x63; + const double var_x65 = 1.8499999999999999e-5 * var_x64; + const double var_x66 = 0.38500000000000001 * var_x50 + var_x50 * var_x53 + var_x50 * var_x57 + var_x50 * var_x60 + var_x50 * var_x62 + var_x50 * var_x65; + const double var_x67 = var_x41 * mParameters[6]; + const double var_x68 = -var_x67 + var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x69 = ((var_x1) ? (0) : (var_x46 * var_x68 + var_x48 * var_x67 - var_x49 * var_x68)); + const double var_x70 = pow(var_chaste_interface__ATP_production__ATPi, 2); + const double var_x71 = pow(mParameters[6], 0.23999999999999999); + const double var_x72 = var_x71 / (1 + 99.999999999999986 * var_x70); + const double var_x73 = var_x56 * mParameters[13]; + const double var_x74 = var_x58 * mParameters[15]; + const double var_x75 = var_x74 * var_chaste_interface__transient_outward_current_y2_gate__y2; + const double var_x76 = 0.10000000000000001 * var_x62; + const double var_x77 = 0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1; + const double var_x78 = 0.71370912277944121 * var_x77; + const double var_x79 = pow(mParameters[6], 0.20000000000000001); + const double var_x80 = var_x79 * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; + const double var_x81 = pow(mParameters[6], 0.40000000000000002); + const double var_x82 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x83 = log(var_x82 * mParameters[6]); + const double var_x84 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x83); + const double var_x85 = 1 + var_x84; + const double var_x86 = pow(var_x85, 4); + const double var_x87 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x83); + const double var_x88 = 1 + var_x87; + const double var_x89 = pow(var_x88, (-4)); + const double var_x90 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x83); + const double var_x91 = 1 + var_x90; + const double var_x92 = 1 / var_x91; + const double var_x93 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x83); + const double var_x94 = var_x92 * var_x93; + const double var_x95 = exp(0.47999999999999998 + 1.282215932351298 * var_x83 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x96 = var_x95 / var_x88; + const double var_x97 = var_x85 * var_x96; + const double var_x98 = var_x97 + 0.25 * var_x94; + const double var_x99 = pow(var_x98, (-4)); + const double var_x100 = pow(var_x95, 4); + const double var_x101 = var_x100 * var_x89 * var_x99; + const double var_x102 = var_x101 * var_x86; + const double var_x103 = var_x102; + const double var_x104 = pow(var_x91, (-2)); + const double var_x105 = pow(var_x95, 2); + const double var_x106 = pow(var_x93, 2); + const double var_x107 = var_x104 * var_x105 * var_x106 * var_x99; + const double var_x108 = pow(var_x88, (-2)); + const double var_x109 = pow(var_x85, 2); + const double var_x110 = var_x108 * var_x109; + const double var_x111 = var_x107 * var_x110; + const double var_x112 = pow(var_x85, 3); + const double var_x113 = pow(var_x88, (-3)); + const double var_x114 = pow(var_x95, 3); + const double var_x115 = pow(var_x98, (-3)); + const double var_x116 = 1 / (0.75 * var_x94 + 3 * var_x97); + const double var_x117 = var_x115 * var_x116; + const double var_x118 = var_x112 * var_x113 * var_x114 * var_x117 * var_x94; + const double var_x119 = var_x81 * (var_x103 + 0.125 * var_x111 + 2 * var_x118) * mParameters[11]; + const double var_x120 = 0.50938071193859957 * var_x119; + const double var_x121 = mParameters[9] * var_chaste_interface__time_independent_potassium_current_y_gate__y; + const double var_x122 = 0.00036499999999999998 * var_x64; + const double var_x123 = 0.12 * var_x87; + const double var_x124 = pow(var_x88, (-5)); + const double var_x125 = var_x100 * var_x86; + const double var_x126 = var_x124 * var_x125 * var_x99; + const double var_x127 = pow(var_x98, (-5)); + const double var_x128 = var_x104 * var_x90 * var_x93; + const double var_x129 = var_x84 * var_x96; + const double var_x130 = var_x108 * var_x85 * var_x95; + const double var_x131 = 0.014999999999999999 * var_x128 + 0.192 * var_x97 - 0.25600000000000001 * var_x129 - 0.035000000000000003 * var_x94 + var_x123 * var_x130; + const double var_x132 = var_x105 * var_x106 * var_x110 * var_x90 * var_x99 / pow(var_x91, 3); + const double var_x133 = var_x107 * var_x109 * var_x113; + const double var_x134 = var_x130 * var_x87; + const double var_x135 = 0.01125 * var_x128 + 0.089999999999999997 * var_x134 + 0.14400000000000002 * var_x97 - 0.192 * var_x129 - 0.026250000000000002 * var_x94; + const double var_x136 = var_x114 * var_x117; + const double var_x137 = var_x112 * var_x136; + const double var_x138 = var_x113 * var_x137; + const double var_x139 = var_x87 * var_x89; + const double var_x140 = -26.712831923985377 * var_x83 + var_chaste_interface__membrane__Vm; + const double var_x141 = 0.50938071193859957 * var_x121 * var_x140 * var_x81 * mParameters[11]; + const double var_x142 = pow(mParameters[6], 0.16); + const double var_x143 = 0.0010924717003124302 * var_x142; + const double var_x144 = var_chaste_interface__membrane__Vm == (-3); + const double var_x145 = var_x40 * var_x45; + const double var_x146 = ((var_x1) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (var_x145 * var_x68)); + const double var_x147 = var_x142 * var_x146; + const double var_x148 = 0.076923076923076927 * var_chaste_interface__membrane__Vm; + const double var_x149 = exp(-0.23076923076923078 - var_x148); + const double var_x150 = 1 - var_x149; + const double var_x151 = 8.3986538766456042e-5 / var_x150; + const double var_x152 = 3 + var_chaste_interface__membrane__Vm; + const double var_x153 = var_x142 * var_x151 * var_x152; + const double var_x154 = 44.047040000000003 * var_x72 + 0.15400000000000003 * var_x69 + var_x120 * var_x121 + var_x122 * var_x69 + var_x141 * (-0.0032499999999999994 * var_x111 - 0.0037499999999999999 * var_x132 - 0.192 * var_x102 - 0.218 * var_x118 - var_x123 * var_x126 - 0.0074999999999999997 * var_x133 * var_x87 - 0.029999999999999999 * var_x128 * var_x138 - 0.17999999999999999 * var_x112 * var_x136 * var_x139 * var_x94 + var_x100 * var_x127 * var_x131 * var_x86 * var_x89 + 0.25600000000000001 * var_x100 * var_x112 * var_x84 * var_x89 * var_x99 + 0.125 * var_x104 * var_x105 * var_x106 * var_x108 * var_x109 * var_x127 * var_x131 + 0.016 * var_x104 * var_x105 * var_x106 * var_x108 * var_x84 * var_x85 * var_x99 + 0.22222222222222221 * var_x112 * var_x113 * var_x114 * var_x127 * var_x135 * var_x92 * var_x93 + 2 * var_x112 * var_x113 * var_x114 * var_x116 * var_x135 * var_x92 * var_x93 * var_x99 + 0.38400000000000001 * var_x109 * var_x113 * var_x114 * var_x115 * var_x116 * var_x84 * var_x92 * var_x93) + var_x53 * var_x69 + var_x69 * var_x73 + var_x69 * var_x75 + var_x69 * var_x76 + var_x78 * var_x80 + ((var_x144) ? (var_x143 * var_x69) : (var_x147 * var_x151 + var_x153 * var_x69 - 6.4605029820350801e-6 * var_x147 * var_x149 * var_x152 / pow(var_x150, 2))); + + partialF = var_x0 * (-var_x154 - var_x39 - var_x66 - 0.040000000000000001 * var_x14 - 0.0003035235018269044 * var_x32 - var_x14 * var_x27 - var_x15 * var_x25); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative1(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Nai = -1.2955153404562495e-6 * (3 * var_sodium_calcium_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_Na + var_background_NSC_current__i_bNSC_Na + var_background_lCa_current__i_lCa_Na + var_slow_time_dependent_potassium_current__i_Ks_Na + var_sodium_current__i_Na_Na + var_transient_outward_current__i_to_Na) * mParameters[4]; // millimolar / millisecond + + return d_dt_chaste_interface_var_internal_ion_concentrations__Nai; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative1(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x16 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x17 = 1 / var_x16; + const double var_x18 = -17.978260869565219 + 362.31884057971018 * var_x7 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x19 = var_x17 * var_x18; + const double var_x20 = _lt_0_row[5]; + const double var_x34 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x35 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x36 = 1 / (1 + 2.7439999999999993 * var_x35); + const double var_x37 = var_x36 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x40 = 0.037435192301797954 * var_chaste_interface__membrane__Vm; + const double var_x41 = exp(-var_x40); + const double var_x44 = 1 - var_x41; + const double var_x45 = 1 / var_x44; + const double var_x51 = var_x6 + var_x7; + const double var_x52 = 1 + 1.3823999999999997e-8 / pow(var_x51, 3); + const double var_x53 = 0.11 / var_x52; + const double var_x54 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); + const double var_x55 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; + const double var_x56 = var_x54 * var_x55; + const double var_x57 = 0.2016 * var_x56; + const double var_x58 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); + const double var_x59 = 0.00297 * var_x58; + const double var_x60 = var_x59 * var_chaste_interface__transient_outward_current_y2_gate__y2; + const double var_x61 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; + const double var_x62 = var_x61 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; + const double var_x63 = var_x37 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x64 = var_x34 * var_x63; + const double var_x65 = 1.8499999999999999e-5 * var_x64; + const double var_x145 = var_x40 * var_x45; + const double var_x155 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x156 = pow(var_x155, 1.0600000000000001); + const double var_x157 = 1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001); + const double var_x158 = var_x156 * var_x157; + const double var_x159 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x160 = 1 + 0.094 * var_x159; + const double var_x161 = 1 / var_x160; + const double var_x162 = pow((0.22703754152993499 + var_x158), (-2)); + const double var_x163 = var_x161 * var_x162; + const double var_x164 = mParameters[9] * var_chaste_interface__sodium_potassium_pump_y_gate__y; + const double var_x165 = var_x155 * var_x158 * var_x163 * var_x164; + const double var_x166 = pow(var_chaste_interface__internal_ion_concentrations__Nai, (-4)); + const double var_x167 = pow((0.0014927113702623907 + var_x19), (-2)); + const double var_x168 = var_x167 * var_x20; + const double var_x169 = var_x166 * var_x168 * var_x18; + const double var_x170 = mParameters[9] * mParameters[14]; + const double var_x171 = var_x170 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; + const double var_x172 = ((var_x1) ? (0) : (var_x145)); + const double var_x173 = 0.38500000000000001 * var_x172 + var_x172 * var_x53 + var_x172 * var_x57 + var_x172 * var_x60 + var_x172 * var_x62 + var_x172 * var_x65; + const double var_x240 = 1.2955153404562495e-6 * mParameters[4]; + const double var_x241 = var_x169 * var_x171; + + partialF = -var_x240 * (var_x173 + 5.6097797986465521 * var_x165 + 0.013434402332361517 * var_x241); + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative2(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm / (_lt_0_row[3]))); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K / (_lt_0_row[7]))); // picoA + const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA + const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Ki = -1.2955153404562495e-6 * (-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_K + var_background_KATP_current__i_KATP + var_background_Kpl_current__i_Kpl + var_background_NSC_current__i_bNSC_K + var_background_lCa_current__i_lCa_K + var_membrane__i_ext + var_rapid_time_dependent_potassium_current__i_Kr + var_slow_time_dependent_potassium_current__i_Ks_K + var_sodium_current__i_Na_K + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to_K) * mParameters[4]; // millimolar / millisecond + + return d_dt_chaste_interface_var_internal_ion_concentrations__Ki; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative2(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x34 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x35 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x36 = 1 / (1 + 2.7439999999999993 * var_x35); + const double var_x37 = var_x36 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x40 = 0.037435192301797954 * var_chaste_interface__membrane__Vm; + const double var_x41 = exp(-var_x40); + const double var_x44 = 1 - var_x41; + const double var_x45 = 1 / var_x44; + const double var_x51 = var_x6 + var_x7; + const double var_x52 = 1 + 1.3823999999999997e-8 / pow(var_x51, 3); + const double var_x53 = 0.11 / var_x52; + const double var_x54 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); + const double var_x55 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; + const double var_x56 = var_x54 * var_x55; + const double var_x58 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); + const double var_x61 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; + const double var_x62 = var_x61 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; + const double var_x63 = var_x37 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x64 = var_x34 * var_x63; + const double var_x70 = pow(var_chaste_interface__ATP_production__ATPi, 2); + const double var_x71 = pow(mParameters[6], 0.23999999999999999); + const double var_x72 = var_x71 / (1 + 99.999999999999986 * var_x70); + const double var_x73 = var_x56 * mParameters[13]; + const double var_x74 = var_x58 * mParameters[15]; + const double var_x75 = var_x74 * var_chaste_interface__transient_outward_current_y2_gate__y2; + const double var_x76 = 0.10000000000000001 * var_x62; + const double var_x77 = 0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1; + const double var_x79 = pow(mParameters[6], 0.20000000000000001); + const double var_x80 = var_x79 * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; + const double var_x81 = pow(mParameters[6], 0.40000000000000002); + const double var_x82 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x83 = log(var_x82 * mParameters[6]); + const double var_x84 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x83); + const double var_x85 = 1 + var_x84; + const double var_x86 = pow(var_x85, 4); + const double var_x87 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x83); + const double var_x88 = 1 + var_x87; + const double var_x89 = pow(var_x88, (-4)); + const double var_x90 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x83); + const double var_x91 = 1 + var_x90; + const double var_x92 = 1 / var_x91; + const double var_x93 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x83); + const double var_x94 = var_x92 * var_x93; + const double var_x95 = exp(0.47999999999999998 + 1.282215932351298 * var_x83 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x96 = var_x95 / var_x88; + const double var_x97 = var_x85 * var_x96; + const double var_x98 = var_x97 + 0.25 * var_x94; + const double var_x99 = pow(var_x98, (-4)); + const double var_x100 = pow(var_x95, 4); + const double var_x101 = var_x100 * var_x89 * var_x99; + const double var_x102 = var_x101 * var_x86; + const double var_x103 = var_x102; + const double var_x104 = pow(var_x91, (-2)); + const double var_x105 = pow(var_x95, 2); + const double var_x106 = pow(var_x93, 2); + const double var_x107 = var_x104 * var_x105 * var_x106 * var_x99; + const double var_x108 = pow(var_x88, (-2)); + const double var_x109 = pow(var_x85, 2); + const double var_x110 = var_x108 * var_x109; + const double var_x111 = var_x107 * var_x110; + const double var_x112 = pow(var_x85, 3); + const double var_x113 = pow(var_x88, (-3)); + const double var_x114 = pow(var_x95, 3); + const double var_x115 = pow(var_x98, (-3)); + const double var_x116 = 1 / (0.75 * var_x94 + 3 * var_x97); + const double var_x117 = var_x115 * var_x116; + const double var_x118 = var_x112 * var_x113 * var_x114 * var_x117 * var_x94; + const double var_x119 = var_x81 * (var_x103 + 0.125 * var_x111 + 2 * var_x118) * mParameters[11]; + const double var_x121 = mParameters[9] * var_chaste_interface__time_independent_potassium_current_y_gate__y; + const double var_x122 = 0.00036499999999999998 * var_x64; + const double var_x124 = pow(var_x88, (-5)); + const double var_x125 = var_x100 * var_x86; + const double var_x126 = var_x124 * var_x125 * var_x99; + const double var_x127 = pow(var_x98, (-5)); + const double var_x128 = var_x104 * var_x90 * var_x93; + const double var_x129 = var_x84 * var_x96; + const double var_x130 = var_x108 * var_x85 * var_x95; + const double var_x132 = var_x105 * var_x106 * var_x110 * var_x90 * var_x99 / pow(var_x91, 3); + const double var_x133 = var_x107 * var_x109 * var_x113; + const double var_x134 = var_x130 * var_x87; + const double var_x136 = var_x114 * var_x117; + const double var_x137 = var_x112 * var_x136; + const double var_x138 = var_x113 * var_x137; + const double var_x139 = var_x87 * var_x89; + const double var_x140 = -26.712831923985377 * var_x83 + var_chaste_interface__membrane__Vm; + const double var_x141 = 0.50938071193859957 * var_x121 * var_x140 * var_x81 * mParameters[11]; + const double var_x142 = pow(mParameters[6], 0.16); + const double var_x143 = 0.0010924717003124302 * var_x142; + const double var_x144 = var_chaste_interface__membrane__Vm == (-3); + const double var_x145 = var_x40 * var_x45; + const double var_x148 = 0.076923076923076927 * var_chaste_interface__membrane__Vm; + const double var_x149 = exp(-0.23076923076923078 - var_x148); + const double var_x150 = 1 - var_x149; + const double var_x151 = 8.3986538766456042e-5 / var_x150; + const double var_x152 = 3 + var_chaste_interface__membrane__Vm; + const double var_x153 = var_x142 * var_x151 * var_x152; + const double var_x155 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x156 = pow(var_x155, 1.0600000000000001); + const double var_x157 = 1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001); + const double var_x158 = var_x156 * var_x157; + const double var_x159 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x160 = 1 + 0.094 * var_x159; + const double var_x161 = 1 / var_x160; + const double var_x162 = pow((0.22703754152993499 + var_x158), (-2)); + const double var_x163 = var_x161 * var_x162; + const double var_x164 = mParameters[9] * var_chaste_interface__sodium_potassium_pump_y_gate__y; + const double var_x174 = pow(var_chaste_interface__internal_ion_concentrations__Ki, 0.12000000000000011); + const double var_x175 = ((var_x1) ? (1) : (var_x145)); + const double var_x176 = var_x82 * var_x94; + const double var_x177 = var_x128 * var_x82; + const double var_x178 = var_x82 * var_x97; + const double var_x179 = var_x129 * var_x82; + const double var_x180 = var_x134 * var_x82; + const double var_x181 = 0.40069247885978065 * var_x177 + 3.2055398308782452 * var_x180 + 5.1288637294051922 * var_x178 - 6.8384849725402566 * var_x179 - 0.93494911733948827 * var_x176; + const double var_x182 = var_x82 * var_x87; + const double var_x183 = 0.30051935914483546 * var_x177 + 2.4041548731586837 * var_x180 + 3.8466477970538944 * var_x178 - 5.1288637294051922 * var_x179 - 0.70121183800461617 * var_x176; + const double var_x184 = 0.15400000000000003 * var_x175 + var_x122 * var_x175 + var_x141 * (-0.10017311971494516 * var_x132 * var_x82 - 0.20034623942989033 * var_x133 * var_x182 - 0.80138495771956131 * var_x138 * var_x177 - 3.2055398308782452 * var_x126 * var_x182 - 5.1288637294051922 * var_x102 * var_x82 - 0.086816703752952459 * var_x111 * var_x82 - 5.823397359428812 * var_x138 * var_x176 - 4.8083097463173674 * var_x137 * var_x139 * var_x176 + var_x100 * var_x127 * var_x181 * var_x86 * var_x89 + 6.8384849725402566 * var_x100 * var_x112 * var_x82 * var_x84 * var_x89 * var_x99 + 0.125 * var_x104 * var_x105 * var_x106 * var_x108 * var_x109 * var_x127 * var_x181 + 0.22222222222222221 * var_x112 * var_x113 * var_x114 * var_x127 * var_x183 * var_x92 * var_x93 + 2 * var_x112 * var_x113 * var_x114 * var_x116 * var_x183 * var_x92 * var_x93 * var_x99 + 0.42740531078376603 * var_x104 * var_x105 * var_x106 * var_x108 * var_x82 * var_x84 * var_x85 * var_x99 + 10.257727458810384 * var_x109 * var_x113 * var_x114 * var_x115 * var_x116 * var_x82 * var_x84 * var_x92 * var_x93) + var_x175 * var_x53 + var_x175 * var_x73 + var_x175 * var_x75 + var_x175 * var_x76 + 1176.6211762690609 * var_x72 * var_x82 + 19.065191839422258 * var_x77 * var_x80 * var_x82 + 13.607001343335821 * var_x119 * var_x121 * var_x82 + ((var_x144) ? (var_x143 * var_x175) : (var_x153 * var_x175)); + const double var_x240 = 1.2955153404562495e-6 * mParameters[4]; + const double var_x242 = var_x156 * var_x163 * var_x174; + const double var_x243 = var_x164 * var_x242; + + partialF = -var_x240 * (var_x184 + 0.079032020776755016 * var_x243); + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative3(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_NL_model__Q_d2 = 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCaCB; // per_millisecond + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_b = -0.029999999999999999 * var_chaste_interface__NL_model__pCa + 39 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB) * var_internal_ion_concentrations__Cai; // per_millisecond + const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond + const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA + const double var_SR_L_current__i_SR_L = (-var_internal_ion_concentrations__Cai + var_chaste_interface__Ca_concentrations_in_SR__Caup) * mParameters[0]; // picoA + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA + const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total = 0.070000000000000007 * var_NL_model__Q_d2 + 0.070000000000000007 * var_NL_model__Q_r + 6.4775767022812476e-7 * var_RyR_channel__i_RyR + 6.4775767022812476e-7 * var_SR_L_current__i_SR_L + 6.4775767022812476e-7 * var_SR_calcium_pump__i_SR_U + 1.2955153404562495e-6 * var_sodium_calcium_exchanger__i_NaCa - 0.070000000000000007 * var_NL_model__Q_b - 6.4775767022812476e-7 * var_L_type_Ca_channel__i_CaL_Ca - 6.4775767022812476e-7 * var_T_type_Ca_channel__i_Ca_T - 6.4775767022812476e-7 * var_background_Cab_current__i_Cab; // millimolar / millisecond + + return d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative3(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x16 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x17 = 1 / var_x16; + const double var_x18 = -17.978260869565219 + 362.31884057971018 * var_x7 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x19 = var_x17 * var_x18; + const double var_x20 = _lt_0_row[5]; + const double var_x34 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x35 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x36 = 1 / (1 + 2.7439999999999993 * var_x35); + const double var_x37 = var_x36 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x51 = var_x6 + var_x7; + const double var_x63 = var_x37 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x159 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x167 = pow((0.0014927113702623907 + var_x19), (-2)); + const double var_x168 = var_x167 * var_x20; + const double var_x170 = mParameters[9] * mParameters[14]; + const double var_x171 = var_x170 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; + const double var_x185 = (-0.047620000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total) / var_x7; + const double var_x186 = 0.5 + 0.5 * var_x185; + const double var_x187 = ((var_x1) ? (0) : (var_x186 * var_x2 * var_x5)); + const double var_x194 = var_x187 * var_x34; + const double var_x195 = var_x194 * var_x63; + const double var_x196 = 362.31884057971018 + 362.31884057971018 * var_x185; + const double var_x244 = var_x168 * var_x17 * var_x196; + const double var_x245 = var_x171 * var_x244; + const double var_x260 = 0.00039642769417961232 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2; + const double var_x261 = var_x186 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB); + const double var_x262 = var_x186 * var_chaste_interface__NL_model__pCB; + const double var_x263 = -var_x186; + const double var_x264 = 1 + 0.10000000000000001 * var_x159; + const double var_x265 = 1 / var_x264; + const double var_x266 = var_x8 + var_x9; + const double var_x267 = -0.026190000000000001 + var_x266; + const double var_x268 = 1 / var_x267; + const double var_x269 = 1 + 0.00080000000000000004 * var_x268; + const double var_x270 = pow(var_x269, (-2)); + const double var_x271 = pow(var_x51, 2); + const double var_x272 = 1 / var_x271; + const double var_x273 = 1 - var_chaste_interface__SR_calcium_pump_y_gate__y; + + partialF = -2.7300000000000004 * var_x261 - 1.9338304790483955e-9 * var_x245 - 109.20000000000002 * var_x262 - 6.4775767022812476e-7 * var_x195 - 2.591030680912499e-8 * var_x187 - var_x187 * var_x260 + 6.4775767022812476e-7 * var_x263 * mParameters[0] + 6.4775767022812476e-7 * var_x263 * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR + 2.0728245447299993e-9 * var_x263 * var_x265 * var_x270 * var_x272 * var_x273 * mParameters[3]; + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative4(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double d_dt_chaste_interface_var_ATP_production__ATPi = 0.014999999999999999 + 3.2387883511406238e-7 * var_SR_calcium_pump__i_SR_U - 0.0030000000000000001 * var_chaste_interface__ATP_production__ATPi - 0.028000000000000004 * var_chaste_interface__NL_model__pCaCB - 1.2955153404562495e-6 * var_sodium_potassium_pump__i_NaK; // millimolar / millisecond + + return d_dt_chaste_interface_var_ATP_production__ATPi; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative4(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + + + + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x70 = pow(var_chaste_interface__ATP_production__ATPi, 2); + const double var_x155 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x156 = pow(var_x155, 1.0600000000000001); + const double var_x157 = 1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001); + const double var_x158 = var_x156 * var_x157; + const double var_x159 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x160 = 1 + 0.094 * var_x159; + const double var_x198 = 1 / (1 + 4.4045579125871104 * var_x158); + const double var_x199 = 1 / var_x70; + const double var_x200 = var_x198 * var_x199 * var_chaste_interface__sodium_potassium_pump_y_gate__y / pow(var_x160, 2); + const double var_x201 = var_x200 * mParameters[9]; + const double var_x264 = 1 + 0.10000000000000001 * var_x159; + const double var_x266 = var_x8 + var_x9; + const double var_x267 = -0.026190000000000001 + var_x266; + const double var_x268 = 1 / var_x267; + const double var_x269 = 1 + 0.00080000000000000004 * var_x268; + const double var_x273 = 1 - var_chaste_interface__SR_calcium_pump_y_gate__y; + const double var_x274 = 1 / var_x269; + const double var_x275 = var_x199 * var_x273 * var_x274 / pow(var_x264, 2); + const double var_x276 = var_x275 * mParameters[3]; + + partialF = -0.0030000000000000001 - 3.2387883511406238e-8 * var_x276 - 9.4621849436243545e-7 * var_x201; + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative5(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; + // Units: dimensionless; Initial value: 0.3556412697995689 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; + // Units: dimensionless; Initial value: 0.40285968661346977 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_RP = _lt_0_row[32]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_AP = _lt_0_row[34]; // per_millisecond + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na = 8.7499999999999999e-5 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na + var_sodium_current_voltage_dependent_gate__k_RP_AP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na - (var_sodium_current_voltage_dependent_gate__k_AP_AI + var_sodium_current_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative5(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x299 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x300 = 1 / var_x299; + const double var_x302 = exp(0.00125 * var_chaste_interface__membrane__Vm); + const double var_x303 = 0.058823529411764705 * var_chaste_interface__membrane__Vm; + const double var_x304 = exp(var_x303); + const double var_x312 = 1 / (26 * var_x304 + 0.02 * var_x302); + const double var_x313 = var_x312; + const double var_x314 = 1.25 * var_x300; + + partialF = -var_x313 - var_x314; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative6(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; + // Units: dimensionless; Initial value: 0.3556412697995689 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; + // Units: dimensionless; Initial value: 0.40285968661346977 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_sodium_current_voltage_dependent_gate__k_AI_RI = _lt_0_row[30]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_RP = _lt_0_row[32]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RI_AI = _lt_0_row[33]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_AP = _lt_0_row[34]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_RI = 0.01 / (1 + 8.7499999999999999e-5 * var_sodium_current_voltage_dependent_gate__k_AP_RP * var_sodium_current_voltage_dependent_gate__k_RI_AI / (var_sodium_current_voltage_dependent_gate__k_AI_RI * var_sodium_current_voltage_dependent_gate__k_AP_AI * var_sodium_current_voltage_dependent_gate__k_RP_AP)); // per_millisecond + const double var_sodium_current_voltage_dependent_gate__p_RI_Na = 1 - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // dimensionless + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na = (0.01 - var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_sodium_current_voltage_dependent_gate__p_RI_Na + var_sodium_current_voltage_dependent_gate__k_AP_RP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - (var_sodium_current_voltage_dependent_gate__k_RP_AP + var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative6(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x308 = exp(-0.125 * var_chaste_interface__membrane__Vm); + const double var_x309 = exp(-0.02 * var_chaste_interface__membrane__Vm); + const double var_x315 = 0.25 * var_x309 + 0.1027 * var_x308; + const double var_x316 = 1 / var_x315; + + partialF = -0.01 - var_x316; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative7(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; + // Units: dimensionless; Initial value: 0.3556412697995689 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; + // Units: dimensionless; Initial value: 0.40285968661346977 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_sodium_current_voltage_dependent_gate__k_AI_RI = _lt_0_row[30]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RI_AI = _lt_0_row[33]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__p_RI_Na = 1 - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // dimensionless + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na = var_sodium_current_voltage_dependent_gate__k_AP_AI * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + var_sodium_current_voltage_dependent_gate__k_RI_AI * var_sodium_current_voltage_dependent_gate__p_RI_Na - (8.7499999999999999e-5 + var_sodium_current_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative7(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x299 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x302 = exp(0.00125 * var_chaste_interface__membrane__Vm); + const double var_x308 = exp(-0.125 * var_chaste_interface__membrane__Vm); + const double var_x317 = 1 / (5 * var_x299 + 0.0001027 * var_x308); + const double var_x318 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + const double var_x319 = 1300 * var_x318 + 0.040000000000000001 * var_x302; + const double var_x329 = var_x317; + + partialF = -8.7499999999999999e-5 - var_x329 - 1 / var_x319; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative8(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y = (1 - var_chaste_interface__sodium_current_ultra_slow_gate__y) / (_lt_0_row[28]) - var_chaste_interface__sodium_current_ultra_slow_gate__y / (_lt_0_row[29]); // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative8(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x331 = 0.20000000000000001 * var_chaste_interface__membrane__Vm; + const double var_x332 = exp(-var_x331); + const double var_x333 = 0.01 * var_chaste_interface__membrane__Vm; + const double var_x334 = exp(-var_x333); + const double var_x335 = exp(var_x333); + const double var_x336 = exp(var_x331); + + partialF = -1 / (4000 * var_x334 + 0.014 * var_x332) - 1 / (8000 * var_x335 + 9000000000.0 * var_x336); + } + else + { + const double y_save = rY[8]; + rY[8] += delta; + const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[8])/delta; + rY[8] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative9(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; + // Units: dimensionless; Initial value: 0.9968480629364956 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; + // Units: dimensionless; Initial value: 0.000877325391245903 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP = _lt_0_row[11]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP = _lt_0_row[13]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = 0.001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL - (0.0040000000000000001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative9(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x337 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; + const double var_x338 = exp(var_x337); + const double var_x339 = exp(0.14285714285714285 * var_chaste_interface__membrane__Vm); + const double var_x346 = 1 / (480 * var_x339 + 2.2000000000000002 * var_x338); + const double var_x347 = var_x346; + + partialF = -0.0040000000000000001 - var_x347; + } + else + { + const double y_save = rY[9]; + rY[9] += delta; + const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[9])/delta; + rY[9] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative10(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; + // Units: dimensionless; Initial value: 0.9968480629364956 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; + // Units: dimensionless; Initial value: 0.000877325391245903 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL = 1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // dimensionless + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI = _lt_0_row[10]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP = _lt_0_row[11]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI = _lt_0_row[12]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP = _lt_0_row[13]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI = 0.040000000000000001 / (1 + 0.25 * var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI / (var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI * var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP)); // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = (0.040000000000000001 - var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - (var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative10(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x337 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; + const double var_x342 = exp(-0.16949152542372881 * var_chaste_interface__membrane__Vm); + const double var_x343 = exp(-var_x337); + const double var_x348 = 1.5 * var_x343 + 0.27000000000000002 * var_x342; + const double var_x349 = 1 / var_x348; + + partialF = -0.040000000000000001 - var_x349; + } + else + { + const double y_save = rY[10]; + rY[10] += delta; + const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[10])/delta; + rY[10] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative11(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; + // Units: dimensionless; Initial value: 0.9968480629364956 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; + // Units: dimensionless; Initial value: 0.000877325391245903 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL = 1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // dimensionless + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI = _lt_0_row[10]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI = _lt_0_row[12]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = 0.0040000000000000001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL - (0.001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative11(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x333 = 0.01 * var_chaste_interface__membrane__Vm; + const double var_x334 = exp(-var_x333); + const double var_x335 = exp(var_x333); + const double var_x350 = 0.13513513513513511 * var_chaste_interface__membrane__Vm; + const double var_x351 = exp(var_x350); + const double var_x352 = 11 * var_x335 + 2200000 * var_x351; + const double var_x354 = exp(-var_x350); + const double var_x355 = 1 / (2 * var_x334 + 0.0018 * var_x354); + const double var_x366 = var_x355; + + partialF = -0.001 - var_x366 - 1 / var_x352; + } + else + { + const double y_save = rY[11]; + rY[11] += delta; + const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[11])/delta; + rY[11] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative12(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; + // Units: dimensionless; Initial value: 0.4250747299372254 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca = 6.9539999999999997 * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U = 0.14299999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C + 2.0019999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa - (0.34999999999999998 + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative12(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + + + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x10 = var_x3 * mParameters[5]; + const double var_x11 = -0.026190000000000001 + var_x8 + var_x9 - var_x10; + const double var_x12 = var_x11 * var_x5; + const double var_x202 = ((var_x1) ? (-mParameters[5]) : (var_x12 * var_x2)); + const double var_x266 = var_x8 + var_x9; + const double var_x267 = -0.026190000000000001 + var_x266; + const double var_x363 = -1 + var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x370 = -6.9539999999999997 * var_x363; + const double var_x371 = 6.9539999999999997 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x376 = var_x371 * (var_x267 - 0.020279999999999996 * var_x202); + const double var_x377 = var_x376 + var_x267 * var_x370; + + partialF = -0.34999999999999998 - var_x377; + } + else + { + const double y_save = rY[12]; + rY[12] += delta; + const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[12])/delta; + rY[12] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative13(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; + // Units: dimensionless; Initial value: 0.4250747299372254 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_Ca_dependent_gate__p_CCa = 1 - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca = 6.9539999999999997 * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa = 0.00029999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - 2.3519999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative13(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + + partialF = -2.3523000000000001; + } + else + { + const double y_save = rY[13]; + rY[13] += delta; + const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[13])/delta; + rY[13] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative14(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; + // Units: dimensionless; Initial value: 0.4250747299372254 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_Ca_dependent_gate__p_CCa = 1 - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C = 0.34999999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + 0.0041999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - (0.14299999999999999 + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative14(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + + + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x10 = var_x3 * mParameters[5]; + const double var_x11 = -0.026190000000000001 + var_x8 + var_x9 - var_x10; + const double var_x12 = var_x11 * var_x5; + const double var_x202 = ((var_x1) ? (-mParameters[5]) : (var_x12 * var_x2)); + const double var_x266 = var_x8 + var_x9; + const double var_x267 = -0.026190000000000001 + var_x266; + const double var_x371 = 6.9539999999999997 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x376 = var_x371 * (var_x267 - 0.020279999999999996 * var_x202); + + partialF = -0.1472 - var_x376; + } + else + { + const double y_save = rY[14]; + rY[14] += delta; + const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[14])/delta; + rY[14] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative15(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y = (1 - var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y) / (_lt_0_row[8]) - var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y / (_lt_0_row[9]); // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative15(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x337 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; + const double var_x338 = exp(var_x337); + const double var_x343 = exp(-var_x337); + const double var_x378 = exp(-0.071428571428571425 * var_chaste_interface__membrane__Vm); + const double var_x379 = exp(0.1111111111111111 * var_chaste_interface__membrane__Vm); + + partialF = -1 / (58 * var_x338 + 250000 * var_x379) - 1 / (66 * var_x343 + 1800 * var_x378); + } + else + { + const double y_save = rY[15]; + rY[15] += delta; + const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[15])/delta; + rY[15] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative16(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1 = (1 - var_chaste_interface__T_type_Ca_channel_y1_gate__y1) / (_lt_0_row[14]) - var_chaste_interface__T_type_Ca_channel_y1_gate__y1 / (_lt_0_row[15]); // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative16(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x380 = exp(0.0001 * var_chaste_interface__membrane__Vm); + const double var_x381 = exp(0.15873015873015872 * var_chaste_interface__membrane__Vm); + const double var_x382 = exp(-0.17857142857142858 * var_chaste_interface__membrane__Vm); + const double var_x383 = exp(-0.0040000000000000001 * var_chaste_interface__membrane__Vm); + + partialF = -1 / (1.5 * var_x380 + 40 * var_x381) - 1 / (0.019 * var_x382 + 0.81999999999999995 * var_x383); + } + else + { + const double y_save = rY[16]; + rY[16] += delta; + const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[16])/delta; + rY[16] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative17(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2 = (1 - var_chaste_interface__T_type_Ca_channel_y2_gate__y2) / (_lt_0_row[16]) - var_chaste_interface__T_type_Ca_channel_y2_gate__y2 / (_lt_0_row[17]); // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative17(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x384 = exp(-0.14925373134328357 * var_chaste_interface__membrane__Vm); + const double var_x385 = exp(-0.040000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x386 = exp(0.00033333333333333332 * var_chaste_interface__membrane__Vm); + const double var_x387 = exp(0.099009900990099015 * var_chaste_interface__membrane__Vm); + + partialF = -1 / (30 * var_x386 + 62000 * var_x387) - 1 / (1.2 * var_x385 + 0.00059999999999999995 * var_x384); + } + else + { + const double y_save = rY[17]; + rY[17] += delta; + const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[17])/delta; + rY[17] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative18(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + + + + // Mathematics + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y = (1 - var_chaste_interface__time_independent_potassium_current_y_gate__y) / (7 * exp(-0.32333333333333331 + 0.0033333333333333335 * var_chaste_interface__membrane__Vm - 0.0033333333333333335 * var_time_independent_potassium_current__E_K) + 8000 * exp(-11.411764705882353 + 0.11764705882352941 * var_chaste_interface__membrane__Vm - 0.11764705882352941 * var_time_independent_potassium_current__E_K)) - pow(var_time_independent_potassium_current__fO, 4) * var_chaste_interface__time_independent_potassium_current_y_gate__y / (0.00013999999999999999 * exp(10.659340659340661 + 0.10989010989010989 * var_time_independent_potassium_current__E_K - 0.10989010989010989 * var_chaste_interface__membrane__Vm) + 0.20000000000000001 * exp(0.19400000000000001 + 0.002 * var_time_independent_potassium_current__E_K - 0.002 * var_chaste_interface__membrane__Vm)); // 1 / millisecond + + return d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative18(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + + + + const double var_x82 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x83 = log(var_x82 * mParameters[6]); + const double var_x84 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x83); + const double var_x85 = 1 + var_x84; + const double var_x86 = pow(var_x85, 4); + const double var_x87 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x83); + const double var_x88 = 1 + var_x87; + const double var_x89 = pow(var_x88, (-4)); + const double var_x90 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x83); + const double var_x91 = 1 + var_x90; + const double var_x92 = 1 / var_x91; + const double var_x93 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x83); + const double var_x94 = var_x92 * var_x93; + const double var_x95 = exp(0.47999999999999998 + 1.282215932351298 * var_x83 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x96 = var_x95 / var_x88; + const double var_x97 = var_x85 * var_x96; + const double var_x98 = var_x97 + 0.25 * var_x94; + const double var_x99 = pow(var_x98, (-4)); + const double var_x100 = pow(var_x95, 4); + const double var_x101 = var_x100 * var_x89 * var_x99; + const double var_x102 = var_x101 * var_x86; + const double var_x103 = var_x102; + const double var_x388 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x389 = -var_x388; + const double var_x390 = exp(-0.32333333333333331 - var_x389 - 0.08904277307995126 * var_x83); + const double var_x391 = exp(-11.411764705882353 + 0.11764705882352941 * var_chaste_interface__membrane__Vm - 3.142686108704162 * var_x83); + const double var_x394 = exp(10.659340659340661 + 2.9354760356027887 * var_x83 - 0.10989010989010989 * var_chaste_interface__membrane__Vm); + const double var_x395 = 0.002 * var_chaste_interface__membrane__Vm; + const double var_x396 = exp(0.19400000000000001 - var_x395 + 0.053425663847970754 * var_x83); + const double var_x397 = 1 / (0.00013999999999999999 * var_x394 + 0.20000000000000001 * var_x396); + + partialF = -1 / (7 * var_x390 + 8000 * var_x391) - var_x103 * var_x397; + } + else + { + const double y_save = rY[18]; + rY[18] += delta; + const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[18])/delta; + rY[18] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative19(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1 = -(_lt_0_row[18]) * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 + (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) / (_lt_0_row[19]); // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative19(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x318 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + const double var_x388 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x389 = -var_x388; + const double var_x402 = 1 / var_x318; + const double var_x403 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; + const double var_x404 = exp(var_x403); + const double var_x405 = exp(0.001 * var_chaste_interface__membrane__Vm); + const double var_x407 = exp(var_x389); + const double var_x408 = exp(-0.086956521739130432 * var_chaste_interface__membrane__Vm); + + partialF = -1 / (5 * var_x407 + 20 * var_x408) - 1 / (160 * var_x404 + 200 * var_x405) - 0.00040000000000000002 * var_x402; + } + else + { + const double y_save = rY[19]; + rY[19] += delta; + const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[19])/delta; + rY[19] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative20(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2 = -(_lt_0_row[20]) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2) / (_lt_0_row[21]); // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative20(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x148 = 0.076923076923076927 * var_chaste_interface__membrane__Vm; + const double var_x318 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + const double var_x388 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x389 = -var_x388; + const double var_x402 = 1 / var_x318; + const double var_x403 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; + const double var_x404 = exp(var_x403); + const double var_x405 = exp(0.001 * var_chaste_interface__membrane__Vm); + const double var_x407 = exp(var_x389); + const double var_x409 = exp(-var_x148); + + partialF = -1 / (20 * var_x407 + 200 * var_x409) - 1 / (1600 * var_x404 + 2000 * var_x405) - 0.0001 * var_x402; + } + else + { + const double y_save = rY[20]; + rY[20] += delta; + const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[20])/delta; + rY[20] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative21(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3 = (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3) / (_lt_0_row[22]) - var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 / (_lt_0_row[23]); // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative21(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x303 = 0.058823529411764705 * var_chaste_interface__membrane__Vm; + const double var_x304 = exp(var_x303); + const double var_x388 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x410 = exp(-var_x303); + const double var_x411 = exp(-0.0066666666666666671 * var_chaste_interface__membrane__Vm); + const double var_x412 = exp(var_x388); + + partialF = -1 / (2 * var_x411 + 0.34999999999999998 * var_x410) - 1 / (2.5 * var_x412 + 10 * var_x304); + } + else + { + const double y_save = rY[21]; + rY[21] += delta; + const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[21])/delta; + rY[21] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative22(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1 = (1 - var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1) / (_lt_0_row[24]) - var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 / (_lt_0_row[25]); // 1 / millisecond + + return d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative22(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x318 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + const double var_x333 = 0.01 * var_chaste_interface__membrane__Vm; + const double var_x335 = exp(var_x333); + const double var_x413 = exp(-0.095238095238095233 * var_chaste_interface__membrane__Vm); + const double var_x414 = exp(-0.016129032258064516 * var_chaste_interface__membrane__Vm); + + partialF = -1 / (260 * var_x335 + 1450 * var_x318) - 1 / (85 * var_x413 + 370 * var_x414); + } + else + { + const double y_save = rY[22]; + rY[22] += delta; + const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[22])/delta; + rY[22] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative23(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + + + + // Mathematics + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2 = -0.004444 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 + 3.7000000000000002 * (1 - var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_internal_ion_concentrations__Cai; // 1 / millisecond + + return d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative23(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + + + + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + + partialF = 0.092459000000000013 - 1.8500000000000001 * var_x7 - 1.8500000000000001 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + } + else + { + const double y_save = rY[23]; + rY[23] += delta; + const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[23])/delta; + rY[23] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative24(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1 = (1 - var_chaste_interface__transient_outward_current_y1_gate__y1) / (_lt_0_row[35]) - var_chaste_interface__transient_outward_current_y1_gate__y1 / (_lt_0_row[36]); // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative24(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x299 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x395 = 0.002 * var_chaste_interface__membrane__Vm; + const double var_x403 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; + const double var_x415 = exp(var_x395); + const double var_x416 = exp(0.0625 * var_chaste_interface__membrane__Vm); + const double var_x417 = exp(-var_x403); + + partialF = -1 / (11 * var_x417 + 0.20000000000000001 * var_x299) - 1 / (4.4000000000000004 * var_x416 + 0.20000000000000001 * var_x415); + } + else + { + const double y_save = rY[24]; + rY[24] += delta; + const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[24])/delta; + rY[24] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative25(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2 = 0.0038 * (1 - var_chaste_interface__transient_outward_current_y2_gate__y2) * _lt_0_row[38] / (_lt_0_row[37]) - 0.0038 * var_chaste_interface__transient_outward_current_y2_gate__y2 * _lt_0_row[40] / (_lt_0_row[39]); // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative25(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x418 = 1.1946902654867255 + 0.088495575221238937 * var_chaste_interface__membrane__Vm; + const double var_x419 = exp(var_x418); + const double var_x420 = 1 + 0.067083000000000004 * var_x419; + const double var_x421 = var_x419 / var_x420; + const double var_x423 = exp(-var_x418); + const double var_x424 = 1 + 0.051334999999999999 * var_x423; + const double var_x425 = var_x423 / var_x424; + + partialF = -0.0038 * var_x421 - 0.0038 * var_x425; + } + else + { + const double y_save = rY[25]; + rY[25] += delta; + const double temp = EvaluateYDerivative25(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[25])/delta; + rY[25] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative26(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y = (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * (1 / (1 + 1.3799999999999999 * (1 + 1.4927113702623908e-6 * pow(mParameters[7], 3)) / mParameters[5]) + var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) - (1 / (1 + 0.0013799999999999999 * (1 + 0.0014927113702623907 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)) / var_internal_ion_concentrations__Cai) + var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na) * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative26(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x16 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x17 = 1 / var_x16; + const double var_x18 = -17.978260869565219 + 362.31884057971018 * var_x7 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x19 = var_x17 * var_x18; + const double var_x20 = _lt_0_row[5]; + const double var_x21 = var_x20 / (1 + 669.921875 * var_x19); + const double var_x22 = pow(mParameters[7], 3); + const double var_x23 = _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / var_x22); + const double var_x237 = var_x21 + var_x23; + const double var_x266 = var_x8 + var_x9; + const double var_x267 = -0.026190000000000001 + var_x266; + const double var_x268 = 1 / var_x267; + const double var_x426 = 1 + 0.0014927113702623907 * var_x16; + const double var_x427 = 1 + 0.0013799999999999999 * var_x268 * var_x426; + + partialF = -var_x237 - 1 / var_x427 - 1 / (1 + 1.3799999999999999 * (1 + 1.4927113702623908e-6 * var_x22) / mParameters[5]); + } + else + { + const double y_save = rY[26]; + rY[26] += delta; + const double temp = EvaluateYDerivative26(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[26])/delta; + rY[26] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative27(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[4]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y = (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * (0.040000000000000001 * var_sodium_potassium_pump__p_E2Na + 0.16500000000000001 / (1 + 0.21928759810465578 * pow((1 / mParameters[6]), 1.1200000000000001) * (1 + 0.011104864200909382 * pow(var_sodium_potassium_pump__Nao_Eff, 1.0600000000000001)))) - (0.01 / (1 + 49.999265664512095 * pow((1 / var_chaste_interface__internal_ion_concentrations__Ki), 1.1200000000000001) * (1 + 0.22703754152993499 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 1.0600000000000001))) + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na) * var_chaste_interface__sodium_potassium_pump_y_gate__y; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative27(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x29 = _lt_0_row[4]; + const double var_x30 = pow((1 / (var_x29 * mParameters[7])), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001)); + const double var_x82 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x155 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x156 = pow(var_x155, 1.0600000000000001); + const double var_x157 = 1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001); + const double var_x158 = var_x156 * var_x157; + const double var_x159 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x160 = 1 + 0.094 * var_x159; + const double var_x161 = 1 / var_x160; + const double var_x198 = 1 / (1 + 4.4045579125871104 * var_x158); + const double var_x238 = 1 / (1 + 90.050628437051003 * var_x30); + const double var_x239 = var_x161 * var_x198; + const double var_x251 = 0.37 * var_x239 + 0.040000000000000001 * var_x238; + const double var_x429 = pow((1 / mParameters[6]), 1.1200000000000001); + const double var_x430 = pow((var_x29 * mParameters[7]), 1.0600000000000001); + const double var_x431 = 1 + 0.21928759810465578 * var_x429 * (1 + 0.011104864200909382 * var_x430); + const double var_x432 = pow(var_x82, 1.1200000000000001); + const double var_x433 = 1 + 0.22703754152993499 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 1.0600000000000001); + const double var_x434 = var_x432 * var_x433; + + partialF = -var_x251 - 0.01 / (1 + 49.999265664512095 * var_x434) - 0.16500000000000001 / var_x431; + } + else + { + const double y_save = rY[27]; + rY[27] += delta; + const double temp = EvaluateYDerivative27(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[27])/delta; + rY[27] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative28(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + // Mathematics + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y = (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * (0.01 - 0.01 * var_SR_calcium_pump__p_E2Ca + var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) - (1 - 0.98999999999999999 * var_SR_calcium_pump__p_E1Ca) * var_chaste_interface__SR_calcium_pump_y_gate__y; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative28(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x159 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x264 = 1 + 0.10000000000000001 * var_x159; + const double var_x265 = 1 / var_x264; + const double var_x266 = var_x8 + var_x9; + const double var_x267 = -0.026190000000000001 + var_x266; + const double var_x268 = 1 / var_x267; + const double var_x269 = 1 + 0.00080000000000000004 * var_x268; + const double var_x274 = 1 / var_x269; + const double var_x279 = 1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup; + const double var_x280 = 1 / var_x279; + const double var_x281 = var_x265 * var_x274; + + partialF = -1.01 - var_x281 + 0.01 * var_x274 + 0.98999999999999999 * var_x280; + } + else + { + const double y_save = rY[28]; + rY[28] += delta; + const double temp = EvaluateYDerivative28(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[28])/delta; + rY[28] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative29(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__RyR_channel__p_close_RyR = rY[30]; + // Units: dimensionless; Initial value: 0.19135178123107768 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_RyR_channel__k1 = 280000 * pow(var_internal_ion_concentrations__Cai, 2) / pow(mParameters[2], 2) - 150 * var_L_type_Ca_channel__p_open_CaL * var_L_type_Ca_channel_Ca_dependent_gate__iCaL; // per_millisecond + const double d_dt_chaste_interface_var_RyR_channel__p_open_RyR = var_RyR_channel__k1 * var_chaste_interface__RyR_channel__p_close_RyR - 0.080000000000000002 * var_chaste_interface__RyR_channel__p_open_RyR / (1 + 0.35999999999999999 / var_Ca_concentrations_in_SR__Carel); // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__p_open_RyR; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative29(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + + const double var_x283 = -1 + 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; + const double var_x284 = sqrt(pow(var_x283, 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); + const double var_x448 = 1 + 0.35999999999999999 / (-5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * var_x284); + + partialF = -0.080000000000000002 / var_x448; + } + else + { + const double y_save = rY[29]; + rY[29] += delta; + const double temp = EvaluateYDerivative29(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[29])/delta; + rY[29] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative30(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__RyR_channel__p_close_RyR = rY[30]; + // Units: dimensionless; Initial value: 0.19135178123107768 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm / (_lt_0_row[1]))); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_RyR_channel__k1 = 280000 * pow(var_internal_ion_concentrations__Cai, 2) / pow(mParameters[2], 2) - 150 * var_L_type_Ca_channel__p_open_CaL * var_L_type_Ca_channel_Ca_dependent_gate__iCaL; // per_millisecond + const double d_dt_chaste_interface_var_RyR_channel__p_close_RyR = -(0.00084900000000000004 + var_RyR_channel__k1) * var_chaste_interface__RyR_channel__p_close_RyR + 0.000377 * pow(var_Ca_concentrations_in_SR__Carel, 2) * (1 - var_chaste_interface__RyR_channel__p_close_RyR - var_chaste_interface__RyR_channel__p_open_RyR); // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__p_close_RyR; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative30(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x10 = var_x3 * mParameters[5]; + const double var_x11 = -0.026190000000000001 + var_x8 + var_x9 - var_x10; + const double var_x12 = var_x11 * var_x5; + const double var_x34 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x35 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x36 = 1 / (1 + 2.7439999999999993 * var_x35); + const double var_x51 = var_x6 + var_x7; + const double var_x202 = ((var_x1) ? (-mParameters[5]) : (var_x12 * var_x2)); + const double var_x203 = var_x202 * var_x34; + const double var_x220 = var_x36 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x271 = pow(var_x51, 2); + const double var_x283 = -1 + 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; + const double var_x284 = sqrt(pow(var_x283, 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); + const double var_x436 = 10.139999999999999 * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x439 = pow(mParameters[2], (-2)); + const double var_x440 = var_x220 * var_x436; + const double var_x449 = 70000 * var_x271 * var_x439; + const double var_x450 = var_x203 * var_x440; + const double var_x451 = var_x283 + var_x284; + const double var_x452 = pow(var_x451, 2); + const double var_x453 = 0.010993320000000001 * var_x452; + + partialF = -0.00084900000000000004 + var_x450 - var_x449 - var_x453; + } + else + { + const double y_save = rY[30]; + rY[30] += delta; + const double temp = EvaluateYDerivative30(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[30])/delta; + rY[30] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative31(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar + const double var_SR_T_current__i_SR_T = 386 * var_chaste_interface__Ca_concentrations_in_SR__Caup - 386 * var_Ca_concentrations_in_SR__Carel; // picoA + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total = 3.2387883511406234e-5 * var_SR_T_current__i_SR_T - 3.2387883511406234e-5 * var_RyR_channel__i_RyR; // millimolar / millisecond + + return d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative31(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + + const double var_x283 = -1 + 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; + const double var_x284 = sqrt(pow(var_x283, 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); + const double var_x286 = (-0.078875171467764058 + 0.0085733882030178329 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total) / var_x284; + const double var_x287 = 0.5 + 5.4000000000000004 * var_x286; + const double var_x288 = mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; + const double var_x454 = 3.2387883511406234e-5 * var_x288; + + partialF = -0.0062508615177014034 - 0.067509304391175154 * var_x286 - var_x287 * var_x454; + } + else + { + const double y_save = rY[31]; + rY[31] += delta; + const double temp = EvaluateYDerivative31(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[31])/delta; + rY[31] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative32(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar + const double var_SR_T_current__i_SR_T = 386 * var_chaste_interface__Ca_concentrations_in_SR__Caup - 386 * var_Ca_concentrations_in_SR__Carel; // picoA + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_SR_L_current__i_SR_L = (-var_internal_ion_concentrations__Cai + var_chaste_interface__Ca_concentrations_in_SR__Caup) * mParameters[0]; // picoA + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup = -1.2955153404562494e-5 * var_SR_L_current__i_SR_L - 1.2955153404562494e-5 * var_SR_T_current__i_SR_T - 1.2955153404562494e-5 * var_SR_calcium_pump__i_SR_U; // millimolar / millisecond + + return d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative32(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + const double var_x279 = 1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup; + const double var_x289 = var_chaste_interface__SR_calcium_pump_y_gate__y / (pow(var_x279, 2) * pow(var_chaste_interface__Ca_concentrations_in_SR__Caup, 2)); + const double var_x290 = var_x289 * mParameters[3]; + const double var_x455 = 1.2955153404562494e-5 * mParameters[0]; + + partialF = -0.0050006892141611229 - var_x455 - 1.0364122723649996e-8 * var_x290; + } + else + { + const double y_save = rY[32]; + rY[32] += delta; + const double temp = EvaluateYDerivative32(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[32])/delta; + rY[32] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative33(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + + + + // Mathematics + const double var_NL_model__Q_a = -0.0038999999999999998 * var_chaste_interface__NL_model__pCaCB + 0.0038999999999999998 * var_chaste_interface__NL_model__pCa * exp(-0.86212130841993795); // per_millisecond + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_b = -0.029999999999999999 * var_chaste_interface__NL_model__pCa + 39 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB) * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCa = -var_NL_model__Q_a + var_NL_model__Q_b; // 1 / millisecond + + return d_dt_chaste_interface_var_NL_model__pCa; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative33(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + + + + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x456 = 0.0038999999999999998 * exp(-0.86212130841993795); + const double var_x457 = 19.5 * var_x7 + 19.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + + partialF = 0.99141000000000001 - var_x456 - var_x457; + } + else + { + const double y_save = rY[33]; + rY[33] += delta; + const double temp = EvaluateYDerivative33(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[33])/delta; + rY[33] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative34(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + // Mathematics + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_NL_model__Q_a = -0.0038999999999999998 * var_chaste_interface__NL_model__pCaCB + 0.0038999999999999998 * var_chaste_interface__NL_model__pCa * exp(-0.86212130841993795); // per_millisecond + const double var_NL_model__Q_d2 = 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCaCB; // per_millisecond + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCaCB = -var_NL_model__Q_d2 - var_NL_model__Q_r + var_NL_model__Q_a; // 1 / millisecond + + return d_dt_chaste_interface_var_NL_model__pCaCB; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative34(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + const double var_x292 = pow((0.95737999754118841 - var_chaste_interface__NL_model__X), 2); + const double var_x459 = 0.038879999999999998 * var_x292; + + partialF = -0.0339 - var_x459; + } + else + { + const double y_save = rY[34]; + rY[34] += delta; + const double temp = EvaluateYDerivative34(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[34])/delta; + rY[34] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative35(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + // Mathematics + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCB = -0.12 * var_chaste_interface__NL_model__pCB - 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCB + var_NL_model__Q_r; // 1 / millisecond + + return d_dt_chaste_interface_var_NL_model__pCB; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative35(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x292 = pow((0.95737999754118841 - var_chaste_interface__NL_model__X), 2); + const double var_x459 = 0.038879999999999998 * var_x292; + const double var_x460 = 780 * var_x7 + 780 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + + partialF = 40.736400000000003 - var_x459 - var_x460; + } + else + { + const double y_save = rY[35]; + rY[35] += delta; + const double temp = EvaluateYDerivative35(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[35])/delta; + rY[35] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative36(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + // Mathematics + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + + return d_dt_chaste_interface_var_NL_model__X; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative36(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + + partialF = -1.2; + } + else + { + const double y_save = rY[36]; + rY[36] += delta; + const double temp = EvaluateYDerivative36(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[36])/delta; + rY[36] = y_save; + } + return partialF; + } + + std::vector Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + // Mathematics + const double var_Ca_concentrations_in_SR__CSQN_max = 10; // millimolar + const double var_Ca_concentrations_in_SR__K_mCSQN = 0.80000000000000004; // millimolar + const double var_Ca_concentrations_in_SR__b1 = -var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + var_Ca_concentrations_in_SR__CSQN_max + var_Ca_concentrations_in_SR__K_mCSQN; // millimolar + const double var_Ca_concentrations_in_SR__c1 = var_chaste_interface__Ca_concentrations_in_SR__Ca_Total * var_Ca_concentrations_in_SR__K_mCSQN; // millimolar2 + const double var_Ca_concentrations_in_SR__Carel = sqrt(0.25 * pow(var_Ca_concentrations_in_SR__b1, 2) + var_Ca_concentrations_in_SR__c1) - 0.5 * var_Ca_concentrations_in_SR__b1; // millimolar + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__CMDN_max = 0.050000000000000003; // millimolar + const double var_internal_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_internal_ion_concentrations__b1 = -var_chaste_interface__internal_ion_concentrations__Ca_Total + var_internal_ion_concentrations__CMDN_max + var_internal_ion_concentrations__K_mCMDN; // millimolar + const double var_internal_ion_concentrations__c1 = var_chaste_interface__internal_ion_concentrations__Ca_Total * var_internal_ion_concentrations__K_mCMDN; // millimolar2 + const double var_internal_ion_concentrations__Cai = sqrt(0.25 * pow(var_internal_ion_concentrations__b1, 2) + var_internal_ion_concentrations__c1) - 0.5 * var_internal_ion_concentrations__b1; // millimolar + const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // coulomb_millivolt_per_kelvin_millimole + const double var_membrane__T = 310; // kelvin + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (2 * (-mParameters[5] * exp(-2 * var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)) + var_internal_ion_concentrations__Cai) * var_membrane__F * var_chaste_interface__membrane__Vm / ((1 - exp(-2 * var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : ((-mParameters[6] * exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)) + var_chaste_interface__internal_ion_concentrations__Ki) * var_membrane__F * var_chaste_interface__membrane__Vm / ((1 - exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T))); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : ((-mParameters[7] * exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)) + var_chaste_interface__internal_ion_concentrations__Nai) * var_membrane__F * var_chaste_interface__membrane__Vm / ((1 - exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaL_Ca + var_L_type_Ca_channel__i_CaL_K + var_L_type_Ca_channel__i_CaL_Na; // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_membrane__i_ext_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_rapid_time_dependent_potassium_current__g_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * mParameters[9] * mParameters[12]; // nanoS + const double var_slow_time_dependent_potassium_current__P_Ks_Na = 0.2016; // picoA_per_millimolar + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na * var_slow_time_dependent_potassium_current__P_Ks_Na; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks = var_slow_time_dependent_potassium_current__i_Ks_K + var_slow_time_dependent_potassium_current__i_Ks_Na; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_time_dependent_potassium_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_calcium_exchanger__Km_Cai = 0.0013799999999999999; // millimolar + const double var_sodium_calcium_exchanger__Km_Cao = 1.3799999999999999; // millimolar + const double var_sodium_calcium_exchanger__Km_Nai = 8.75; // millimolar + const double var_sodium_calcium_exchanger__Km_Nao = 87.5; // millimolar + const double var_sodium_calcium_exchanger__Partition = 0.32000000000000001; // dimensionless + const double var_sodium_calcium_exchanger__k1 = exp(var_membrane__F * var_chaste_interface__membrane__Vm * var_sodium_calcium_exchanger__Partition / (var_membrane__R * var_membrane__T)); // per_millisecond + const double var_sodium_calcium_exchanger__k2 = exp((-1 + var_sodium_calcium_exchanger__Partition) * var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)); // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + pow(var_sodium_calcium_exchanger__Km_Nai, 3) * (1 + var_internal_ion_concentrations__Cai / var_sodium_calcium_exchanger__Km_Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + pow(var_sodium_calcium_exchanger__Km_Nao, 3) * (1 + mParameters[5] / var_sodium_calcium_exchanger__Km_Cao) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double var_sodium_calcium_exchanger__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchanger__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na = var_sodium_current__i_Na_K + var_sodium_current__i_Na_Na; // picoA + const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_rapid_time_dependent_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * var_rapid_time_dependent_potassium_current__g_Kr * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_time_dependent_potassium_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__g_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * mParameters[9] * mParameters[11]; // nanoS + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO2 = 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2); // dimensionless + const double var_time_independent_potassium_current__fO3 = 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB; // dimensionless + const double var_time_independent_potassium_current__fO4 = pow(var_time_independent_potassium_current__fO, 4); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (var_time_independent_potassium_current__fO2 + var_time_independent_potassium_current__fO3 + var_time_independent_potassium_current__fO4) * var_time_independent_potassium_current__g_K1 * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_current__P_to_Na = 0.00297; // picoA_per_millimolar + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double var_transient_outward_current__i_to_Na = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_transient_outward_current__P_to_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double var_transient_outward_current__i_to = var_transient_outward_current__i_to_K + var_transient_outward_current__i_to_Na; // picoA + const double var_transient_outward_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 + + std::vector dqs(13); + dqs[0] = var_Ca_concentrations_in_SR__Carel; + dqs[1] = var_RyR_channel__i_RyR; + dqs[2] = var_internal_ion_concentrations__Cai; + dqs[3] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[4] = var_membrane__Cm_converted; + dqs[5] = var_sodium_current__i_Na_converted; + dqs[6] = var_time_independent_potassium_current__i_K1_converted; + dqs[7] = var_rapid_time_dependent_potassium_current__i_Kr_converted; + dqs[8] = var_slow_time_dependent_potassium_current__i_Ks_converted; + dqs[9] = var_sodium_calcium_exchanger__i_NaCa_converted; + dqs[10] = var_membrane__i_ext_converted; + dqs[11] = var_transient_outward_current__i_to_converted; + dqs[12] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "matsuoka_model_2003"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-85.95752434460744); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(4.925761439682025); + + // rY[2]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(143.1837333000449); + + // rY[3]: + this->mVariableNames.push_back("internal_ion_concentrations__Ca_Total"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00040180173572968586); + + // rY[4]: + this->mVariableNames.push_back("ATP_production__ATPi"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(4.657102729020499); + + // rY[5]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.779648367445368e-05); + + // rY[6]: + this->mVariableNames.push_back("sodium_current_voltage_dependent_gate__p_RP_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.3556412697995689); + + // rY[7]: + this->mVariableNames.push_back("sodium_current_voltage_dependent_gate__p_AI_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.40285968661346977); + + // rY[8]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.5861887862983165); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.5445004166497696e-06); + + // rY[10]: + this->mVariableNames.push_back("L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9968480629364956); + + // rY[11]: + this->mVariableNames.push_back("L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000877325391245903); + + // rY[12]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.17246483915629204); + + // rY[13]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.098246017787626e-05); + + // rY[14]: + this->mVariableNames.push_back("L_type_Ca_channel_Ca_dependent_gate__p_C"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.4250747299372254); + + // rY[15]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9985266538252986); + + // rY[16]: + this->mVariableNames.push_back("T_type_Ca_channel_y1_gate__y1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.6882718240109127e-05); + + // rY[17]: + this->mVariableNames.push_back("T_type_Ca_channel_y2_gate__y2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8585352091865849); + + // rY[18]: + this->mVariableNames.push_back("time_independent_potassium_current_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.6080573900752752); + + // rY[19]: + this->mVariableNames.push_back("rapid_time_dependent_potassium_current_y1_gate__y1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0018339931180983765); + + // rY[20]: + this->mVariableNames.push_back("rapid_time_dependent_potassium_current_y2_gate__y2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.20443083454225305); + + // rY[21]: + this->mVariableNames.push_back("rapid_time_dependent_potassium_current_y3_gate__y3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.967887666264921); + + // rY[22]: + this->mVariableNames.push_back("slow_time_dependent_potassium_current_y1_gate__y1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09738789658609195); + + // rY[23]: + this->mVariableNames.push_back("slow_time_dependent_potassium_current_y2_gate__y2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09745345578743213); + + // rY[24]: + this->mVariableNames.push_back("transient_outward_current_y1_gate__y1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0007956883250874798); + + // rY[25]: + this->mVariableNames.push_back("transient_outward_current_y2_gate__y2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9999125083105881); + + // rY[26]: + this->mVariableNames.push_back("sodium_calcium_exchanger_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9891789193465331); + + // rY[27]: + this->mVariableNames.push_back("sodium_potassium_pump_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.5910747147428818); + + // rY[28]: + this->mVariableNames.push_back("SR_calcium_pump_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.46108441538480216); + + // rY[29]: + this->mVariableNames.push_back("RyR_channel__p_open_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00034314360001543243); + + // rY[30]: + this->mVariableNames.push_back("RyR_channel__p_close_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.19135178123107768); + + // rY[31]: + this->mVariableNames.push_back("Ca_concentrations_in_SR__Ca_Total"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.455741736977666); + + // rY[32]: + this->mVariableNames.push_back("Ca_concentrations_in_SR__Caup"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.611712901567567); + + // rY[33]: + this->mVariableNames.push_back("NL_model__pCa"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.02490898775497523); + + // rY[34]: + this->mVariableNames.push_back("NL_model__pCaCB"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001990153835322864); + + // rY[35]: + this->mVariableNames.push_back("NL_model__pCB"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00042941813853474524); + + // rY[36]: + this->mVariableNames.push_back("NL_model__X"); + this->mVariableUnits.push_back("micrometre"); + this->mInitialConditions.push_back(0.9573749975411884); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_release_kmcacyt"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("picoA"); + + // mParameters[4]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane__Cm"); + this->mParameterUnits.push_back("picoF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("JSR_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("picoA"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicmatsuoka_model_2003FromCellMLGRL1Opt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicmatsuoka_model_2003FromCellMLGRL1Opt(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003--sympy_1_13.cpp new file mode 100644 index 00000000..e4b0a631 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003--sympy_1_13.cpp @@ -0,0 +1,5103 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: matsuoka_model_2003 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenFirstOrderOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_matsuoka_model_2003.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractGeneralizedRushLarsenCardiacCell* Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicmatsuoka_model_2003FromCellMLGRL1Opt(p_solver, p_stimulus); +} + +bool Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::registered = ModelFactory::Register("dynamic_matsuoka_model_2003", "GeneralizedRushLarsenFirstOrderOpt", (ModelFactory::TCreateMethod)Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::CreateMethod); + +class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<42; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__Vm) + { + const double _offset_0 = var_chaste_interface__membrane__Vm - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__Vm) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__Vm>mTableMaxs[0] || var_chaste_interface__membrane__Vm= 2){ + EXCEPTION("Lookup table 0 at ["<= 2){ + EXCEPTION("Lookup table 1 at ["<= 2){ + EXCEPTION("Lookup table 2 at ["<= 2){ + EXCEPTION("Lookup table 3 at ["<= 2){ + EXCEPTION("Lookup table 7 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[42]; + + // Lookup tables + double (*_lookup_table_0)[42]; + int _lookup_table_0_num_misshit_piecewise[42] = {0}; + +}; + +std::shared_ptr Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -4000 * HeartConfig::Instance()->GetCapacitance() / mParameters[9]; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 2; // millisecond + const double var_chaste_interface__membrane__stim_period = 400; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::Dynamicmatsuoka_model_2003FromCellMLGRL1Opt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 37, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 459; // (var_SR_L_current__P_SR_L) [picoA_per_millimolar] + this->mParameters[1] = 62000; // (var_RyR_channel__P_RyR) [picoA_per_millimolar] + this->mParameters[2] = 1; // (var_RyR_channel__K_m_Ca_cyt) [millimolar] + this->mParameters[3] = 162500; // (var_SR_calcium_pump__i_max) [picoA] + this->mParameters[4] = 1; // (var_internal_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[5] = 1.8; // (var_external_ion_concentrations__Cao) [millimolar] + this->mParameters[6] = 5.4000000000000004; // (var_external_ion_concentrations__Ko) [millimolar] + this->mParameters[7] = 140; // (var_external_ion_concentrations__Nao) [millimolar] + this->mParameters[8] = 8712; // (var_L_type_Ca_channel__P_CaL) [picoA_per_millimolar] + this->mParameters[9] = 132; // (var_membrane__Cm) [picoF] + this->mParameters[10] = 2860; // (var_sodium_current__P_Na) [picoA_per_millimolar] + this->mParameters[11] = 1.1459999999999999; // (var_time_independent_potassium_current__P_K1_0) [nanoS_per_picoF] + this->mParameters[12] = 0.0086400000000000001; // (var_rapid_time_dependent_potassium_current__P_Kr) [nanoS_per_picoF] + this->mParameters[13] = 5.04; // (var_slow_time_dependent_potassium_current__P_Ks_K) [picoA_per_millimolar] + this->mParameters[14] = 6.8099999999999996; // (var_sodium_calcium_exchanger__P_NaCa) [picoA_per_picoF] + this->mParameters[15] = 0.033000000000000002; // (var_transient_outward_current__P_to_K) [picoA_per_millimolar] + } + + Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::~Dynamicmatsuoka_model_2003FromCellMLGRL1Opt() + { + } + + AbstractLookupTableCollection* Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::GetLookupTableCollection() + { + return Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance(); + } + + void Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 37; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_membrane__i_tot = 0.38500000000000001 * var_constant_field_equations__CF_Na + 0.040000000000000001 * var_constant_field_equations__CF_Ca + 0.15400000000000003 * var_constant_field_equations__CF_K + 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) / (1 + 90.050628437051003 * pow((_lt_0_row[4] / mParameters[7]), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))) + 0.37 * var_chaste_interface__sodium_potassium_pump_y_gate__y / ((1 + 0.094 / var_chaste_interface__ATP_production__ATPi) * (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))))) * mParameters[9] + 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K + 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na + mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca + 1 * (1 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y * _lt_0_row[5] / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)) - 1 * (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3))) * mParameters[9] * mParameters[14] + 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca + 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na + 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K + 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na + 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2 + 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)) + pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13] + pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2 + var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 + 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y + ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * _lt_0_row[7] * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K)); // picoA + const double var_chaste_interface__i_ionic = 1 * HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot / mParameters[9]; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + std::vector& rY = rGetStateVariables(); + unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + + double d_dt_chaste_interface_var_membrane__Vm; + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA + const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * _lt_0_row[7] * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K)); // picoA + const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = 1 * (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + d_dt_chaste_interface_var_membrane__Vm = (-var_L_type_Ca_channel__i_CaL_Ca - var_L_type_Ca_channel__i_CaL_K - var_L_type_Ca_channel__i_CaL_Na - var_T_type_Ca_channel__i_Ca_T - var_background_Cab_current__i_Cab - var_background_KATP_current__i_KATP - var_background_Kpl_current__i_Kpl - var_background_NSC_current__i_bNSC_K - var_background_NSC_current__i_bNSC_Na - var_background_lCa_current__i_lCa_K - var_background_lCa_current__i_lCa_Na - var_membrane__i_ext - var_rapid_time_dependent_potassium_current__i_Kr - var_slow_time_dependent_potassium_current__i_Ks_K - var_slow_time_dependent_potassium_current__i_Ks_Na - var_sodium_calcium_exchanger__i_NaCa - var_sodium_current__i_Na_K - var_sodium_current__i_Na_Na - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to_K - var_transient_outward_current__i_to_Na) / mParameters[9]; // millivolt / millisecond + + double evalF = d_dt_chaste_interface_var_membrane__Vm; + mEvalF[0] = d_dt_chaste_interface_var_membrane__Vm; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + std::vector& rY = rGetStateVariables(); + const double delta = 1e-8; + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; + // Units: dimensionless; Initial value: 0.3556412697995689 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; + // Units: dimensionless; Initial value: 0.40285968661346977 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; + // Units: dimensionless; Initial value: 0.9968480629364956 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; + // Units: dimensionless; Initial value: 0.000877325391245903 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; + // Units: dimensionless; Initial value: 0.4250747299372254 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__RyR_channel__p_close_RyR = rY[30]; + // Units: dimensionless; Initial value: 0.19135178123107768 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__p_CCa = 1 - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; // dimensionless + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL = 1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // dimensionless + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_NL_model__Q_a = -0.0038999999999999998 * var_chaste_interface__NL_model__pCaCB + 0.0038999999999999998 * var_chaste_interface__NL_model__pCa * exp(-0.86212130841993795); // per_millisecond + const double var_NL_model__Q_d2 = 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCaCB; // per_millisecond + const double var_SR_T_current__i_SR_T = 386 * var_chaste_interface__Ca_concentrations_in_SR__Caup - 386 * var_Ca_concentrations_in_SR__Carel; // picoA + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_b = -0.029999999999999999 * var_chaste_interface__NL_model__pCa + 39 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB) * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCa = -var_NL_model__Q_a + var_NL_model__Q_b; // 1 / millisecond + const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCB = -0.12 * var_chaste_interface__NL_model__pCB - 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCB + var_NL_model__Q_r; // 1 / millisecond + const double d_dt_chaste_interface_var_NL_model__pCaCB = -var_NL_model__Q_d2 - var_NL_model__Q_r + var_NL_model__Q_a; // 1 / millisecond + const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA + const double var_SR_L_current__i_SR_L = (-var_internal_ion_concentrations__Cai + var_chaste_interface__Ca_concentrations_in_SR__Caup) * mParameters[0]; // picoA + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = 1 * (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA + const double d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y = (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * (0.01 - 0.01 * var_SR_calcium_pump__p_E2Ca + var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) - (1 - 0.98999999999999999 * var_SR_calcium_pump__p_E1Ca) * var_chaste_interface__SR_calcium_pump_y_gate__y; // 1 / millisecond + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total = 3.2387883511406234e-5 * var_SR_T_current__i_SR_T - 3.2387883511406234e-5 * var_RyR_channel__i_RyR; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup = -1.2955153404562494e-5 * var_SR_L_current__i_SR_L - 1.2955153404562494e-5 * var_SR_T_current__i_SR_T - 1.2955153404562494e-5 * var_SR_calcium_pump__i_SR_U; // millimolar / millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y = 1 * _lt_0_row[8] * (1 - var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y) - 1 * _lt_0_row[9] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; // 1 / millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI = _lt_0_row[10]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP = _lt_0_row[11]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI = _lt_0_row[12]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = 0.0040000000000000001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL - (0.001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; // 1 / millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP = _lt_0_row[13]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = 0.001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL - (0.0040000000000000001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // 1 / millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI = 0.040000000000000001 / (1 + 0.25 * var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI / (var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI * var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP)); // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = (0.040000000000000001 - var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - (var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // 1 / millisecond + const double d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1 = 1 * _lt_0_row[14] * (1 - var_chaste_interface__T_type_Ca_channel_y1_gate__y1) - 1 * _lt_0_row[15] * var_chaste_interface__T_type_Ca_channel_y1_gate__y1; // 1 / millisecond + const double d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2 = 1 * _lt_0_row[16] * (1 - var_chaste_interface__T_type_Ca_channel_y2_gate__y2) - 1 * _lt_0_row[17] * var_chaste_interface__T_type_Ca_channel_y2_gate__y2; // 1 / millisecond + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C = 0.34999999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + 0.0041999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - (0.14299999999999999 + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C; // 1 / millisecond + const double var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca = 6.9539999999999997 * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U = 0.14299999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C + 2.0019999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa - (0.34999999999999998 + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa = 0.00029999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - 2.3519999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond + const double var_RyR_channel__k1 = 280000 * pow(var_internal_ion_concentrations__Cai, 2) / pow(mParameters[2], 2) - 150 * var_L_type_Ca_channel__p_open_CaL * var_L_type_Ca_channel_Ca_dependent_gate__iCaL; // per_millisecond + const double d_dt_chaste_interface_var_RyR_channel__p_close_RyR = -(0.00084900000000000004 + var_RyR_channel__k1) * var_chaste_interface__RyR_channel__p_close_RyR + 0.000377 * pow(var_Ca_concentrations_in_SR__Carel, 2) * (1 - var_chaste_interface__RyR_channel__p_close_RyR - var_chaste_interface__RyR_channel__p_open_RyR); // 1 / millisecond + const double d_dt_chaste_interface_var_RyR_channel__p_open_RyR = var_RyR_channel__k1 * var_chaste_interface__RyR_channel__p_close_RyR - 0.080000000000000002 * var_chaste_interface__RyR_channel__p_open_RyR / (1 + 0.35999999999999999 / var_Ca_concentrations_in_SR__Carel); // 1 / millisecond + const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA + const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * _lt_0_row[7] * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K)); // picoA + const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1 = -(_lt_0_row[18]) * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 + 1 * _lt_0_row[19] * (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1); // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2 = -(_lt_0_row[20]) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 1 * _lt_0_row[21] * (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2); // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3 = 1 * _lt_0_row[22] * (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3) - 1 * _lt_0_row[23] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // 1 / millisecond + const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1 = 1 * _lt_0_row[24] * (1 - var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1) - 1 * _lt_0_row[25] * var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1; // 1 / millisecond + const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2 = -0.004444 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 + 3.7000000000000002 * (1 - var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_internal_ion_concentrations__Cai; // 1 / millisecond + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y = (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * (1 / (1 + 1.3799999999999999 * (1 + 1.4927113702623908e-6 * pow(mParameters[7], 3)) / mParameters[5]) + var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) - (1 / (1 + 0.0013799999999999999 * (1 + 0.0014927113702623907 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)) / var_internal_ion_concentrations__Cai) + var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na) * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; // 1 / millisecond + const double var_sodium_calcium_exchanger__i_NaCa = 1 * (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total = 0.070000000000000007 * var_NL_model__Q_d2 + 0.070000000000000007 * var_NL_model__Q_r + 6.4775767022812476e-7 * var_RyR_channel__i_RyR + 6.4775767022812476e-7 * var_SR_L_current__i_SR_L + 6.4775767022812476e-7 * var_SR_calcium_pump__i_SR_U + 1.2955153404562495e-6 * var_sodium_calcium_exchanger__i_NaCa - 0.070000000000000007 * var_NL_model__Q_b - 6.4775767022812476e-7 * var_L_type_Ca_channel__i_CaL_Ca - 6.4775767022812476e-7 * var_T_type_Ca_channel__i_Ca_T - 6.4775767022812476e-7 * var_background_Cab_current__i_Cab; // millimolar / millisecond + const double d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y = 1 * _lt_0_row[28] * (1 - var_chaste_interface__sodium_current_ultra_slow_gate__y) - 1 * _lt_0_row[29] * var_chaste_interface__sodium_current_ultra_slow_gate__y; // 1 / millisecond + const double var_sodium_current_voltage_dependent_gate__k_AI_RI = _lt_0_row[30]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_RP = _lt_0_row[32]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RI_AI = _lt_0_row[33]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_AP = _lt_0_row[34]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_RI = 0.01 / (1 + 8.7499999999999999e-5 * var_sodium_current_voltage_dependent_gate__k_AP_RP * var_sodium_current_voltage_dependent_gate__k_RI_AI / (var_sodium_current_voltage_dependent_gate__k_AI_RI * var_sodium_current_voltage_dependent_gate__k_AP_AI * var_sodium_current_voltage_dependent_gate__k_RP_AP)); // per_millisecond + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na = 8.7499999999999999e-5 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na + var_sodium_current_voltage_dependent_gate__k_RP_AP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na - (var_sodium_current_voltage_dependent_gate__k_AP_AI + var_sodium_current_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // 1 / millisecond + const double var_sodium_current_voltage_dependent_gate__p_RI_Na = 1 - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // dimensionless + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na = var_sodium_current_voltage_dependent_gate__k_AP_AI * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + var_sodium_current_voltage_dependent_gate__k_RI_AI * var_sodium_current_voltage_dependent_gate__p_RI_Na - (8.7499999999999999e-5 + var_sodium_current_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na; // 1 / millisecond + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na = (0.01 - var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_sodium_current_voltage_dependent_gate__p_RI_Na + var_sodium_current_voltage_dependent_gate__k_AP_RP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - (var_sodium_current_voltage_dependent_gate__k_RP_AP + var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // 1 / millisecond + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y = (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * (0.040000000000000001 * var_sodium_potassium_pump__p_E2Na + 0.16500000000000001 / (1 + 0.21928759810465578 * pow((1 / mParameters[6]), 1.1200000000000001) * (1 + 0.011104864200909382 * pow(var_sodium_potassium_pump__Nao_Eff, 1.0600000000000001)))) - (0.01 / (1 + 49.999265664512095 * pow((1 / var_chaste_interface__internal_ion_concentrations__Ki), 1.1200000000000001) * (1 + 0.22703754152993499 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 1.0600000000000001))) + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na) * var_chaste_interface__sodium_potassium_pump_y_gate__y; // 1 / millisecond + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double d_dt_chaste_interface_var_ATP_production__ATPi = 0.014999999999999999 + 3.2387883511406238e-7 * var_SR_calcium_pump__i_SR_U - 0.0030000000000000001 * var_chaste_interface__ATP_production__ATPi - 0.028000000000000004 * var_chaste_interface__NL_model__pCaCB - 1.2955153404562495e-6 * var_sodium_potassium_pump__i_NaK; // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y = 1 * (1 - var_chaste_interface__time_independent_potassium_current_y_gate__y) / (7 * exp(-0.32333333333333331 + 0.0033333333333333335 * var_chaste_interface__membrane__Vm - 0.0033333333333333335 * var_time_independent_potassium_current__E_K) + 8000 * exp(-11.411764705882353 + 0.11764705882352941 * var_chaste_interface__membrane__Vm - 0.11764705882352941 * var_time_independent_potassium_current__E_K)) - 1 * pow(var_time_independent_potassium_current__fO, 4) * var_chaste_interface__time_independent_potassium_current_y_gate__y / (0.00013999999999999999 * exp(10.659340659340661 + 0.10989010989010989 * var_time_independent_potassium_current__E_K - 0.10989010989010989 * var_chaste_interface__membrane__Vm) + 0.20000000000000001 * exp(0.19400000000000001 + 0.002 * var_time_independent_potassium_current__E_K - 0.002 * var_chaste_interface__membrane__Vm)); // 1 / millisecond + const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1 = 1 * _lt_0_row[36] * (1 - var_chaste_interface__transient_outward_current_y1_gate__y1) - 1 * _lt_0_row[37] * var_chaste_interface__transient_outward_current_y1_gate__y1; // 1 / millisecond + const double d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2 = 0.0038 * _lt_0_row[38] * (1 - var_chaste_interface__transient_outward_current_y2_gate__y2) * _lt_0_row[39] - 0.0038 * _lt_0_row[40] * var_chaste_interface__transient_outward_current_y2_gate__y2 * _lt_0_row[41]; // 1 / millisecond + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Ki = -1.2955153404562495e-6 * (-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_K + var_background_KATP_current__i_KATP + var_background_Kpl_current__i_Kpl + var_background_NSC_current__i_bNSC_K + var_background_lCa_current__i_lCa_K + var_membrane__i_ext + var_rapid_time_dependent_potassium_current__i_Kr + var_slow_time_dependent_potassium_current__i_Ks_K + var_sodium_current__i_Na_K + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to_K) * mParameters[4]; // millimolar / millisecond + const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Nai = -1.2955153404562495e-6 * (3 * var_sodium_calcium_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_Na + var_background_NSC_current__i_bNSC_Na + var_background_lCa_current__i_lCa_Na + var_slow_time_dependent_potassium_current__i_Ks_Na + var_sodium_current__i_Na_Na + var_transient_outward_current__i_to_Na) * mParameters[4]; // millimolar / millisecond + + mEvalF[1] = d_dt_chaste_interface_var_internal_ion_concentrations__Nai; + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time, rY, delta); + mEvalF[2] = d_dt_chaste_interface_var_internal_ion_concentrations__Ki; + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time, rY, delta); + mEvalF[3] = d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total; + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time, rY, delta); + mEvalF[4] = d_dt_chaste_interface_var_ATP_production__ATPi; + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time, rY, delta); + mEvalF[5] = d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na; + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time, rY, delta); + mEvalF[6] = d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na; + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time, rY, delta); + mEvalF[7] = d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na; + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time, rY, delta); + mEvalF[8] = d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y; + mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time, rY, delta); + mEvalF[9] = d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time, rY, delta); + mEvalF[10] = d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; + mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time, rY, delta); + mEvalF[11] = d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; + mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time, rY, delta); + mEvalF[12] = d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U; + mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time, rY, delta); + mEvalF[13] = d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa; + mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time, rY, delta); + mEvalF[14] = d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C; + mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time, rY, delta); + mEvalF[15] = d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y; + mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time, rY, delta); + mEvalF[16] = d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1; + mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time, rY, delta); + mEvalF[17] = d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2; + mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time, rY, delta); + mEvalF[18] = d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y; + mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time, rY, delta); + mEvalF[19] = d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1; + mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time, rY, delta); + mEvalF[20] = d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2; + mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time, rY, delta); + mEvalF[21] = d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3; + mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time, rY, delta); + mEvalF[22] = d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1; + mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time, rY, delta); + mEvalF[23] = d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2; + mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time, rY, delta); + mEvalF[24] = d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1; + mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time, rY, delta); + mEvalF[25] = d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2; + mPartialF[25] = EvaluatePartialDerivative25(var_chaste_interface__environment__time, rY, delta); + mEvalF[26] = d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y; + mPartialF[26] = EvaluatePartialDerivative26(var_chaste_interface__environment__time, rY, delta); + mEvalF[27] = d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y; + mPartialF[27] = EvaluatePartialDerivative27(var_chaste_interface__environment__time, rY, delta); + mEvalF[28] = d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y; + mPartialF[28] = EvaluatePartialDerivative28(var_chaste_interface__environment__time, rY, delta); + mEvalF[29] = d_dt_chaste_interface_var_RyR_channel__p_open_RyR; + mPartialF[29] = EvaluatePartialDerivative29(var_chaste_interface__environment__time, rY, delta); + mEvalF[30] = d_dt_chaste_interface_var_RyR_channel__p_close_RyR; + mPartialF[30] = EvaluatePartialDerivative30(var_chaste_interface__environment__time, rY, delta); + mEvalF[31] = d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total; + mPartialF[31] = EvaluatePartialDerivative31(var_chaste_interface__environment__time, rY, delta); + mEvalF[32] = d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup; + mPartialF[32] = EvaluatePartialDerivative32(var_chaste_interface__environment__time, rY, delta); + mEvalF[33] = d_dt_chaste_interface_var_NL_model__pCa; + mPartialF[33] = EvaluatePartialDerivative33(var_chaste_interface__environment__time, rY, delta); + mEvalF[34] = d_dt_chaste_interface_var_NL_model__pCaCB; + mPartialF[34] = EvaluatePartialDerivative34(var_chaste_interface__environment__time, rY, delta); + mEvalF[35] = d_dt_chaste_interface_var_NL_model__pCB; + mPartialF[35] = EvaluatePartialDerivative35(var_chaste_interface__environment__time, rY, delta); + mEvalF[36] = d_dt_chaste_interface_var_NL_model__X; + mPartialF[36] = EvaluatePartialDerivative36(var_chaste_interface__environment__time, rY, delta); + + { + if (fabs(mPartialF[1]) < delta){ + rY[1] += mDt*d_dt_chaste_interface_var_internal_ion_concentrations__Nai; + } + else + { + rY[1] += (d_dt_chaste_interface_var_internal_ion_concentrations__Nai/mPartialF[1])*(exp(mPartialF[1]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[2]) < delta){ + rY[2] += mDt*d_dt_chaste_interface_var_internal_ion_concentrations__Ki; + } + else + { + rY[2] += (d_dt_chaste_interface_var_internal_ion_concentrations__Ki/mPartialF[2])*(exp(mPartialF[2]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[3]) < delta){ + rY[3] += mDt*d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total; + } + else + { + rY[3] += (d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total/mPartialF[3])*(exp(mPartialF[3]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[4]) < delta){ + rY[4] += mDt*d_dt_chaste_interface_var_ATP_production__ATPi; + } + else + { + rY[4] += (d_dt_chaste_interface_var_ATP_production__ATPi/mPartialF[4])*(exp(mPartialF[4]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[5]) < delta){ + rY[5] += mDt*d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na; + } + else + { + rY[5] += (d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na/mPartialF[5])*(exp(mPartialF[5]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[6]) < delta){ + rY[6] += mDt*d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na; + } + else + { + rY[6] += (d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na/mPartialF[6])*(exp(mPartialF[6]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[7]) < delta){ + rY[7] += mDt*d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na; + } + else + { + rY[7] += (d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na/mPartialF[7])*(exp(mPartialF[7]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[8]) < delta){ + rY[8] += mDt*d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y; + } + else + { + rY[8] += (d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y/mPartialF[8])*(exp(mPartialF[8]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[9]) < delta){ + rY[9] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + } + else + { + rY[9] += (d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL/mPartialF[9])*(exp(mPartialF[9]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[10]) < delta){ + rY[10] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; + } + else + { + rY[10] += (d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL/mPartialF[10])*(exp(mPartialF[10]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[11]) < delta){ + rY[11] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; + } + else + { + rY[11] += (d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL/mPartialF[11])*(exp(mPartialF[11]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[12]) < delta){ + rY[12] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U; + } + else + { + rY[12] += (d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U/mPartialF[12])*(exp(mPartialF[12]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[13]) < delta){ + rY[13] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa; + } + else + { + rY[13] += (d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa/mPartialF[13])*(exp(mPartialF[13]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[14]) < delta){ + rY[14] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C; + } + else + { + rY[14] += (d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C/mPartialF[14])*(exp(mPartialF[14]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[15]) < delta){ + rY[15] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y; + } + else + { + rY[15] += (d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y/mPartialF[15])*(exp(mPartialF[15]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[16]) < delta){ + rY[16] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1; + } + else + { + rY[16] += (d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1/mPartialF[16])*(exp(mPartialF[16]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[17]) < delta){ + rY[17] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2; + } + else + { + rY[17] += (d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2/mPartialF[17])*(exp(mPartialF[17]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[18]) < delta){ + rY[18] += mDt*d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y; + } + else + { + rY[18] += (d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y/mPartialF[18])*(exp(mPartialF[18]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[19]) < delta){ + rY[19] += mDt*d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1; + } + else + { + rY[19] += (d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1/mPartialF[19])*(exp(mPartialF[19]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[20]) < delta){ + rY[20] += mDt*d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2; + } + else + { + rY[20] += (d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2/mPartialF[20])*(exp(mPartialF[20]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[21]) < delta){ + rY[21] += mDt*d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3; + } + else + { + rY[21] += (d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3/mPartialF[21])*(exp(mPartialF[21]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[22]) < delta){ + rY[22] += mDt*d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1; + } + else + { + rY[22] += (d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1/mPartialF[22])*(exp(mPartialF[22]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[23]) < delta){ + rY[23] += mDt*d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2; + } + else + { + rY[23] += (d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2/mPartialF[23])*(exp(mPartialF[23]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[24]) < delta){ + rY[24] += mDt*d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1; + } + else + { + rY[24] += (d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1/mPartialF[24])*(exp(mPartialF[24]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[25]) < delta){ + rY[25] += mDt*d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2; + } + else + { + rY[25] += (d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2/mPartialF[25])*(exp(mPartialF[25]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[26]) < delta){ + rY[26] += mDt*d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y; + } + else + { + rY[26] += (d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y/mPartialF[26])*(exp(mPartialF[26]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[27]) < delta){ + rY[27] += mDt*d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y; + } + else + { + rY[27] += (d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y/mPartialF[27])*(exp(mPartialF[27]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[28]) < delta){ + rY[28] += mDt*d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y; + } + else + { + rY[28] += (d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y/mPartialF[28])*(exp(mPartialF[28]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[29]) < delta){ + rY[29] += mDt*d_dt_chaste_interface_var_RyR_channel__p_open_RyR; + } + else + { + rY[29] += (d_dt_chaste_interface_var_RyR_channel__p_open_RyR/mPartialF[29])*(exp(mPartialF[29]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[30]) < delta){ + rY[30] += mDt*d_dt_chaste_interface_var_RyR_channel__p_close_RyR; + } + else + { + rY[30] += (d_dt_chaste_interface_var_RyR_channel__p_close_RyR/mPartialF[30])*(exp(mPartialF[30]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[31]) < delta){ + rY[31] += mDt*d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total; + } + else + { + rY[31] += (d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total/mPartialF[31])*(exp(mPartialF[31]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[32]) < delta){ + rY[32] += mDt*d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup; + } + else + { + rY[32] += (d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup/mPartialF[32])*(exp(mPartialF[32]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[33]) < delta){ + rY[33] += mDt*d_dt_chaste_interface_var_NL_model__pCa; + } + else + { + rY[33] += (d_dt_chaste_interface_var_NL_model__pCa/mPartialF[33])*(exp(mPartialF[33]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[34]) < delta){ + rY[34] += mDt*d_dt_chaste_interface_var_NL_model__pCaCB; + } + else + { + rY[34] += (d_dt_chaste_interface_var_NL_model__pCaCB/mPartialF[34])*(exp(mPartialF[34]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[35]) < delta){ + rY[35] += mDt*d_dt_chaste_interface_var_NL_model__pCB; + } + else + { + rY[35] += (d_dt_chaste_interface_var_NL_model__pCB/mPartialF[35])*(exp(mPartialF[35]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[36]) < delta){ + rY[36] += mDt*d_dt_chaste_interface_var_NL_model__X; + } + else + { + rY[36] += (d_dt_chaste_interface_var_NL_model__X/mPartialF[36])*(exp(mPartialF[36]*mDt)-1.0); + } + + } + + } + + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative0(double var_chaste_interface__environment__time, std::vector& rY) + { + double d_dt_chaste_interface_var_membrane__Vm; + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA + const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * _lt_0_row[7] * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K)); // picoA + const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = 1 * (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + d_dt_chaste_interface_var_membrane__Vm = (-var_L_type_Ca_channel__i_CaL_Ca - var_L_type_Ca_channel__i_CaL_K - var_L_type_Ca_channel__i_CaL_Na - var_T_type_Ca_channel__i_Ca_T - var_background_Cab_current__i_Cab - var_background_KATP_current__i_KATP - var_background_Kpl_current__i_Kpl - var_background_NSC_current__i_bNSC_K - var_background_NSC_current__i_bNSC_Na - var_background_lCa_current__i_lCa_K - var_background_lCa_current__i_lCa_Na - var_membrane__i_ext - var_rapid_time_dependent_potassium_current__i_Kr - var_slow_time_dependent_potassium_current__i_Ks_K - var_slow_time_dependent_potassium_current__i_Ks_Na - var_sodium_calcium_exchanger__i_NaCa - var_sodium_current__i_Na_K - var_sodium_current__i_Na_Na - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to_K - var_transient_outward_current__i_to_Na) / mParameters[9]; // millivolt / millisecond + + return d_dt_chaste_interface_var_membrane__Vm; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative0(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x0 = 1 / mParameters[9]; + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x10 = var_x3 * mParameters[5]; + const double var_x11 = -0.026190000000000001 + var_x8 + var_x9 - var_x10; + const double var_x12 = var_x11 * var_x5; + const double var_x13 = 0.0056055744906903715 * var_chaste_interface__membrane__Vm; + const double var_x14 = ((var_x1) ? (0) : (0.074870384603595908 * var_x12 + var_x10 * var_x13 * var_x5 - var_x11 * var_x13 * var_x3 / pow(var_x4, 2))); + const double var_x15 = 1 * mParameters[14]; + const double var_x16 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x17 = 1 / var_x16; + const double var_x18 = -17.978260869565219 + 362.31884057971018 * var_x7 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x19 = var_x17 * var_x18; + const double var_x20 = _lt_0_row[5]; + const double var_x21 = var_x20 / (1 + 669.921875 * var_x19); + const double var_x22 = pow(mParameters[7], 3); + const double var_x23 = _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / var_x22); + const double var_x24 = 0.011979261536575346 * var_x21 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y + 0.025455930765222609 * var_x23 * (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y); + const double var_x25 = var_x24 * mParameters[9]; + const double var_x26 = 612 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2; + const double var_x27 = var_x26 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1; + const double var_x28 = 1 - var_chaste_interface__sodium_potassium_pump_y_gate__y; + const double var_x29 = _lt_0_row[35]; + const double var_x30 = pow((1 / (var_x29 * mParameters[7])), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001)); + const double var_x31 = var_x30 / pow((0.011104864200909382 + var_x30), 2); + const double var_x32 = var_x28 * var_x31 * mParameters[9]; + const double var_x33 = var_x14 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x34 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x35 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x36 = 1 / (1 + 2.7439999999999993 * var_x35); + const double var_x37 = var_x36 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x38 = var_x34 * var_x37; + const double var_x39 = var_x33 * var_x38; + const double var_x40 = 0.037435192301797954 * var_chaste_interface__membrane__Vm; + const double var_x41 = exp(-var_x40); + const double var_x42 = var_x41 * mParameters[7]; + const double var_x43 = -var_x42 + var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x44 = 1 - var_x41; + const double var_x45 = 1 / var_x44; + const double var_x46 = 0.037435192301797954 * var_x45; + const double var_x47 = 0.0014013936226725929 * var_chaste_interface__membrane__Vm; + const double var_x48 = var_x45 * var_x47; + const double var_x49 = var_x41 * var_x47 / pow(var_x44, 2); + const double var_x50 = ((var_x1) ? (0) : (var_x42 * var_x48 + var_x43 * var_x46 - var_x43 * var_x49)); + const double var_x51 = var_x6 + var_x7; + const double var_x52 = 1 + 1.3823999999999997e-8 / pow(var_x51, 3); + const double var_x53 = 0.11 / var_x52; + const double var_x54 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); + const double var_x55 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; + const double var_x56 = var_x54 * var_x55; + const double var_x57 = 0.2016 * var_x56; + const double var_x58 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); + const double var_x59 = 0.00297 * var_x58; + const double var_x60 = var_x59 * var_chaste_interface__transient_outward_current_y2_gate__y2; + const double var_x61 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; + const double var_x62 = var_x61 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; + const double var_x63 = var_x37 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x64 = var_x34 * var_x63; + const double var_x65 = 1.8499999999999999e-5 * var_x64; + const double var_x66 = 0.38500000000000001 * var_x50 + var_x50 * var_x53 + var_x50 * var_x57 + var_x50 * var_x60 + var_x50 * var_x62 + var_x50 * var_x65; + const double var_x67 = var_x41 * mParameters[6]; + const double var_x68 = -var_x67 + var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x69 = ((var_x1) ? (0) : (var_x46 * var_x68 + var_x48 * var_x67 - var_x49 * var_x68)); + const double var_x70 = pow(var_chaste_interface__ATP_production__ATPi, 2); + const double var_x71 = pow(mParameters[6], 0.23999999999999999); + const double var_x72 = var_x71 / (1 + 99.999999999999986 * var_x70); + const double var_x73 = var_x56 * mParameters[13]; + const double var_x74 = var_x58 * mParameters[15]; + const double var_x75 = var_x74 * var_chaste_interface__transient_outward_current_y2_gate__y2; + const double var_x76 = 0.10000000000000001 * var_x62; + const double var_x77 = 0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1; + const double var_x78 = 0.71370912277944121 * var_x77; + const double var_x79 = pow(mParameters[6], 0.20000000000000001); + const double var_x80 = var_x79 * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; + const double var_x81 = pow(mParameters[6], 0.40000000000000002); + const double var_x82 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x83 = log(var_x82 * mParameters[6]); + const double var_x84 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x83); + const double var_x85 = 1 + var_x84; + const double var_x86 = pow(var_x85, 4); + const double var_x87 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x83); + const double var_x88 = 1 + var_x87; + const double var_x89 = pow(var_x88, (-4)); + const double var_x90 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x83); + const double var_x91 = 1 + var_x90; + const double var_x92 = 1 / var_x91; + const double var_x93 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x83); + const double var_x94 = var_x92 * var_x93; + const double var_x95 = exp(0.47999999999999998 + 1.282215932351298 * var_x83 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x96 = var_x95 / var_x88; + const double var_x97 = var_x85 * var_x96; + const double var_x98 = var_x97 + 0.25 * var_x94; + const double var_x99 = pow(var_x98, (-4)); + const double var_x100 = pow(var_x95, 4); + const double var_x101 = var_x100 * var_x89 * var_x99; + const double var_x102 = var_x101 * var_x86; + const double var_x103 = 1 * var_x102; + const double var_x104 = pow(var_x91, (-2)); + const double var_x105 = pow(var_x95, 2); + const double var_x106 = pow(var_x93, 2); + const double var_x107 = var_x104 * var_x105 * var_x106 * var_x99; + const double var_x108 = pow(var_x88, (-2)); + const double var_x109 = pow(var_x85, 2); + const double var_x110 = var_x108 * var_x109; + const double var_x111 = var_x107 * var_x110; + const double var_x112 = pow(var_x85, 3); + const double var_x113 = pow(var_x88, (-3)); + const double var_x114 = pow(var_x95, 3); + const double var_x115 = pow(var_x98, (-3)); + const double var_x116 = 1 / (0.75 * var_x94 + 3 * var_x97); + const double var_x117 = var_x115 * var_x116; + const double var_x118 = var_x112 * var_x113 * var_x114 * var_x117 * var_x94; + const double var_x119 = var_x81 * (var_x103 + 0.125 * var_x111 + 2 * var_x118) * mParameters[11]; + const double var_x120 = 0.50938071193859957 * var_x119; + const double var_x121 = mParameters[9] * var_chaste_interface__time_independent_potassium_current_y_gate__y; + const double var_x122 = 0.00036499999999999998 * var_x64; + const double var_x123 = 0.12 * var_x87; + const double var_x124 = pow(var_x88, (-5)); + const double var_x125 = var_x100 * var_x86; + const double var_x126 = var_x124 * var_x125 * var_x99; + const double var_x127 = pow(var_x98, (-5)); + const double var_x128 = var_x104 * var_x90 * var_x93; + const double var_x129 = var_x84 * var_x96; + const double var_x130 = var_x108 * var_x85 * var_x95; + const double var_x131 = 0.014999999999999999 * var_x128 + 0.192 * var_x97 - 0.25600000000000001 * var_x129 - 0.035000000000000003 * var_x94 + var_x123 * var_x130; + const double var_x132 = var_x105 * var_x106 * var_x110 * var_x90 * var_x99 / pow(var_x91, 3); + const double var_x133 = var_x107 * var_x109 * var_x113; + const double var_x134 = var_x130 * var_x87; + const double var_x135 = 0.01125 * var_x128 + 0.089999999999999997 * var_x134 + 0.14400000000000002 * var_x97 - 0.192 * var_x129 - 0.026250000000000002 * var_x94; + const double var_x136 = var_x114 * var_x117; + const double var_x137 = var_x112 * var_x136; + const double var_x138 = var_x113 * var_x137; + const double var_x139 = var_x87 * var_x89; + const double var_x140 = -26.712831923985377 * var_x83 + var_chaste_interface__membrane__Vm; + const double var_x141 = 0.50938071193859957 * var_x121 * var_x140 * var_x81 * mParameters[11]; + const double var_x142 = pow(mParameters[6], 0.16); + const double var_x143 = 0.0010924717003124302 * var_x142; + const double var_x144 = var_chaste_interface__membrane__Vm == (-3); + const double var_x145 = var_x40 * var_x45; + const double var_x146 = ((var_x1) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (var_x145 * var_x68)); + const double var_x147 = var_x142 * var_x146; + const double var_x148 = 0.076923076923076927 * var_chaste_interface__membrane__Vm; + const double var_x149 = exp(-0.23076923076923078 - var_x148); + const double var_x150 = 1 - var_x149; + const double var_x151 = 8.3986538766456042e-5 / var_x150; + const double var_x152 = 3 + var_chaste_interface__membrane__Vm; + const double var_x153 = var_x142 * var_x151 * var_x152; + const double var_x154 = 44.047040000000003 * var_x72 + 0.15400000000000003 * var_x69 + var_x120 * var_x121 + var_x122 * var_x69 + var_x141 * (-0.0032499999999999994 * var_x111 - 0.0037499999999999999 * var_x132 - 0.192 * var_x102 - 0.218 * var_x118 - var_x123 * var_x126 - 0.0074999999999999997 * var_x133 * var_x87 - 0.029999999999999999 * var_x128 * var_x138 - 0.17999999999999999 * var_x112 * var_x136 * var_x139 * var_x94 + 1 * var_x100 * var_x127 * var_x131 * var_x86 * var_x89 + 0.25600000000000001 * var_x100 * var_x112 * var_x84 * var_x89 * var_x99 + 0.125 * var_x104 * var_x105 * var_x106 * var_x108 * var_x109 * var_x127 * var_x131 + 0.016 * var_x104 * var_x105 * var_x106 * var_x108 * var_x84 * var_x85 * var_x99 + 0.22222222222222221 * var_x112 * var_x113 * var_x114 * var_x127 * var_x135 * var_x92 * var_x93 + 2 * var_x112 * var_x113 * var_x114 * var_x116 * var_x135 * var_x92 * var_x93 * var_x99 + 0.38400000000000001 * var_x109 * var_x113 * var_x114 * var_x115 * var_x116 * var_x84 * var_x92 * var_x93) + var_x53 * var_x69 + var_x69 * var_x73 + var_x69 * var_x75 + var_x69 * var_x76 + var_x78 * var_x80 + ((var_x144) ? (var_x143 * var_x69) : (var_x147 * var_x151 + var_x153 * var_x69 - 6.4605029820350801e-6 * var_x147 * var_x149 * var_x152 / pow(var_x150, 2))); + + partialF = var_x0 * (-var_x154 - var_x39 - var_x66 - 0.040000000000000001 * var_x14 - 0.0003035235018269044 * var_x32 - var_x14 * var_x27 - var_x15 * var_x25); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative1(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = 1 * (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Nai = -1.2955153404562495e-6 * (3 * var_sodium_calcium_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_Na + var_background_NSC_current__i_bNSC_Na + var_background_lCa_current__i_lCa_Na + var_slow_time_dependent_potassium_current__i_Ks_Na + var_sodium_current__i_Na_Na + var_transient_outward_current__i_to_Na) * mParameters[4]; // millimolar / millisecond + + return d_dt_chaste_interface_var_internal_ion_concentrations__Nai; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative1(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x16 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x17 = 1 / var_x16; + const double var_x18 = -17.978260869565219 + 362.31884057971018 * var_x7 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x19 = var_x17 * var_x18; + const double var_x20 = _lt_0_row[5]; + const double var_x34 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x35 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x36 = 1 / (1 + 2.7439999999999993 * var_x35); + const double var_x37 = var_x36 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x40 = 0.037435192301797954 * var_chaste_interface__membrane__Vm; + const double var_x41 = exp(-var_x40); + const double var_x44 = 1 - var_x41; + const double var_x45 = 1 / var_x44; + const double var_x51 = var_x6 + var_x7; + const double var_x52 = 1 + 1.3823999999999997e-8 / pow(var_x51, 3); + const double var_x53 = 0.11 / var_x52; + const double var_x54 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); + const double var_x55 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; + const double var_x56 = var_x54 * var_x55; + const double var_x57 = 0.2016 * var_x56; + const double var_x58 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); + const double var_x59 = 0.00297 * var_x58; + const double var_x60 = var_x59 * var_chaste_interface__transient_outward_current_y2_gate__y2; + const double var_x61 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; + const double var_x62 = var_x61 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; + const double var_x63 = var_x37 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x64 = var_x34 * var_x63; + const double var_x65 = 1.8499999999999999e-5 * var_x64; + const double var_x145 = var_x40 * var_x45; + const double var_x155 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x156 = pow(var_x155, 1.0600000000000001); + const double var_x157 = 1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001); + const double var_x158 = var_x156 * var_x157; + const double var_x159 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x160 = 1 + 0.094 * var_x159; + const double var_x161 = 1 / var_x160; + const double var_x162 = pow((0.22703754152993499 + var_x158), (-2)); + const double var_x163 = var_x161 * var_x162; + const double var_x164 = mParameters[9] * var_chaste_interface__sodium_potassium_pump_y_gate__y; + const double var_x165 = var_x155 * var_x158 * var_x163 * var_x164; + const double var_x166 = pow(var_chaste_interface__internal_ion_concentrations__Nai, (-4)); + const double var_x167 = pow((0.0014927113702623907 + var_x19), (-2)); + const double var_x168 = var_x167 * var_x20; + const double var_x169 = var_x166 * var_x168 * var_x18; + const double var_x170 = mParameters[9] * mParameters[14]; + const double var_x171 = var_x170 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; + const double var_x172 = ((var_x1) ? (0) : (var_x145)); + const double var_x173 = 0.38500000000000001 * var_x172 + var_x172 * var_x53 + var_x172 * var_x57 + var_x172 * var_x60 + var_x172 * var_x62 + var_x172 * var_x65; + const double var_x240 = 1.2955153404562495e-6 * mParameters[4]; + const double var_x241 = var_x169 * var_x171; + + partialF = -var_x240 * (var_x173 + 5.6097797986465521 * var_x165 + 0.013434402332361517 * var_x241); + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative2(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * _lt_0_row[7] * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K)); // picoA + const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA + const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Ki = -1.2955153404562495e-6 * (-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_K + var_background_KATP_current__i_KATP + var_background_Kpl_current__i_Kpl + var_background_NSC_current__i_bNSC_K + var_background_lCa_current__i_lCa_K + var_membrane__i_ext + var_rapid_time_dependent_potassium_current__i_Kr + var_slow_time_dependent_potassium_current__i_Ks_K + var_sodium_current__i_Na_K + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to_K) * mParameters[4]; // millimolar / millisecond + + return d_dt_chaste_interface_var_internal_ion_concentrations__Ki; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative2(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x34 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x35 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x36 = 1 / (1 + 2.7439999999999993 * var_x35); + const double var_x37 = var_x36 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x40 = 0.037435192301797954 * var_chaste_interface__membrane__Vm; + const double var_x41 = exp(-var_x40); + const double var_x44 = 1 - var_x41; + const double var_x45 = 1 / var_x44; + const double var_x51 = var_x6 + var_x7; + const double var_x52 = 1 + 1.3823999999999997e-8 / pow(var_x51, 3); + const double var_x53 = 0.11 / var_x52; + const double var_x54 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); + const double var_x55 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; + const double var_x56 = var_x54 * var_x55; + const double var_x58 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); + const double var_x61 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; + const double var_x62 = var_x61 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; + const double var_x63 = var_x37 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x64 = var_x34 * var_x63; + const double var_x70 = pow(var_chaste_interface__ATP_production__ATPi, 2); + const double var_x71 = pow(mParameters[6], 0.23999999999999999); + const double var_x72 = var_x71 / (1 + 99.999999999999986 * var_x70); + const double var_x73 = var_x56 * mParameters[13]; + const double var_x74 = var_x58 * mParameters[15]; + const double var_x75 = var_x74 * var_chaste_interface__transient_outward_current_y2_gate__y2; + const double var_x76 = 0.10000000000000001 * var_x62; + const double var_x77 = 0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1; + const double var_x79 = pow(mParameters[6], 0.20000000000000001); + const double var_x80 = var_x79 * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; + const double var_x81 = pow(mParameters[6], 0.40000000000000002); + const double var_x82 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x83 = log(var_x82 * mParameters[6]); + const double var_x84 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x83); + const double var_x85 = 1 + var_x84; + const double var_x86 = pow(var_x85, 4); + const double var_x87 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x83); + const double var_x88 = 1 + var_x87; + const double var_x89 = pow(var_x88, (-4)); + const double var_x90 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x83); + const double var_x91 = 1 + var_x90; + const double var_x92 = 1 / var_x91; + const double var_x93 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x83); + const double var_x94 = var_x92 * var_x93; + const double var_x95 = exp(0.47999999999999998 + 1.282215932351298 * var_x83 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x96 = var_x95 / var_x88; + const double var_x97 = var_x85 * var_x96; + const double var_x98 = var_x97 + 0.25 * var_x94; + const double var_x99 = pow(var_x98, (-4)); + const double var_x100 = pow(var_x95, 4); + const double var_x101 = var_x100 * var_x89 * var_x99; + const double var_x102 = var_x101 * var_x86; + const double var_x103 = 1 * var_x102; + const double var_x104 = pow(var_x91, (-2)); + const double var_x105 = pow(var_x95, 2); + const double var_x106 = pow(var_x93, 2); + const double var_x107 = var_x104 * var_x105 * var_x106 * var_x99; + const double var_x108 = pow(var_x88, (-2)); + const double var_x109 = pow(var_x85, 2); + const double var_x110 = var_x108 * var_x109; + const double var_x111 = var_x107 * var_x110; + const double var_x112 = pow(var_x85, 3); + const double var_x113 = pow(var_x88, (-3)); + const double var_x114 = pow(var_x95, 3); + const double var_x115 = pow(var_x98, (-3)); + const double var_x116 = 1 / (0.75 * var_x94 + 3 * var_x97); + const double var_x117 = var_x115 * var_x116; + const double var_x118 = var_x112 * var_x113 * var_x114 * var_x117 * var_x94; + const double var_x119 = var_x81 * (var_x103 + 0.125 * var_x111 + 2 * var_x118) * mParameters[11]; + const double var_x121 = mParameters[9] * var_chaste_interface__time_independent_potassium_current_y_gate__y; + const double var_x122 = 0.00036499999999999998 * var_x64; + const double var_x124 = pow(var_x88, (-5)); + const double var_x125 = var_x100 * var_x86; + const double var_x126 = var_x124 * var_x125 * var_x99; + const double var_x127 = pow(var_x98, (-5)); + const double var_x128 = var_x104 * var_x90 * var_x93; + const double var_x129 = var_x84 * var_x96; + const double var_x130 = var_x108 * var_x85 * var_x95; + const double var_x132 = var_x105 * var_x106 * var_x110 * var_x90 * var_x99 / pow(var_x91, 3); + const double var_x133 = var_x107 * var_x109 * var_x113; + const double var_x134 = var_x130 * var_x87; + const double var_x136 = var_x114 * var_x117; + const double var_x137 = var_x112 * var_x136; + const double var_x138 = var_x113 * var_x137; + const double var_x139 = var_x87 * var_x89; + const double var_x140 = -26.712831923985377 * var_x83 + var_chaste_interface__membrane__Vm; + const double var_x141 = 0.50938071193859957 * var_x121 * var_x140 * var_x81 * mParameters[11]; + const double var_x142 = pow(mParameters[6], 0.16); + const double var_x143 = 0.0010924717003124302 * var_x142; + const double var_x144 = var_chaste_interface__membrane__Vm == (-3); + const double var_x145 = var_x40 * var_x45; + const double var_x148 = 0.076923076923076927 * var_chaste_interface__membrane__Vm; + const double var_x149 = exp(-0.23076923076923078 - var_x148); + const double var_x150 = 1 - var_x149; + const double var_x151 = 8.3986538766456042e-5 / var_x150; + const double var_x152 = 3 + var_chaste_interface__membrane__Vm; + const double var_x153 = var_x142 * var_x151 * var_x152; + const double var_x155 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x156 = pow(var_x155, 1.0600000000000001); + const double var_x157 = 1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001); + const double var_x158 = var_x156 * var_x157; + const double var_x159 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x160 = 1 + 0.094 * var_x159; + const double var_x161 = 1 / var_x160; + const double var_x162 = pow((0.22703754152993499 + var_x158), (-2)); + const double var_x163 = var_x161 * var_x162; + const double var_x164 = mParameters[9] * var_chaste_interface__sodium_potassium_pump_y_gate__y; + const double var_x174 = pow(var_chaste_interface__internal_ion_concentrations__Ki, 0.12000000000000011); + const double var_x175 = ((var_x1) ? (1) : (var_x145)); + const double var_x176 = var_x82 * var_x94; + const double var_x177 = var_x128 * var_x82; + const double var_x178 = var_x82 * var_x97; + const double var_x179 = var_x129 * var_x82; + const double var_x180 = var_x134 * var_x82; + const double var_x181 = 0.40069247885978065 * var_x177 + 3.2055398308782452 * var_x180 + 5.1288637294051922 * var_x178 - 6.8384849725402566 * var_x179 - 0.93494911733948827 * var_x176; + const double var_x182 = var_x82 * var_x87; + const double var_x183 = 0.30051935914483546 * var_x177 + 2.4041548731586837 * var_x180 + 3.8466477970538944 * var_x178 - 5.1288637294051922 * var_x179 - 0.70121183800461617 * var_x176; + const double var_x184 = 0.15400000000000003 * var_x175 + var_x122 * var_x175 + var_x141 * (-0.10017311971494516 * var_x132 * var_x82 - 0.20034623942989033 * var_x133 * var_x182 - 0.80138495771956131 * var_x138 * var_x177 - 3.2055398308782452 * var_x126 * var_x182 - 5.1288637294051922 * var_x102 * var_x82 - 0.086816703752952459 * var_x111 * var_x82 - 5.823397359428812 * var_x138 * var_x176 - 4.8083097463173674 * var_x137 * var_x139 * var_x176 + 1 * var_x100 * var_x127 * var_x181 * var_x86 * var_x89 + 6.8384849725402566 * var_x100 * var_x112 * var_x82 * var_x84 * var_x89 * var_x99 + 0.125 * var_x104 * var_x105 * var_x106 * var_x108 * var_x109 * var_x127 * var_x181 + 0.22222222222222221 * var_x112 * var_x113 * var_x114 * var_x127 * var_x183 * var_x92 * var_x93 + 2 * var_x112 * var_x113 * var_x114 * var_x116 * var_x183 * var_x92 * var_x93 * var_x99 + 0.42740531078376603 * var_x104 * var_x105 * var_x106 * var_x108 * var_x82 * var_x84 * var_x85 * var_x99 + 10.257727458810384 * var_x109 * var_x113 * var_x114 * var_x115 * var_x116 * var_x82 * var_x84 * var_x92 * var_x93) + var_x175 * var_x53 + var_x175 * var_x73 + var_x175 * var_x75 + var_x175 * var_x76 + 1176.6211762690609 * var_x72 * var_x82 + 19.065191839422258 * var_x77 * var_x80 * var_x82 + 13.607001343335821 * var_x119 * var_x121 * var_x82 + ((var_x144) ? (var_x143 * var_x175) : (var_x153 * var_x175)); + const double var_x240 = 1.2955153404562495e-6 * mParameters[4]; + const double var_x242 = var_x156 * var_x163 * var_x174; + const double var_x243 = var_x164 * var_x242; + + partialF = -var_x240 * (var_x184 + 0.079032020776755016 * var_x243); + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative3(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_NL_model__Q_d2 = 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCaCB; // per_millisecond + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_b = -0.029999999999999999 * var_chaste_interface__NL_model__pCa + 39 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB) * var_internal_ion_concentrations__Cai; // per_millisecond + const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond + const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA + const double var_SR_L_current__i_SR_L = (-var_internal_ion_concentrations__Cai + var_chaste_interface__Ca_concentrations_in_SR__Caup) * mParameters[0]; // picoA + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = 1 * (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA + const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = 1 * (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total = 0.070000000000000007 * var_NL_model__Q_d2 + 0.070000000000000007 * var_NL_model__Q_r + 6.4775767022812476e-7 * var_RyR_channel__i_RyR + 6.4775767022812476e-7 * var_SR_L_current__i_SR_L + 6.4775767022812476e-7 * var_SR_calcium_pump__i_SR_U + 1.2955153404562495e-6 * var_sodium_calcium_exchanger__i_NaCa - 0.070000000000000007 * var_NL_model__Q_b - 6.4775767022812476e-7 * var_L_type_Ca_channel__i_CaL_Ca - 6.4775767022812476e-7 * var_T_type_Ca_channel__i_Ca_T - 6.4775767022812476e-7 * var_background_Cab_current__i_Cab; // millimolar / millisecond + + return d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative3(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x16 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x17 = 1 / var_x16; + const double var_x18 = -17.978260869565219 + 362.31884057971018 * var_x7 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x19 = var_x17 * var_x18; + const double var_x20 = _lt_0_row[5]; + const double var_x34 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x35 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x36 = 1 / (1 + 2.7439999999999993 * var_x35); + const double var_x37 = var_x36 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x51 = var_x6 + var_x7; + const double var_x63 = var_x37 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x159 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x167 = pow((0.0014927113702623907 + var_x19), (-2)); + const double var_x168 = var_x167 * var_x20; + const double var_x170 = mParameters[9] * mParameters[14]; + const double var_x171 = var_x170 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; + const double var_x185 = (-0.047620000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total) / var_x7; + const double var_x186 = 0.5 + 0.5 * var_x185; + const double var_x187 = ((var_x1) ? (0) : (var_x186 * var_x2 * var_x5)); + const double var_x194 = var_x187 * var_x34; + const double var_x195 = var_x194 * var_x63; + const double var_x196 = 362.31884057971018 + 362.31884057971018 * var_x185; + const double var_x244 = var_x168 * var_x17 * var_x196; + const double var_x245 = var_x171 * var_x244; + const double var_x260 = 0.00039642769417961232 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2; + const double var_x261 = var_x186 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB); + const double var_x262 = var_x186 * var_chaste_interface__NL_model__pCB; + const double var_x263 = -var_x186; + const double var_x264 = 1 + 0.10000000000000001 * var_x159; + const double var_x265 = 1 / var_x264; + const double var_x266 = var_x8 + var_x9; + const double var_x267 = -0.026190000000000001 + var_x266; + const double var_x268 = 1 / var_x267; + const double var_x269 = 1 + 0.00080000000000000004 * var_x268; + const double var_x270 = pow(var_x269, (-2)); + const double var_x271 = pow(var_x51, 2); + const double var_x272 = 1 / var_x271; + const double var_x273 = 1 - var_chaste_interface__SR_calcium_pump_y_gate__y; + + partialF = -2.7300000000000004 * var_x261 - 1.9338304790483955e-9 * var_x245 - 109.20000000000002 * var_x262 - 6.4775767022812476e-7 * var_x195 - 2.591030680912499e-8 * var_x187 - var_x187 * var_x260 + 6.4775767022812476e-7 * var_x263 * mParameters[0] + 6.4775767022812476e-7 * var_x263 * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR + 2.0728245447299993e-9 * var_x263 * var_x265 * var_x270 * var_x272 * var_x273 * mParameters[3]; + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative4(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = 1 * (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double d_dt_chaste_interface_var_ATP_production__ATPi = 0.014999999999999999 + 3.2387883511406238e-7 * var_SR_calcium_pump__i_SR_U - 0.0030000000000000001 * var_chaste_interface__ATP_production__ATPi - 0.028000000000000004 * var_chaste_interface__NL_model__pCaCB - 1.2955153404562495e-6 * var_sodium_potassium_pump__i_NaK; // millimolar / millisecond + + return d_dt_chaste_interface_var_ATP_production__ATPi; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative4(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + + + + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x70 = pow(var_chaste_interface__ATP_production__ATPi, 2); + const double var_x155 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x156 = pow(var_x155, 1.0600000000000001); + const double var_x157 = 1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001); + const double var_x158 = var_x156 * var_x157; + const double var_x159 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x160 = 1 + 0.094 * var_x159; + const double var_x198 = 1 / (1 + 4.4045579125871104 * var_x158); + const double var_x199 = 1 / var_x70; + const double var_x200 = var_x198 * var_x199 * var_chaste_interface__sodium_potassium_pump_y_gate__y / pow(var_x160, 2); + const double var_x201 = var_x200 * mParameters[9]; + const double var_x264 = 1 + 0.10000000000000001 * var_x159; + const double var_x266 = var_x8 + var_x9; + const double var_x267 = -0.026190000000000001 + var_x266; + const double var_x268 = 1 / var_x267; + const double var_x269 = 1 + 0.00080000000000000004 * var_x268; + const double var_x273 = 1 - var_chaste_interface__SR_calcium_pump_y_gate__y; + const double var_x274 = 1 / var_x269; + const double var_x275 = var_x199 * var_x273 * var_x274 / pow(var_x264, 2); + const double var_x276 = var_x275 * mParameters[3]; + + partialF = -0.0030000000000000001 - 3.2387883511406238e-8 * var_x276 - 9.4621849436243545e-7 * var_x201; + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative5(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; + // Units: dimensionless; Initial value: 0.3556412697995689 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; + // Units: dimensionless; Initial value: 0.40285968661346977 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_RP = _lt_0_row[32]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_AP = _lt_0_row[34]; // per_millisecond + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na = 8.7499999999999999e-5 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na + var_sodium_current_voltage_dependent_gate__k_RP_AP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na - (var_sodium_current_voltage_dependent_gate__k_AP_AI + var_sodium_current_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative5(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x299 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x300 = 1 / var_x299; + const double var_x302 = exp(0.00125 * var_chaste_interface__membrane__Vm); + const double var_x303 = 0.058823529411764705 * var_chaste_interface__membrane__Vm; + const double var_x304 = exp(var_x303); + const double var_x312 = 1 / (26 * var_x304 + 0.02 * var_x302); + const double var_x313 = 1 * var_x312; + const double var_x314 = 1.25 * var_x300; + + partialF = -var_x313 - var_x314; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative6(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; + // Units: dimensionless; Initial value: 0.3556412697995689 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; + // Units: dimensionless; Initial value: 0.40285968661346977 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_sodium_current_voltage_dependent_gate__k_AI_RI = _lt_0_row[30]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_RP = _lt_0_row[32]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RI_AI = _lt_0_row[33]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_AP = _lt_0_row[34]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_RI = 0.01 / (1 + 8.7499999999999999e-5 * var_sodium_current_voltage_dependent_gate__k_AP_RP * var_sodium_current_voltage_dependent_gate__k_RI_AI / (var_sodium_current_voltage_dependent_gate__k_AI_RI * var_sodium_current_voltage_dependent_gate__k_AP_AI * var_sodium_current_voltage_dependent_gate__k_RP_AP)); // per_millisecond + const double var_sodium_current_voltage_dependent_gate__p_RI_Na = 1 - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // dimensionless + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na = (0.01 - var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_sodium_current_voltage_dependent_gate__p_RI_Na + var_sodium_current_voltage_dependent_gate__k_AP_RP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - (var_sodium_current_voltage_dependent_gate__k_RP_AP + var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative6(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x308 = exp(-0.125 * var_chaste_interface__membrane__Vm); + const double var_x309 = exp(-0.02 * var_chaste_interface__membrane__Vm); + const double var_x315 = 0.25 * var_x309 + 0.1027 * var_x308; + const double var_x316 = 1 / var_x315; + + partialF = -0.01 - var_x316; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative7(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; + // Units: dimensionless; Initial value: 0.3556412697995689 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; + // Units: dimensionless; Initial value: 0.40285968661346977 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_sodium_current_voltage_dependent_gate__k_AI_RI = _lt_0_row[30]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RI_AI = _lt_0_row[33]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__p_RI_Na = 1 - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // dimensionless + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na = var_sodium_current_voltage_dependent_gate__k_AP_AI * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + var_sodium_current_voltage_dependent_gate__k_RI_AI * var_sodium_current_voltage_dependent_gate__p_RI_Na - (8.7499999999999999e-5 + var_sodium_current_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative7(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x299 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x302 = exp(0.00125 * var_chaste_interface__membrane__Vm); + const double var_x308 = exp(-0.125 * var_chaste_interface__membrane__Vm); + const double var_x317 = 1 / (5 * var_x299 + 0.0001027 * var_x308); + const double var_x318 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + const double var_x319 = 1300 * var_x318 + 0.040000000000000001 * var_x302; + const double var_x329 = 1 * var_x317; + + partialF = -8.7499999999999999e-5 - var_x329 - 1 / var_x319; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative8(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y = 1 * _lt_0_row[28] * (1 - var_chaste_interface__sodium_current_ultra_slow_gate__y) - 1 * _lt_0_row[29] * var_chaste_interface__sodium_current_ultra_slow_gate__y; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative8(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x331 = 0.20000000000000001 * var_chaste_interface__membrane__Vm; + const double var_x332 = exp(-var_x331); + const double var_x333 = 0.01 * var_chaste_interface__membrane__Vm; + const double var_x334 = exp(-var_x333); + const double var_x335 = exp(var_x333); + const double var_x336 = exp(var_x331); + + partialF = -1 / (4000 * var_x334 + 0.014 * var_x332) - 1 / (8000 * var_x335 + 9000000000.0 * var_x336); + } + else + { + const double y_save = rY[8]; + rY[8] += delta; + const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[8])/delta; + rY[8] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative9(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; + // Units: dimensionless; Initial value: 0.9968480629364956 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; + // Units: dimensionless; Initial value: 0.000877325391245903 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP = _lt_0_row[11]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP = _lt_0_row[13]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = 0.001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL - (0.0040000000000000001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative9(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x337 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; + const double var_x338 = exp(var_x337); + const double var_x339 = exp(0.14285714285714285 * var_chaste_interface__membrane__Vm); + const double var_x346 = 1 / (480 * var_x339 + 2.2000000000000002 * var_x338); + const double var_x347 = 1 * var_x346; + + partialF = -0.0040000000000000001 - var_x347; + } + else + { + const double y_save = rY[9]; + rY[9] += delta; + const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[9])/delta; + rY[9] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative10(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; + // Units: dimensionless; Initial value: 0.9968480629364956 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; + // Units: dimensionless; Initial value: 0.000877325391245903 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL = 1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // dimensionless + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI = _lt_0_row[10]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP = _lt_0_row[11]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI = _lt_0_row[12]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP = _lt_0_row[13]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI = 0.040000000000000001 / (1 + 0.25 * var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI / (var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI * var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP)); // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = (0.040000000000000001 - var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - (var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative10(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x337 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; + const double var_x342 = exp(-0.16949152542372881 * var_chaste_interface__membrane__Vm); + const double var_x343 = exp(-var_x337); + const double var_x348 = 1.5 * var_x343 + 0.27000000000000002 * var_x342; + const double var_x349 = 1 / var_x348; + + partialF = -0.040000000000000001 - var_x349; + } + else + { + const double y_save = rY[10]; + rY[10] += delta; + const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[10])/delta; + rY[10] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative11(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; + // Units: dimensionless; Initial value: 0.9968480629364956 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; + // Units: dimensionless; Initial value: 0.000877325391245903 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL = 1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // dimensionless + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI = _lt_0_row[10]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI = _lt_0_row[12]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = 0.0040000000000000001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL - (0.001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative11(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x333 = 0.01 * var_chaste_interface__membrane__Vm; + const double var_x334 = exp(-var_x333); + const double var_x335 = exp(var_x333); + const double var_x350 = 0.13513513513513511 * var_chaste_interface__membrane__Vm; + const double var_x351 = exp(var_x350); + const double var_x352 = 11 * var_x335 + 2200000 * var_x351; + const double var_x354 = exp(-var_x350); + const double var_x355 = 1 / (2 * var_x334 + 0.0018 * var_x354); + const double var_x366 = 1 * var_x355; + + partialF = -0.001 - var_x366 - 1 / var_x352; + } + else + { + const double y_save = rY[11]; + rY[11] += delta; + const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[11])/delta; + rY[11] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative12(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; + // Units: dimensionless; Initial value: 0.4250747299372254 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca = 6.9539999999999997 * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U = 0.14299999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C + 2.0019999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa - (0.34999999999999998 + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative12(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + + + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x10 = var_x3 * mParameters[5]; + const double var_x11 = -0.026190000000000001 + var_x8 + var_x9 - var_x10; + const double var_x12 = var_x11 * var_x5; + const double var_x202 = ((var_x1) ? (-mParameters[5]) : (var_x12 * var_x2)); + const double var_x266 = var_x8 + var_x9; + const double var_x267 = -0.026190000000000001 + var_x266; + const double var_x363 = -1 + var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x370 = -6.9539999999999997 * var_x363; + const double var_x371 = 6.9539999999999997 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x376 = var_x371 * (var_x267 - 0.020279999999999996 * var_x202); + const double var_x377 = var_x376 + var_x267 * var_x370; + + partialF = -0.34999999999999998 - var_x377; + } + else + { + const double y_save = rY[12]; + rY[12] += delta; + const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[12])/delta; + rY[12] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative13(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; + // Units: dimensionless; Initial value: 0.4250747299372254 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_Ca_dependent_gate__p_CCa = 1 - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca = 6.9539999999999997 * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa = 0.00029999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - 2.3519999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative13(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + + partialF = -2.3523000000000001; + } + else + { + const double y_save = rY[13]; + rY[13] += delta; + const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[13])/delta; + rY[13] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative14(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; + // Units: dimensionless; Initial value: 0.4250747299372254 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_Ca_dependent_gate__p_CCa = 1 - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C = 0.34999999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + 0.0041999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - (0.14299999999999999 + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative14(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + + + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x10 = var_x3 * mParameters[5]; + const double var_x11 = -0.026190000000000001 + var_x8 + var_x9 - var_x10; + const double var_x12 = var_x11 * var_x5; + const double var_x202 = ((var_x1) ? (-mParameters[5]) : (var_x12 * var_x2)); + const double var_x266 = var_x8 + var_x9; + const double var_x267 = -0.026190000000000001 + var_x266; + const double var_x371 = 6.9539999999999997 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x376 = var_x371 * (var_x267 - 0.020279999999999996 * var_x202); + + partialF = -0.1472 - var_x376; + } + else + { + const double y_save = rY[14]; + rY[14] += delta; + const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[14])/delta; + rY[14] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative15(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y = 1 * _lt_0_row[8] * (1 - var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y) - 1 * _lt_0_row[9] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative15(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x337 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; + const double var_x338 = exp(var_x337); + const double var_x343 = exp(-var_x337); + const double var_x378 = exp(-0.071428571428571425 * var_chaste_interface__membrane__Vm); + const double var_x379 = exp(0.1111111111111111 * var_chaste_interface__membrane__Vm); + + partialF = -1 / (58 * var_x338 + 250000 * var_x379) - 1 / (66 * var_x343 + 1800 * var_x378); + } + else + { + const double y_save = rY[15]; + rY[15] += delta; + const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[15])/delta; + rY[15] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative16(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1 = 1 * _lt_0_row[14] * (1 - var_chaste_interface__T_type_Ca_channel_y1_gate__y1) - 1 * _lt_0_row[15] * var_chaste_interface__T_type_Ca_channel_y1_gate__y1; // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative16(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x380 = exp(0.0001 * var_chaste_interface__membrane__Vm); + const double var_x381 = exp(0.15873015873015872 * var_chaste_interface__membrane__Vm); + const double var_x382 = exp(-0.17857142857142858 * var_chaste_interface__membrane__Vm); + const double var_x383 = exp(-0.0040000000000000001 * var_chaste_interface__membrane__Vm); + + partialF = -1 / (1.5 * var_x380 + 40 * var_x381) - 1 / (0.019 * var_x382 + 0.81999999999999995 * var_x383); + } + else + { + const double y_save = rY[16]; + rY[16] += delta; + const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[16])/delta; + rY[16] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative17(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2 = 1 * _lt_0_row[16] * (1 - var_chaste_interface__T_type_Ca_channel_y2_gate__y2) - 1 * _lt_0_row[17] * var_chaste_interface__T_type_Ca_channel_y2_gate__y2; // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative17(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x384 = exp(-0.14925373134328357 * var_chaste_interface__membrane__Vm); + const double var_x385 = exp(-0.040000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x386 = exp(0.00033333333333333332 * var_chaste_interface__membrane__Vm); + const double var_x387 = exp(0.099009900990099015 * var_chaste_interface__membrane__Vm); + + partialF = -1 / (30 * var_x386 + 62000 * var_x387) - 1 / (1.2 * var_x385 + 0.00059999999999999995 * var_x384); + } + else + { + const double y_save = rY[17]; + rY[17] += delta; + const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[17])/delta; + rY[17] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative18(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + + + + // Mathematics + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y = 1 * (1 - var_chaste_interface__time_independent_potassium_current_y_gate__y) / (7 * exp(-0.32333333333333331 + 0.0033333333333333335 * var_chaste_interface__membrane__Vm - 0.0033333333333333335 * var_time_independent_potassium_current__E_K) + 8000 * exp(-11.411764705882353 + 0.11764705882352941 * var_chaste_interface__membrane__Vm - 0.11764705882352941 * var_time_independent_potassium_current__E_K)) - 1 * pow(var_time_independent_potassium_current__fO, 4) * var_chaste_interface__time_independent_potassium_current_y_gate__y / (0.00013999999999999999 * exp(10.659340659340661 + 0.10989010989010989 * var_time_independent_potassium_current__E_K - 0.10989010989010989 * var_chaste_interface__membrane__Vm) + 0.20000000000000001 * exp(0.19400000000000001 + 0.002 * var_time_independent_potassium_current__E_K - 0.002 * var_chaste_interface__membrane__Vm)); // 1 / millisecond + + return d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative18(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + + + + const double var_x82 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x83 = log(var_x82 * mParameters[6]); + const double var_x84 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x83); + const double var_x85 = 1 + var_x84; + const double var_x86 = pow(var_x85, 4); + const double var_x87 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x83); + const double var_x88 = 1 + var_x87; + const double var_x89 = pow(var_x88, (-4)); + const double var_x90 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x83); + const double var_x91 = 1 + var_x90; + const double var_x92 = 1 / var_x91; + const double var_x93 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x83); + const double var_x94 = var_x92 * var_x93; + const double var_x95 = exp(0.47999999999999998 + 1.282215932351298 * var_x83 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x96 = var_x95 / var_x88; + const double var_x97 = var_x85 * var_x96; + const double var_x98 = var_x97 + 0.25 * var_x94; + const double var_x99 = pow(var_x98, (-4)); + const double var_x100 = pow(var_x95, 4); + const double var_x101 = var_x100 * var_x89 * var_x99; + const double var_x102 = var_x101 * var_x86; + const double var_x103 = 1 * var_x102; + const double var_x388 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x389 = -var_x388; + const double var_x390 = exp(-0.32333333333333331 - var_x389 - 0.08904277307995126 * var_x83); + const double var_x391 = exp(-11.411764705882353 + 0.11764705882352941 * var_chaste_interface__membrane__Vm - 3.142686108704162 * var_x83); + const double var_x394 = exp(10.659340659340661 + 2.9354760356027887 * var_x83 - 0.10989010989010989 * var_chaste_interface__membrane__Vm); + const double var_x395 = 0.002 * var_chaste_interface__membrane__Vm; + const double var_x396 = exp(0.19400000000000001 - var_x395 + 0.053425663847970754 * var_x83); + const double var_x397 = 1 / (0.00013999999999999999 * var_x394 + 0.20000000000000001 * var_x396); + + partialF = -1 / (7 * var_x390 + 8000 * var_x391) - var_x103 * var_x397; + } + else + { + const double y_save = rY[18]; + rY[18] += delta; + const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[18])/delta; + rY[18] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative19(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1 = -(_lt_0_row[18]) * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 + 1 * _lt_0_row[19] * (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1); // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative19(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x318 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + const double var_x388 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x389 = -var_x388; + const double var_x402 = 1 / var_x318; + const double var_x403 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; + const double var_x404 = exp(var_x403); + const double var_x405 = exp(0.001 * var_chaste_interface__membrane__Vm); + const double var_x407 = exp(var_x389); + const double var_x408 = exp(-0.086956521739130432 * var_chaste_interface__membrane__Vm); + + partialF = -1 / (5 * var_x407 + 20 * var_x408) - 1 / (160 * var_x404 + 200 * var_x405) - 0.00040000000000000002 * var_x402; + } + else + { + const double y_save = rY[19]; + rY[19] += delta; + const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[19])/delta; + rY[19] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative20(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2 = -(_lt_0_row[20]) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 1 * _lt_0_row[21] * (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2); // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative20(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x148 = 0.076923076923076927 * var_chaste_interface__membrane__Vm; + const double var_x318 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + const double var_x388 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x389 = -var_x388; + const double var_x402 = 1 / var_x318; + const double var_x403 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; + const double var_x404 = exp(var_x403); + const double var_x405 = exp(0.001 * var_chaste_interface__membrane__Vm); + const double var_x407 = exp(var_x389); + const double var_x409 = exp(-var_x148); + + partialF = -1 / (20 * var_x407 + 200 * var_x409) - 1 / (1600 * var_x404 + 2000 * var_x405) - 0.0001 * var_x402; + } + else + { + const double y_save = rY[20]; + rY[20] += delta; + const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[20])/delta; + rY[20] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative21(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3 = 1 * _lt_0_row[22] * (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3) - 1 * _lt_0_row[23] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative21(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x303 = 0.058823529411764705 * var_chaste_interface__membrane__Vm; + const double var_x304 = exp(var_x303); + const double var_x388 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x410 = exp(-var_x303); + const double var_x411 = exp(-0.0066666666666666671 * var_chaste_interface__membrane__Vm); + const double var_x412 = exp(var_x388); + + partialF = -1 / (2 * var_x411 + 0.34999999999999998 * var_x410) - 1 / (2.5 * var_x412 + 10 * var_x304); + } + else + { + const double y_save = rY[21]; + rY[21] += delta; + const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[21])/delta; + rY[21] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative22(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1 = 1 * _lt_0_row[24] * (1 - var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1) - 1 * _lt_0_row[25] * var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1; // 1 / millisecond + + return d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative22(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x318 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + const double var_x333 = 0.01 * var_chaste_interface__membrane__Vm; + const double var_x335 = exp(var_x333); + const double var_x413 = exp(-0.095238095238095233 * var_chaste_interface__membrane__Vm); + const double var_x414 = exp(-0.016129032258064516 * var_chaste_interface__membrane__Vm); + + partialF = -1 / (260 * var_x335 + 1450 * var_x318) - 1 / (85 * var_x413 + 370 * var_x414); + } + else + { + const double y_save = rY[22]; + rY[22] += delta; + const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[22])/delta; + rY[22] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative23(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + + + + // Mathematics + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2 = -0.004444 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 + 3.7000000000000002 * (1 - var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_internal_ion_concentrations__Cai; // 1 / millisecond + + return d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative23(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + + + + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + + partialF = 0.092459000000000013 - 1.8500000000000001 * var_x7 - 1.8500000000000001 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + } + else + { + const double y_save = rY[23]; + rY[23] += delta; + const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[23])/delta; + rY[23] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative24(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1 = 1 * _lt_0_row[36] * (1 - var_chaste_interface__transient_outward_current_y1_gate__y1) - 1 * _lt_0_row[37] * var_chaste_interface__transient_outward_current_y1_gate__y1; // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative24(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x299 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x395 = 0.002 * var_chaste_interface__membrane__Vm; + const double var_x403 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; + const double var_x415 = exp(var_x395); + const double var_x416 = exp(0.0625 * var_chaste_interface__membrane__Vm); + const double var_x417 = exp(-var_x403); + + partialF = -1 / (11 * var_x417 + 0.20000000000000001 * var_x299) - 1 / (4.4000000000000004 * var_x416 + 0.20000000000000001 * var_x415); + } + else + { + const double y_save = rY[24]; + rY[24] += delta; + const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[24])/delta; + rY[24] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative25(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2 = 0.0038 * _lt_0_row[38] * (1 - var_chaste_interface__transient_outward_current_y2_gate__y2) * _lt_0_row[39] - 0.0038 * _lt_0_row[40] * var_chaste_interface__transient_outward_current_y2_gate__y2 * _lt_0_row[41]; // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative25(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x418 = 1.1946902654867255 + 0.088495575221238937 * var_chaste_interface__membrane__Vm; + const double var_x419 = exp(var_x418); + const double var_x420 = 1 + 0.067083000000000004 * var_x419; + const double var_x421 = var_x419 / var_x420; + const double var_x423 = exp(-var_x418); + const double var_x424 = 1 + 0.051334999999999999 * var_x423; + const double var_x425 = var_x423 / var_x424; + + partialF = -0.0038 * var_x421 - 0.0038 * var_x425; + } + else + { + const double y_save = rY[25]; + rY[25] += delta; + const double temp = EvaluateYDerivative25(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[25])/delta; + rY[25] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative26(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y = (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * (1 / (1 + 1.3799999999999999 * (1 + 1.4927113702623908e-6 * pow(mParameters[7], 3)) / mParameters[5]) + var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) - (1 / (1 + 0.0013799999999999999 * (1 + 0.0014927113702623907 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)) / var_internal_ion_concentrations__Cai) + var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na) * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative26(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x16 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x17 = 1 / var_x16; + const double var_x18 = -17.978260869565219 + 362.31884057971018 * var_x7 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x19 = var_x17 * var_x18; + const double var_x20 = _lt_0_row[5]; + const double var_x21 = var_x20 / (1 + 669.921875 * var_x19); + const double var_x22 = pow(mParameters[7], 3); + const double var_x23 = _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / var_x22); + const double var_x237 = 1 * var_x21 + 1 * var_x23; + const double var_x266 = var_x8 + var_x9; + const double var_x267 = -0.026190000000000001 + var_x266; + const double var_x268 = 1 / var_x267; + const double var_x426 = 1 + 0.0014927113702623907 * var_x16; + const double var_x427 = 1 + 0.0013799999999999999 * var_x268 * var_x426; + + partialF = -var_x237 - 1 / var_x427 - 1 / (1 + 1.3799999999999999 * (1 + 1.4927113702623908e-6 * var_x22) / mParameters[5]); + } + else + { + const double y_save = rY[26]; + rY[26] += delta; + const double temp = EvaluateYDerivative26(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[26])/delta; + rY[26] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative27(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y = (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * (0.040000000000000001 * var_sodium_potassium_pump__p_E2Na + 0.16500000000000001 / (1 + 0.21928759810465578 * pow((1 / mParameters[6]), 1.1200000000000001) * (1 + 0.011104864200909382 * pow(var_sodium_potassium_pump__Nao_Eff, 1.0600000000000001)))) - (0.01 / (1 + 49.999265664512095 * pow((1 / var_chaste_interface__internal_ion_concentrations__Ki), 1.1200000000000001) * (1 + 0.22703754152993499 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 1.0600000000000001))) + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na) * var_chaste_interface__sodium_potassium_pump_y_gate__y; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative27(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x29 = _lt_0_row[35]; + const double var_x30 = pow((1 / (var_x29 * mParameters[7])), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001)); + const double var_x82 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x155 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x156 = pow(var_x155, 1.0600000000000001); + const double var_x157 = 1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001); + const double var_x158 = var_x156 * var_x157; + const double var_x159 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x160 = 1 + 0.094 * var_x159; + const double var_x161 = 1 / var_x160; + const double var_x198 = 1 / (1 + 4.4045579125871104 * var_x158); + const double var_x238 = 1 / (1 + 90.050628437051003 * var_x30); + const double var_x239 = var_x161 * var_x198; + const double var_x251 = 0.37 * var_x239 + 0.040000000000000001 * var_x238; + const double var_x429 = pow((1 / mParameters[6]), 1.1200000000000001); + const double var_x430 = pow((var_x29 * mParameters[7]), 1.0600000000000001); + const double var_x431 = 1 + 0.21928759810465578 * var_x429 * (1 + 0.011104864200909382 * var_x430); + const double var_x432 = pow(var_x82, 1.1200000000000001); + const double var_x433 = 1 + 0.22703754152993499 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 1.0600000000000001); + const double var_x434 = var_x432 * var_x433; + + partialF = -var_x251 - 0.01 / (1 + 49.999265664512095 * var_x434) - 0.16500000000000001 / var_x431; + } + else + { + const double y_save = rY[27]; + rY[27] += delta; + const double temp = EvaluateYDerivative27(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[27])/delta; + rY[27] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative28(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + // Mathematics + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y = (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * (0.01 - 0.01 * var_SR_calcium_pump__p_E2Ca + var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) - (1 - 0.98999999999999999 * var_SR_calcium_pump__p_E1Ca) * var_chaste_interface__SR_calcium_pump_y_gate__y; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative28(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x159 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x264 = 1 + 0.10000000000000001 * var_x159; + const double var_x265 = 1 / var_x264; + const double var_x266 = var_x8 + var_x9; + const double var_x267 = -0.026190000000000001 + var_x266; + const double var_x268 = 1 / var_x267; + const double var_x269 = 1 + 0.00080000000000000004 * var_x268; + const double var_x274 = 1 / var_x269; + const double var_x279 = 1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup; + const double var_x280 = 1 / var_x279; + const double var_x281 = 1 * var_x265 * var_x274; + + partialF = -1.01 - var_x281 + 0.01 * var_x274 + 0.98999999999999999 * var_x280; + } + else + { + const double y_save = rY[28]; + rY[28] += delta; + const double temp = EvaluateYDerivative28(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[28])/delta; + rY[28] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative29(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__RyR_channel__p_close_RyR = rY[30]; + // Units: dimensionless; Initial value: 0.19135178123107768 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_RyR_channel__k1 = 280000 * pow(var_internal_ion_concentrations__Cai, 2) / pow(mParameters[2], 2) - 150 * var_L_type_Ca_channel__p_open_CaL * var_L_type_Ca_channel_Ca_dependent_gate__iCaL; // per_millisecond + const double d_dt_chaste_interface_var_RyR_channel__p_open_RyR = var_RyR_channel__k1 * var_chaste_interface__RyR_channel__p_close_RyR - 0.080000000000000002 * var_chaste_interface__RyR_channel__p_open_RyR / (1 + 0.35999999999999999 / var_Ca_concentrations_in_SR__Carel); // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__p_open_RyR; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative29(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + + const double var_x283 = -1 + 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; + const double var_x284 = sqrt(pow(var_x283, 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); + const double var_x448 = 1 + 0.35999999999999999 / (-5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * var_x284); + + partialF = -0.080000000000000002 / var_x448; + } + else + { + const double y_save = rY[29]; + rY[29] += delta; + const double temp = EvaluateYDerivative29(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[29])/delta; + rY[29] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative30(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__RyR_channel__p_close_RyR = rY[30]; + // Units: dimensionless; Initial value: 0.19135178123107768 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_RyR_channel__k1 = 280000 * pow(var_internal_ion_concentrations__Cai, 2) / pow(mParameters[2], 2) - 150 * var_L_type_Ca_channel__p_open_CaL * var_L_type_Ca_channel_Ca_dependent_gate__iCaL; // per_millisecond + const double d_dt_chaste_interface_var_RyR_channel__p_close_RyR = -(0.00084900000000000004 + var_RyR_channel__k1) * var_chaste_interface__RyR_channel__p_close_RyR + 0.000377 * pow(var_Ca_concentrations_in_SR__Carel, 2) * (1 - var_chaste_interface__RyR_channel__p_close_RyR - var_chaste_interface__RyR_channel__p_open_RyR); // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__p_close_RyR; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative30(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x8 = 0.5 * var_x7; + const double var_x9 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x10 = var_x3 * mParameters[5]; + const double var_x11 = -0.026190000000000001 + var_x8 + var_x9 - var_x10; + const double var_x12 = var_x11 * var_x5; + const double var_x34 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x35 = pow(var_chaste_interface__ATP_production__ATPi, (-3)); + const double var_x36 = 1 / (1 + 2.7439999999999993 * var_x35); + const double var_x51 = var_x6 + var_x7; + const double var_x202 = ((var_x1) ? (-mParameters[5]) : (var_x12 * var_x2)); + const double var_x203 = var_x202 * var_x34; + const double var_x220 = var_x36 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x271 = pow(var_x51, 2); + const double var_x283 = -1 + 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; + const double var_x284 = sqrt(pow(var_x283, 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); + const double var_x436 = 10.139999999999999 * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x439 = pow(mParameters[2], (-2)); + const double var_x440 = var_x220 * var_x436; + const double var_x449 = 70000 * var_x271 * var_x439; + const double var_x450 = var_x203 * var_x440; + const double var_x451 = var_x283 + var_x284; + const double var_x452 = pow(var_x451, 2); + const double var_x453 = 0.010993320000000001 * var_x452; + + partialF = -0.00084900000000000004 + var_x450 - var_x449 - var_x453; + } + else + { + const double y_save = rY[30]; + rY[30] += delta; + const double temp = EvaluateYDerivative30(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[30])/delta; + rY[30] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative31(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar + const double var_SR_T_current__i_SR_T = 386 * var_chaste_interface__Ca_concentrations_in_SR__Caup - 386 * var_Ca_concentrations_in_SR__Carel; // picoA + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total = 3.2387883511406234e-5 * var_SR_T_current__i_SR_T - 3.2387883511406234e-5 * var_RyR_channel__i_RyR; // millimolar / millisecond + + return d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative31(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + + const double var_x283 = -1 + 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; + const double var_x284 = sqrt(pow(var_x283, 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); + const double var_x286 = (-0.078875171467764058 + 0.0085733882030178329 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total) / var_x284; + const double var_x287 = 0.5 + 5.4000000000000004 * var_x286; + const double var_x288 = mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; + const double var_x454 = 3.2387883511406234e-5 * var_x288; + + partialF = -0.0062508615177014034 - 0.067509304391175154 * var_x286 - var_x287 * var_x454; + } + else + { + const double y_save = rY[31]; + rY[31] += delta; + const double temp = EvaluateYDerivative31(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[31])/delta; + rY[31] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative32(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + 5.4000000000000004 * sqrt(pow((1 - 0.092592592592592587 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 0.027434842249657067 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); // millimolar + const double var_SR_T_current__i_SR_T = 386 * var_chaste_interface__Ca_concentrations_in_SR__Caup - 386 * var_Ca_concentrations_in_SR__Carel; // picoA + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_SR_L_current__i_SR_L = (-var_internal_ion_concentrations__Cai + var_chaste_interface__Ca_concentrations_in_SR__Caup) * mParameters[0]; // picoA + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = 1 * (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup = -1.2955153404562494e-5 * var_SR_L_current__i_SR_L - 1.2955153404562494e-5 * var_SR_T_current__i_SR_T - 1.2955153404562494e-5 * var_SR_calcium_pump__i_SR_U; // millimolar / millisecond + + return d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative32(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + const double var_x279 = 1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup; + const double var_x289 = var_chaste_interface__SR_calcium_pump_y_gate__y / (pow(var_x279, 2) * pow(var_chaste_interface__Ca_concentrations_in_SR__Caup, 2)); + const double var_x290 = var_x289 * mParameters[3]; + const double var_x455 = 1.2955153404562494e-5 * mParameters[0]; + + partialF = -0.0050006892141611229 - var_x455 - 1.0364122723649996e-8 * var_x290; + } + else + { + const double y_save = rY[32]; + rY[32] += delta; + const double temp = EvaluateYDerivative32(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[32])/delta; + rY[32] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative33(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + + + + // Mathematics + const double var_NL_model__Q_a = -0.0038999999999999998 * var_chaste_interface__NL_model__pCaCB + 0.0038999999999999998 * var_chaste_interface__NL_model__pCa * exp(-0.86212130841993795); // per_millisecond + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_b = -0.029999999999999999 * var_chaste_interface__NL_model__pCa + 39 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB) * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCa = -var_NL_model__Q_a + var_NL_model__Q_b; // 1 / millisecond + + return d_dt_chaste_interface_var_NL_model__pCa; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative33(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + + + + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x456 = 0.0038999999999999998 * exp(-0.86212130841993795); + const double var_x457 = 19.5 * var_x7 + 19.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + + partialF = 0.99141000000000001 - var_x456 - var_x457; + } + else + { + const double y_save = rY[33]; + rY[33] += delta; + const double temp = EvaluateYDerivative33(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[33])/delta; + rY[33] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative34(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + // Mathematics + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_NL_model__Q_a = -0.0038999999999999998 * var_chaste_interface__NL_model__pCaCB + 0.0038999999999999998 * var_chaste_interface__NL_model__pCa * exp(-0.86212130841993795); // per_millisecond + const double var_NL_model__Q_d2 = 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCaCB; // per_millisecond + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCaCB = -var_NL_model__Q_d2 - var_NL_model__Q_r + var_NL_model__Q_a; // 1 / millisecond + + return d_dt_chaste_interface_var_NL_model__pCaCB; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative34(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + const double var_x292 = pow((0.95737999754118841 - var_chaste_interface__NL_model__X), 2); + const double var_x459 = 0.038879999999999998 * var_x292; + + partialF = -0.0339 - var_x459; + } + else + { + const double y_save = rY[34]; + rY[34] += delta; + const double temp = EvaluateYDerivative34(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[34])/delta; + rY[34] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative35(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + // Mathematics + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCB = -0.12 * var_chaste_interface__NL_model__pCB - 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCB + var_NL_model__Q_r; // 1 / millisecond + + return d_dt_chaste_interface_var_NL_model__pCB; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative35(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + const double var_x6 = -0.052380000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x7 = sqrt(pow(var_x6, 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x292 = pow((0.95737999754118841 - var_chaste_interface__NL_model__X), 2); + const double var_x459 = 0.038879999999999998 * var_x292; + const double var_x460 = 780 * var_x7 + 780 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + + partialF = 40.736400000000003 - var_x459 - var_x460; + } + else + { + const double y_save = rY[35]; + rY[35] += delta; + const double temp = EvaluateYDerivative35(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[35])/delta; + rY[35] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative36(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + // Mathematics + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + + return d_dt_chaste_interface_var_NL_model__X; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative36(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + + partialF = -1.2; + } + else + { + const double y_save = rY[36]; + rY[36] += delta; + const double temp = EvaluateYDerivative36(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[36])/delta; + rY[36] = y_save; + } + return partialF; + } + + std::vector Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + // Mathematics + const double var_Ca_concentrations_in_SR__CSQN_max = 10; // millimolar + const double var_Ca_concentrations_in_SR__K_mCSQN = 0.80000000000000004; // millimolar + const double var_Ca_concentrations_in_SR__b1 = -var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + var_Ca_concentrations_in_SR__CSQN_max + var_Ca_concentrations_in_SR__K_mCSQN; // millimolar + const double var_Ca_concentrations_in_SR__c1 = var_chaste_interface__Ca_concentrations_in_SR__Ca_Total * var_Ca_concentrations_in_SR__K_mCSQN; // millimolar2 + const double var_Ca_concentrations_in_SR__Carel = 1 * sqrt(0.25 * pow(var_Ca_concentrations_in_SR__b1, 2) + var_Ca_concentrations_in_SR__c1) - 0.5 * var_Ca_concentrations_in_SR__b1; // millimolar + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__CMDN_max = 0.050000000000000003; // millimolar + const double var_internal_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_internal_ion_concentrations__b1 = -var_chaste_interface__internal_ion_concentrations__Ca_Total + var_internal_ion_concentrations__CMDN_max + var_internal_ion_concentrations__K_mCMDN; // millimolar + const double var_internal_ion_concentrations__c1 = var_chaste_interface__internal_ion_concentrations__Ca_Total * var_internal_ion_concentrations__K_mCMDN; // millimolar2 + const double var_internal_ion_concentrations__Cai = 1 * sqrt(0.25 * pow(var_internal_ion_concentrations__b1, 2) + var_internal_ion_concentrations__c1) - 0.5 * var_internal_ion_concentrations__b1; // millimolar + const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // coulomb_millivolt_per_kelvin_millimole + const double var_membrane__T = 310; // kelvin + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (2 * (-mParameters[5] * exp(-2 * var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)) + var_internal_ion_concentrations__Cai) * var_membrane__F * var_chaste_interface__membrane__Vm / ((1 - exp(-2 * var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : ((-mParameters[6] * exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)) + var_chaste_interface__internal_ion_concentrations__Ki) * var_membrane__F * var_chaste_interface__membrane__Vm / ((1 - exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T))); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : ((-mParameters[7] * exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)) + var_chaste_interface__internal_ion_concentrations__Nai) * var_membrane__F * var_chaste_interface__membrane__Vm / ((1 - exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaL_Ca + var_L_type_Ca_channel__i_CaL_K + var_L_type_Ca_channel__i_CaL_Na; // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_membrane__i_ext_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_rapid_time_dependent_potassium_current__g_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * mParameters[9] * mParameters[12]; // nanoS + const double var_slow_time_dependent_potassium_current__P_Ks_Na = 0.2016; // picoA_per_millimolar + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na * var_slow_time_dependent_potassium_current__P_Ks_Na; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks = var_slow_time_dependent_potassium_current__i_Ks_K + var_slow_time_dependent_potassium_current__i_Ks_Na; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_time_dependent_potassium_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_calcium_exchanger__Km_Cai = 0.0013799999999999999; // millimolar + const double var_sodium_calcium_exchanger__Km_Cao = 1.3799999999999999; // millimolar + const double var_sodium_calcium_exchanger__Km_Nai = 8.75; // millimolar + const double var_sodium_calcium_exchanger__Km_Nao = 87.5; // millimolar + const double var_sodium_calcium_exchanger__Partition = 0.32000000000000001; // dimensionless + const double var_sodium_calcium_exchanger__k1 = 1 * exp(var_membrane__F * var_chaste_interface__membrane__Vm * var_sodium_calcium_exchanger__Partition / (var_membrane__R * var_membrane__T)); // per_millisecond + const double var_sodium_calcium_exchanger__k2 = 1 * exp((-1 + var_sodium_calcium_exchanger__Partition) * var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)); // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + pow(var_sodium_calcium_exchanger__Km_Nai, 3) * (1 + var_internal_ion_concentrations__Cai / var_sodium_calcium_exchanger__Km_Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + pow(var_sodium_calcium_exchanger__Km_Nao, 3) * (1 + mParameters[5] / var_sodium_calcium_exchanger__Km_Cao) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = 1 * (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double var_sodium_calcium_exchanger__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchanger__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na = var_sodium_current__i_Na_K + var_sodium_current__i_Na_Na; // picoA + const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_rapid_time_dependent_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * var_rapid_time_dependent_potassium_current__g_Kr * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_time_dependent_potassium_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__g_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * mParameters[9] * mParameters[11]; // nanoS + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO2 = 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2); // dimensionless + const double var_time_independent_potassium_current__fO3 = 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB; // dimensionless + const double var_time_independent_potassium_current__fO4 = pow(var_time_independent_potassium_current__fO, 4); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (var_time_independent_potassium_current__fO2 + var_time_independent_potassium_current__fO3 + var_time_independent_potassium_current__fO4) * var_time_independent_potassium_current__g_K1 * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_current__P_to_Na = 0.00297; // picoA_per_millimolar + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double var_transient_outward_current__i_to_Na = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_transient_outward_current__P_to_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double var_transient_outward_current__i_to = var_transient_outward_current__i_to_K + var_transient_outward_current__i_to_Na; // picoA + const double var_transient_outward_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 + + std::vector dqs(13); + dqs[0] = var_Ca_concentrations_in_SR__Carel; + dqs[1] = var_RyR_channel__i_RyR; + dqs[2] = var_internal_ion_concentrations__Cai; + dqs[3] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[4] = var_membrane__Cm_converted; + dqs[5] = var_sodium_current__i_Na_converted; + dqs[6] = var_time_independent_potassium_current__i_K1_converted; + dqs[7] = var_rapid_time_dependent_potassium_current__i_Kr_converted; + dqs[8] = var_slow_time_dependent_potassium_current__i_Ks_converted; + dqs[9] = var_sodium_calcium_exchanger__i_NaCa_converted; + dqs[10] = var_membrane__i_ext_converted; + dqs[11] = var_transient_outward_current__i_to_converted; + dqs[12] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "matsuoka_model_2003"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-85.95752434460744); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(4.925761439682025); + + // rY[2]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(143.1837333000449); + + // rY[3]: + this->mVariableNames.push_back("internal_ion_concentrations__Ca_Total"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00040180173572968586); + + // rY[4]: + this->mVariableNames.push_back("ATP_production__ATPi"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(4.657102729020499); + + // rY[5]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.779648367445368e-05); + + // rY[6]: + this->mVariableNames.push_back("sodium_current_voltage_dependent_gate__p_RP_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.3556412697995689); + + // rY[7]: + this->mVariableNames.push_back("sodium_current_voltage_dependent_gate__p_AI_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.40285968661346977); + + // rY[8]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.5861887862983165); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.5445004166497696e-06); + + // rY[10]: + this->mVariableNames.push_back("L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9968480629364956); + + // rY[11]: + this->mVariableNames.push_back("L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000877325391245903); + + // rY[12]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.17246483915629204); + + // rY[13]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.098246017787626e-05); + + // rY[14]: + this->mVariableNames.push_back("L_type_Ca_channel_Ca_dependent_gate__p_C"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.4250747299372254); + + // rY[15]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9985266538252986); + + // rY[16]: + this->mVariableNames.push_back("T_type_Ca_channel_y1_gate__y1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.6882718240109127e-05); + + // rY[17]: + this->mVariableNames.push_back("T_type_Ca_channel_y2_gate__y2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8585352091865849); + + // rY[18]: + this->mVariableNames.push_back("time_independent_potassium_current_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.6080573900752752); + + // rY[19]: + this->mVariableNames.push_back("rapid_time_dependent_potassium_current_y1_gate__y1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0018339931180983765); + + // rY[20]: + this->mVariableNames.push_back("rapid_time_dependent_potassium_current_y2_gate__y2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.20443083454225305); + + // rY[21]: + this->mVariableNames.push_back("rapid_time_dependent_potassium_current_y3_gate__y3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.967887666264921); + + // rY[22]: + this->mVariableNames.push_back("slow_time_dependent_potassium_current_y1_gate__y1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09738789658609195); + + // rY[23]: + this->mVariableNames.push_back("slow_time_dependent_potassium_current_y2_gate__y2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09745345578743213); + + // rY[24]: + this->mVariableNames.push_back("transient_outward_current_y1_gate__y1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0007956883250874798); + + // rY[25]: + this->mVariableNames.push_back("transient_outward_current_y2_gate__y2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9999125083105881); + + // rY[26]: + this->mVariableNames.push_back("sodium_calcium_exchanger_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9891789193465331); + + // rY[27]: + this->mVariableNames.push_back("sodium_potassium_pump_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.5910747147428818); + + // rY[28]: + this->mVariableNames.push_back("SR_calcium_pump_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.46108441538480216); + + // rY[29]: + this->mVariableNames.push_back("RyR_channel__p_open_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00034314360001543243); + + // rY[30]: + this->mVariableNames.push_back("RyR_channel__p_close_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.19135178123107768); + + // rY[31]: + this->mVariableNames.push_back("Ca_concentrations_in_SR__Ca_Total"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.455741736977666); + + // rY[32]: + this->mVariableNames.push_back("Ca_concentrations_in_SR__Caup"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.611712901567567); + + // rY[33]: + this->mVariableNames.push_back("NL_model__pCa"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.02490898775497523); + + // rY[34]: + this->mVariableNames.push_back("NL_model__pCaCB"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001990153835322864); + + // rY[35]: + this->mVariableNames.push_back("NL_model__pCB"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00042941813853474524); + + // rY[36]: + this->mVariableNames.push_back("NL_model__X"); + this->mVariableUnits.push_back("micrometre"); + this->mInitialConditions.push_back(0.9573749975411884); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_release_kmcacyt"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("picoA"); + + // mParameters[4]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane__Cm"); + this->mParameterUnits.push_back("picoF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("JSR_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("picoA"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicmatsuoka_model_2003FromCellMLGRL1Opt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicmatsuoka_model_2003FromCellMLGRL1Opt(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003--sympy_1_14.cpp new file mode 100644 index 00000000..88ccb8e3 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL1Opt/dynamic_matsuoka_model_2003--sympy_1_14.cpp @@ -0,0 +1,5121 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: matsuoka_model_2003 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenFirstOrderOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_matsuoka_model_2003.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractGeneralizedRushLarsenCardiacCell* Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicmatsuoka_model_2003FromCellMLGRL1Opt(p_solver, p_stimulus); +} + +bool Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::registered = ModelFactory::Register("dynamic_matsuoka_model_2003", "GeneralizedRushLarsenFirstOrderOpt", (ModelFactory::TCreateMethod)Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::CreateMethod); + +class Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<42; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__Vm) + { + const double _offset_0 = var_chaste_interface__membrane__Vm - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__Vm) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__Vm>mTableMaxs[0] || var_chaste_interface__membrane__Vm= 2){ + EXCEPTION("Lookup table 0 at ["<= 2){ + EXCEPTION("Lookup table 1 at ["<= 2){ + EXCEPTION("Lookup table 2 at ["<= 2){ + EXCEPTION("Lookup table 3 at ["<= 2){ + EXCEPTION("Lookup table 7 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[42]; + + // Lookup tables + double (*_lookup_table_0)[42]; + int _lookup_table_0_num_misshit_piecewise[42] = {0}; + +}; + +std::shared_ptr Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -4000 * HeartConfig::Instance()->GetCapacitance() / mParameters[9]; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 2; // millisecond + const double var_chaste_interface__membrane__stim_period = 400; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::Dynamicmatsuoka_model_2003FromCellMLGRL1Opt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 37, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 459; // (var_SR_L_current__P_SR_L) [picoA_per_millimolar] + this->mParameters[1] = 62000; // (var_RyR_channel__P_RyR) [picoA_per_millimolar] + this->mParameters[2] = 1; // (var_RyR_channel__K_m_Ca_cyt) [millimolar] + this->mParameters[3] = 162500; // (var_SR_calcium_pump__i_max) [picoA] + this->mParameters[4] = 1; // (var_internal_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[5] = 1.8; // (var_external_ion_concentrations__Cao) [millimolar] + this->mParameters[6] = 5.4000000000000004; // (var_external_ion_concentrations__Ko) [millimolar] + this->mParameters[7] = 140; // (var_external_ion_concentrations__Nao) [millimolar] + this->mParameters[8] = 8712; // (var_L_type_Ca_channel__P_CaL) [picoA_per_millimolar] + this->mParameters[9] = 132; // (var_membrane__Cm) [picoF] + this->mParameters[10] = 2860; // (var_sodium_current__P_Na) [picoA_per_millimolar] + this->mParameters[11] = 1.1459999999999999; // (var_time_independent_potassium_current__P_K1_0) [nanoS_per_picoF] + this->mParameters[12] = 0.0086400000000000001; // (var_rapid_time_dependent_potassium_current__P_Kr) [nanoS_per_picoF] + this->mParameters[13] = 5.04; // (var_slow_time_dependent_potassium_current__P_Ks_K) [picoA_per_millimolar] + this->mParameters[14] = 6.8099999999999996; // (var_sodium_calcium_exchanger__P_NaCa) [picoA_per_picoF] + this->mParameters[15] = 0.033000000000000002; // (var_transient_outward_current__P_to_K) [picoA_per_millimolar] + } + + Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::~Dynamicmatsuoka_model_2003FromCellMLGRL1Opt() + { + } + + AbstractLookupTableCollection* Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::GetLookupTableCollection() + { + return Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance(); + } + + void Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 37; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_membrane__i_tot = 0.38500000000000001 * var_constant_field_equations__CF_Na + 0.040000000000000001 * var_constant_field_equations__CF_Ca + 0.15400000000000003 * var_constant_field_equations__CF_K + 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) / (1 + 90.050628437051003 * pow((_lt_0_row[4] / mParameters[7]), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))) + 0.37 * var_chaste_interface__sodium_potassium_pump_y_gate__y / ((1 + 0.094 / var_chaste_interface__ATP_production__ATPi) * (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))))) * mParameters[9] + 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K + 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na + mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca + 1 * (1 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y * _lt_0_row[5] / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)) - 1 * (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3))) * mParameters[9] * mParameters[14] + 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca + 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na + 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K + 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na + 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2 + 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)) + pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13] + pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2 + var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 + 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y + ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * _lt_0_row[7] * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K)); // picoA + const double var_chaste_interface__i_ionic = 1 * HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot / mParameters[9]; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::UpdateTransmembranePotential(double var_chaste_interface__environment__time) + { + std::vector& rY = rGetStateVariables(); + unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + + double d_dt_chaste_interface_var_membrane__Vm; + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA + const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * _lt_0_row[7] * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K)); // picoA + const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = 1 * (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + d_dt_chaste_interface_var_membrane__Vm = (-var_L_type_Ca_channel__i_CaL_Ca - var_L_type_Ca_channel__i_CaL_K - var_L_type_Ca_channel__i_CaL_Na - var_T_type_Ca_channel__i_Ca_T - var_background_Cab_current__i_Cab - var_background_KATP_current__i_KATP - var_background_Kpl_current__i_Kpl - var_background_NSC_current__i_bNSC_K - var_background_NSC_current__i_bNSC_Na - var_background_lCa_current__i_lCa_K - var_background_lCa_current__i_lCa_Na - var_membrane__i_ext - var_rapid_time_dependent_potassium_current__i_Kr - var_slow_time_dependent_potassium_current__i_Ks_K - var_slow_time_dependent_potassium_current__i_Ks_Na - var_sodium_calcium_exchanger__i_NaCa - var_sodium_current__i_Na_K - var_sodium_current__i_Na_Na - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to_K - var_transient_outward_current__i_to_Na) / mParameters[9]; // millivolt / millisecond + + double evalF = d_dt_chaste_interface_var_membrane__Vm; + mEvalF[0] = d_dt_chaste_interface_var_membrane__Vm; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time) + { + std::vector& rY = rGetStateVariables(); + const double delta = 1e-8; + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; + // Units: dimensionless; Initial value: 0.3556412697995689 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; + // Units: dimensionless; Initial value: 0.40285968661346977 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; + // Units: dimensionless; Initial value: 0.9968480629364956 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; + // Units: dimensionless; Initial value: 0.000877325391245903 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; + // Units: dimensionless; Initial value: 0.4250747299372254 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__RyR_channel__p_close_RyR = rY[30]; + // Units: dimensionless; Initial value: 0.19135178123107768 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * sqrt(pow((10.800000000000001 - var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 3.2000000000000002 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total) + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__p_CCa = 1 - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; // dimensionless + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL = 1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // dimensionless + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_NL_model__Q_a = -0.0038999999999999998 * var_chaste_interface__NL_model__pCaCB + 0.0038999999999999998 * var_chaste_interface__NL_model__pCa * exp(-0.86212130841993795); // per_millisecond + const double var_NL_model__Q_d2 = 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCaCB; // per_millisecond + const double var_SR_T_current__i_SR_T = 386 * var_chaste_interface__Ca_concentrations_in_SR__Caup - 386 * var_Ca_concentrations_in_SR__Carel; // picoA + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_b = -0.029999999999999999 * var_chaste_interface__NL_model__pCa + 39 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB) * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCa = -var_NL_model__Q_a + var_NL_model__Q_b; // 1 / millisecond + const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCB = -0.12 * var_chaste_interface__NL_model__pCB - 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCB + var_NL_model__Q_r; // 1 / millisecond + const double d_dt_chaste_interface_var_NL_model__pCaCB = -var_NL_model__Q_d2 - var_NL_model__Q_r + var_NL_model__Q_a; // 1 / millisecond + const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA + const double var_SR_L_current__i_SR_L = (-var_internal_ion_concentrations__Cai + var_chaste_interface__Ca_concentrations_in_SR__Caup) * mParameters[0]; // picoA + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = 1 * (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA + const double d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y = (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * (0.01 - 0.01 * var_SR_calcium_pump__p_E2Ca + var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) - (1 - 0.98999999999999999 * var_SR_calcium_pump__p_E1Ca) * var_chaste_interface__SR_calcium_pump_y_gate__y; // 1 / millisecond + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total = 3.2387883511406234e-5 * var_SR_T_current__i_SR_T - 3.2387883511406234e-5 * var_RyR_channel__i_RyR; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup = -1.2955153404562494e-5 * var_SR_L_current__i_SR_L - 1.2955153404562494e-5 * var_SR_T_current__i_SR_T - 1.2955153404562494e-5 * var_SR_calcium_pump__i_SR_U; // millimolar / millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y = 1 * _lt_0_row[8] * (1 - var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y) - 1 * _lt_0_row[9] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; // 1 / millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI = _lt_0_row[10]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP = _lt_0_row[11]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI = _lt_0_row[12]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = 0.0040000000000000001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL - (0.001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; // 1 / millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP = _lt_0_row[13]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = 0.001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL - (0.0040000000000000001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // 1 / millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI = 0.040000000000000001 / (1 + 0.25 * var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI / (var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI * var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP)); // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = (0.040000000000000001 - var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - (var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // 1 / millisecond + const double d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1 = 1 * _lt_0_row[14] * (1 - var_chaste_interface__T_type_Ca_channel_y1_gate__y1) - 1 * _lt_0_row[15] * var_chaste_interface__T_type_Ca_channel_y1_gate__y1; // 1 / millisecond + const double d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2 = 1 * _lt_0_row[16] * (1 - var_chaste_interface__T_type_Ca_channel_y2_gate__y2) - 1 * _lt_0_row[17] * var_chaste_interface__T_type_Ca_channel_y2_gate__y2; // 1 / millisecond + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C = 0.34999999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + 0.0041999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - (0.14299999999999999 + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C; // 1 / millisecond + const double var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca = 6.9539999999999997 * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U = 0.14299999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C + 2.0019999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa - (0.34999999999999998 + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa = 0.00029999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - 2.3519999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond + const double var_RyR_channel__k1 = 280000 * pow(var_internal_ion_concentrations__Cai, 2) / pow(mParameters[2], 2) - 150 * var_L_type_Ca_channel__p_open_CaL * var_L_type_Ca_channel_Ca_dependent_gate__iCaL; // per_millisecond + const double d_dt_chaste_interface_var_RyR_channel__p_close_RyR = -(0.00084900000000000004 + var_RyR_channel__k1) * var_chaste_interface__RyR_channel__p_close_RyR + 0.000377 * pow(var_Ca_concentrations_in_SR__Carel, 2) * (1 - var_chaste_interface__RyR_channel__p_close_RyR - var_chaste_interface__RyR_channel__p_open_RyR); // 1 / millisecond + const double d_dt_chaste_interface_var_RyR_channel__p_open_RyR = var_RyR_channel__k1 * var_chaste_interface__RyR_channel__p_close_RyR - 0.080000000000000002 * var_chaste_interface__RyR_channel__p_open_RyR / (1 + 0.35999999999999999 / var_Ca_concentrations_in_SR__Carel); // 1 / millisecond + const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA + const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * _lt_0_row[7] * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K)); // picoA + const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1 = -(_lt_0_row[18]) * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 + 1 * _lt_0_row[19] * (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1); // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2 = -(_lt_0_row[20]) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 1 * _lt_0_row[21] * (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2); // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3 = 1 * _lt_0_row[22] * (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3) - 1 * _lt_0_row[23] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // 1 / millisecond + const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1 = 1 * _lt_0_row[24] * (1 - var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1) - 1 * _lt_0_row[25] * var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1; // 1 / millisecond + const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2 = -0.004444 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 + 3.7000000000000002 * (1 - var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_internal_ion_concentrations__Cai; // 1 / millisecond + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y = (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * (1 / (1 + 1.3799999999999999 * (1 + 1.4927113702623908e-6 * pow(mParameters[7], 3)) / mParameters[5]) + var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) - (1 / (1 + 0.0013799999999999999 * (1 + 0.0014927113702623907 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)) / var_internal_ion_concentrations__Cai) + var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na) * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; // 1 / millisecond + const double var_sodium_calcium_exchanger__i_NaCa = 1 * (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total = 0.070000000000000007 * var_NL_model__Q_d2 + 0.070000000000000007 * var_NL_model__Q_r + 6.4775767022812476e-7 * var_RyR_channel__i_RyR + 6.4775767022812476e-7 * var_SR_L_current__i_SR_L + 6.4775767022812476e-7 * var_SR_calcium_pump__i_SR_U + 1.2955153404562495e-6 * var_sodium_calcium_exchanger__i_NaCa - 0.070000000000000007 * var_NL_model__Q_b - 6.4775767022812476e-7 * var_L_type_Ca_channel__i_CaL_Ca - 6.4775767022812476e-7 * var_T_type_Ca_channel__i_Ca_T - 6.4775767022812476e-7 * var_background_Cab_current__i_Cab; // millimolar / millisecond + const double d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y = 1 * _lt_0_row[28] * (1 - var_chaste_interface__sodium_current_ultra_slow_gate__y) - 1 * _lt_0_row[29] * var_chaste_interface__sodium_current_ultra_slow_gate__y; // 1 / millisecond + const double var_sodium_current_voltage_dependent_gate__k_AI_RI = _lt_0_row[30]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_RP = _lt_0_row[32]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RI_AI = _lt_0_row[33]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_AP = _lt_0_row[34]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_RI = 0.01 / (1 + 8.7499999999999999e-5 * var_sodium_current_voltage_dependent_gate__k_AP_RP * var_sodium_current_voltage_dependent_gate__k_RI_AI / (var_sodium_current_voltage_dependent_gate__k_AI_RI * var_sodium_current_voltage_dependent_gate__k_AP_AI * var_sodium_current_voltage_dependent_gate__k_RP_AP)); // per_millisecond + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na = 8.7499999999999999e-5 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na + var_sodium_current_voltage_dependent_gate__k_RP_AP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na - (var_sodium_current_voltage_dependent_gate__k_AP_AI + var_sodium_current_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // 1 / millisecond + const double var_sodium_current_voltage_dependent_gate__p_RI_Na = 1 - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // dimensionless + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na = var_sodium_current_voltage_dependent_gate__k_AP_AI * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + var_sodium_current_voltage_dependent_gate__k_RI_AI * var_sodium_current_voltage_dependent_gate__p_RI_Na - (8.7499999999999999e-5 + var_sodium_current_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na; // 1 / millisecond + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na = (0.01 - var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_sodium_current_voltage_dependent_gate__p_RI_Na + var_sodium_current_voltage_dependent_gate__k_AP_RP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - (var_sodium_current_voltage_dependent_gate__k_RP_AP + var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // 1 / millisecond + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y = (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * (0.040000000000000001 * var_sodium_potassium_pump__p_E2Na + 0.16500000000000001 / (1 + 0.21928759810465578 * pow((1 / mParameters[6]), 1.1200000000000001) * (1 + 0.011104864200909382 * pow(var_sodium_potassium_pump__Nao_Eff, 1.0600000000000001)))) - (0.01 / (1 + 49.999265664512095 * pow((1 / var_chaste_interface__internal_ion_concentrations__Ki), 1.1200000000000001) * (1 + 0.22703754152993499 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 1.0600000000000001))) + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na) * var_chaste_interface__sodium_potassium_pump_y_gate__y; // 1 / millisecond + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double d_dt_chaste_interface_var_ATP_production__ATPi = 0.014999999999999999 + 3.2387883511406238e-7 * var_SR_calcium_pump__i_SR_U - 0.0030000000000000001 * var_chaste_interface__ATP_production__ATPi - 0.028000000000000004 * var_chaste_interface__NL_model__pCaCB - 1.2955153404562495e-6 * var_sodium_potassium_pump__i_NaK; // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y = 1 * (1 - var_chaste_interface__time_independent_potassium_current_y_gate__y) / (7 * exp(-0.32333333333333331 + 0.0033333333333333335 * var_chaste_interface__membrane__Vm - 0.0033333333333333335 * var_time_independent_potassium_current__E_K) + 8000 * exp(-11.411764705882353 + 0.11764705882352941 * var_chaste_interface__membrane__Vm - 0.11764705882352941 * var_time_independent_potassium_current__E_K)) - 1 * pow(var_time_independent_potassium_current__fO, 4) * var_chaste_interface__time_independent_potassium_current_y_gate__y / (0.00013999999999999999 * exp(10.659340659340661 + 0.10989010989010989 * var_time_independent_potassium_current__E_K - 0.10989010989010989 * var_chaste_interface__membrane__Vm) + 0.20000000000000001 * exp(0.19400000000000001 + 0.002 * var_time_independent_potassium_current__E_K - 0.002 * var_chaste_interface__membrane__Vm)); // 1 / millisecond + const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1 = 1 * _lt_0_row[36] * (1 - var_chaste_interface__transient_outward_current_y1_gate__y1) - 1 * _lt_0_row[37] * var_chaste_interface__transient_outward_current_y1_gate__y1; // 1 / millisecond + const double d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2 = 0.0038 * _lt_0_row[38] * (1 - var_chaste_interface__transient_outward_current_y2_gate__y2) * _lt_0_row[39] - 0.0038 * _lt_0_row[40] * var_chaste_interface__transient_outward_current_y2_gate__y2 * _lt_0_row[41]; // 1 / millisecond + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Ki = -1.2955153404562495e-6 * (-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_K + var_background_KATP_current__i_KATP + var_background_Kpl_current__i_Kpl + var_background_NSC_current__i_bNSC_K + var_background_lCa_current__i_lCa_K + var_membrane__i_ext + var_rapid_time_dependent_potassium_current__i_Kr + var_slow_time_dependent_potassium_current__i_Ks_K + var_sodium_current__i_Na_K + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to_K) * mParameters[4]; // millimolar / millisecond + const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Nai = -1.2955153404562495e-6 * (3 * var_sodium_calcium_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_Na + var_background_NSC_current__i_bNSC_Na + var_background_lCa_current__i_lCa_Na + var_slow_time_dependent_potassium_current__i_Ks_Na + var_sodium_current__i_Na_Na + var_transient_outward_current__i_to_Na) * mParameters[4]; // millimolar / millisecond + + mEvalF[1] = d_dt_chaste_interface_var_internal_ion_concentrations__Nai; + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time, rY, delta); + mEvalF[2] = d_dt_chaste_interface_var_internal_ion_concentrations__Ki; + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time, rY, delta); + mEvalF[3] = d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total; + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time, rY, delta); + mEvalF[4] = d_dt_chaste_interface_var_ATP_production__ATPi; + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time, rY, delta); + mEvalF[5] = d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na; + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time, rY, delta); + mEvalF[6] = d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na; + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time, rY, delta); + mEvalF[7] = d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na; + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time, rY, delta); + mEvalF[8] = d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y; + mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time, rY, delta); + mEvalF[9] = d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time, rY, delta); + mEvalF[10] = d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; + mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time, rY, delta); + mEvalF[11] = d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; + mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time, rY, delta); + mEvalF[12] = d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U; + mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time, rY, delta); + mEvalF[13] = d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa; + mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time, rY, delta); + mEvalF[14] = d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C; + mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time, rY, delta); + mEvalF[15] = d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y; + mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time, rY, delta); + mEvalF[16] = d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1; + mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time, rY, delta); + mEvalF[17] = d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2; + mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time, rY, delta); + mEvalF[18] = d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y; + mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time, rY, delta); + mEvalF[19] = d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1; + mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time, rY, delta); + mEvalF[20] = d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2; + mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time, rY, delta); + mEvalF[21] = d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3; + mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time, rY, delta); + mEvalF[22] = d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1; + mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time, rY, delta); + mEvalF[23] = d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2; + mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time, rY, delta); + mEvalF[24] = d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1; + mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time, rY, delta); + mEvalF[25] = d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2; + mPartialF[25] = EvaluatePartialDerivative25(var_chaste_interface__environment__time, rY, delta); + mEvalF[26] = d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y; + mPartialF[26] = EvaluatePartialDerivative26(var_chaste_interface__environment__time, rY, delta); + mEvalF[27] = d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y; + mPartialF[27] = EvaluatePartialDerivative27(var_chaste_interface__environment__time, rY, delta); + mEvalF[28] = d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y; + mPartialF[28] = EvaluatePartialDerivative28(var_chaste_interface__environment__time, rY, delta); + mEvalF[29] = d_dt_chaste_interface_var_RyR_channel__p_open_RyR; + mPartialF[29] = EvaluatePartialDerivative29(var_chaste_interface__environment__time, rY, delta); + mEvalF[30] = d_dt_chaste_interface_var_RyR_channel__p_close_RyR; + mPartialF[30] = EvaluatePartialDerivative30(var_chaste_interface__environment__time, rY, delta); + mEvalF[31] = d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total; + mPartialF[31] = EvaluatePartialDerivative31(var_chaste_interface__environment__time, rY, delta); + mEvalF[32] = d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup; + mPartialF[32] = EvaluatePartialDerivative32(var_chaste_interface__environment__time, rY, delta); + mEvalF[33] = d_dt_chaste_interface_var_NL_model__pCa; + mPartialF[33] = EvaluatePartialDerivative33(var_chaste_interface__environment__time, rY, delta); + mEvalF[34] = d_dt_chaste_interface_var_NL_model__pCaCB; + mPartialF[34] = EvaluatePartialDerivative34(var_chaste_interface__environment__time, rY, delta); + mEvalF[35] = d_dt_chaste_interface_var_NL_model__pCB; + mPartialF[35] = EvaluatePartialDerivative35(var_chaste_interface__environment__time, rY, delta); + mEvalF[36] = d_dt_chaste_interface_var_NL_model__X; + mPartialF[36] = EvaluatePartialDerivative36(var_chaste_interface__environment__time, rY, delta); + + { + if (fabs(mPartialF[1]) < delta){ + rY[1] += mDt*d_dt_chaste_interface_var_internal_ion_concentrations__Nai; + } + else + { + rY[1] += (d_dt_chaste_interface_var_internal_ion_concentrations__Nai/mPartialF[1])*(exp(mPartialF[1]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[2]) < delta){ + rY[2] += mDt*d_dt_chaste_interface_var_internal_ion_concentrations__Ki; + } + else + { + rY[2] += (d_dt_chaste_interface_var_internal_ion_concentrations__Ki/mPartialF[2])*(exp(mPartialF[2]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[3]) < delta){ + rY[3] += mDt*d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total; + } + else + { + rY[3] += (d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total/mPartialF[3])*(exp(mPartialF[3]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[4]) < delta){ + rY[4] += mDt*d_dt_chaste_interface_var_ATP_production__ATPi; + } + else + { + rY[4] += (d_dt_chaste_interface_var_ATP_production__ATPi/mPartialF[4])*(exp(mPartialF[4]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[5]) < delta){ + rY[5] += mDt*d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na; + } + else + { + rY[5] += (d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na/mPartialF[5])*(exp(mPartialF[5]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[6]) < delta){ + rY[6] += mDt*d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na; + } + else + { + rY[6] += (d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na/mPartialF[6])*(exp(mPartialF[6]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[7]) < delta){ + rY[7] += mDt*d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na; + } + else + { + rY[7] += (d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na/mPartialF[7])*(exp(mPartialF[7]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[8]) < delta){ + rY[8] += mDt*d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y; + } + else + { + rY[8] += (d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y/mPartialF[8])*(exp(mPartialF[8]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[9]) < delta){ + rY[9] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + } + else + { + rY[9] += (d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL/mPartialF[9])*(exp(mPartialF[9]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[10]) < delta){ + rY[10] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; + } + else + { + rY[10] += (d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL/mPartialF[10])*(exp(mPartialF[10]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[11]) < delta){ + rY[11] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; + } + else + { + rY[11] += (d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL/mPartialF[11])*(exp(mPartialF[11]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[12]) < delta){ + rY[12] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U; + } + else + { + rY[12] += (d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U/mPartialF[12])*(exp(mPartialF[12]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[13]) < delta){ + rY[13] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa; + } + else + { + rY[13] += (d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa/mPartialF[13])*(exp(mPartialF[13]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[14]) < delta){ + rY[14] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C; + } + else + { + rY[14] += (d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C/mPartialF[14])*(exp(mPartialF[14]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[15]) < delta){ + rY[15] += mDt*d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y; + } + else + { + rY[15] += (d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y/mPartialF[15])*(exp(mPartialF[15]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[16]) < delta){ + rY[16] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1; + } + else + { + rY[16] += (d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1/mPartialF[16])*(exp(mPartialF[16]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[17]) < delta){ + rY[17] += mDt*d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2; + } + else + { + rY[17] += (d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2/mPartialF[17])*(exp(mPartialF[17]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[18]) < delta){ + rY[18] += mDt*d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y; + } + else + { + rY[18] += (d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y/mPartialF[18])*(exp(mPartialF[18]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[19]) < delta){ + rY[19] += mDt*d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1; + } + else + { + rY[19] += (d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1/mPartialF[19])*(exp(mPartialF[19]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[20]) < delta){ + rY[20] += mDt*d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2; + } + else + { + rY[20] += (d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2/mPartialF[20])*(exp(mPartialF[20]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[21]) < delta){ + rY[21] += mDt*d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3; + } + else + { + rY[21] += (d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3/mPartialF[21])*(exp(mPartialF[21]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[22]) < delta){ + rY[22] += mDt*d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1; + } + else + { + rY[22] += (d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1/mPartialF[22])*(exp(mPartialF[22]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[23]) < delta){ + rY[23] += mDt*d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2; + } + else + { + rY[23] += (d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2/mPartialF[23])*(exp(mPartialF[23]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[24]) < delta){ + rY[24] += mDt*d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1; + } + else + { + rY[24] += (d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1/mPartialF[24])*(exp(mPartialF[24]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[25]) < delta){ + rY[25] += mDt*d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2; + } + else + { + rY[25] += (d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2/mPartialF[25])*(exp(mPartialF[25]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[26]) < delta){ + rY[26] += mDt*d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y; + } + else + { + rY[26] += (d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y/mPartialF[26])*(exp(mPartialF[26]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[27]) < delta){ + rY[27] += mDt*d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y; + } + else + { + rY[27] += (d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y/mPartialF[27])*(exp(mPartialF[27]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[28]) < delta){ + rY[28] += mDt*d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y; + } + else + { + rY[28] += (d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y/mPartialF[28])*(exp(mPartialF[28]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[29]) < delta){ + rY[29] += mDt*d_dt_chaste_interface_var_RyR_channel__p_open_RyR; + } + else + { + rY[29] += (d_dt_chaste_interface_var_RyR_channel__p_open_RyR/mPartialF[29])*(exp(mPartialF[29]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[30]) < delta){ + rY[30] += mDt*d_dt_chaste_interface_var_RyR_channel__p_close_RyR; + } + else + { + rY[30] += (d_dt_chaste_interface_var_RyR_channel__p_close_RyR/mPartialF[30])*(exp(mPartialF[30]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[31]) < delta){ + rY[31] += mDt*d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total; + } + else + { + rY[31] += (d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total/mPartialF[31])*(exp(mPartialF[31]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[32]) < delta){ + rY[32] += mDt*d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup; + } + else + { + rY[32] += (d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup/mPartialF[32])*(exp(mPartialF[32]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[33]) < delta){ + rY[33] += mDt*d_dt_chaste_interface_var_NL_model__pCa; + } + else + { + rY[33] += (d_dt_chaste_interface_var_NL_model__pCa/mPartialF[33])*(exp(mPartialF[33]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[34]) < delta){ + rY[34] += mDt*d_dt_chaste_interface_var_NL_model__pCaCB; + } + else + { + rY[34] += (d_dt_chaste_interface_var_NL_model__pCaCB/mPartialF[34])*(exp(mPartialF[34]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[35]) < delta){ + rY[35] += mDt*d_dt_chaste_interface_var_NL_model__pCB; + } + else + { + rY[35] += (d_dt_chaste_interface_var_NL_model__pCB/mPartialF[35])*(exp(mPartialF[35]*mDt)-1.0); + } + + } + { + if (fabs(mPartialF[36]) < delta){ + rY[36] += mDt*d_dt_chaste_interface_var_NL_model__X; + } + else + { + rY[36] += (d_dt_chaste_interface_var_NL_model__X/mPartialF[36])*(exp(mPartialF[36]*mDt)-1.0); + } + + } + + } + + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative0(double var_chaste_interface__environment__time, std::vector& rY) + { + double d_dt_chaste_interface_var_membrane__Vm; + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA + const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * _lt_0_row[7] * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K)); // picoA + const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = 1 * (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + d_dt_chaste_interface_var_membrane__Vm = (-var_L_type_Ca_channel__i_CaL_Ca - var_L_type_Ca_channel__i_CaL_K - var_L_type_Ca_channel__i_CaL_Na - var_T_type_Ca_channel__i_Ca_T - var_background_Cab_current__i_Cab - var_background_KATP_current__i_KATP - var_background_Kpl_current__i_Kpl - var_background_NSC_current__i_bNSC_K - var_background_NSC_current__i_bNSC_Na - var_background_lCa_current__i_lCa_K - var_background_lCa_current__i_lCa_Na - var_membrane__i_ext - var_rapid_time_dependent_potassium_current__i_Kr - var_slow_time_dependent_potassium_current__i_Ks_K - var_slow_time_dependent_potassium_current__i_Ks_Na - var_sodium_calcium_exchanger__i_NaCa - var_sodium_current__i_Na_K - var_sodium_current__i_Na_Na - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to_K - var_transient_outward_current__i_to_Na) / mParameters[9]; // millivolt / millisecond + + return d_dt_chaste_interface_var_membrane__Vm; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative0(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x0 = 1 / mParameters[9]; + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x7 = 0.5 * var_x6; + const double var_x8 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x9 = var_x3 * mParameters[5]; + const double var_x10 = -0.026190000000000001 + var_x7 + var_x8 - var_x9; + const double var_x11 = var_x10 * var_x5; + const double var_x12 = 0.0056055744906903715 * var_chaste_interface__membrane__Vm; + const double var_x13 = ((var_x1) ? (0) : (0.074870384603595908 * var_x11 + var_x12 * var_x5 * var_x9 - var_x10 * var_x12 * var_x3 / pow(var_x4, 2))); + const double var_x14 = 1 * mParameters[14]; + const double var_x15 = -17.978260869565219 + 362.31884057971018 * var_x6 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x16 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x17 = 1 / var_x16; + const double var_x18 = 669.921875 * var_x17; + const double var_x19 = 1 + var_x15 * var_x18; + const double var_x20 = _lt_0_row[5]; + const double var_x21 = var_x20 / var_x19; + const double var_x22 = pow(mParameters[7], 3); + const double var_x23 = _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / var_x22); + const double var_x24 = 0.011979261536575346 * var_x21 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y + 0.025455930765222609 * var_x23 * (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y); + const double var_x25 = var_x24 * mParameters[9]; + const double var_x26 = 612 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2; + const double var_x27 = var_x26 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1; + const double var_x28 = 1 - var_chaste_interface__sodium_potassium_pump_y_gate__y; + const double var_x29 = _lt_0_row[35]; + const double var_x30 = pow((1 / (var_x29 * mParameters[7])), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001)); + const double var_x31 = 1 + 90.050628437051003 * var_x30; + const double var_x32 = var_x30 / pow(var_x31, 2); + const double var_x33 = var_x28 * var_x32 * mParameters[9]; + const double var_x34 = var_x13 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x35 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x36 = 1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3); + const double var_x37 = 1 / var_x36; + const double var_x38 = var_x37 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x39 = var_x35 * var_x38; + const double var_x40 = var_x34 * var_x39; + const double var_x41 = 0.037435192301797954 * var_chaste_interface__membrane__Vm; + const double var_x42 = exp(-var_x41); + const double var_x43 = var_x42 * mParameters[7]; + const double var_x44 = -var_x43 + var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x45 = 1 - var_x42; + const double var_x46 = 1 / var_x45; + const double var_x47 = 0.037435192301797954 * var_x46; + const double var_x48 = 0.0014013936226725929 * var_chaste_interface__membrane__Vm; + const double var_x49 = var_x46 * var_x48; + const double var_x50 = var_x42 * var_x48 / pow(var_x45, 2); + const double var_x51 = ((var_x1) ? (0) : (var_x43 * var_x49 + var_x44 * var_x47 - var_x44 * var_x50)); + const double var_x52 = var_x7 + var_x8; + const double var_x53 = -0.026190000000000001 + var_x52; + const double var_x54 = 1 + 1.7279999999999996e-9 / pow(var_x53, 3); + const double var_x55 = 0.11 / var_x54; + const double var_x56 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); + const double var_x57 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; + const double var_x58 = var_x56 * var_x57; + const double var_x59 = 0.2016 * var_x58; + const double var_x60 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); + const double var_x61 = 0.00297 * var_x60; + const double var_x62 = var_x61 * var_chaste_interface__transient_outward_current_y2_gate__y2; + const double var_x63 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; + const double var_x64 = var_x63 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; + const double var_x65 = var_x38 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x66 = var_x35 * var_x65; + const double var_x67 = 1.8499999999999999e-5 * var_x66; + const double var_x68 = 0.38500000000000001 * var_x51 + var_x51 * var_x55 + var_x51 * var_x59 + var_x51 * var_x62 + var_x51 * var_x64 + var_x51 * var_x67; + const double var_x69 = var_x42 * mParameters[6]; + const double var_x70 = -var_x69 + var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x71 = ((var_x1) ? (0) : (var_x47 * var_x70 + var_x49 * var_x69 - var_x50 * var_x70)); + const double var_x72 = pow(var_chaste_interface__ATP_production__ATPi, 2); + const double var_x73 = 1 + 99.999999999999986 * var_x72; + const double var_x74 = pow(mParameters[6], 0.23999999999999999); + const double var_x75 = var_x74 / var_x73; + const double var_x76 = var_x58 * mParameters[13]; + const double var_x77 = var_x60 * mParameters[15]; + const double var_x78 = var_x77 * var_chaste_interface__transient_outward_current_y2_gate__y2; + const double var_x79 = 0.10000000000000001 * var_x64; + const double var_x80 = 0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1; + const double var_x81 = 0.71370912277944121 * var_x80; + const double var_x82 = pow(mParameters[6], 0.20000000000000001); + const double var_x83 = var_x82 * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; + const double var_x84 = pow(mParameters[6], 0.40000000000000002); + const double var_x85 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x86 = log(var_x85 * mParameters[6]); + const double var_x87 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x86); + const double var_x88 = 1 + var_x87; + const double var_x89 = pow(var_x88, 4); + const double var_x90 = exp(0.47999999999999998 + 1.282215932351298 * var_x86 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x91 = pow(var_x90, 4); + const double var_x92 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x86); + const double var_x93 = 1 + var_x92; + const double var_x94 = pow(var_x93, (-4)); + const double var_x95 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x86); + const double var_x96 = 1 + var_x95; + const double var_x97 = 1 / var_x96; + const double var_x98 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x86); + const double var_x99 = var_x97 * var_x98; + const double var_x100 = var_x90 / var_x93; + const double var_x101 = var_x100 * var_x88; + const double var_x102 = 0.75 * var_x99 + 3 * var_x101; + const double var_x103 = pow(var_x102, (-4)); + const double var_x104 = var_x103 * var_x94; + const double var_x105 = var_x104 * var_x91; + const double var_x106 = var_x105 * var_x89; + const double var_x107 = 81 * var_x106; + const double var_x108 = pow(var_x88, 3); + const double var_x109 = pow(var_x90, 3); + const double var_x110 = var_x108 * var_x109; + const double var_x111 = var_x110 * var_x99; + const double var_x112 = pow(var_x93, (-3)); + const double var_x113 = var_x103 * var_x112; + const double var_x114 = var_x111 * var_x113; + const double var_x115 = pow(var_x96, (-2)); + const double var_x116 = pow(var_x90, 2); + const double var_x117 = pow(var_x98, 2); + const double var_x118 = pow(var_x93, (-2)); + const double var_x119 = pow(var_x88, 2); + const double var_x120 = var_x118 * var_x119; + const double var_x121 = var_x103 * var_x115 * var_x116 * var_x117 * var_x120; + const double var_x122 = var_x84 * (var_x107 + 54 * var_x114 + 10.125 * var_x121) * mParameters[11]; + const double var_x123 = 0.50938071193859957 * var_x122; + const double var_x124 = mParameters[9] * var_chaste_interface__time_independent_potassium_current_y_gate__y; + const double var_x125 = 0.00036499999999999998 * var_x66; + const double var_x126 = pow(var_x93, (-5)); + const double var_x127 = var_x89 * var_x91; + const double var_x128 = var_x103 * var_x92; + const double var_x129 = var_x126 * var_x127 * var_x128; + const double var_x130 = pow(var_x102, (-5)); + const double var_x131 = var_x115 * var_x95 * var_x98; + const double var_x132 = var_x100 * var_x87; + const double var_x133 = var_x118 * var_x88 * var_x90 * var_x92; + const double var_x134 = 0.044999999999999998 * var_x131 + 0.35999999999999999 * var_x133 + 0.57600000000000007 * var_x101 - 0.76800000000000002 * var_x132 - 0.10500000000000001 * var_x99; + const double var_x135 = var_x110 * var_x113; + const double var_x136 = var_x103 * var_x116 * var_x117 * var_x120 * var_x95 / pow(var_x96, 3); + const double var_x137 = var_x112 * var_x115 * var_x116 * var_x117 * var_x119 * var_x128; + const double var_x138 = var_x104 * var_x92; + const double var_x139 = -26.712831923985377 * var_x86 + var_chaste_interface__membrane__Vm; + const double var_x140 = 0.50938071193859957 * var_x124 * var_x139 * var_x84 * mParameters[11]; + const double var_x141 = pow(mParameters[6], 0.16); + const double var_x142 = 0.0010924717003124302 * var_x141; + const double var_x143 = var_chaste_interface__membrane__Vm == (-3); + const double var_x144 = var_x41 * var_x46; + const double var_x145 = ((var_x1) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (var_x144 * var_x70)); + const double var_x146 = var_x141 * var_x145; + const double var_x147 = 0.076923076923076927 * var_chaste_interface__membrane__Vm; + const double var_x148 = exp(-0.23076923076923078 - var_x147); + const double var_x149 = 1 - var_x148; + const double var_x150 = 8.3986538766456042e-5 / var_x149; + const double var_x151 = 3 + var_chaste_interface__membrane__Vm; + const double var_x152 = var_x141 * var_x150 * var_x151; + const double var_x153 = 44.047040000000003 * var_x75 + 0.15400000000000003 * var_x71 + var_x123 * var_x124 + var_x125 * var_x71 + var_x140 * (-0.26324999999999993 * var_x121 - 0.30374999999999996 * var_x136 - 0.60749999999999993 * var_x137 - 9.7199999999999989 * var_x129 - 5.8860000000000001 * var_x114 - 15.552 * var_x106 - 0.80999999999999994 * var_x131 * var_x135 - 4.8599999999999994 * var_x111 * var_x138 + 81 * var_x130 * var_x134 * var_x89 * var_x91 * var_x94 + 20.736000000000001 * var_x103 * var_x108 * var_x87 * var_x91 * var_x94 + 54 * var_x108 * var_x109 * var_x112 * var_x130 * var_x134 * var_x97 * var_x98 + 10.125 * var_x115 * var_x116 * var_x117 * var_x118 * var_x119 * var_x130 * var_x134 + 1.296 * var_x103 * var_x115 * var_x116 * var_x117 * var_x118 * var_x87 * var_x88 + 10.368 * var_x103 * var_x109 * var_x112 * var_x119 * var_x87 * var_x97 * var_x98) + var_x55 * var_x71 + var_x71 * var_x76 + var_x71 * var_x78 + var_x71 * var_x79 + var_x81 * var_x83 + ((var_x143) ? (var_x142 * var_x71) : (var_x146 * var_x150 + var_x152 * var_x71 - 6.4605029820350801e-6 * var_x146 * var_x148 * var_x151 / pow(var_x149, 2))); + + partialF = var_x0 * (-var_x153 - var_x40 - var_x68 - 0.040000000000000001 * var_x13 - 2.4613071884921265 * var_x33 - var_x13 * var_x27 - var_x14 * var_x25); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative1(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[7] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Nai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_background_NSC_current__i_bNSC_Na = 0.38500000000000001 * var_constant_field_equations__CF_Na; // picoA + const double var_background_lCa_current__i_lCa_Na = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_Na; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = 0.2016 * pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = 1 * (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double var_transient_outward_current__i_to_Na = 0.00297 * pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Nai = -1.2955153404562495e-6 * (3 * var_sodium_calcium_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_Na + var_background_NSC_current__i_bNSC_Na + var_background_lCa_current__i_lCa_Na + var_slow_time_dependent_potassium_current__i_Ks_Na + var_sodium_current__i_Na_Na + var_transient_outward_current__i_to_Na) * mParameters[4]; // millimolar / millisecond + + return d_dt_chaste_interface_var_internal_ion_concentrations__Nai; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative1(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x6 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x7 = 0.5 * var_x6; + const double var_x8 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x15 = -17.978260869565219 + 362.31884057971018 * var_x6 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x16 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x17 = 1 / var_x16; + const double var_x18 = 669.921875 * var_x17; + const double var_x19 = 1 + var_x15 * var_x18; + const double var_x20 = _lt_0_row[5]; + const double var_x35 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x36 = 1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3); + const double var_x37 = 1 / var_x36; + const double var_x38 = var_x37 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x41 = 0.037435192301797954 * var_chaste_interface__membrane__Vm; + const double var_x42 = exp(-var_x41); + const double var_x45 = 1 - var_x42; + const double var_x46 = 1 / var_x45; + const double var_x52 = var_x7 + var_x8; + const double var_x53 = -0.026190000000000001 + var_x52; + const double var_x54 = 1 + 1.7279999999999996e-9 / pow(var_x53, 3); + const double var_x55 = 0.11 / var_x54; + const double var_x56 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); + const double var_x57 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; + const double var_x58 = var_x56 * var_x57; + const double var_x59 = 0.2016 * var_x58; + const double var_x60 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); + const double var_x61 = 0.00297 * var_x60; + const double var_x62 = var_x61 * var_chaste_interface__transient_outward_current_y2_gate__y2; + const double var_x63 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; + const double var_x64 = var_x63 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; + const double var_x65 = var_x38 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x66 = var_x35 * var_x65; + const double var_x67 = 1.8499999999999999e-5 * var_x66; + const double var_x144 = var_x41 * var_x46; + const double var_x154 = pow(var_x19, (-2)); + const double var_x155 = var_x154 * var_x20; + const double var_x157 = pow(var_chaste_interface__internal_ion_concentrations__Nai, (-4)); + const double var_x158 = var_x15 * var_x157; + const double var_x159 = mParameters[9] * mParameters[14]; + const double var_x160 = var_x159 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; + const double var_x161 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x162 = pow(var_x161, 1.0600000000000001); + const double var_x163 = 1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001); + const double var_x164 = var_x162 * var_x163; + const double var_x165 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x166 = 1 + 0.094 * var_x165; + const double var_x167 = 1 / var_x166; + const double var_x168 = 1 + 4.4045579125871104 * var_x164; + const double var_x169 = pow(var_x168, (-2)); + const double var_x170 = var_x167 * var_x169; + const double var_x171 = mParameters[9] * var_chaste_interface__sodium_potassium_pump_y_gate__y; + const double var_x172 = var_x161 * var_x164 * var_x170 * var_x171; + const double var_x173 = ((var_x1) ? (0) : (var_x144)); + const double var_x174 = 0.38500000000000001 * var_x173 + var_x173 * var_x55 + var_x173 * var_x59 + var_x173 * var_x62 + var_x173 * var_x64 + var_x173 * var_x67; + const double var_x236 = 1.2955153404562495e-6 * mParameters[4]; + const double var_x237 = var_x155 * var_x158 * var_x160; + + partialF = -var_x236 * (var_x174 + 6029.296875 * var_x237 + 108.83045963894989 * var_x172); + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative2(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_background_lCa_current__p_open = 1 / (1 + 1.7279999999999996e-9 / pow(var_internal_ion_concentrations__Cai, 3)); // dimensionless + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : (0.037435192301797954 * _lt_0_row[3] * (-mParameters[6] * _lt_0_row[2] + var_chaste_interface__internal_ion_concentrations__Ki) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_background_Kpl_current__i_Kpl = ((var_chaste_interface__membrane__Vm == (-3)) ? (0.0010924717003124302 * pow(mParameters[6], 0.16) * var_constant_field_equations__CF_K) : (8.3986538766456042e-5 * _lt_0_row[7] * pow(mParameters[6], 0.16) * (3 + var_chaste_interface__membrane__Vm) * var_constant_field_equations__CF_K)); // picoA + const double var_background_NSC_current__i_bNSC_K = 0.15400000000000003 * var_constant_field_equations__CF_K; // picoA + const double var_background_lCa_current__i_lCa_K = 0.11 * var_background_lCa_current__p_open * var_constant_field_equations__CF_K; // picoA + const double var_membrane__i_ext = 1 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) * mParameters[9] / HeartConfig::Instance()->GetCapacitance(); // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_background_KATP_current__i_KATP = 44.047040000000003 * pow(mParameters[6], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) / (1 + 99.999999999999986 * pow(var_chaste_interface__ATP_production__ATPi, 2)); // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__i_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (pow(var_time_independent_potassium_current__fO, 4) + 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2) + 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB) * mParameters[9] * mParameters[11] * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Ki = -1.2955153404562495e-6 * (-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_CaL_K + var_background_KATP_current__i_KATP + var_background_Kpl_current__i_Kpl + var_background_NSC_current__i_bNSC_K + var_background_lCa_current__i_lCa_K + var_membrane__i_ext + var_rapid_time_dependent_potassium_current__i_Kr + var_slow_time_dependent_potassium_current__i_Ks_K + var_sodium_current__i_Na_K + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to_K) * mParameters[4]; // millimolar / millisecond + + return d_dt_chaste_interface_var_internal_ion_concentrations__Ki; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative2(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x6 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x7 = 0.5 * var_x6; + const double var_x8 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x35 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x36 = 1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3); + const double var_x37 = 1 / var_x36; + const double var_x38 = var_x37 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x41 = 0.037435192301797954 * var_chaste_interface__membrane__Vm; + const double var_x42 = exp(-var_x41); + const double var_x45 = 1 - var_x42; + const double var_x46 = 1 / var_x45; + const double var_x52 = var_x7 + var_x8; + const double var_x53 = -0.026190000000000001 + var_x52; + const double var_x54 = 1 + 1.7279999999999996e-9 / pow(var_x53, 3); + const double var_x55 = 0.11 / var_x54; + const double var_x56 = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2); + const double var_x57 = 0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2; + const double var_x58 = var_x56 * var_x57; + const double var_x60 = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3); + const double var_x63 = mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y; + const double var_x64 = var_x63 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; + const double var_x65 = var_x38 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x66 = var_x35 * var_x65; + const double var_x72 = pow(var_chaste_interface__ATP_production__ATPi, 2); + const double var_x73 = 1 + 99.999999999999986 * var_x72; + const double var_x74 = pow(mParameters[6], 0.23999999999999999); + const double var_x75 = var_x74 / var_x73; + const double var_x76 = var_x58 * mParameters[13]; + const double var_x77 = var_x60 * mParameters[15]; + const double var_x78 = var_x77 * var_chaste_interface__transient_outward_current_y2_gate__y2; + const double var_x79 = 0.10000000000000001 * var_x64; + const double var_x80 = 0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1; + const double var_x82 = pow(mParameters[6], 0.20000000000000001); + const double var_x83 = var_x82 * mParameters[9] * mParameters[12] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; + const double var_x84 = pow(mParameters[6], 0.40000000000000002); + const double var_x85 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x86 = log(var_x85 * mParameters[6]); + const double var_x87 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x86); + const double var_x88 = 1 + var_x87; + const double var_x89 = pow(var_x88, 4); + const double var_x90 = exp(0.47999999999999998 + 1.282215932351298 * var_x86 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x91 = pow(var_x90, 4); + const double var_x92 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x86); + const double var_x93 = 1 + var_x92; + const double var_x94 = pow(var_x93, (-4)); + const double var_x95 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x86); + const double var_x96 = 1 + var_x95; + const double var_x97 = 1 / var_x96; + const double var_x98 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x86); + const double var_x99 = var_x97 * var_x98; + const double var_x100 = var_x90 / var_x93; + const double var_x101 = var_x100 * var_x88; + const double var_x102 = 0.75 * var_x99 + 3 * var_x101; + const double var_x103 = pow(var_x102, (-4)); + const double var_x104 = var_x103 * var_x94; + const double var_x105 = var_x104 * var_x91; + const double var_x106 = var_x105 * var_x89; + const double var_x107 = 81 * var_x106; + const double var_x108 = pow(var_x88, 3); + const double var_x109 = pow(var_x90, 3); + const double var_x110 = var_x108 * var_x109; + const double var_x111 = var_x110 * var_x99; + const double var_x112 = pow(var_x93, (-3)); + const double var_x113 = var_x103 * var_x112; + const double var_x114 = var_x111 * var_x113; + const double var_x115 = pow(var_x96, (-2)); + const double var_x116 = pow(var_x90, 2); + const double var_x117 = pow(var_x98, 2); + const double var_x118 = pow(var_x93, (-2)); + const double var_x119 = pow(var_x88, 2); + const double var_x120 = var_x118 * var_x119; + const double var_x121 = var_x103 * var_x115 * var_x116 * var_x117 * var_x120; + const double var_x122 = var_x84 * (var_x107 + 54 * var_x114 + 10.125 * var_x121) * mParameters[11]; + const double var_x124 = mParameters[9] * var_chaste_interface__time_independent_potassium_current_y_gate__y; + const double var_x125 = 0.00036499999999999998 * var_x66; + const double var_x126 = pow(var_x93, (-5)); + const double var_x127 = var_x89 * var_x91; + const double var_x128 = var_x103 * var_x92; + const double var_x129 = var_x126 * var_x127 * var_x128; + const double var_x130 = pow(var_x102, (-5)); + const double var_x131 = var_x115 * var_x95 * var_x98; + const double var_x132 = var_x100 * var_x87; + const double var_x133 = var_x118 * var_x88 * var_x90 * var_x92; + const double var_x135 = var_x110 * var_x113; + const double var_x136 = var_x103 * var_x116 * var_x117 * var_x120 * var_x95 / pow(var_x96, 3); + const double var_x137 = var_x112 * var_x115 * var_x116 * var_x117 * var_x119 * var_x128; + const double var_x138 = var_x104 * var_x92; + const double var_x139 = -26.712831923985377 * var_x86 + var_chaste_interface__membrane__Vm; + const double var_x140 = 0.50938071193859957 * var_x124 * var_x139 * var_x84 * mParameters[11]; + const double var_x141 = pow(mParameters[6], 0.16); + const double var_x142 = 0.0010924717003124302 * var_x141; + const double var_x143 = var_chaste_interface__membrane__Vm == (-3); + const double var_x144 = var_x41 * var_x46; + const double var_x147 = 0.076923076923076927 * var_chaste_interface__membrane__Vm; + const double var_x148 = exp(-0.23076923076923078 - var_x147); + const double var_x149 = 1 - var_x148; + const double var_x150 = 8.3986538766456042e-5 / var_x149; + const double var_x151 = 3 + var_chaste_interface__membrane__Vm; + const double var_x152 = var_x141 * var_x150 * var_x151; + const double var_x161 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x162 = pow(var_x161, 1.0600000000000001); + const double var_x163 = 1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001); + const double var_x164 = var_x162 * var_x163; + const double var_x165 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x166 = 1 + 0.094 * var_x165; + const double var_x167 = 1 / var_x166; + const double var_x168 = 1 + 4.4045579125871104 * var_x164; + const double var_x169 = pow(var_x168, (-2)); + const double var_x170 = var_x167 * var_x169; + const double var_x171 = mParameters[9] * var_chaste_interface__sodium_potassium_pump_y_gate__y; + const double var_x175 = pow(var_chaste_interface__internal_ion_concentrations__Ki, 0.12000000000000011); + const double var_x176 = ((var_x1) ? (1) : (var_x144)); + const double var_x177 = var_x85 * var_x99; + const double var_x178 = var_x131 * var_x85; + const double var_x179 = 1.2020774365793419 * var_x178 - 2.8048473520184647 * var_x177 + 9.6166194926347348 * var_x133 * var_x85 + 15.386591188215577 * var_x101 * var_x85 - 20.515454917620769 * var_x132 * var_x85; + const double var_x180 = 0.15400000000000003 * var_x176 + var_x125 * var_x176 + var_x140 * (-7.0321530039891496 * var_x121 * var_x85 - 21.637393858428155 * var_x135 * var_x178 - 8.114022696910558 * var_x136 * var_x85 - 16.228045393821116 * var_x137 * var_x85 - 259.64872630113786 * var_x129 * var_x85 - 415.43796208182056 * var_x106 * var_x85 - 157.23172870457793 * var_x135 * var_x177 - 129.82436315056893 * var_x110 * var_x138 * var_x177 + 81 * var_x130 * var_x179 * var_x89 * var_x91 * var_x94 + 553.91728277576078 * var_x103 * var_x108 * var_x85 * var_x87 * var_x91 * var_x94 + 54 * var_x108 * var_x109 * var_x112 * var_x130 * var_x179 * var_x97 * var_x98 + 10.125 * var_x115 * var_x116 * var_x117 * var_x118 * var_x119 * var_x130 * var_x179 + 34.619830173485049 * var_x103 * var_x115 * var_x116 * var_x117 * var_x118 * var_x85 * var_x87 * var_x88 + 276.95864138788039 * var_x103 * var_x109 * var_x112 * var_x119 * var_x85 * var_x87 * var_x97 * var_x98) + var_x176 * var_x55 + var_x176 * var_x76 + var_x176 * var_x78 + var_x176 * var_x79 + 1176.6211762690609 * var_x75 * var_x85 + 19.065191839422258 * var_x80 * var_x83 * var_x85 + 13.607001343335821 * var_x122 * var_x124 * var_x85 + ((var_x143) ? (var_x142 * var_x176) : (var_x152 * var_x176)); + const double var_x236 = 1.2955153404562495e-6 * mParameters[4]; + const double var_x238 = var_x162 * var_x170 * var_x175; + const double var_x239 = var_x171 * var_x238; + + partialF = -var_x236 * (var_x180 + 1.5332315092660918 * var_x239); + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative3(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * sqrt(pow((10.800000000000001 - var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 3.2000000000000002 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total) + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; // millimolar + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_NL_model__Q_d2 = 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCaCB; // per_millisecond + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_b = -0.029999999999999999 * var_chaste_interface__NL_model__pCa + 39 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB) * var_internal_ion_concentrations__Cai; // per_millisecond + const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond + const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA + const double var_SR_L_current__i_SR_L = (-var_internal_ion_concentrations__Cai + var_chaste_interface__Ca_concentrations_in_SR__Caup) * mParameters[0]; // picoA + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = 1 * (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_T_type_Ca_channel__i_Ca_T = 612 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2 * var_constant_field_equations__CF_Ca; // picoA + const double var_background_Cab_current__i_Cab = 0.040000000000000001 * var_constant_field_equations__CF_Ca; // picoA + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = 1 * (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total = 0.070000000000000007 * var_NL_model__Q_d2 + 0.070000000000000007 * var_NL_model__Q_r + 6.4775767022812476e-7 * var_RyR_channel__i_RyR + 6.4775767022812476e-7 * var_SR_L_current__i_SR_L + 6.4775767022812476e-7 * var_SR_calcium_pump__i_SR_U + 1.2955153404562495e-6 * var_sodium_calcium_exchanger__i_NaCa - 0.070000000000000007 * var_NL_model__Q_b - 6.4775767022812476e-7 * var_L_type_Ca_channel__i_CaL_Ca - 6.4775767022812476e-7 * var_T_type_Ca_channel__i_Ca_T - 6.4775767022812476e-7 * var_background_Cab_current__i_Cab; // millimolar / millisecond + + return d_dt_chaste_interface_var_internal_ion_concentrations__Ca_Total; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative3(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x7 = 0.5 * var_x6; + const double var_x8 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x15 = -17.978260869565219 + 362.31884057971018 * var_x6 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x16 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x17 = 1 / var_x16; + const double var_x18 = 669.921875 * var_x17; + const double var_x19 = 1 + var_x15 * var_x18; + const double var_x20 = _lt_0_row[5]; + const double var_x35 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x36 = 1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3); + const double var_x37 = 1 / var_x36; + const double var_x38 = var_x37 * mParameters[8] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x52 = var_x7 + var_x8; + const double var_x53 = -0.026190000000000001 + var_x52; + const double var_x65 = var_x38 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x154 = pow(var_x19, (-2)); + const double var_x155 = var_x154 * var_x20; + const double var_x159 = mParameters[9] * mParameters[14]; + const double var_x160 = var_x159 * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; + const double var_x165 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x181 = (-0.047620000000000003 + var_chaste_interface__internal_ion_concentrations__Ca_Total) / var_x6; + const double var_x182 = 0.5 + 0.5 * var_x181; + const double var_x183 = ((var_x1) ? (0) : (var_x182 * var_x2 * var_x5)); + const double var_x190 = var_x183 * var_x35; + const double var_x191 = var_x190 * var_x65; + const double var_x192 = 362.31884057971018 + 362.31884057971018 * var_x181; + const double var_x240 = var_x160 * var_x17; + const double var_x255 = 0.00039642769417961232 * var_chaste_interface__T_type_Ca_channel_y1_gate__y1 * var_chaste_interface__T_type_Ca_channel_y2_gate__y2; + const double var_x256 = var_x182 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB); + const double var_x257 = var_x182 * var_chaste_interface__NL_model__pCB; + const double var_x258 = -var_x182; + const double var_x259 = 1 + 0.10000000000000001 * var_x165; + const double var_x260 = 1 / var_x259; + const double var_x261 = 1 / var_x53; + const double var_x262 = 1 + 0.00080000000000000004 * var_x261; + const double var_x263 = pow(var_x262, (-2)); + const double var_x264 = pow(var_x53, 2); + const double var_x265 = 1 / var_x264; + const double var_x266 = 1 - var_chaste_interface__SR_calcium_pump_y_gate__y; + const double var_x267 = var_x155 * var_x192; + + partialF = -2.7300000000000004 * var_x256 - 109.20000000000002 * var_x257 - 6.4775767022812476e-7 * var_x191 - 2.591030680912499e-8 * var_x183 - var_x183 * var_x255 + 6.4775767022812476e-7 * var_x258 * mParameters[0] - 0.00086789406596971398 * var_x240 * var_x267 + 6.4775767022812476e-7 * var_x258 * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR + 5.1820613618249983e-10 * var_x258 * var_x260 * var_x263 * var_x265 * var_x266 * mParameters[3]; + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative4(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = 1 * (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = 21 * (-0.040000000000000001 * (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * var_sodium_potassium_pump__p_E2Na + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na * var_chaste_interface__sodium_potassium_pump_y_gate__y) * mParameters[9]; // picoA + const double d_dt_chaste_interface_var_ATP_production__ATPi = 0.014999999999999999 + 3.2387883511406238e-7 * var_SR_calcium_pump__i_SR_U - 0.0030000000000000001 * var_chaste_interface__ATP_production__ATPi - 0.028000000000000004 * var_chaste_interface__NL_model__pCaCB - 1.2955153404562495e-6 * var_sodium_potassium_pump__i_NaK; // millimolar / millisecond + + return d_dt_chaste_interface_var_ATP_production__ATPi; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative4(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + + + + const double var_x6 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x7 = 0.5 * var_x6; + const double var_x8 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x52 = var_x7 + var_x8; + const double var_x53 = -0.026190000000000001 + var_x52; + const double var_x72 = pow(var_chaste_interface__ATP_production__ATPi, 2); + const double var_x161 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x162 = pow(var_x161, 1.0600000000000001); + const double var_x163 = 1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001); + const double var_x164 = var_x162 * var_x163; + const double var_x165 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x166 = 1 + 0.094 * var_x165; + const double var_x168 = 1 + 4.4045579125871104 * var_x164; + const double var_x194 = 1 / var_x168; + const double var_x195 = 1 / var_x72; + const double var_x196 = var_x194 * var_x195 * var_chaste_interface__sodium_potassium_pump_y_gate__y / pow(var_x166, 2); + const double var_x197 = var_x196 * mParameters[9]; + const double var_x259 = 1 + 0.10000000000000001 * var_x165; + const double var_x261 = 1 / var_x53; + const double var_x262 = 1 + 0.00080000000000000004 * var_x261; + const double var_x266 = 1 - var_chaste_interface__SR_calcium_pump_y_gate__y; + const double var_x268 = 1 / var_x262; + const double var_x269 = var_x195 * var_x266 * var_x268 / pow(var_x259, 2); + const double var_x270 = var_x269 * mParameters[3]; + + partialF = -0.0030000000000000001 - 3.2387883511406238e-8 * var_x270 - 9.4621849436243545e-7 * var_x197; + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative5(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; + // Units: dimensionless; Initial value: 0.3556412697995689 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; + // Units: dimensionless; Initial value: 0.40285968661346977 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_RP = _lt_0_row[32]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_AP = _lt_0_row[34]; // per_millisecond + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na = 8.7499999999999999e-5 * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na + var_sodium_current_voltage_dependent_gate__k_RP_AP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na - (var_sodium_current_voltage_dependent_gate__k_AP_AI + var_sodium_current_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AP_Na; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative5(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x292 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x293 = 1 / var_x292; + const double var_x295 = 0.058823529411764705 * var_chaste_interface__membrane__Vm; + const double var_x296 = exp(var_x295); + const double var_x297 = exp(0.00125 * var_chaste_interface__membrane__Vm); + const double var_x298 = 26 * var_x296 + 0.02 * var_x297; + const double var_x307 = 1 / var_x298; + const double var_x308 = 1 * var_x307; + const double var_x309 = 1.25 * var_x293; + + partialF = -var_x308 - var_x309; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative6(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; + // Units: dimensionless; Initial value: 0.3556412697995689 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; + // Units: dimensionless; Initial value: 0.40285968661346977 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_sodium_current_voltage_dependent_gate__k_AI_RI = _lt_0_row[30]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_RP = _lt_0_row[32]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RI_AI = _lt_0_row[33]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_AP = _lt_0_row[34]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RP_RI = 0.01 / (1 + 8.7499999999999999e-5 * var_sodium_current_voltage_dependent_gate__k_AP_RP * var_sodium_current_voltage_dependent_gate__k_RI_AI / (var_sodium_current_voltage_dependent_gate__k_AI_RI * var_sodium_current_voltage_dependent_gate__k_AP_AI * var_sodium_current_voltage_dependent_gate__k_RP_AP)); // per_millisecond + const double var_sodium_current_voltage_dependent_gate__p_RI_Na = 1 - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // dimensionless + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na = (0.01 - var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_sodium_current_voltage_dependent_gate__p_RI_Na + var_sodium_current_voltage_dependent_gate__k_AP_RP * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - (var_sodium_current_voltage_dependent_gate__k_RP_AP + var_sodium_current_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_RP_Na; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative6(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x302 = exp(-0.02 * var_chaste_interface__membrane__Vm); + const double var_x303 = exp(-0.125 * var_chaste_interface__membrane__Vm); + const double var_x304 = 0.25 * var_x302 + 0.1027 * var_x303; + const double var_x310 = 1 / var_x304; + + partialF = -0.01 - var_x310; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative7(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na = rY[6]; + // Units: dimensionless; Initial value: 0.3556412697995689 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na = rY[7]; + // Units: dimensionless; Initial value: 0.40285968661346977 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_sodium_current_voltage_dependent_gate__k_AI_RI = _lt_0_row[30]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_AP_AI = _lt_0_row[31]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__k_RI_AI = _lt_0_row[33]; // per_millisecond + const double var_sodium_current_voltage_dependent_gate__p_RI_Na = 1 - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na - var_chaste_interface__sodium_current_voltage_dependent_gate__p_RP_Na; // dimensionless + const double d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na = var_sodium_current_voltage_dependent_gate__k_AP_AI * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na + var_sodium_current_voltage_dependent_gate__k_RI_AI * var_sodium_current_voltage_dependent_gate__p_RI_Na - (8.7499999999999999e-5 + var_sodium_current_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AI_Na; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_voltage_dependent_gate__p_AI_Na; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative7(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x292 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x297 = exp(0.00125 * var_chaste_interface__membrane__Vm); + const double var_x303 = exp(-0.125 * var_chaste_interface__membrane__Vm); + const double var_x311 = 5 * var_x292 + 0.0001027 * var_x303; + const double var_x312 = 1 / var_x311; + const double var_x313 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + const double var_x314 = 1300 * var_x313 + 0.040000000000000001 * var_x297; + const double var_x323 = 1 * var_x312; + + partialF = -8.7499999999999999e-5 - var_x323 - 1 / var_x314; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative8(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y = 1 * _lt_0_row[28] * (1 - var_chaste_interface__sodium_current_ultra_slow_gate__y) - 1 * _lt_0_row[29] * var_chaste_interface__sodium_current_ultra_slow_gate__y; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_current_ultra_slow_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative8(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x325 = 0.01 * var_chaste_interface__membrane__Vm; + const double var_x326 = exp(-var_x325); + const double var_x327 = 0.20000000000000001 * var_chaste_interface__membrane__Vm; + const double var_x328 = exp(-var_x327); + const double var_x329 = 4000 * var_x326 + 0.014 * var_x328; + const double var_x330 = exp(var_x325); + const double var_x331 = exp(var_x327); + const double var_x332 = 8000 * var_x330 + 9000000000.0 * var_x331; + + partialF = -1 / var_x329 - 1 / var_x332; + } + else + { + const double y_save = rY[8]; + rY[8] += delta; + const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[8])/delta; + rY[8] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative9(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; + // Units: dimensionless; Initial value: 0.9968480629364956 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; + // Units: dimensionless; Initial value: 0.000877325391245903 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP = _lt_0_row[11]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP = _lt_0_row[13]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = 0.001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL - (0.0040000000000000001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative9(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x333 = exp(0.14285714285714285 * var_chaste_interface__membrane__Vm); + const double var_x334 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; + const double var_x335 = exp(var_x334); + const double var_x336 = 480 * var_x333 + 2.2000000000000002 * var_x335; + const double var_x344 = 1 / var_x336; + const double var_x345 = 1 * var_x344; + + partialF = -0.0040000000000000001 - var_x345; + } + else + { + const double y_save = rY[9]; + rY[9] += delta; + const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[9])/delta; + rY[9] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative10(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; + // Units: dimensionless; Initial value: 0.9968480629364956 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; + // Units: dimensionless; Initial value: 0.000877325391245903 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL = 1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // dimensionless + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI = _lt_0_row[10]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP = _lt_0_row[11]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI = _lt_0_row[12]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP = _lt_0_row[13]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI = 0.040000000000000001 / (1 + 0.25 * var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI / (var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI * var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP)); // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = (0.040000000000000001 - var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_AP_RP * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - (var_L_type_Ca_channel_voltage_dependent_gate__k_RP_AP + var_L_type_Ca_channel_voltage_dependent_gate__k_RP_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative10(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x334 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; + const double var_x339 = exp(-var_x334); + const double var_x340 = exp(-0.16949152542372881 * var_chaste_interface__membrane__Vm); + const double var_x341 = 1.5 * var_x339 + 0.27000000000000002 * var_x340; + const double var_x346 = 1 / var_x341; + + partialF = -0.040000000000000001 - var_x346; + } + else + { + const double y_save = rY[10]; + rY[10] += delta; + const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[10])/delta; + rY[10] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative11(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL = rY[10]; + // Units: dimensionless; Initial value: 0.9968480629364956 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = rY[11]; + // Units: dimensionless; Initial value: 0.000877325391245903 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL = 1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL; // dimensionless + const double var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI = _lt_0_row[10]; // per_millisecond + const double var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI = _lt_0_row[12]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL = 0.0040000000000000001 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL + var_L_type_Ca_channel_voltage_dependent_gate__k_RI_AI * var_L_type_Ca_channel_voltage_dependent_gate__p_RI_CaL - (0.001 + var_L_type_Ca_channel_voltage_dependent_gate__k_AI_RI) * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative11(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x325 = 0.01 * var_chaste_interface__membrane__Vm; + const double var_x326 = exp(-var_x325); + const double var_x330 = exp(var_x325); + const double var_x347 = 0.13513513513513511 * var_chaste_interface__membrane__Vm; + const double var_x348 = exp(var_x347); + const double var_x349 = 11 * var_x330 + 2200000 * var_x348; + const double var_x350 = exp(-var_x347); + const double var_x351 = 2 * var_x326 + 0.0018 * var_x350; + const double var_x352 = 1 / var_x351; + const double var_x363 = 1 * var_x352; + + partialF = -0.001 - var_x363 - 1 / var_x349; + } + else + { + const double y_save = rY[11]; + rY[11] += delta; + const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[11])/delta; + rY[11] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative12(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; + // Units: dimensionless; Initial value: 0.4250747299372254 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca = 6.9539999999999997 * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U = 0.14299999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C + 2.0019999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa - (0.34999999999999998 + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_U; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative12(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + + + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x7 = 0.5 * var_x6; + const double var_x8 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x9 = var_x3 * mParameters[5]; + const double var_x10 = -0.026190000000000001 + var_x7 + var_x8 - var_x9; + const double var_x11 = var_x10 * var_x5; + const double var_x52 = var_x7 + var_x8; + const double var_x53 = -0.026190000000000001 + var_x52; + const double var_x198 = ((var_x1) ? (-mParameters[5]) : (var_x11 * var_x2)); + const double var_x360 = -1 + var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x367 = -6.9539999999999997 * var_x360; + const double var_x368 = 6.9539999999999997 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x373 = var_x368 * (var_x53 - 0.020279999999999996 * var_x198); + const double var_x374 = var_x373 + var_x367 * var_x53; + + partialF = -0.34999999999999998 - var_x374; + } + else + { + const double y_save = rY[12]; + rY[12] += delta; + const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[12])/delta; + rY[12] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative13(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; + // Units: dimensionless; Initial value: 0.4250747299372254 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_Ca_dependent_gate__p_CCa = 1 - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca = 6.9539999999999997 * (1 - var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_internal_ion_concentrations__Cai + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; // per_millisecond + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa = 0.00029999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - 2.3519999999999999 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa + var_L_type_Ca_channel_Ca_dependent_gate__k_UUCa_Ca * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_UCa; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative13(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + + partialF = -2.3523000000000001; + } + else + { + const double y_save = rY[13]; + rY[13] += delta; + const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[13])/delta; + rY[13] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative14(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C = rY[14]; + // Units: dimensionless; Initial value: 0.4250747299372254 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_L_type_Ca_channel_Ca_dependent_gate__p_CCa = 1 - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U - var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_L_type_Ca_channel_Ca_dependent_gate__Cacm = -0.29999999999999999 * var_L_type_Ca_channel_Ca_dependent_gate__iCaL + var_internal_ion_concentrations__Cai; // millimolar + const double d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C = 0.34999999999999998 * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + 0.0041999999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__p_CCa - (0.14299999999999999 + 6.9539999999999997 * var_L_type_Ca_channel_Ca_dependent_gate__Cacm * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL) * var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_C; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_Ca_dependent_gate__p_C; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative14(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + + + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x7 = 0.5 * var_x6; + const double var_x8 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x9 = var_x3 * mParameters[5]; + const double var_x10 = -0.026190000000000001 + var_x7 + var_x8 - var_x9; + const double var_x11 = var_x10 * var_x5; + const double var_x52 = var_x7 + var_x8; + const double var_x53 = -0.026190000000000001 + var_x52; + const double var_x198 = ((var_x1) ? (-mParameters[5]) : (var_x11 * var_x2)); + const double var_x368 = 6.9539999999999997 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x373 = var_x368 * (var_x53 - 0.020279999999999996 * var_x198); + + partialF = -0.1472 - var_x373; + } + else + { + const double y_save = rY[14]; + rY[14] += delta; + const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[14])/delta; + rY[14] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative15(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y = 1 * _lt_0_row[8] * (1 - var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y) - 1 * _lt_0_row[9] * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_ultra_slow_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative15(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x334 = 0.015384615384615385 * var_chaste_interface__membrane__Vm; + const double var_x335 = exp(var_x334); + const double var_x339 = exp(-var_x334); + const double var_x375 = exp(-0.071428571428571425 * var_chaste_interface__membrane__Vm); + const double var_x376 = 66 * var_x339 + 1800 * var_x375; + const double var_x377 = exp(0.1111111111111111 * var_chaste_interface__membrane__Vm); + const double var_x378 = 58 * var_x335 + 250000 * var_x377; + + partialF = -1 / var_x376 - 1 / var_x378; + } + else + { + const double y_save = rY[15]; + rY[15] += delta; + const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[15])/delta; + rY[15] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative16(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__T_type_Ca_channel_y1_gate__y1 = rY[16]; + // Units: dimensionless; Initial value: 1.6882718240109127e-05 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1 = 1 * _lt_0_row[14] * (1 - var_chaste_interface__T_type_Ca_channel_y1_gate__y1) - 1 * _lt_0_row[15] * var_chaste_interface__T_type_Ca_channel_y1_gate__y1; // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_y1_gate__y1; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative16(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x379 = exp(0.0001 * var_chaste_interface__membrane__Vm); + const double var_x380 = exp(0.15873015873015872 * var_chaste_interface__membrane__Vm); + const double var_x381 = 1.5 * var_x379 + 40 * var_x380; + const double var_x382 = exp(-0.17857142857142858 * var_chaste_interface__membrane__Vm); + const double var_x383 = exp(-0.0040000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x384 = 0.019 * var_x382 + 0.81999999999999995 * var_x383; + + partialF = -1 / var_x381 - 1 / var_x384; + } + else + { + const double y_save = rY[16]; + rY[16] += delta; + const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[16])/delta; + rY[16] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative17(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__T_type_Ca_channel_y2_gate__y2 = rY[17]; + // Units: dimensionless; Initial value: 0.8585352091865849 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2 = 1 * _lt_0_row[16] * (1 - var_chaste_interface__T_type_Ca_channel_y2_gate__y2) - 1 * _lt_0_row[17] * var_chaste_interface__T_type_Ca_channel_y2_gate__y2; // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_y2_gate__y2; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative17(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x385 = exp(-0.040000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x386 = exp(-0.14925373134328357 * var_chaste_interface__membrane__Vm); + const double var_x387 = 1.2 * var_x385 + 0.00059999999999999995 * var_x386; + const double var_x388 = exp(0.00033333333333333332 * var_chaste_interface__membrane__Vm); + const double var_x389 = exp(0.099009900990099015 * var_chaste_interface__membrane__Vm); + const double var_x390 = 30 * var_x388 + 62000 * var_x389; + + partialF = -1 / var_x387 - 1 / var_x390; + } + else + { + const double y_save = rY[17]; + rY[17] += delta; + const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[17])/delta; + rY[17] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative18(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + + + + // Mathematics + const double var_time_independent_potassium_current__E_K = 26.712831923985377 * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki); // millivolt + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y = 1 * (1 - var_chaste_interface__time_independent_potassium_current_y_gate__y) / (7 * exp(-0.32333333333333331 + 0.0033333333333333335 * var_chaste_interface__membrane__Vm - 0.0033333333333333335 * var_time_independent_potassium_current__E_K) + 8000 * exp(-11.411764705882353 + 0.11764705882352941 * var_chaste_interface__membrane__Vm - 0.11764705882352941 * var_time_independent_potassium_current__E_K)) - 1 * pow(var_time_independent_potassium_current__fO, 4) * var_chaste_interface__time_independent_potassium_current_y_gate__y / (0.00013999999999999999 * exp(10.659340659340661 + 0.10989010989010989 * var_time_independent_potassium_current__E_K - 0.10989010989010989 * var_chaste_interface__membrane__Vm) + 0.20000000000000001 * exp(0.19400000000000001 + 0.002 * var_time_independent_potassium_current__E_K - 0.002 * var_chaste_interface__membrane__Vm)); // 1 / millisecond + + return d_dt_chaste_interface_var_time_independent_potassium_current_y_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative18(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + + + + const double var_x85 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x86 = log(var_x85 * mParameters[6]); + const double var_x87 = exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 1.7096212431350641 * var_x86); + const double var_x88 = 1 + var_x87; + const double var_x89 = pow(var_x88, 4); + const double var_x90 = exp(0.47999999999999998 + 1.282215932351298 * var_x86 - 0.048000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x91 = pow(var_x90, 4); + const double var_x92 = exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.80138495771956131 * var_x86); + const double var_x93 = 1 + var_x92; + const double var_x94 = pow(var_x93, (-4)); + const double var_x95 = exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.40069247885978065 * var_x86); + const double var_x96 = 1 + var_x95; + const double var_x97 = 1 / var_x96; + const double var_x98 = exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.93494911733948827 * var_x86); + const double var_x99 = var_x97 * var_x98; + const double var_x100 = var_x90 / var_x93; + const double var_x101 = var_x100 * var_x88; + const double var_x102 = 0.75 * var_x99 + 3 * var_x101; + const double var_x103 = pow(var_x102, (-4)); + const double var_x104 = var_x103 * var_x94; + const double var_x105 = var_x104 * var_x91; + const double var_x106 = var_x105 * var_x89; + const double var_x107 = 81 * var_x106; + const double var_x391 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x392 = -var_x391; + const double var_x393 = exp(-0.32333333333333331 - var_x392 - 0.08904277307995126 * var_x86); + const double var_x394 = exp(-11.411764705882353 + 0.11764705882352941 * var_chaste_interface__membrane__Vm - 3.142686108704162 * var_x86); + const double var_x395 = 7 * var_x393 + 8000 * var_x394; + const double var_x398 = exp(10.659340659340661 + 2.9354760356027887 * var_x86 - 0.10989010989010989 * var_chaste_interface__membrane__Vm); + const double var_x399 = 0.002 * var_chaste_interface__membrane__Vm; + const double var_x400 = exp(0.19400000000000001 - var_x399 + 0.053425663847970754 * var_x86); + const double var_x401 = 0.00013999999999999999 * var_x398 + 0.20000000000000001 * var_x400; + const double var_x402 = 1 / var_x401; + + partialF = -1 / var_x395 - var_x107 * var_x402; + } + else + { + const double y_save = rY[18]; + rY[18] += delta; + const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[18])/delta; + rY[18] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative19(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1 = -(_lt_0_row[18]) * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 + 1 * _lt_0_row[19] * (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1); // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y1_gate__y1; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative19(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x313 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + const double var_x391 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x392 = -var_x391; + const double var_x407 = 1 / var_x313; + const double var_x408 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; + const double var_x409 = exp(var_x408); + const double var_x410 = exp(0.001 * var_chaste_interface__membrane__Vm); + const double var_x411 = 160 * var_x409 + 200 * var_x410; + const double var_x412 = exp(var_x392); + const double var_x413 = exp(-0.086956521739130432 * var_chaste_interface__membrane__Vm); + const double var_x414 = 5 * var_x412 + 20 * var_x413; + + partialF = -1 / var_x411 - 1 / var_x414 - 0.00040000000000000002 * var_x407; + } + else + { + const double y_save = rY[19]; + rY[19] += delta; + const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[19])/delta; + rY[19] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative20(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2 = -(_lt_0_row[20]) * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 1 * _lt_0_row[21] * (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2); // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y2_gate__y2; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative20(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x147 = 0.076923076923076927 * var_chaste_interface__membrane__Vm; + const double var_x313 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + const double var_x391 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x392 = -var_x391; + const double var_x407 = 1 / var_x313; + const double var_x408 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; + const double var_x409 = exp(var_x408); + const double var_x410 = exp(0.001 * var_chaste_interface__membrane__Vm); + const double var_x412 = exp(var_x392); + const double var_x415 = 1600 * var_x409 + 2000 * var_x410; + const double var_x416 = exp(-var_x147); + const double var_x417 = 20 * var_x412 + 200 * var_x416; + + partialF = -1 / var_x415 - 1 / var_x417 - 0.0001 * var_x407; + } + else + { + const double y_save = rY[20]; + rY[20] += delta; + const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[20])/delta; + rY[20] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative21(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3 = 1 * _lt_0_row[22] * (1 - var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3) - 1 * _lt_0_row[23] * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_time_dependent_potassium_current_y3_gate__y3; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative21(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x295 = 0.058823529411764705 * var_chaste_interface__membrane__Vm; + const double var_x296 = exp(var_x295); + const double var_x391 = 0.0033333333333333335 * var_chaste_interface__membrane__Vm; + const double var_x418 = exp(-0.0066666666666666671 * var_chaste_interface__membrane__Vm); + const double var_x419 = exp(-var_x295); + const double var_x420 = 2 * var_x418 + 0.34999999999999998 * var_x419; + const double var_x421 = exp(var_x391); + const double var_x422 = 2.5 * var_x421 + 10 * var_x296; + + partialF = -1 / var_x420 - 1 / var_x422; + } + else + { + const double y_save = rY[21]; + rY[21] += delta; + const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[21])/delta; + rY[21] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative22(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1 = 1 * _lt_0_row[24] * (1 - var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1) - 1 * _lt_0_row[25] * var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1; // 1 / millisecond + + return d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y1_gate__y1; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative22(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x313 = exp(0.050000000000000003 * var_chaste_interface__membrane__Vm); + const double var_x325 = 0.01 * var_chaste_interface__membrane__Vm; + const double var_x330 = exp(var_x325); + const double var_x423 = 260 * var_x330 + 1450 * var_x313; + const double var_x424 = exp(-0.095238095238095233 * var_chaste_interface__membrane__Vm); + const double var_x425 = exp(-0.016129032258064516 * var_chaste_interface__membrane__Vm); + const double var_x426 = 85 * var_x424 + 370 * var_x425; + + partialF = -1 / var_x423 - 1 / var_x426; + } + else + { + const double y_save = rY[22]; + rY[22] += delta; + const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[22])/delta; + rY[22] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative23(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + + + + // Mathematics + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2 = -0.004444 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 + 3.7000000000000002 * (1 - var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_internal_ion_concentrations__Cai; // 1 / millisecond + + return d_dt_chaste_interface_var_slow_time_dependent_potassium_current_y2_gate__y2; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative23(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + + + + const double var_x6 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + + partialF = 0.092459000000000013 - 1.8500000000000001 * var_x6 - 1.8500000000000001 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + } + else + { + const double y_save = rY[23]; + rY[23] += delta; + const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[23])/delta; + rY[23] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative24(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1 = 1 * _lt_0_row[36] * (1 - var_chaste_interface__transient_outward_current_y1_gate__y1) - 1 * _lt_0_row[37] * var_chaste_interface__transient_outward_current_y1_gate__y1; // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_current_y1_gate__y1; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative24(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x292 = exp(-0.0025000000000000001 * var_chaste_interface__membrane__Vm); + const double var_x399 = 0.002 * var_chaste_interface__membrane__Vm; + const double var_x408 = 0.035714285714285712 * var_chaste_interface__membrane__Vm; + const double var_x427 = exp(0.0625 * var_chaste_interface__membrane__Vm); + const double var_x428 = exp(var_x399); + const double var_x429 = 4.4000000000000004 * var_x427 + 0.20000000000000001 * var_x428; + const double var_x430 = exp(-var_x408); + const double var_x431 = 11 * var_x430 + 0.20000000000000001 * var_x292; + + partialF = -1 / var_x429 - 1 / var_x431; + } + else + { + const double y_save = rY[24]; + rY[24] += delta; + const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[24])/delta; + rY[24] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative25(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2 = 0.0038 * _lt_0_row[38] * (1 - var_chaste_interface__transient_outward_current_y2_gate__y2) * _lt_0_row[39] - 0.0038 * _lt_0_row[40] * var_chaste_interface__transient_outward_current_y2_gate__y2 * _lt_0_row[41]; // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_current_y2_gate__y2; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative25(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + + + + const double var_x432 = 1.1946902654867255 + 0.088495575221238937 * var_chaste_interface__membrane__Vm; + const double var_x433 = exp(var_x432); + const double var_x434 = 1 + 0.067083000000000004 * var_x433; + const double var_x435 = var_x433 / var_x434; + const double var_x437 = exp(-var_x432); + const double var_x438 = 1 + 0.051334999999999999 * var_x437; + const double var_x439 = var_x437 / var_x438; + + partialF = -0.0038 * var_x435 - 0.0038 * var_x439; + } + else + { + const double y_save = rY[25]; + rY[25] += delta; + const double temp = EvaluateYDerivative25(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[25])/delta; + rY[25] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative26(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_sodium_calcium_exchanger__k1 = _lt_0_row[26]; // per_millisecond + const double var_sodium_calcium_exchanger__k2 = _lt_0_row[27]; // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + 669.921875 * (1 + 724.63768115942037 * var_internal_ion_concentrations__Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / pow(mParameters[7], 3)); // dimensionless + const double d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y = (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * (1 / (1 + 1.3799999999999999 * (1 + 1.4927113702623908e-6 * pow(mParameters[7], 3)) / mParameters[5]) + var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) - (1 / (1 + 0.0013799999999999999 * (1 + 0.0014927113702623907 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)) / var_internal_ion_concentrations__Cai) + var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na) * var_chaste_interface__sodium_calcium_exchanger_y_gate__y; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_calcium_exchanger_y_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative26(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x6 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x7 = 0.5 * var_x6; + const double var_x8 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x15 = -17.978260869565219 + 362.31884057971018 * var_x6 + 362.31884057971018 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x16 = pow(var_chaste_interface__internal_ion_concentrations__Nai, 3); + const double var_x17 = 1 / var_x16; + const double var_x18 = 669.921875 * var_x17; + const double var_x19 = 1 + var_x15 * var_x18; + const double var_x20 = _lt_0_row[5]; + const double var_x21 = var_x20 / var_x19; + const double var_x22 = pow(mParameters[7], 3); + const double var_x23 = _lt_0_row[6] / (1 + 669921.875 * (1 + 0.7246376811594204 * mParameters[5]) / var_x22); + const double var_x52 = var_x7 + var_x8; + const double var_x53 = -0.026190000000000001 + var_x52; + const double var_x233 = 1 * var_x21 + 1 * var_x23; + const double var_x261 = 1 / var_x53; + const double var_x440 = 0.0013799999999999999 + 2.0599416909620992e-6 * var_x16; + const double var_x441 = 1 + var_x261 * var_x440; + + partialF = -var_x233 - 1 / var_x441 - 1 / (1 + 1.3799999999999999 * (1 + 1.4927113702623908e-6 * var_x22) / mParameters[5]); + } + else + { + const double y_save = rY[26]; + rY[26] += delta; + const double temp = EvaluateYDerivative26(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[26])/delta; + rY[26] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative27(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_potassium_pump_y_gate__y = rY[27]; + // Units: dimensionless; Initial value: 0.5910747147428818 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_sodium_potassium_pump__Nao_Eff = mParameters[7] * _lt_0_row[35]; // millimolar + const double var_sodium_potassium_pump__k1 = 0.37 / (1 + 0.094 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_sodium_potassium_pump__p_E1Na = 1 / (1 + 4.4045579125871104 * pow((1 / var_chaste_interface__internal_ion_concentrations__Nai), 1.0600000000000001) * (1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001))); // dimensionless + const double var_sodium_potassium_pump__p_E2Na = 1 / (1 + 90.050628437051003 * pow((1 / var_sodium_potassium_pump__Nao_Eff), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001))); // dimensionless + const double d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y = (1 - var_chaste_interface__sodium_potassium_pump_y_gate__y) * (0.040000000000000001 * var_sodium_potassium_pump__p_E2Na + 0.16500000000000001 / (1 + 0.21928759810465578 * pow((1 / mParameters[6]), 1.1200000000000001) * (1 + 0.011104864200909382 * pow(var_sodium_potassium_pump__Nao_Eff, 1.0600000000000001)))) - (0.01 / (1 + 49.999265664512095 * pow((1 / var_chaste_interface__internal_ion_concentrations__Ki), 1.1200000000000001) * (1 + 0.22703754152993499 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 1.0600000000000001))) + var_sodium_potassium_pump__k1 * var_sodium_potassium_pump__p_E1Na) * var_chaste_interface__sodium_potassium_pump_y_gate__y; // 1 / millisecond + + return d_dt_chaste_interface_var_sodium_potassium_pump_y_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative27(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + const double var_x29 = _lt_0_row[35]; + const double var_x30 = pow((1 / (var_x29 * mParameters[7])), 1.0600000000000001) * (1 + 4.560221410801109 * pow(mParameters[6], 1.1200000000000001)); + const double var_x31 = 1 + 90.050628437051003 * var_x30; + const double var_x85 = 1 / var_chaste_interface__internal_ion_concentrations__Ki; + const double var_x161 = 1 / var_chaste_interface__internal_ion_concentrations__Nai; + const double var_x162 = pow(var_x161, 1.0600000000000001); + const double var_x163 = 1 + 0.020000293738509214 * pow(var_chaste_interface__internal_ion_concentrations__Ki, 1.1200000000000001); + const double var_x164 = var_x162 * var_x163; + const double var_x165 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x166 = 1 + 0.094 * var_x165; + const double var_x167 = 1 / var_x166; + const double var_x168 = 1 + 4.4045579125871104 * var_x164; + const double var_x194 = 1 / var_x168; + const double var_x234 = 1 / var_x31; + const double var_x235 = var_x167 * var_x194; + const double var_x246 = 0.37 * var_x235 + 0.040000000000000001 * var_x234; + const double var_x443 = pow((1 / mParameters[6]), 1.1200000000000001); + const double var_x444 = pow((var_x29 * mParameters[7]), 1.0600000000000001); + const double var_x445 = 1 + 0.21928759810465578 * var_x443 * (1 + 0.011104864200909382 * var_x444); + const double var_x446 = pow(var_x85, 1.1200000000000001); + const double var_x447 = 1 + 0.22703754152993499 * pow(var_chaste_interface__internal_ion_concentrations__Nai, 1.0600000000000001); + const double var_x448 = 1 + 49.999265664512095 * var_x446 * var_x447; + + partialF = -var_x246 - 0.01 / var_x448 - 0.16500000000000001 / var_x445; + } + else + { + const double y_save = rY[27]; + rY[27] += delta; + const double temp = EvaluateYDerivative27(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[27])/delta; + rY[27] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative28(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + // Mathematics + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y = (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * (0.01 - 0.01 * var_SR_calcium_pump__p_E2Ca + var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) - (1 - 0.98999999999999999 * var_SR_calcium_pump__p_E1Ca) * var_chaste_interface__SR_calcium_pump_y_gate__y; // 1 / millisecond + + return d_dt_chaste_interface_var_SR_calcium_pump_y_gate__y; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative28(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + const double var_x6 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x7 = 0.5 * var_x6; + const double var_x8 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x52 = var_x7 + var_x8; + const double var_x53 = -0.026190000000000001 + var_x52; + const double var_x165 = 1 / var_chaste_interface__ATP_production__ATPi; + const double var_x259 = 1 + 0.10000000000000001 * var_x165; + const double var_x260 = 1 / var_x259; + const double var_x261 = 1 / var_x53; + const double var_x262 = 1 + 0.00080000000000000004 * var_x261; + const double var_x268 = 1 / var_x262; + const double var_x273 = 1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup; + const double var_x274 = 1 / var_x273; + const double var_x275 = 1 * var_x260 * var_x268; + + partialF = -1.01 - var_x275 + 0.01 * var_x268 + 0.98999999999999999 * var_x274; + } + else + { + const double y_save = rY[28]; + rY[28] += delta; + const double temp = EvaluateYDerivative28(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[28])/delta; + rY[28] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative29(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__RyR_channel__p_close_RyR = rY[30]; + // Units: dimensionless; Initial value: 0.19135178123107768 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * sqrt(pow((10.800000000000001 - var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 3.2000000000000002 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total) + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; // millimolar + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_RyR_channel__k1 = 280000 * pow(var_internal_ion_concentrations__Cai, 2) / pow(mParameters[2], 2) - 150 * var_L_type_Ca_channel__p_open_CaL * var_L_type_Ca_channel_Ca_dependent_gate__iCaL; // per_millisecond + const double d_dt_chaste_interface_var_RyR_channel__p_open_RyR = var_RyR_channel__k1 * var_chaste_interface__RyR_channel__p_close_RyR - 0.080000000000000002 * var_chaste_interface__RyR_channel__p_open_RyR / (1 + 0.35999999999999999 / var_Ca_concentrations_in_SR__Carel); // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__p_open_RyR; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative29(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + + const double var_x277 = sqrt(pow((10.800000000000001 - var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 3.2000000000000002 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); + const double var_x462 = -5.4000000000000004 + 0.5 * var_x277 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; + const double var_x463 = 1 + 0.35999999999999999 / var_x462; + + partialF = -0.080000000000000002 / var_x463; + } + else + { + const double y_save = rY[29]; + rY[29] += delta; + const double temp = EvaluateYDerivative29(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[29])/delta; + rY[29] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative30(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__RyR_channel__p_close_RyR = rY[30]; + // Units: dimensionless; Initial value: 0.19135178123107768 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + // Lookup table indexing + const bool _oob_0 = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__Vm); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicmatsuoka_model_2003FromCellMLGRL1Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__Vm); + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * sqrt(pow((10.800000000000001 - var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 3.2000000000000002 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total) + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; // millimolar + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (0.074870384603595908 * _lt_0_row[1] * (-mParameters[5] * _lt_0_row[0] + var_internal_ion_concentrations__Cai) * var_chaste_interface__membrane__Vm)); // millimolar + const double var_L_type_Ca_channel_Ca_dependent_gate__iCaL = 0.067599999999999993 * var_constant_field_equations__CF_Ca; // picoA + const double var_RyR_channel__k1 = 280000 * pow(var_internal_ion_concentrations__Cai, 2) / pow(mParameters[2], 2) - 150 * var_L_type_Ca_channel__p_open_CaL * var_L_type_Ca_channel_Ca_dependent_gate__iCaL; // per_millisecond + const double d_dt_chaste_interface_var_RyR_channel__p_close_RyR = -(0.00084900000000000004 + var_RyR_channel__k1) * var_chaste_interface__RyR_channel__p_close_RyR + 0.000377 * pow(var_Ca_concentrations_in_SR__Carel, 2) * (1 - var_chaste_interface__RyR_channel__p_close_RyR - var_chaste_interface__RyR_channel__p_open_RyR); // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__p_close_RyR; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative30(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + + const double var_x1 = var_chaste_interface__membrane__Vm == 0; + const double var_x2 = 0.074870384603595908 * var_chaste_interface__membrane__Vm; + const double var_x3 = exp(-var_x2); + const double var_x4 = 1 - var_x3; + const double var_x5 = 1 / var_x4; + const double var_x6 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x7 = 0.5 * var_x6; + const double var_x8 = 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + const double var_x9 = var_x3 * mParameters[5]; + const double var_x10 = -0.026190000000000001 + var_x7 + var_x8 - var_x9; + const double var_x11 = var_x10 * var_x5; + const double var_x35 = var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa; + const double var_x36 = 1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3); + const double var_x37 = 1 / var_x36; + const double var_x52 = var_x7 + var_x8; + const double var_x53 = -0.026190000000000001 + var_x52; + const double var_x198 = ((var_x1) ? (-mParameters[5]) : (var_x11 * var_x2)); + const double var_x199 = var_x198 * var_x35; + const double var_x216 = var_x37 * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL; + const double var_x264 = pow(var_x53, 2); + const double var_x277 = sqrt(pow((10.800000000000001 - var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 3.2000000000000002 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); + const double var_x450 = 10.139999999999999 * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y; + const double var_x453 = pow(mParameters[2], (-2)); + const double var_x454 = var_x216 * var_x450; + const double var_x462 = -5.4000000000000004 + 0.5 * var_x277 + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; + const double var_x464 = 280000 * var_x264 * var_x453; + const double var_x465 = var_x199 * var_x454; + const double var_x466 = pow(var_x462, 2); + const double var_x467 = 0.000377 * var_x466; + + partialF = -0.00084900000000000004 + var_x465 - var_x464 - var_x467; + } + else + { + const double y_save = rY[30]; + rY[30] += delta; + const double temp = EvaluateYDerivative30(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[30])/delta; + rY[30] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative31(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * sqrt(pow((10.800000000000001 - var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 3.2000000000000002 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total) + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; // millimolar + const double var_SR_T_current__i_SR_T = 386 * var_chaste_interface__Ca_concentrations_in_SR__Caup - 386 * var_Ca_concentrations_in_SR__Carel; // picoA + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total = 3.2387883511406234e-5 * var_SR_T_current__i_SR_T - 3.2387883511406234e-5 * var_RyR_channel__i_RyR; // millimolar / millisecond + + return d_dt_chaste_interface_var_Ca_concentrations_in_SR__Ca_Total; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative31(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + + const double var_x277 = sqrt(pow((10.800000000000001 - var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 3.2000000000000002 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total); + const double var_x279 = (-9.1999999999999993 + var_chaste_interface__Ca_concentrations_in_SR__Ca_Total) / var_x277; + const double var_x280 = 0.5 + 0.5 * var_x279; + const double var_x281 = mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; + const double var_x468 = 3.2387883511406234e-5 * var_x281; + + partialF = -0.0062508615177014034 - 0.0062508615177014034 * var_x279 - var_x280 * var_x468; + } + else + { + const double y_save = rY[31]; + rY[31] += delta; + const double temp = EvaluateYDerivative31(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[31])/delta; + rY[31] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative32(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + // Mathematics + const double var_Ca_concentrations_in_SR__Carel = -5.4000000000000004 + 0.5 * sqrt(pow((10.800000000000001 - var_chaste_interface__Ca_concentrations_in_SR__Ca_Total), 2) + 3.2000000000000002 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total) + 0.5 * var_chaste_interface__Ca_concentrations_in_SR__Ca_Total; // millimolar + const double var_SR_T_current__i_SR_T = 386 * var_chaste_interface__Ca_concentrations_in_SR__Caup - 386 * var_Ca_concentrations_in_SR__Carel; // picoA + const double var_SR_calcium_pump__k2 = 1 / (1 + 0.10000000000000001 / var_chaste_interface__ATP_production__ATPi); // per_millisecond + const double var_SR_calcium_pump__p_E1Ca = 1 / (1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup); // dimensionless + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_SR_L_current__i_SR_L = (-var_internal_ion_concentrations__Cai + var_chaste_interface__Ca_concentrations_in_SR__Caup) * mParameters[0]; // picoA + const double var_SR_calcium_pump__p_E2Ca = 1 / (1 + 0.00080000000000000004 / var_internal_ion_concentrations__Cai); // dimensionless + const double var_SR_calcium_pump__i_SR_U = 1 * (0.01 * var_SR_calcium_pump__p_E1Ca * var_chaste_interface__SR_calcium_pump_y_gate__y - (1 - var_chaste_interface__SR_calcium_pump_y_gate__y) * var_SR_calcium_pump__k2 * var_SR_calcium_pump__p_E2Ca) * mParameters[3]; // picoA + const double d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup = -1.2955153404562494e-5 * var_SR_L_current__i_SR_L - 1.2955153404562494e-5 * var_SR_T_current__i_SR_T - 1.2955153404562494e-5 * var_SR_calcium_pump__i_SR_U; // millimolar / millisecond + + return d_dt_chaste_interface_var_Ca_concentrations_in_SR__Caup; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative32(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__SR_calcium_pump_y_gate__y = rY[28]; + // Units: dimensionless; Initial value: 0.46108441538480216 + double var_chaste_interface__Ca_concentrations_in_SR__Caup = rY[32]; + // Units: millimolar; Initial value: 2.611712901567567 + + + + const double var_x273 = 1 + 0.080000000000000002 / var_chaste_interface__Ca_concentrations_in_SR__Caup; + const double var_x282 = var_chaste_interface__SR_calcium_pump_y_gate__y / (pow(var_x273, 2) * pow(var_chaste_interface__Ca_concentrations_in_SR__Caup, 2)); + const double var_x283 = var_x282 * mParameters[3]; + const double var_x469 = 1.2955153404562494e-5 * mParameters[0]; + + partialF = -0.0050006892141611229 - var_x469 - 1.0364122723649996e-8 * var_x283; + } + else + { + const double y_save = rY[32]; + rY[32] += delta; + const double temp = EvaluateYDerivative32(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[32])/delta; + rY[32] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative33(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + + + + // Mathematics + const double var_NL_model__Q_a = -0.0038999999999999998 * var_chaste_interface__NL_model__pCaCB + 0.0038999999999999998 * var_chaste_interface__NL_model__pCa * exp(-0.86212130841993795); // per_millisecond + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_b = -0.029999999999999999 * var_chaste_interface__NL_model__pCa + 39 * (1 - var_chaste_interface__NL_model__pCB - var_chaste_interface__NL_model__pCa - var_chaste_interface__NL_model__pCaCB) * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCa = -var_NL_model__Q_a + var_NL_model__Q_b; // 1 / millisecond + + return d_dt_chaste_interface_var_NL_model__pCa; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative33(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + + + + const double var_x6 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x470 = 0.0038999999999999998 * exp(-0.86212130841993795); + const double var_x471 = 19.5 * var_x6 + 19.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + + partialF = 0.99141000000000001 - var_x470 - var_x471; + } + else + { + const double y_save = rY[33]; + rY[33] += delta; + const double temp = EvaluateYDerivative33(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[33])/delta; + rY[33] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative34(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__NL_model__pCa = rY[33]; + // Units: dimensionless; Initial value: 0.02490898775497523 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + // Mathematics + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_NL_model__Q_a = -0.0038999999999999998 * var_chaste_interface__NL_model__pCaCB + 0.0038999999999999998 * var_chaste_interface__NL_model__pCa * exp(-0.86212130841993795); // per_millisecond + const double var_NL_model__Q_d2 = 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCaCB; // per_millisecond + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCaCB = -var_NL_model__Q_d2 - var_NL_model__Q_r + var_NL_model__Q_a; // 1 / millisecond + + return d_dt_chaste_interface_var_NL_model__pCaCB; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative34(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + const double var_x285 = pow((1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X), 2); + const double var_x473 = 0.027 * var_x285; + + partialF = -0.0339 - var_x473; + } + else + { + const double y_save = rY[34]; + rY[34] += delta; + const double temp = EvaluateYDerivative34(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[34])/delta; + rY[34] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative35(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__NL_model__pCaCB = rY[34]; + // Units: dimensionless; Initial value: 0.001990153835322864 + double var_chaste_interface__NL_model__pCB = rY[35]; + // Units: dimensionless; Initial value: 0.00042941813853474524 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + // Mathematics + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + const double var_internal_ion_concentrations__Cai = -0.026190000000000001 + 0.5 * sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total) + 0.5 * var_chaste_interface__internal_ion_concentrations__Ca_Total; // millimolar + const double var_NL_model__Q_r = 0.029999999999999999 * var_chaste_interface__NL_model__pCaCB - 1560 * var_chaste_interface__NL_model__pCB * var_internal_ion_concentrations__Cai; // per_millisecond + const double d_dt_chaste_interface_var_NL_model__pCB = -0.12 * var_chaste_interface__NL_model__pCB - 0.027 * pow(d_dt_chaste_interface_var_NL_model__X, 2) * var_chaste_interface__NL_model__pCB + var_NL_model__Q_r; // 1 / millisecond + + return d_dt_chaste_interface_var_NL_model__pCB; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative35(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + const double var_x6 = sqrt(pow((0.052380000000000003 - var_chaste_interface__internal_ion_concentrations__Ca_Total), 2) + 0.0095200000000000007 * var_chaste_interface__internal_ion_concentrations__Ca_Total); + const double var_x285 = pow((1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X), 2); + const double var_x473 = 0.027 * var_x285; + const double var_x474 = 780 * var_x6 + 780 * var_chaste_interface__internal_ion_concentrations__Ca_Total; + + partialF = 40.736400000000003 - var_x473 - var_x474; + } + else + { + const double y_save = rY[35]; + rY[35] += delta; + const double temp = EvaluateYDerivative35(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[35])/delta; + rY[35] = y_save; + } + return partialF; + } + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluateYDerivative36(double var_chaste_interface__environment__time, std::vector& rY) + { + + double var_chaste_interface__NL_model__X = rY[36]; + // Units: micrometre; Initial value: 0.9573749975411884 + + + + // Mathematics + const double d_dt_chaste_interface_var_NL_model__X = 1.1488559970494261 - 1.2 * var_chaste_interface__NL_model__X; // micrometre / millisecond + + return d_dt_chaste_interface_var_NL_model__X; + } + + double Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::EvaluatePartialDerivative36(double var_chaste_interface__environment__time, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + + partialF = -1.2; + } + else + { + const double y_save = rY[36]; + rY[36] += delta; + const double temp = EvaluateYDerivative36(var_chaste_interface__environment__time, rY); + partialF = (temp-mEvalF[36])/delta; + rY[36] = y_save; + } + return partialF; + } + + std::vector Dynamicmatsuoka_model_2003FromCellMLGRL1Opt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__Vm = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -85.95752434460744 + double var_chaste_interface__internal_ion_concentrations__Nai = rY[1]; + // Units: millimolar; Initial value: 4.925761439682025 + double var_chaste_interface__internal_ion_concentrations__Ki = rY[2]; + // Units: millimolar; Initial value: 143.1837333000449 + double var_chaste_interface__internal_ion_concentrations__Ca_Total = rY[3]; + // Units: millimolar; Initial value: 0.00040180173572968586 + double var_chaste_interface__ATP_production__ATPi = rY[4]; + // Units: millimolar; Initial value: 4.657102729020499 + double var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na = rY[5]; + // Units: dimensionless; Initial value: 1.779648367445368e-05 + double var_chaste_interface__sodium_current_ultra_slow_gate__y = rY[8]; + // Units: dimensionless; Initial value: 0.5861887862983165 + double var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL = rY[9]; + // Units: dimensionless; Initial value: 1.5445004166497696e-06 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U = rY[12]; + // Units: dimensionless; Initial value: 0.17246483915629204 + double var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa = rY[13]; + // Units: dimensionless; Initial value: 6.098246017787626e-05 + double var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y = rY[15]; + // Units: dimensionless; Initial value: 0.9985266538252986 + double var_chaste_interface__time_independent_potassium_current_y_gate__y = rY[18]; + // Units: dimensionless; Initial value: 0.6080573900752752 + double var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1 = rY[19]; + // Units: dimensionless; Initial value: 0.0018339931180983765 + double var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 = rY[20]; + // Units: dimensionless; Initial value: 0.20443083454225305 + double var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3 = rY[21]; + // Units: dimensionless; Initial value: 0.967887666264921 + double var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1 = rY[22]; + // Units: dimensionless; Initial value: 0.09738789658609195 + double var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2 = rY[23]; + // Units: dimensionless; Initial value: 0.09745345578743213 + double var_chaste_interface__transient_outward_current_y1_gate__y1 = rY[24]; + // Units: dimensionless; Initial value: 0.0007956883250874798 + double var_chaste_interface__transient_outward_current_y2_gate__y2 = rY[25]; + // Units: dimensionless; Initial value: 0.9999125083105881 + double var_chaste_interface__sodium_calcium_exchanger_y_gate__y = rY[26]; + // Units: dimensionless; Initial value: 0.9891789193465331 + double var_chaste_interface__RyR_channel__p_open_RyR = rY[29]; + // Units: dimensionless; Initial value: 0.00034314360001543243 + double var_chaste_interface__Ca_concentrations_in_SR__Ca_Total = rY[31]; + // Units: millimolar; Initial value: 9.455741736977666 + + + // Mathematics + const double var_Ca_concentrations_in_SR__CSQN_max = 10; // millimolar + const double var_Ca_concentrations_in_SR__K_mCSQN = 0.80000000000000004; // millimolar + const double var_Ca_concentrations_in_SR__b1 = -var_chaste_interface__Ca_concentrations_in_SR__Ca_Total + var_Ca_concentrations_in_SR__CSQN_max + var_Ca_concentrations_in_SR__K_mCSQN; // millimolar + const double var_Ca_concentrations_in_SR__c1 = var_chaste_interface__Ca_concentrations_in_SR__Ca_Total * var_Ca_concentrations_in_SR__K_mCSQN; // millimolar2 + const double var_Ca_concentrations_in_SR__Carel = 0.5 * sqrt(pow(var_Ca_concentrations_in_SR__b1, 2) + 4 * var_Ca_concentrations_in_SR__c1) - 0.5 * var_Ca_concentrations_in_SR__b1; // millimolar + const double var_L_type_Ca_channel__p_open_CaL = (var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_U + var_chaste_interface__L_type_Ca_channel_Ca_dependent_gate__p_UCa) * var_chaste_interface__L_type_Ca_channel_ultra_slow_gate__y * var_chaste_interface__L_type_Ca_channel_voltage_dependent_gate__p_AP_CaL / (1 + 2.7439999999999993 / pow(var_chaste_interface__ATP_production__ATPi, 3)); // dimensionless + const double var_internal_ion_concentrations__CMDN_max = 0.050000000000000003; // millimolar + const double var_internal_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_internal_ion_concentrations__b1 = -var_chaste_interface__internal_ion_concentrations__Ca_Total + var_internal_ion_concentrations__CMDN_max + var_internal_ion_concentrations__K_mCMDN; // millimolar + const double var_internal_ion_concentrations__c1 = var_chaste_interface__internal_ion_concentrations__Ca_Total * var_internal_ion_concentrations__K_mCMDN; // millimolar2 + const double var_internal_ion_concentrations__Cai = 0.5 * sqrt(pow(var_internal_ion_concentrations__b1, 2) + 4 * var_internal_ion_concentrations__c1) - 0.5 * var_internal_ion_concentrations__b1; // millimolar + const double var_RyR_channel__i_RyR = (-var_internal_ion_concentrations__Cai + var_Ca_concentrations_in_SR__Carel) * mParameters[1] * var_chaste_interface__RyR_channel__p_open_RyR; // picoA + const double var_membrane__Cm_converted = 9.9999999999999995e-7 * mParameters[9]; // uF + const double var_membrane__F = 96.486699999999999; // coulomb_per_millimole + const double var_membrane__R = 8.3142999999999994; // coulomb_millivolt_per_kelvin_millimole + const double var_membrane__T = 310; // kelvin + const double var_constant_field_equations__CF_Ca = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[5]) : (2 * (-mParameters[5] * exp(-2 * var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)) + var_internal_ion_concentrations__Cai) * var_membrane__F * var_chaste_interface__membrane__Vm / ((1 - exp(-2 * var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Ca = mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Ca; // picoA + const double var_constant_field_equations__CF_K = ((var_chaste_interface__membrane__Vm == 0) ? (var_chaste_interface__internal_ion_concentrations__Ki) : ((-mParameters[6] * exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)) + var_chaste_interface__internal_ion_concentrations__Ki) * var_membrane__F * var_chaste_interface__membrane__Vm / ((1 - exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T))); // millimolar + const double var_L_type_Ca_channel__i_CaL_K = 0.00036499999999999998 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_K; // picoA + const double var_constant_field_equations__CF_Na = ((var_chaste_interface__membrane__Vm == 0) ? (-mParameters[7]) : ((-mParameters[7] * exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)) + var_chaste_interface__internal_ion_concentrations__Nai) * var_membrane__F * var_chaste_interface__membrane__Vm / ((1 - exp(-var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T))); // millimolar + const double var_L_type_Ca_channel__i_CaL_Na = 1.8499999999999999e-5 * mParameters[8] * var_L_type_Ca_channel__p_open_CaL * var_constant_field_equations__CF_Na; // picoA + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaL_Ca + var_L_type_Ca_channel__i_CaL_K + var_L_type_Ca_channel__i_CaL_Na; // picoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / var_membrane__Cm_converted; // uA_per_cm2 + const double var_membrane__i_ext_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_rapid_time_dependent_potassium_current__g_Kr = 0.71370912277944121 * pow(mParameters[6], 0.20000000000000001) * mParameters[9] * mParameters[12]; // nanoS + const double var_slow_time_dependent_potassium_current__P_Ks_Na = 0.2016; // picoA_per_millimolar + const double var_slow_time_dependent_potassium_current__i_Ks_K = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_K * mParameters[13]; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_Na = pow(var_chaste_interface__slow_time_dependent_potassium_current_y1_gate__y1, 2) * (0.10000000000000001 + 0.90000000000000002 * var_chaste_interface__slow_time_dependent_potassium_current_y2_gate__y2) * var_constant_field_equations__CF_Na * var_slow_time_dependent_potassium_current__P_Ks_Na; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks = var_slow_time_dependent_potassium_current__i_Ks_K + var_slow_time_dependent_potassium_current__i_Ks_Na; // picoA + const double var_slow_time_dependent_potassium_current__i_Ks_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_slow_time_dependent_potassium_current__i_Ks / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_calcium_exchanger__Km_Cai = 0.0013799999999999999; // millimolar + const double var_sodium_calcium_exchanger__Km_Cao = 1.3799999999999999; // millimolar + const double var_sodium_calcium_exchanger__Km_Nai = 8.75; // millimolar + const double var_sodium_calcium_exchanger__Km_Nao = 87.5; // millimolar + const double var_sodium_calcium_exchanger__Partition = 0.32000000000000001; // dimensionless + const double var_sodium_calcium_exchanger__k1 = 1 * exp(var_membrane__F * var_chaste_interface__membrane__Vm * var_sodium_calcium_exchanger__Partition / (var_membrane__R * var_membrane__T)); // per_millisecond + const double var_sodium_calcium_exchanger__k2 = 1 * exp((-1 + var_sodium_calcium_exchanger__Partition) * var_membrane__F * var_chaste_interface__membrane__Vm / (var_membrane__R * var_membrane__T)); // per_millisecond + const double var_sodium_calcium_exchanger__p_E1Na = 1 / (1 + pow(var_sodium_calcium_exchanger__Km_Nai, 3) * (1 + var_internal_ion_concentrations__Cai / var_sodium_calcium_exchanger__Km_Cai) / pow(var_chaste_interface__internal_ion_concentrations__Nai, 3)); // dimensionless + const double var_sodium_calcium_exchanger__p_E2Na = 1 / (1 + pow(var_sodium_calcium_exchanger__Km_Nao, 3) * (1 + mParameters[5] / var_sodium_calcium_exchanger__Km_Cao) / pow(mParameters[7], 3)); // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa = 1 * (var_sodium_calcium_exchanger__k1 * var_sodium_calcium_exchanger__p_E1Na * var_chaste_interface__sodium_calcium_exchanger_y_gate__y - (1 - var_chaste_interface__sodium_calcium_exchanger_y_gate__y) * var_sodium_calcium_exchanger__k2 * var_sodium_calcium_exchanger__p_E2Na) * mParameters[9] * mParameters[14]; // picoA + const double var_sodium_calcium_exchanger__i_NaCa_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchanger__i_NaCa / var_membrane__Cm_converted; // uA_per_cm2 + const double var_sodium_current__i_Na_K = 0.10000000000000001 * var_constant_field_equations__CF_K * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na_Na = var_constant_field_equations__CF_Na * mParameters[10] * var_chaste_interface__sodium_current_ultra_slow_gate__y * var_chaste_interface__sodium_current_voltage_dependent_gate__p_AP_Na; // picoA + const double var_sodium_current__i_Na = var_sodium_current__i_Na_K + var_sodium_current__i_Na_Na; // picoA + const double var_sodium_current__i_Na_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_sodium_current__i_Na / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__internal_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_rapid_time_dependent_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (0.40000000000000002 * var_chaste_interface__rapid_time_dependent_potassium_current_y2_gate__y2 + 0.59999999999999998 * var_chaste_interface__rapid_time_dependent_potassium_current_y1_gate__y1) * var_rapid_time_dependent_potassium_current__g_Kr * var_chaste_interface__rapid_time_dependent_potassium_current_y3_gate__y3; // picoA + const double var_rapid_time_dependent_potassium_current__i_Kr_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_rapid_time_dependent_potassium_current__i_Kr / var_membrane__Cm_converted; // uA_per_cm2 + const double var_time_independent_potassium_current__g_K1 = 0.50938071193859957 * pow(mParameters[6], 0.40000000000000002) * mParameters[9] * mParameters[11]; // nanoS + const double var_time_independent_potassium_current__lambda = 3 * (1 + exp(-2.4319999999999999 + 0.064000000000000001 * var_chaste_interface__membrane__Vm - 0.064000000000000001 * var_time_independent_potassium_current__E_K)) * exp(0.47999999999999998 + 0.048000000000000001 * var_time_independent_potassium_current__E_K - 0.048000000000000001 * var_chaste_interface__membrane__Vm) / (1 + exp(-2.1000000000000001 + 0.029999999999999999 * var_chaste_interface__membrane__Vm - 0.029999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__mu = 0.75 * exp(-0.35000000000000003 + 0.035000000000000003 * var_chaste_interface__membrane__Vm - 0.035000000000000003 * var_time_independent_potassium_current__E_K) / (1 + exp(-2.1000000000000001 + 0.014999999999999999 * var_chaste_interface__membrane__Vm - 0.014999999999999999 * var_time_independent_potassium_current__E_K)); // per_millisecond + const double var_time_independent_potassium_current__fB = var_time_independent_potassium_current__mu / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO = var_time_independent_potassium_current__lambda / (var_time_independent_potassium_current__lambda + var_time_independent_potassium_current__mu); // dimensionless + const double var_time_independent_potassium_current__fO2 = 2 * pow(var_time_independent_potassium_current__fB, 2) * pow(var_time_independent_potassium_current__fO, 2); // dimensionless + const double var_time_independent_potassium_current__fO3 = 2.6666666666666665 * pow(var_time_independent_potassium_current__fO, 3) * var_time_independent_potassium_current__fB; // dimensionless + const double var_time_independent_potassium_current__fO4 = pow(var_time_independent_potassium_current__fO, 4); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__Vm) * (var_time_independent_potassium_current__fO2 + var_time_independent_potassium_current__fO3 + var_time_independent_potassium_current__fO4) * var_time_independent_potassium_current__g_K1 * var_chaste_interface__time_independent_potassium_current_y_gate__y; // picoA + const double var_time_independent_potassium_current__i_K1_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / var_membrane__Cm_converted; // uA_per_cm2 + const double var_transient_outward_current__P_to_Na = 0.00297; // picoA_per_millimolar + const double var_transient_outward_current__i_to_K = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_K * mParameters[15] * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double var_transient_outward_current__i_to_Na = pow(var_chaste_interface__transient_outward_current_y1_gate__y1, 3) * var_constant_field_equations__CF_Na * var_transient_outward_current__P_to_Na * var_chaste_interface__transient_outward_current_y2_gate__y2; // picoA + const double var_transient_outward_current__i_to = var_transient_outward_current__i_to_K + var_transient_outward_current__i_to_Na; // picoA + const double var_transient_outward_current__i_to_converted = 9.9999999999999995e-7 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to / var_membrane__Cm_converted; // uA_per_cm2 + + std::vector dqs(13); + dqs[0] = var_Ca_concentrations_in_SR__Carel; + dqs[1] = var_RyR_channel__i_RyR; + dqs[2] = var_internal_ion_concentrations__Cai; + dqs[3] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[4] = var_membrane__Cm_converted; + dqs[5] = var_sodium_current__i_Na_converted; + dqs[6] = var_time_independent_potassium_current__i_K1_converted; + dqs[7] = var_rapid_time_dependent_potassium_current__i_Kr_converted; + dqs[8] = var_slow_time_dependent_potassium_current__i_Ks_converted; + dqs[9] = var_sodium_calcium_exchanger__i_NaCa_converted; + dqs[10] = var_membrane__i_ext_converted; + dqs[11] = var_transient_outward_current__i_to_converted; + dqs[12] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "matsuoka_model_2003"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-85.95752434460744); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(4.925761439682025); + + // rY[2]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(143.1837333000449); + + // rY[3]: + this->mVariableNames.push_back("internal_ion_concentrations__Ca_Total"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00040180173572968586); + + // rY[4]: + this->mVariableNames.push_back("ATP_production__ATPi"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(4.657102729020499); + + // rY[5]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.779648367445368e-05); + + // rY[6]: + this->mVariableNames.push_back("sodium_current_voltage_dependent_gate__p_RP_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.3556412697995689); + + // rY[7]: + this->mVariableNames.push_back("sodium_current_voltage_dependent_gate__p_AI_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.40285968661346977); + + // rY[8]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.5861887862983165); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.5445004166497696e-06); + + // rY[10]: + this->mVariableNames.push_back("L_type_Ca_channel_voltage_dependent_gate__p_RP_CaL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9968480629364956); + + // rY[11]: + this->mVariableNames.push_back("L_type_Ca_channel_voltage_dependent_gate__p_AI_CaL"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000877325391245903); + + // rY[12]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.17246483915629204); + + // rY[13]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.098246017787626e-05); + + // rY[14]: + this->mVariableNames.push_back("L_type_Ca_channel_Ca_dependent_gate__p_C"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.4250747299372254); + + // rY[15]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9985266538252986); + + // rY[16]: + this->mVariableNames.push_back("T_type_Ca_channel_y1_gate__y1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.6882718240109127e-05); + + // rY[17]: + this->mVariableNames.push_back("T_type_Ca_channel_y2_gate__y2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8585352091865849); + + // rY[18]: + this->mVariableNames.push_back("time_independent_potassium_current_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.6080573900752752); + + // rY[19]: + this->mVariableNames.push_back("rapid_time_dependent_potassium_current_y1_gate__y1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0018339931180983765); + + // rY[20]: + this->mVariableNames.push_back("rapid_time_dependent_potassium_current_y2_gate__y2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.20443083454225305); + + // rY[21]: + this->mVariableNames.push_back("rapid_time_dependent_potassium_current_y3_gate__y3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.967887666264921); + + // rY[22]: + this->mVariableNames.push_back("slow_time_dependent_potassium_current_y1_gate__y1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09738789658609195); + + // rY[23]: + this->mVariableNames.push_back("slow_time_dependent_potassium_current_y2_gate__y2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09745345578743213); + + // rY[24]: + this->mVariableNames.push_back("transient_outward_current_y1_gate__y1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0007956883250874798); + + // rY[25]: + this->mVariableNames.push_back("transient_outward_current_y2_gate__y2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9999125083105881); + + // rY[26]: + this->mVariableNames.push_back("sodium_calcium_exchanger_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9891789193465331); + + // rY[27]: + this->mVariableNames.push_back("sodium_potassium_pump_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.5910747147428818); + + // rY[28]: + this->mVariableNames.push_back("SR_calcium_pump_y_gate__y"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.46108441538480216); + + // rY[29]: + this->mVariableNames.push_back("RyR_channel__p_open_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00034314360001543243); + + // rY[30]: + this->mVariableNames.push_back("RyR_channel__p_close_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.19135178123107768); + + // rY[31]: + this->mVariableNames.push_back("Ca_concentrations_in_SR__Ca_Total"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.455741736977666); + + // rY[32]: + this->mVariableNames.push_back("Ca_concentrations_in_SR__Caup"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.611712901567567); + + // rY[33]: + this->mVariableNames.push_back("NL_model__pCa"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.02490898775497523); + + // rY[34]: + this->mVariableNames.push_back("NL_model__pCaCB"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001990153835322864); + + // rY[35]: + this->mVariableNames.push_back("NL_model__pCB"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00042941813853474524); + + // rY[36]: + this->mVariableNames.push_back("NL_model__X"); + this->mVariableUnits.push_back("micrometre"); + this->mInitialConditions.push_back(0.9573749975411884); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_release_kmcacyt"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("picoA"); + + // mParameters[4]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane__Cm"); + this->mParameterUnits.push_back("picoF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("nanoS_per_picoF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("picoA_per_millimolar"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("JSR_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("picoA"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_capacitance"); + this->mDerivedQuantityUnits.push_back("uF"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicmatsuoka_model_2003FromCellMLGRL1Opt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicmatsuoka_model_2003FromCellMLGRL1Opt(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999--sympy_1_11.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999--sympy_1_11.cpp new file mode 100644 index 00000000..62b42662 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999--sympy_1_11.cpp @@ -0,0 +1,3431 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: winslow_model_1999 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenSecondOrder) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_winslow_model_1999.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Dynamicwinslow_model_1999FromCellMLGRL2::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -21.126799999999999 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = 2; // millisecond + const double var_chaste_interface__membrane__stim_period_converted = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start_converted = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration_converted, + var_chaste_interface__membrane__stim_period_converted, + var_chaste_interface__membrane__stim_start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamicwinslow_model_1999FromCellMLGRL2::Dynamicwinslow_model_1999FromCellMLGRL2(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 33, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1800; // (var_RyR_channel__v1) [per_second] + this->mParameters[1] = 1; // (var_SERCA2a_pump__K_SR) [dimensionless] + this->mParameters[2] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[3] = 2; // (var_standard_ionic_concentrations__Cao) [millimolar] + this->mParameters[4] = 4; // (var_standard_ionic_concentrations__Ko) [millimolar] + this->mParameters[5] = 138; // (var_standard_ionic_concentrations__Nao) [millimolar] + this->mParameters[6] = 0.00031250000000000001; // (var_L_type_Ca_current__P_Ca) [cm_per_second] + this->mParameters[7] = 0.001; // (var_membrane__C_sc) [microF_per_cm2] + this->mParameters[8] = 12.800000000000001; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[9] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[10] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[11] = 2.7999999999999998; // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = 0.0033999999999999998; // (var_rapid_activating_delayed_rectifiyer_K_current__g_Kr) [milliS_per_microF] + this->mParameters[13] = 0.0027133999999999999; // (var_slow_activating_delayed_rectifiyer_K_current__g_Ks) [milliS_per_microF] + this->mParameters[14] = 0.29999999999999999; // (var_Na_Ca_exchanger__K_NaCa) [microA_per_microF] + this->mParameters[15] = 0.23815; // (var_transient_outward_potassium_current__g_to1) [milliS_per_microF] + } + + Dynamicwinslow_model_1999FromCellMLGRL2::~Dynamicwinslow_model_1999FromCellMLGRL2() + { + } + + + void Dynamicwinslow_model_1999FromCellMLGRL2::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 33; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca; // uA_per_cm2 + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_K = pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[4] + 0.018329999999999999 * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_activating_delayed_rectifiyer_K_current__i_Ks; // uA_per_cm2 + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_transient_outward_potassium_current__i_to1_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_potassium_current__i_to1; // uA_per_cm2 + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca_K + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Ca_b + HeartConfig::Instance()->GetCapacitance() * var_plateau_potassium_current__i_Kp + HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump__i_p_Ca + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Na_b + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_current__i_Ca_converted + var_Na_Ca_exchanger__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted + var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_potassium_current__i_to1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicwinslow_model_1999FromCellMLGRL2::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + const double yinit = rY[v_index]; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_K = pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[4] + 0.018329999999999999 * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_membrane__V_orig_deriv = -(var_L_type_Ca_current__i_Ca + var_L_type_Ca_current__i_Ca_K + var_Na_Ca_exchanger__i_NaCa + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_membrane__i_Stim + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) / mParameters[7]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + double evalF = d_dt_chaste_interface_var_membrane__V; + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += 0.5*evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*0.5*mDt)-1.0); + } + + rY[v_index] = yinit; + evalF = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + mEvalF[0] = evalF; + partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] = yinit + evalF*mDt; + } + else + { + rY[v_index] = yinit + (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Dynamicwinslow_model_1999FromCellMLGRL2::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const double delta=1e-8; + const unsigned size = GetNumberOfStateVariables(); + mYInit = rY; + double y_save; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; + // Units: dimensionless; Initial value: 0.997208 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; + // Units: dimensionless; Initial value: 0.00272826 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_C1 = rY[24]; + // Units: dimensionless; Initial value: 0.47 + double var_chaste_interface__RyR_channel__P_C2 = rY[25]; + // Units: dimensionless; Initial value: 0.53 + double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; + // Units: millimolar; Initial value: 0.98 + double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; + // Units: millimolar; Initial value: 0.078 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__f = 300; // per_second + const double var_L_type_Ca_current__fprime = 7; // per_second + const double var_L_type_Ca_current__g = 2000; // per_second + const double var_L_type_Ca_current__O_orig_deriv = var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__f - var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__O = 0.001 * var_L_type_Ca_current__O_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__gprime = 7000; // per_second + const double var_L_type_Ca_current__O_Ca_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__fprime - var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__O_Ca = 0.001 * var_L_type_Ca_current__O_Ca_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_RyR_channel__k_a_minus = 576; // per_second + const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second + const double var_RyR_channel__k_b_minus = 1930; // per_second + const double var_RyR_channel__k_b_plus = 4050000000.0; // millimolar3_per_second + const double var_RyR_channel__k_c_minus = 0.80000000000000004; // per_second + const double var_RyR_channel__k_c_plus = 100; // per_second + const double var_RyR_channel__P_C2_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus - var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_C2 = 0.001 * var_RyR_channel__P_C2_orig_deriv; // 1 / millisecond + const double var_RyR_channel__m = 3; // dimensionless + const double var_RyR_channel__n = 4; // dimensionless + const double var_SERCA2a_pump__K_fb = 0.00016799999999999999; // millimolar + const double var_SERCA2a_pump__K_rb = 3.29; // millimolar + const double var_SERCA2a_pump__N_fb = 1.2; // dimensionless + const double var_SERCA2a_pump__N_rb = 1; // dimensionless + const double var_SERCA2a_pump__Vmaxf = 0.081299999999999997; // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = 0.318; // millimolar_per_second + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_intracellular_Ca_fluxes__HTRPN_tot = 0.14000000000000001; // dimensionless + const double var_intracellular_Ca_fluxes__LTRPN_tot = 0.070000000000000007; // dimensionless + const double var_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second + const double var_intracellular_Ca_fluxes__k_htrpn_plus = 20000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40; // per_second + const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second + const double var_intracellular_Ca_fluxes__tau_xfer = 0.026700000000000002; // second + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = 0.050000000000000003; // millimolar + const double var_intracellular_ion_concentrations__CSQN_tot = 15; // millimolar + const double var_SERCA2a_pump__rb = pow((var_chaste_interface__intracellular_ion_concentrations__Ca_NSR / var_SERCA2a_pump__K_rb), var_SERCA2a_pump__N_rb); // dimensionless + const double var_intracellular_Ca_fluxes__J_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_chaste_interface__intracellular_ion_concentrations__Ca_NSR) / var_intracellular_Ca_fluxes__tau_tr; // millimolar_per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second + const double var_RyR_channel__P_C1_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_C1 = 0.001 * var_RyR_channel__P_C1_orig_deriv; // 1 / millisecond + const double var_RyR_channel__P_O1_orig_deriv = var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus + var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_O1 = 0.001 * var_RyR_channel__P_O1_orig_deriv; // 1 / millisecond + const double var_RyR_channel__P_O2_orig_deriv = -var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_O2 = 0.001 * var_RyR_channel__P_O2_orig_deriv; // 1 / millisecond + const double var_SERCA2a_pump__fb = pow((var_chaste_interface__intracellular_ion_concentrations__Cai / var_SERCA2a_pump__K_fb), var_SERCA2a_pump__N_fb); // dimensionless + const double var_SERCA2a_pump__J_up = (var_SERCA2a_pump__Vmaxf * var_SERCA2a_pump__fb - var_SERCA2a_pump__Vmaxr * var_SERCA2a_pump__rb) * mParameters[1] / (1 + var_SERCA2a_pump__fb + var_SERCA2a_pump__rb); // millimolar_per_second + const double var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa * var_intracellular_Ca_fluxes__k_htrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) * var_intracellular_Ca_fluxes__k_htrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa = 0.001 * var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar / millisecond + const double var_intracellular_Ca_fluxes__J_HTRPNCa = var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_xfer = (-var_chaste_interface__intracellular_ion_concentrations__Cai + var_chaste_interface__intracellular_ion_concentrations__Ca_ss) / var_intracellular_Ca_fluxes__tau_xfer; // millimolar_per_second + const double var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa * var_intracellular_Ca_fluxes__k_ltrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) * var_intracellular_Ca_fluxes__k_ltrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa = 0.001 * var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar / millisecond + const double var_intracellular_Ca_fluxes__J_LTRPNCa = var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_trpn = var_intracellular_Ca_fluxes__HTRPN_tot * var_intracellular_Ca_fluxes__J_HTRPNCa + var_intracellular_Ca_fluxes__J_LTRPNCa * var_intracellular_Ca_fluxes__LTRPN_tot; // millimolar_per_second + const double var_intracellular_ion_concentrations__EGTA_tot = 0; // millimolar + const double var_intracellular_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_intracellular_ion_concentrations__K_mCSQN = 0.80000000000000004; // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = 0.00014999999999999999; // millimolar + const double var_intracellular_ion_concentrations__V_JSR = 1.6e-7; // micro_litre + const double var_intracellular_ion_concentrations__V_NSR = 2.0999999999999998e-6; // micro_litre + const double var_intracellular_ion_concentrations__V_SS = 1.2e-9; // micro_litre + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_intracellular_ion_concentrations__Ca_NSR_orig_deriv = var_SERCA2a_pump__J_up * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_NSR - var_intracellular_Ca_fluxes__J_tr * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_NSR; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR = 0.001 * var_intracellular_ion_concentrations__Ca_NSR_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__beta_JSR = 1 / (1 + var_intracellular_ion_concentrations__CSQN_tot * var_intracellular_ion_concentrations__K_mCSQN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_intracellular_ion_concentrations__K_mCSQN), 2)); // dimensionless + const double var_intracellular_ion_concentrations__Ca_JSR_orig_deriv = (-var_RyR_channel__J_rel + var_intracellular_Ca_fluxes__J_tr) * var_intracellular_ion_concentrations__beta_JSR; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR = 0.001 * var_intracellular_ion_concentrations__Ca_JSR_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__beta_SS = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_intracellular_ion_concentrations__beta_i = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C0_orig_deriv = var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__omega - (4 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C0; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C0 = 0.001 * var_L_type_Ca_current__C0_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C1_orig_deriv = -(3 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__a * var_L_type_Ca_current__gamma + var_L_type_Ca_current__beta) * var_chaste_interface__L_type_Ca_current__C1 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__beta + 4 * var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__omega / var_L_type_Ca_current__b; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C1 = 0.001 * var_L_type_Ca_current__C1_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C2_orig_deriv = -(2 * var_L_type_Ca_current__alpha + 2 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 2) * var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C2 + 3 * var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__alpha + 3 * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C2 = 0.001 * var_L_type_Ca_current__C2_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C3_orig_deriv = -(3 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 3) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__alpha) * var_chaste_interface__L_type_Ca_current__C3 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__alpha + 4 * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C3 = 0.001 * var_L_type_Ca_current__C3_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C4_orig_deriv = var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g - (4 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 4) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__f) * var_chaste_interface__L_type_Ca_current__C4 + var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C4 = 0.001 * var_L_type_Ca_current__C4_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca0_orig_deriv = var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__gamma + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__beta_b - (4 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega) * var_chaste_interface__L_type_Ca_current__C_Ca0; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0 = 0.001 * var_L_type_Ca_current__C_Ca0_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C_Ca1_orig_deriv = -(3 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega / var_L_type_Ca_current__b + var_L_type_Ca_current__beta_b) * var_chaste_interface__L_type_Ca_current__C_Ca1 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__beta_b + 4 * var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__a * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1 = 0.001 * var_L_type_Ca_current__C_Ca1_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C_Ca2_orig_deriv = -(2 * var_L_type_Ca_current__alpha_a + 2 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2)) * var_chaste_interface__L_type_Ca_current__C_Ca2 + 3 * var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__alpha_a + 3 * var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 2) * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2 = 0.001 * var_L_type_Ca_current__C_Ca2_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C_Ca3_orig_deriv = -(3 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3) + var_L_type_Ca_current__alpha_a) * var_chaste_interface__L_type_Ca_current__C_Ca3 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__alpha_a + 4 * var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 3) * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3 = 0.001 * var_L_type_Ca_current__C_Ca3_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C_Ca4_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime - (4 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4) + var_L_type_Ca_current__fprime) * var_chaste_interface__L_type_Ca_current__C_Ca4 + pow(var_L_type_Ca_current__a, 4) * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4 = 0.001 * var_L_type_Ca_current__C_Ca4_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current_y_gate__tau_y = 0.02 + 0.59999999999999998 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // second + const double var_L_type_Ca_current_y_gate__y_infinity = 0.20000000000000001 + 0.80000000000000004 / (1 + exp(2.5 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current_y_gate__y_orig_deriv = (-var_chaste_interface__L_type_Ca_current_y_gate__y + var_L_type_Ca_current_y_gate__y_infinity) / var_L_type_Ca_current_y_gate__tau_y; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y = 0.001 * var_L_type_Ca_current_y_gate__y_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_second + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (3560 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10])) : (7692.3076923076924 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // dimensionless + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_fast_sodium_current_h_gate__h_orig_deriv = (-var_chaste_interface__fast_sodium_current_h_gate__h + var_fast_sodium_current_h_gate__h_inf) / var_fast_sodium_current_h_gate__tau_h; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * var_fast_sodium_current_h_gate__h_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (121.2 * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300 * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[10] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // dimensionless + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // second + const double var_fast_sodium_current_j_gate__j_orig_deriv = (-var_chaste_interface__fast_sodium_current_j_gate__j + var_fast_sodium_current_j_gate__j_inf) / var_fast_sodium_current_j_gate__tau_j; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * var_fast_sodium_current_j_gate__j_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_m_gate__E0_m = 47.130000000000003 + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((fabs(var_fast_sodium_current_m_gate__E0_m) < 1.0000000000000001e-5) ? (1000 / (0.10000000000000001 - 0.0050000000000000001 * var_fast_sodium_current_m_gate__E0_m)) : (320 * var_fast_sodium_current_m_gate__E0_m / (1 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 80 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_m_gate__m_orig_deriv = ((var_chaste_interface__membrane__V >= -90) ? ((1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m) : (0)); // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf = var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor = 1; // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr = 0.001 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21) + 0.027 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor; // second + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv = (-var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf) / var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr; // 1 / second + const double d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = 0.001 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv; // 1 / millisecond + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity = 1 / (1 + exp(1.8161764705882353 - 0.073529411764705885 * var_chaste_interface__membrane__V)); // dimensionless + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = 0.001 / (0.00013100000000000001 * (-10 + var_chaste_interface__membrane__V) / (-1 + exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V)) + 7.1899999999999999e-5 * (-10 + var_chaste_interface__membrane__V) / (1 - exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V))); // second + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv = (-var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks + var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity) / var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks; // 1 / second + const double d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = 0.001 * var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv; // 1 / millisecond + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_intracellular_ion_concentrations__Ca_ss_orig_deriv = (var_RyR_channel__J_rel * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_SS - var_intracellular_Ca_fluxes__J_xfer * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_SS - 0.5 * var_L_type_Ca_current__i_Ca * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_SS * var_membrane__F)) * var_intracellular_ion_concentrations__beta_SS; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss = 0.001 * var_intracellular_ion_concentrations__Ca_ss_orig_deriv; // millimolar / millisecond + const double var_L_type_Ca_current__i_Ca_K = pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_intracellular_ion_concentrations__Cai_orig_deriv = (-var_SERCA2a_pump__J_up - var_intracellular_Ca_fluxes__J_trpn + 0.5 * (-var_calcium_background_current__i_Ca_b - var_sarcolemmal_calcium_pump__i_p_Ca + 2 * var_Na_Ca_exchanger__i_NaCa) * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_myo * var_membrane__F) + var_intracellular_Ca_fluxes__J_xfer) * var_intracellular_ion_concentrations__beta_i; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai = 0.001 * var_intracellular_ion_concentrations__Cai_orig_deriv; // millimolar / millisecond + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[4] + 0.018329999999999999 * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_intracellular_ion_concentrations__Nai_orig_deriv = -(3 * var_Na_Ca_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Na_b) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai = 0.001 * var_intracellular_ion_concentrations__Nai_orig_deriv; // millimolar / millisecond + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 = 45.159999999999997 * exp(0.035770000000000003 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__beta_X_to1 = 98.900000000000006 * exp(-0.062370000000000002 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1) * var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_transient_outward_potassium_current_X_to1_gate__beta_X_to1; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1 = 0.001 * var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv; // 1 / millisecond + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_intracellular_ion_concentrations__Ki_orig_deriv = -(-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_current__i_Ca_K + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki = 0.001 * var_intracellular_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond + const double var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 = 5.415 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1 = 5.415 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1) * var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 * var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1 = 0.001 * var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv; // 1 / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_membrane__V_orig_deriv = -(var_L_type_Ca_current__i_Ca + var_L_type_Ca_current__i_Ca_K + var_Na_Ca_exchanger__i_NaCa + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_membrane__i_Stim + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) / mParameters[7]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + } + + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + mEvalF[1] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai; + mEvalF[2] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + mEvalF[3] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + mEvalF[4] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + mEvalF[5] = d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + mEvalF[6] = d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; + mEvalF[7] = d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1; + mEvalF[8] = d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1; + mEvalF[9] = d_dt_chaste_interface_var_L_type_Ca_current__O; + mEvalF[10] = d_dt_chaste_interface_var_L_type_Ca_current__O_Ca; + mEvalF[11] = d_dt_chaste_interface_var_L_type_Ca_current__C0; + mEvalF[12] = d_dt_chaste_interface_var_L_type_Ca_current__C1; + mEvalF[13] = d_dt_chaste_interface_var_L_type_Ca_current__C2; + mEvalF[14] = d_dt_chaste_interface_var_L_type_Ca_current__C3; + mEvalF[15] = d_dt_chaste_interface_var_L_type_Ca_current__C4; + mEvalF[16] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0; + mEvalF[17] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1; + mEvalF[18] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2; + mEvalF[19] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3; + mEvalF[20] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4; + mEvalF[21] = d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y; + mEvalF[22] = d_dt_chaste_interface_var_RyR_channel__P_O1; + mEvalF[23] = d_dt_chaste_interface_var_RyR_channel__P_O2; + mEvalF[24] = d_dt_chaste_interface_var_RyR_channel__P_C1; + mEvalF[25] = d_dt_chaste_interface_var_RyR_channel__P_C2; + mEvalF[26] = d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa; + mEvalF[27] = d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa; + mEvalF[28] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai; + mEvalF[29] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki; + mEvalF[30] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss; + mEvalF[31] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR; + mEvalF[32] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR; + + + mPartialF[0] = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[25] = EvaluatePartialDerivative25(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[26] = EvaluatePartialDerivative26(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[27] = EvaluatePartialDerivative27(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[28] = EvaluatePartialDerivative28(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[29] = EvaluatePartialDerivative29(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[30] = EvaluatePartialDerivative30(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[31] = EvaluatePartialDerivative31(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[32] = EvaluatePartialDerivative32(var_chaste_interface__environment__time_converted, rY, delta); + for (unsigned var=0; var& rY) + { + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + // Mathematics + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_K = pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[4] + 0.018329999999999999 * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_membrane__V_orig_deriv = -(var_L_type_Ca_current__i_Ca + var_L_type_Ca_current__i_Ca_K + var_Na_Ca_exchanger__i_NaCa + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_membrane__i_Stim + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) / mParameters[7]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + return d_dt_chaste_interface_var_membrane__V; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + const double var_x0 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x1 = var_x0 * mParameters[8] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x2 = var_x1 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x3 = pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); + const double var_x4 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); + const double var_x5 = var_x4 * mParameters[3]; + const double var_x6 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); + const double var_x7 = pow(mParameters[5], 3); + const double var_x8 = var_x6 * var_x7; + const double var_x9 = var_x8 * var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x10 = 1 + 0.20000000000000001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = 1 / (669921.875 + var_x7); + const double var_x13 = 1 / (1.3799999999999999 + mParameters[3]); + const double var_x14 = var_x12 * var_x13 * mParameters[14]; + const double var_x15 = var_x11 * var_x14; + const double var_x16 = var_x15 * (0.024332029034784559 * var_x9 + 0.013101861787960915 * var_x3 * var_x5); + const double var_x17 = 1 / var_chaste_interface__intracellular_ion_concentrations__Nai; + const double var_x18 = pow(var_x17, 1.5); + const double var_x19 = exp(-0.0037433890822745476 * var_chaste_interface__membrane__V); + const double var_x20 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x21 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5])) * exp(-var_x20); + const double var_x22 = 1 + 0.1245 * var_x19 + 0.036499999999999998 * var_x21; + const double var_x23 = mParameters[4] / (1.5 + mParameters[4]); + const double var_x24 = var_x23 * (0.0013663370150302097 * var_x21 + 0.00046605194074318115 * var_x19) / (pow(var_x22, 2) * (1 + 31.622776601683793 * var_x18)); + const double var_x25 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); + const double var_x26 = -1 + var_x25; + const double var_x27 = 1 / var_x26; + const double var_x28 = 0.001 * var_x25 - 0.34100000000000003 * mParameters[3]; + const double var_x29 = var_x27 * var_x28 * mParameters[6]; + const double var_x30 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_current_y_gate__y; + const double var_x32 = var_x29 * var_x31; + const double var_x33 = var_x25 * mParameters[6] * var_chaste_interface__membrane__V; + const double var_x34 = var_x27 * var_x33; + const double var_x35 = var_x31 * var_x34; + const double var_x36 = -var_x9 + var_x3 * var_x4 * mParameters[3]; + const double var_x37 = var_x14 * var_x36 * var_x6 / pow(var_x10, 2); + const double var_x38 = pow(var_x26, (-2)); + const double var_x39 = var_x28 * var_x33 * var_x38; + const double var_x40 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x41 = 1 + var_x40; + const double var_x42 = 1 / var_x41; + const double var_x43 = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * mParameters[13]; + const double var_x44 = mParameters[15] * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; + const double var_x45 = var_x44 * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1; + const double var_x46 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ki; + const double var_x47 = var_x46 * mParameters[4]; + const double var_x48 = log(var_x47); + const double var_x49 = -26.713760659695648 * var_x48 + var_chaste_interface__membrane__V; + const double var_x50 = exp(0.044600000000000001 * var_chaste_interface__membrane__V); + const double var_x51 = sqrt(mParameters[4]); + const double var_x52 = var_x51 * mParameters[12] / (1 + 1.4944999999999999 * var_x50); + const double var_x53 = var_x52 * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + const double var_x54 = mParameters[4]; + const double var_x55 = exp(0.056150836234118207 * var_chaste_interface__membrane__V - 1.5 * var_x48); + const double var_x56 = mParameters[11] / (13 + mParameters[4]); + const double var_x57 = var_x56 / (2 + var_x55); + const double var_x58 = var_x29 * var_chaste_interface__membrane__V; + const double var_x59 = 1 / (1 - 54518.063995566983 * var_x58); + const double var_x60 = exp(var_x20); + const double var_x61 = -1 + var_x60; + const double var_x62 = 1 / var_x61; + const double var_x63 = var_x60 * var_chaste_interface__intracellular_ion_concentrations__Ki; + const double var_x64 = var_x63 - mParameters[4]; + const double var_x65 = var_x59 * var_x62 * var_x64; + const double var_x66 = 2.0912447872899554e-6 * var_x65; + const double var_x67 = var_x49 * var_x55 * var_x56 / pow((1 + 0.5 * var_x55), 2); + const double var_x68 = var_x31 * var_x62 * var_chaste_interface__membrane__V; + const double var_x69 = var_x59 * var_x68; + const double var_x70 = var_x43 + var_x45 + 0.5 * var_x53 + 0.0022160000000000001 * var_x42 + var_x31 * var_x66 + var_x54 * var_x57 + 7.8283429051047759e-8 * var_x63 * var_x69 - 0.014037709058529552 * var_x67 * mParameters[4] + 0.00037056856187290968 * var_x40 * var_x49 / pow(var_x41, 2) + 7.035970683610309e-16 * var_x64 * var_x68 * (4.0816465109550109 * var_x34 + 54518.063995566983 * var_x29 - 4081.6465109550109 * var_x39) / pow((1.8342544226833014e-5 - var_x58), 2) - 7.8283429051047759e-8 * var_x31 * var_x59 * var_x60 * var_x64 * var_chaste_interface__membrane__V / pow(var_x61, 2) - 0.014921378387420543 * var_x49 * var_x50 * var_x51 * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr / pow((0.66912010705921721 + var_x50), 2); + const double var_x71 = 1 / mParameters[7]; + const double var_x72 = 0.001 * var_x71; + + partialF = -var_x72 * (0.0034841999999999998 + var_x2 + var_x70 + 5000 * var_x16 + 0.69299999999999995 * var_x24 + 1.0816363254030779 * var_x35 + 24.332029034784558 * var_x37 + 14447.286958825252 * var_x32 - 1081.636325403078 * var_x31 * var_x39); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; + // Units: millimolar; Initial value: 0.98 + double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; + // Units: millimolar; Initial value: 0.078 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_SERCA2a_pump__K_fb = 0.00016799999999999999; // millimolar + const double var_SERCA2a_pump__K_rb = 3.29; // millimolar + const double var_SERCA2a_pump__N_fb = 1.2; // dimensionless + const double var_SERCA2a_pump__N_rb = 1; // dimensionless + const double var_SERCA2a_pump__Vmaxf = 0.081299999999999997; // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = 0.318; // millimolar_per_second + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_intracellular_Ca_fluxes__HTRPN_tot = 0.14000000000000001; // dimensionless + const double var_intracellular_Ca_fluxes__LTRPN_tot = 0.070000000000000007; // dimensionless + const double var_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second + const double var_intracellular_Ca_fluxes__k_htrpn_plus = 20000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40; // per_second + const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__tau_xfer = 0.026700000000000002; // second + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = 0.050000000000000003; // millimolar + const double var_SERCA2a_pump__rb = pow((var_chaste_interface__intracellular_ion_concentrations__Ca_NSR / var_SERCA2a_pump__K_rb), var_SERCA2a_pump__N_rb); // dimensionless + const double var_SERCA2a_pump__fb = pow((var_chaste_interface__intracellular_ion_concentrations__Cai / var_SERCA2a_pump__K_fb), var_SERCA2a_pump__N_fb); // dimensionless + const double var_SERCA2a_pump__J_up = (var_SERCA2a_pump__Vmaxf * var_SERCA2a_pump__fb - var_SERCA2a_pump__Vmaxr * var_SERCA2a_pump__rb) * mParameters[1] / (1 + var_SERCA2a_pump__fb + var_SERCA2a_pump__rb); // millimolar_per_second + const double var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa * var_intracellular_Ca_fluxes__k_htrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) * var_intracellular_Ca_fluxes__k_htrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double var_intracellular_Ca_fluxes__J_HTRPNCa = var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_xfer = (-var_chaste_interface__intracellular_ion_concentrations__Cai + var_chaste_interface__intracellular_ion_concentrations__Ca_ss) / var_intracellular_Ca_fluxes__tau_xfer; // millimolar_per_second + const double var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa * var_intracellular_Ca_fluxes__k_ltrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) * var_intracellular_Ca_fluxes__k_ltrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double var_intracellular_Ca_fluxes__J_LTRPNCa = var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_trpn = var_intracellular_Ca_fluxes__HTRPN_tot * var_intracellular_Ca_fluxes__J_HTRPNCa + var_intracellular_Ca_fluxes__J_LTRPNCa * var_intracellular_Ca_fluxes__LTRPN_tot; // millimolar_per_second + const double var_intracellular_ion_concentrations__EGTA_tot = 0; // millimolar + const double var_intracellular_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = 0.00014999999999999999; // millimolar + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_intracellular_ion_concentrations__beta_i = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_intracellular_ion_concentrations__Cai_orig_deriv = (-var_SERCA2a_pump__J_up - var_intracellular_Ca_fluxes__J_trpn + 0.5 * (-var_calcium_background_current__i_Ca_b - var_sarcolemmal_calcium_pump__i_p_Ca + 2 * var_Na_Ca_exchanger__i_NaCa) * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_myo * var_membrane__F) + var_intracellular_Ca_fluxes__J_xfer) * var_intracellular_ion_concentrations__beta_i; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai = 0.001 * var_intracellular_ion_concentrations__Cai_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; + // Units: millimolar; Initial value: 0.98 + double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; + // Units: millimolar; Initial value: 0.078 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + const double var_x3 = pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); + const double var_x4 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); + const double var_x6 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); + const double var_x7 = pow(mParameters[5], 3); + const double var_x8 = var_x6 * var_x7; + const double var_x9 = var_x8 * var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x10 = 1 + 0.20000000000000001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = 1 / (669921.875 + var_x7); + const double var_x13 = 1 / (1.3799999999999999 + mParameters[3]); + const double var_x14 = var_x12 * var_x13 * mParameters[14]; + const double var_x15 = var_x11 * var_x14; + const double var_x36 = -var_x9 + var_x3 * var_x4 * mParameters[3]; + const double var_x73 = 5.0000000000000002e-5 + var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x74 = 1 / var_x73; + const double var_x75 = 1 / var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x76 = pow(var_x73, (-2)); + const double var_x97 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x98 = 1 + 0.00011900000000000002 / pow(var_x97, 2); + const double var_x99 = 1 / var_x98; + const double var_x100 = 0.001 * var_x99; + const double var_x101 = 0.0015381954438488301 * var_x74; + const double var_x102 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 0.19999999999999996); + const double var_x103 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 1.2); + const double var_x104 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); + const double var_x105 = 1 / (1 + 33855.471141425078 * var_x103 + 0.303951367781155 * var_x104); + const double var_x106 = var_x105 * mParameters[1]; + const double var_x107 = pow((2.9537323401073989e-5 + var_x103 + 8.9779098483507565e-6 * var_x104), (-2)); + const double var_x108 = 2752.4498037978587 * var_x103 - 0.096656534954407292 * var_x104; + const double var_x109 = 2800.0000000000005 * var_chaste_interface__intracellular_ion_concentrations__Cai; + + partialF = var_x100 * (-5637.4531835205999 - var_x101 + 2800.0000000000005 * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + 2800.0000000000005 * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa - 0.00015787156411954756 * var_x75 + 0.0015381954438488301 * var_x76 * var_chaste_interface__intracellular_ion_concentrations__Cai - 307.63908876976598 * var_x15 * var_x8 - 3302.9397645574304 * var_x102 * var_x106 + 3.5444788081288787e-5 * var_x102 * var_x107 * var_x108 * mParameters[1]) + 2.3800000000000004e-7 * (2.8000000000000003 * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa + 37.453183520599246 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss + 0.0092400000000000017 * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + 0.00015787156411954756 * log(var_x75 * mParameters[3]) - 37.453183520599246 * var_chaste_interface__intracellular_ion_concentrations__Cai - 1.181949379053441e-5 * var_chaste_interface__membrane__V - var_x101 * var_chaste_interface__intracellular_ion_concentrations__Cai - var_x106 * var_x108 - var_x109 * (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) - var_x109 * (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) + 307.63908876976598 * var_x11 * var_x12 * var_x13 * var_x36 * mParameters[14]) / (pow(var_x97, 3) * pow(var_x98, 2)); + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + + + // Mathematics + const double var_fast_sodium_current_m_gate__E0_m = 47.130000000000003 + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((fabs(var_fast_sodium_current_m_gate__E0_m) < 1.0000000000000001e-5) ? (1000 / (0.10000000000000001 - 0.0050000000000000001 * var_fast_sodium_current_m_gate__E0_m)) : (320 * var_fast_sodium_current_m_gate__E0_m / (1 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 80 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_m_gate__m_orig_deriv = ((var_chaste_interface__membrane__V >= -90) ? ((1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m) : (0)); // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x112 = exp(-0.090909090909090912 * var_chaste_interface__membrane__V); + const double var_x114 = var_chaste_interface__membrane__V >= -90; + const double var_x115 = 47.130000000000003 + var_chaste_interface__membrane__V; + const double var_x116 = (var_x114) && (fabs(var_x115) < 1.0000000000000001e-5); + const double var_x117 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x118 = exp(-4.7130000000000001 - var_x117); + const double var_x119 = 1 - var_x118; + const double var_x120 = 320 / var_x119; + const double var_x121 = 80 * var_x112; + + partialF = 0.001 * ((var_x116) ? (-var_x121 - 1000 / (-0.13565000000000002 - 0.0050000000000000001 * var_chaste_interface__membrane__V)) : ((var_x114) ? (-var_x121 - var_x115 * var_x120) : (0))); + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + + + // Mathematics + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_second + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (3560 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10])) : (7692.3076923076924 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // dimensionless + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_fast_sodium_current_h_gate__h_orig_deriv = (-var_chaste_interface__fast_sodium_current_h_gate__h + var_fast_sodium_current_h_gate__h_inf) / var_fast_sodium_current_h_gate__tau_h; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * var_fast_sodium_current_h_gate__h_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x122 = exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V); + const double var_x123 = var_chaste_interface__membrane__V < -40; + const double var_x124 = ((var_x123) ? (135 * var_x122) : (0)); + const double var_x125 = exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]); + const double var_x126 = exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10]); + const double var_x127 = exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V); + const double var_x128 = 1 + var_x127; + const double var_x129 = ((var_x123) ? (3560 * var_x125 + 310000 * var_x126) : (7692.3076923076924 / var_x128)); + + partialF = -0.001 * var_x124 - 0.001 * var_x129; + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + + + // Mathematics + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (121.2 * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300 * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[10] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // dimensionless + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // second + const double var_fast_sodium_current_j_gate__j_orig_deriv = (-var_chaste_interface__fast_sodium_current_j_gate__j + var_fast_sodium_current_j_gate__j_inf) / var_fast_sodium_current_j_gate__tau_j; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * var_fast_sodium_current_j_gate__j_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x117 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x123 = var_chaste_interface__membrane__V < -40; + const double var_x136 = exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V); + const double var_x137 = 1 + var_x136; + const double var_x138 = exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V); + const double var_x139 = var_x138 / var_x137; + const double var_x140 = exp(-3.2000000000000002 - var_x117 + 0.10000000000000001 * mParameters[10]); + const double var_x141 = 1 + var_x140; + const double var_x142 = exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V); + const double var_x143 = var_x142 / var_x141; + const double var_x144 = ((var_x123) ? (121.2 * var_x139) : (300 * var_x143)); + const double var_x145 = 37.780000000000001 + var_chaste_interface__membrane__V; + const double var_x146 = exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]); + const double var_x147 = exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V); + const double var_x148 = -127140 * var_x146 - 3.4740000000000003e-5 * var_x147; + const double var_x149 = exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]); + const double var_x150 = 1 + var_x149; + const double var_x151 = 1000 / var_x150; + const double var_x152 = var_x148 * var_x151; + const double var_x153 = ((var_x123) ? (var_x145 * var_x152) : (0)); + + partialF = -0.001 * var_x144 - 0.001 * var_x153; + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + + + // Mathematics + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf = var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor = 1; // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr = 0.001 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21) + 0.027 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor; // second + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv = (-var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf) / var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr; // 1 / second + const double d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = 0.001 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x158 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); + const double var_x159 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); + const double var_x160 = var_x158 + var_x159; + const double var_x161 = 1 / var_x160; + const double var_x162 = 1 / (0.027 + 0.001 * var_x161); + + partialF = -0.001 * var_x162; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + + + // Mathematics + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity = 1 / (1 + exp(1.8161764705882353 - 0.073529411764705885 * var_chaste_interface__membrane__V)); // dimensionless + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = 0.001 / (0.00013100000000000001 * (-10 + var_chaste_interface__membrane__V) / (-1 + exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V)) + 7.1899999999999999e-5 * (-10 + var_chaste_interface__membrane__V) / (1 - exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V))); // second + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv = (-var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks + var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity) / var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks; // 1 / second + const double d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = 0.001 * var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x167 = exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V); + const double var_x168 = -1 + var_x167; + const double var_x169 = 1 / var_x168; + const double var_x170 = exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V); + const double var_x171 = 1 - var_x170; + const double var_x172 = 1 / var_x171; + const double var_x173 = -10 + var_chaste_interface__membrane__V; + + partialF = -0.00013100000000000001 * var_x169 * var_x173 - 7.1899999999999999e-5 * var_x172 * var_x173; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + + + // Mathematics + const double var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 = 45.159999999999997 * exp(0.035770000000000003 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__beta_X_to1 = 98.900000000000006 * exp(-0.062370000000000002 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1) * var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_transient_outward_potassium_current_X_to1_gate__beta_X_to1; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1 = 0.001 * var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x174 = exp(-0.062370000000000002 * var_chaste_interface__membrane__V); + const double var_x175 = exp(0.035770000000000003 * var_chaste_interface__membrane__V); + + partialF = -0.045159999999999999 * var_x175 - 0.098900000000000002 * var_x174; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + + + // Mathematics + const double var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 = 5.415 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1 = 5.415 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1) * var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 * var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1 = 0.001 * var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x176 = 0.20000000000000001 * var_chaste_interface__membrane__V; + const double var_x177 = 6.7000000000000002 + var_x176; + const double var_x178 = exp(var_x177); + const double var_x179 = 1 + 0.051334999999999999 * var_x178; + const double var_x180 = var_x178 / var_x179; + const double var_x182 = exp(-var_x177); + const double var_x183 = 1 + 0.051334999999999999 * var_x182; + const double var_x184 = var_x182 / var_x183; + + partialF = -0.0054149999999999997 * var_x180 - 0.0054149999999999997 * var_x184; + } + else + { + const double y_save = rY[8]; + rY[8] += delta; + const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[8])/delta; + rY[8] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + + + // Mathematics + const double var_L_type_Ca_current__f = 300; // per_second + const double var_L_type_Ca_current__g = 2000; // per_second + const double var_L_type_Ca_current__O_orig_deriv = var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__f - var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__O = 0.001 * var_L_type_Ca_current__O_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__O; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -2; + } + else + { + const double y_save = rY[9]; + rY[9] += delta; + const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[9])/delta; + rY[9] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + + + // Mathematics + const double var_L_type_Ca_current__fprime = 7; // per_second + const double var_L_type_Ca_current__gprime = 7000; // per_second + const double var_L_type_Ca_current__O_Ca_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__fprime - var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__O_Ca = 0.001 * var_L_type_Ca_current__O_Ca_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__O_Ca; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -7; + } + else + { + const double y_save = rY[10]; + rY[10] += delta; + const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[10])/delta; + rY[10] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; + // Units: dimensionless; Initial value: 0.997208 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; + // Units: dimensionless; Initial value: 0.00272826 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C0_orig_deriv = var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__omega - (4 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C0; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C0 = 0.001 * var_L_type_Ca_current__C0_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C0; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x189 = 1.6000000000000001 * var_x187; + const double var_x190 = 0.10375 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -var_x189 - var_x190; + } + else + { + const double y_save = rY[11]; + rY[11] += delta; + const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[11])/delta; + rY[11] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; + // Units: dimensionless; Initial value: 0.997208 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C1_orig_deriv = -(3 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__a * var_L_type_Ca_current__gamma + var_L_type_Ca_current__beta) * var_chaste_interface__L_type_Ca_current__C1 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__beta + 4 * var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__omega / var_L_type_Ca_current__b; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C1 = 0.001 * var_L_type_Ca_current__C1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x191 = 0.050000000000000003 * var_x185; + const double var_x195 = 1.2 * var_x187; + const double var_x196 = 0.20749999999999999 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -var_x191 - var_x195 - var_x196; + } + else + { + const double y_save = rY[12]; + rY[12] += delta; + const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[12])/delta; + rY[12] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C2_orig_deriv = -(2 * var_L_type_Ca_current__alpha + 2 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 2) * var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C2 + 3 * var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__alpha + 3 * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C2 = 0.001 * var_L_type_Ca_current__C2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C2; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x197 = 0.10000000000000001 * var_x185; + const double var_x200 = 0.80000000000000004 * var_x187; + const double var_x201 = 0.41499999999999998 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -var_x197 - var_x200 - var_x201; + } + else + { + const double y_save = rY[13]; + rY[13] += delta; + const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[13])/delta; + rY[13] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C3_orig_deriv = -(3 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 3) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__alpha) * var_chaste_interface__L_type_Ca_current__C3 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__alpha + 4 * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C3 = 0.001 * var_L_type_Ca_current__C3_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C3; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x202 = 0.14999999999999999 * var_x185; + const double var_x205 = 0.40000000000000002 * var_x187; + const double var_x206 = 0.82999999999999996 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -var_x202 - var_x205 - var_x206; + } + else + { + const double y_save = rY[14]; + rY[14] += delta; + const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[14])/delta; + rY[14] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__f = 300; // per_second + const double var_L_type_Ca_current__g = 2000; // per_second + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C4_orig_deriv = var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g - (4 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 4) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__f) * var_chaste_interface__L_type_Ca_current__C4 + var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C4 = 0.001 * var_L_type_Ca_current__C4_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C4; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x207 = 0.20000000000000001 * var_x185; + const double var_x209 = 1.6599999999999999 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -0.29999999999999999 - var_x207 - var_x209; + } + else + { + const double y_save = rY[15]; + rY[15] += delta; + const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[15])/delta; + rY[15] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; + // Units: dimensionless; Initial value: 0.997208 + double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; + // Units: dimensionless; Initial value: 0.00272826 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca0_orig_deriv = var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__gamma + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__beta_b - (4 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega) * var_chaste_interface__L_type_Ca_current__C_Ca0; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0 = 0.001 * var_L_type_Ca_current__C_Ca0_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x212 = 3.2000000000000002 * var_x187; + + partialF = -0.01 - var_x212; + } + else + { + const double y_save = rY[16]; + rY[16] += delta; + const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[16])/delta; + rY[16] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; + // Units: dimensionless; Initial value: 0.00272826 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca1_orig_deriv = -(3 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega / var_L_type_Ca_current__b + var_L_type_Ca_current__beta_b) * var_chaste_interface__L_type_Ca_current__C_Ca1 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__beta_b + 4 * var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__a * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1 = 0.001 * var_L_type_Ca_current__C_Ca1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x213 = 0.025000000000000001 * var_x185; + const double var_x214 = 2.3999999999999999 * var_x187; + + partialF = -0.0050000000000000001 - var_x213 - var_x214; + } + else + { + const double y_save = rY[17]; + rY[17] += delta; + const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[17])/delta; + rY[17] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca2_orig_deriv = -(2 * var_L_type_Ca_current__alpha_a + 2 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2)) * var_chaste_interface__L_type_Ca_current__C_Ca2 + 3 * var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__alpha_a + 3 * var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 2) * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2 = 0.001 * var_L_type_Ca_current__C_Ca2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x189 = 1.6000000000000001 * var_x187; + const double var_x191 = 0.050000000000000003 * var_x185; + + partialF = -0.0025000000000000001 - var_x189 - var_x191; + } + else + { + const double y_save = rY[18]; + rY[18] += delta; + const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[18])/delta; + rY[18] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca3_orig_deriv = -(3 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3) + var_L_type_Ca_current__alpha_a) * var_chaste_interface__L_type_Ca_current__C_Ca3 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__alpha_a + 4 * var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 3) * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3 = 0.001 * var_L_type_Ca_current__C_Ca3_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x200 = 0.80000000000000004 * var_x187; + const double var_x215 = 0.074999999999999997 * var_x185; + + partialF = -0.00125 - var_x200 - var_x215; + } + else + { + const double y_save = rY[19]; + rY[19] += delta; + const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[19])/delta; + rY[19] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__fprime = 7; // per_second + const double var_L_type_Ca_current__gprime = 7000; // per_second + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca4_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime - (4 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4) + var_L_type_Ca_current__fprime) * var_chaste_interface__L_type_Ca_current__C_Ca4 + pow(var_L_type_Ca_current__a, 4) * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4 = 0.001 * var_L_type_Ca_current__C_Ca4_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x197 = 0.10000000000000001 * var_x185; + + partialF = -0.0076249999999999998 - var_x197; + } + else + { + const double y_save = rY[20]; + rY[20] += delta; + const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[20])/delta; + rY[20] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + + + // Mathematics + const double var_L_type_Ca_current_y_gate__tau_y = 0.02 + 0.59999999999999998 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // second + const double var_L_type_Ca_current_y_gate__y_infinity = 0.20000000000000001 + 0.80000000000000004 / (1 + exp(2.5 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current_y_gate__y_orig_deriv = (-var_chaste_interface__L_type_Ca_current_y_gate__y + var_L_type_Ca_current_y_gate__y_infinity) / var_L_type_Ca_current_y_gate__tau_y; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y = 0.001 * var_L_type_Ca_current_y_gate__y_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x219 = exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V); + const double var_x220 = 1 + var_x219; + const double var_x221 = 1 / var_x220; + const double var_x222 = 1 / (0.02 + 0.59999999999999998 * var_x221); + + partialF = -0.001 * var_x222; + } + else + { + const double y_save = rY[21]; + rY[21] += delta; + const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[21])/delta; + rY[21] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_C1 = rY[24]; + // Units: dimensionless; Initial value: 0.47 + double var_chaste_interface__RyR_channel__P_C2 = rY[25]; + // Units: dimensionless; Initial value: 0.53 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_RyR_channel__k_a_minus = 576; // per_second + const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second + const double var_RyR_channel__k_b_minus = 1930; // per_second + const double var_RyR_channel__k_b_plus = 4050000000.0; // millimolar3_per_second + const double var_RyR_channel__k_c_minus = 0.80000000000000004; // per_second + const double var_RyR_channel__k_c_plus = 100; // per_second + const double var_RyR_channel__m = 3; // dimensionless + const double var_RyR_channel__n = 4; // dimensionless + const double var_RyR_channel__P_O1_orig_deriv = var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus + var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_O1 = 0.001 * var_RyR_channel__P_O1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__P_O1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x223 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 3); + const double var_x224 = 4050000 * var_x223; + + partialF = -0.67600000000000005 - var_x224; + } + else + { + const double y_save = rY[22]; + rY[22] += delta; + const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[22])/delta; + rY[22] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_RyR_channel__k_b_minus = 1930; // per_second + const double var_RyR_channel__k_b_plus = 4050000000.0; // millimolar3_per_second + const double var_RyR_channel__m = 3; // dimensionless + const double var_RyR_channel__P_O2_orig_deriv = -var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_O2 = 0.001 * var_RyR_channel__P_O2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__P_O2; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -1.9299999999999999; + } + else + { + const double y_save = rY[23]; + rY[23] += delta; + const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[23])/delta; + rY[23] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_C1 = rY[24]; + // Units: dimensionless; Initial value: 0.47 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_RyR_channel__k_a_minus = 576; // per_second + const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second + const double var_RyR_channel__n = 4; // dimensionless + const double var_RyR_channel__P_C1_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_C1 = 0.001 * var_RyR_channel__P_C1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__P_C1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x225 = 12150000000.0 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 4); + + partialF = -var_x225; + } + else + { + const double y_save = rY[24]; + rY[24] += delta; + const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[24])/delta; + rY[24] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_C2 = rY[25]; + // Units: dimensionless; Initial value: 0.53 + + + // Mathematics + const double var_RyR_channel__k_c_minus = 0.80000000000000004; // per_second + const double var_RyR_channel__k_c_plus = 100; // per_second + const double var_RyR_channel__P_C2_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus - var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_C2 = 0.001 * var_RyR_channel__P_C2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__P_C2; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -0.00080000000000000004; + } + else + { + const double y_save = rY[25]; + rY[25] += delta; + const double temp = EvaluateYDerivative25(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[25])/delta; + rY[25] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; + // Units: millimolar; Initial value: 0.98 + + + // Mathematics + const double var_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second + const double var_intracellular_Ca_fluxes__k_htrpn_plus = 20000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa * var_intracellular_Ca_fluxes__k_htrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) * var_intracellular_Ca_fluxes__k_htrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa = 0.001 * var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + + + + partialF = -6.6000000000000005e-5 - 20 * var_chaste_interface__intracellular_ion_concentrations__Cai; + } + else + { + const double y_save = rY[26]; + rY[26] += delta; + const double temp = EvaluateYDerivative26(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[26])/delta; + rY[26] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative27(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; + // Units: millimolar; Initial value: 0.078 + + + // Mathematics + const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40; // per_second + const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa * var_intracellular_Ca_fluxes__k_ltrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) * var_intracellular_Ca_fluxes__k_ltrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa = 0.001 * var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative27(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + + + + partialF = -0.040000000000000001 - 40 * var_chaste_interface__intracellular_ion_concentrations__Cai; + } + else + { + const double y_save = rY[27]; + rY[27] += delta; + const double temp = EvaluateYDerivative27(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[27])/delta; + rY[27] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative28(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + + + // Mathematics + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_intracellular_ion_concentrations__Nai_orig_deriv = -(3 * var_Na_Ca_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Na_b) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai = 0.001 * var_intracellular_ion_concentrations__Nai_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative28(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + + + const double var_x0 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x1 = var_x0 * mParameters[8] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x2 = var_x1 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x4 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); + const double var_x5 = var_x4 * mParameters[3]; + const double var_x6 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); + const double var_x7 = pow(mParameters[5], 3); + const double var_x10 = 1 + 0.20000000000000001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = 1 / (669921.875 + var_x7); + const double var_x13 = 1 / (1.3799999999999999 + mParameters[3]); + const double var_x14 = var_x12 * var_x13 * mParameters[14]; + const double var_x15 = var_x11 * var_x14; + const double var_x17 = 1 / var_chaste_interface__intracellular_ion_concentrations__Nai; + const double var_x18 = pow(var_x17, 1.5); + const double var_x19 = exp(-0.0037433890822745476 * var_chaste_interface__membrane__V); + const double var_x20 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x21 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5])) * exp(-var_x20); + const double var_x22 = 1 + 0.1245 * var_x19 + 0.036499999999999998 * var_x21; + const double var_x23 = mParameters[4] / (1.5 + mParameters[4]); + const double var_x93 = var_x17 * var_x18 * var_x23 / (var_x22 * pow((0.031622776601683791 + var_x18), 2)); + const double var_x94 = var_x15 * var_x5 * pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 2); + const double var_x95 = 0.082812658045056511 * var_x17 + 26.713760659695648 * var_x17 * var_x2; + const double var_x228 = 6.1527817753953199e-5 * mParameters[2]; + + partialF = -var_x228 * (var_x95 + 45000 * var_x94 + 0.098615628832350907 * var_x93); + } + else + { + const double y_save = rY[28]; + rY[28] += delta; + const double temp = EvaluateYDerivative28(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[28])/delta; + rY[28] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative29(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + // Mathematics + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_L_type_Ca_current__i_Ca_K = pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[4] + 0.018329999999999999 * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_intracellular_ion_concentrations__Ki_orig_deriv = -(-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_current__i_Ca_K + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki = 0.001 * var_intracellular_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative29(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + const double var_x20 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x25 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); + const double var_x26 = -1 + var_x25; + const double var_x27 = 1 / var_x26; + const double var_x28 = 0.001 * var_x25 - 0.34100000000000003 * mParameters[3]; + const double var_x29 = var_x27 * var_x28 * mParameters[6]; + const double var_x30 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_current_y_gate__y; + const double var_x40 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x41 = 1 + var_x40; + const double var_x42 = 1 / var_x41; + const double var_x43 = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * mParameters[13]; + const double var_x44 = mParameters[15] * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; + const double var_x45 = var_x44 * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1; + const double var_x46 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ki; + const double var_x47 = var_x46 * mParameters[4]; + const double var_x48 = log(var_x47); + const double var_x49 = -26.713760659695648 * var_x48 + var_chaste_interface__membrane__V; + const double var_x50 = exp(0.044600000000000001 * var_chaste_interface__membrane__V); + const double var_x51 = sqrt(mParameters[4]); + const double var_x52 = var_x51 * mParameters[12] / (1 + 1.4944999999999999 * var_x50); + const double var_x53 = var_x52 * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + const double var_x55 = exp(0.056150836234118207 * var_chaste_interface__membrane__V - 1.5 * var_x48); + const double var_x56 = mParameters[11] / (13 + mParameters[4]); + const double var_x57 = var_x56 / (2 + var_x55); + const double var_x58 = var_x29 * var_chaste_interface__membrane__V; + const double var_x59 = 1 / (1 - 54518.063995566983 * var_x58); + const double var_x60 = exp(var_x20); + const double var_x61 = -1 + var_x60; + const double var_x62 = 1 / var_x61; + const double var_x67 = var_x49 * var_x55 * var_x56 / pow((1 + 0.5 * var_x55), 2); + const double var_x68 = var_x31 * var_x62 * var_chaste_interface__membrane__V; + const double var_x69 = var_x59 * var_x68; + const double var_x84 = 1 / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai); + const double var_x91 = var_x43 * var_x84; + const double var_x96 = 26.713760659695648 * var_x91 + 13.356880329847824 * var_x46 * var_x53 + 26.713760659695648 * var_x45 * var_x46 + 26.713760659695648 * var_x47 * var_x57 + 0.05919769362188556 * var_x42 * var_x46 + 2.0912447872899554e-6 * var_x60 * var_x69 - 0.375 * var_x47 * var_x67; + const double var_x228 = 6.1527817753953199e-5 * mParameters[2]; + + partialF = -var_x228 * var_x96; + } + else + { + const double y_save = rY[29]; + rY[29] += delta; + const double temp = EvaluateYDerivative29(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[29])/delta; + rY[29] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative30(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + const double var_intracellular_Ca_fluxes__tau_xfer = 0.026700000000000002; // second + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = 0.050000000000000003; // millimolar + const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_xfer = (-var_chaste_interface__intracellular_ion_concentrations__Cai + var_chaste_interface__intracellular_ion_concentrations__Ca_ss) / var_intracellular_Ca_fluxes__tau_xfer; // millimolar_per_second + const double var_intracellular_ion_concentrations__EGTA_tot = 0; // millimolar + const double var_intracellular_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = 0.00014999999999999999; // millimolar + const double var_intracellular_ion_concentrations__V_JSR = 1.6e-7; // micro_litre + const double var_intracellular_ion_concentrations__V_SS = 1.2e-9; // micro_litre + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_intracellular_ion_concentrations__beta_SS = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_intracellular_ion_concentrations__Ca_ss_orig_deriv = (var_RyR_channel__J_rel * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_SS - var_intracellular_Ca_fluxes__J_xfer * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_SS - 0.5 * var_L_type_Ca_current__i_Ca * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_SS * var_membrane__F)) * var_intracellular_ion_concentrations__beta_SS; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss = 0.001 * var_intracellular_ion_concentrations__Ca_ss_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative30(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + + + const double var_x25 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); + const double var_x26 = -1 + var_x25; + const double var_x27 = 1 / var_x26; + const double var_x28 = 0.001 * var_x25 - 0.34100000000000003 * mParameters[3]; + const double var_x29 = var_x27 * var_x28 * mParameters[6]; + const double var_x30 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_current_y_gate__y; + const double var_x58 = var_x29 * var_chaste_interface__membrane__V; + const double var_x233 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + const double var_x234 = 1 + 0.00011900000000000002 / pow(var_x233, 2); + const double var_x235 = 1 / var_x234; + const double var_x236 = 0.001 * var_x235; + const double var_x240 = -var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; + const double var_x243 = var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2; + const double var_x244 = var_x243 * mParameters[0]; + + partialF = var_x236 * (-806491.88514357049 - 133.33333333333334 * var_x244) + 2.3800000000000004e-7 * (806491.88514357049 * var_chaste_interface__intracellular_ion_concentrations__Cai - 806491.88514357049 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss - 9570598.0870152581 * var_x31 * var_x58 + 133.33333333333334 * var_x240 * var_x243 * mParameters[0]) / (pow(var_x233, 3) * pow(var_x234, 2)); + } + else + { + const double y_save = rY[30]; + rY[30] += delta; + const double temp = EvaluateYDerivative30(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[30])/delta; + rY[30] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative31(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second + const double var_intracellular_ion_concentrations__CSQN_tot = 15; // millimolar + const double var_intracellular_Ca_fluxes__J_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_chaste_interface__intracellular_ion_concentrations__Ca_NSR) / var_intracellular_Ca_fluxes__tau_tr; // millimolar_per_second + const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second + const double var_intracellular_ion_concentrations__K_mCSQN = 0.80000000000000004; // millimolar + const double var_intracellular_ion_concentrations__beta_JSR = 1 / (1 + var_intracellular_ion_concentrations__CSQN_tot * var_intracellular_ion_concentrations__K_mCSQN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_intracellular_ion_concentrations__K_mCSQN), 2)); // dimensionless + const double var_intracellular_ion_concentrations__Ca_JSR_orig_deriv = (-var_RyR_channel__J_rel + var_intracellular_Ca_fluxes__J_tr) * var_intracellular_ion_concentrations__beta_JSR; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR = 0.001 * var_intracellular_ion_concentrations__Ca_JSR_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative31(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + const double var_x240 = -var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; + const double var_x243 = var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2; + const double var_x244 = var_x243 * mParameters[0]; + const double var_x245 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; + const double var_x246 = pow(var_x245, (-2)); + const double var_x247 = 1 / (1 + 12 * var_x246); + const double var_x248 = 0.001 * var_x247; + + partialF = var_x248 * (-1740.0382808421784 - var_x244) + 0.00016666666666666666 * (1740.0382808421784 * var_chaste_interface__intracellular_ion_concentrations__Ca_NSR - 1740.0382808421784 * var_chaste_interface__intracellular_ion_concentrations__Ca_JSR - var_x240 * var_x244) / (pow(var_x245, 3) * pow((0.083333333333333329 + var_x246), 2)); + } + else + { + const double y_save = rY[31]; + rY[31] += delta; + const double temp = EvaluateYDerivative31(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[31])/delta; + rY[31] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative32(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + const double var_SERCA2a_pump__K_fb = 0.00016799999999999999; // millimolar + const double var_SERCA2a_pump__K_rb = 3.29; // millimolar + const double var_SERCA2a_pump__N_fb = 1.2; // dimensionless + const double var_SERCA2a_pump__N_rb = 1; // dimensionless + const double var_SERCA2a_pump__Vmaxf = 0.081299999999999997; // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = 0.318; // millimolar_per_second + const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second + const double var_SERCA2a_pump__rb = pow((var_chaste_interface__intracellular_ion_concentrations__Ca_NSR / var_SERCA2a_pump__K_rb), var_SERCA2a_pump__N_rb); // dimensionless + const double var_intracellular_Ca_fluxes__J_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_chaste_interface__intracellular_ion_concentrations__Ca_NSR) / var_intracellular_Ca_fluxes__tau_tr; // millimolar_per_second + const double var_SERCA2a_pump__fb = pow((var_chaste_interface__intracellular_ion_concentrations__Cai / var_SERCA2a_pump__K_fb), var_SERCA2a_pump__N_fb); // dimensionless + const double var_SERCA2a_pump__J_up = (var_SERCA2a_pump__Vmaxf * var_SERCA2a_pump__fb - var_SERCA2a_pump__Vmaxr * var_SERCA2a_pump__rb) * mParameters[1] / (1 + var_SERCA2a_pump__fb + var_SERCA2a_pump__rb); // millimolar_per_second + const double var_intracellular_ion_concentrations__V_JSR = 1.6e-7; // micro_litre + const double var_intracellular_ion_concentrations__V_NSR = 2.0999999999999998e-6; // micro_litre + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_intracellular_ion_concentrations__Ca_NSR_orig_deriv = var_SERCA2a_pump__J_up * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_NSR - var_intracellular_Ca_fluxes__J_tr * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_NSR; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR = 0.001 * var_intracellular_ion_concentrations__Ca_NSR_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative32(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + const double var_x103 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 1.2); + const double var_x104 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); + const double var_x105 = 1 / (1 + 33855.471141425078 * var_x103 + 0.303951367781155 * var_x104); + const double var_x106 = var_x105 * mParameters[1]; + const double var_x107 = pow((2.9537323401073989e-5 + var_x103 + 8.9779098483507565e-6 * var_x104), (-2)); + const double var_x108 = 2752.4498037978587 * var_x103 - 0.096656534954407292 * var_x104; + const double var_x110 = var_x107 * var_x108 * mParameters[1]; + + partialF = -0.13257434520702313 - 0.0011893356491532784 * var_x106 - 3.2630189260961817e-12 * var_x110; + } + else + { + const double y_save = rY[32]; + rY[32] += delta; + const double temp = EvaluateYDerivative32(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[32])/delta; + rY[32] = y_save; + } + return partialF; + } + + std::vector Dynamicwinslow_model_1999FromCellMLGRL2::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + + // Mathematics + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current_y_gate__tau_y = 0.02 + 0.59999999999999998 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // second + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_second + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (3560 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10])) : (7692.3076923076924 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (121.2 * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300 * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[10] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // second + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca; // uA_per_cm2 + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[4] + 0.018329999999999999 * mParameters[5]) / (var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_activating_delayed_rectifiyer_K_current__i_Ks; // uA_per_cm2 + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_transient_outward_potassium_current__i_to1_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_potassium_current__i_to1; // uA_per_cm2 + + std::vector dqs(13); + dqs[0] = var_RyR_channel__J_rel; + dqs[1] = var_L_type_Ca_current__i_Ca_converted; + dqs[2] = var_L_type_Ca_current_y_gate__tau_y; + dqs[3] = var_fast_sodium_current__i_Na_converted; + dqs[4] = var_fast_sodium_current_h_gate__tau_h; + dqs[5] = var_fast_sodium_current_j_gate__tau_j; + dqs[6] = var_time_independent_potassium_current__i_K1_converted; + dqs[7] = var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted; + dqs[8] = var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted; + dqs[9] = var_Na_Ca_exchanger__i_NaCa_converted; + dqs[10] = var_membrane__i_Stim_converted; + dqs[11] = var_transient_outward_potassium_current__i_to1_converted; + dqs[12] = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "winslow_model_1999"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-96.1638); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8e-05); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0328302); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.988354); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99254); + + // rY[5]: + this->mVariableNames.push_back("rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.51); + + // rY[6]: + this->mVariableNames.push_back("slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.264); + + // rY[7]: + this->mVariableNames.push_back("transient_outward_potassium_current_X_to1_gate__X_to1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.63); + + // rY[8]: + this->mVariableNames.push_back("transient_outward_potassium_current_Y_to1_gate__Y_to1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.84546e-21); + + // rY[10]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[11]: + this->mVariableNames.push_back("L_type_Ca_current__C0"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.997208); + + // rY[12]: + this->mVariableNames.push_back("L_type_Ca_current__C1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.38897e-05); + + // rY[13]: + this->mVariableNames.push_back("L_type_Ca_current__C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.535e-09); + + // rY[14]: + this->mVariableNames.push_back("L_type_Ca_current__C3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.63909e-14); + + // rY[15]: + this->mVariableNames.push_back("L_type_Ca_current__C4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.56337e-20); + + // rY[16]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca0"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00272826); + + // rY[17]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.99215e-07); + + // rY[18]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.71989e-11); + + // rY[19]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.87031e-15); + + // rY[20]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(4.59752e-20); + + // rY[21]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.798); + + // rY[22]: + this->mVariableNames.push_back("RyR_channel__P_O1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[23]: + this->mVariableNames.push_back("RyR_channel__P_O2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[24]: + this->mVariableNames.push_back("RyR_channel__P_C1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.47); + + // rY[25]: + this->mVariableNames.push_back("RyR_channel__P_C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.53); + + // rY[26]: + this->mVariableNames.push_back("intracellular_Ca_fluxes__HTRPNCa"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.98); + + // rY[27]: + this->mVariableNames.push_back("intracellular_Ca_fluxes__LTRPNCa"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.078); + + // rY[28]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(10.0); + + // rY[29]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(157.8); + + // rY[30]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00011); + + // rY[31]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.257); + + // rY[32]: + this->mVariableNames.push_back("NSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.257); + + // mParameters[0]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_second"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[2]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[3]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("cm_per_second"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_second"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicwinslow_model_1999FromCellMLGRL2) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicwinslow_model_1999FromCellMLGRL2(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999--sympy_1_13.cpp new file mode 100644 index 00000000..fc7625ec --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999--sympy_1_13.cpp @@ -0,0 +1,3431 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: winslow_model_1999 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenSecondOrder) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_winslow_model_1999.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Dynamicwinslow_model_1999FromCellMLGRL2::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -21.126799999999999 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = 2; // millisecond + const double var_chaste_interface__membrane__stim_period_converted = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start_converted = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration_converted, + var_chaste_interface__membrane__stim_period_converted, + var_chaste_interface__membrane__stim_start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamicwinslow_model_1999FromCellMLGRL2::Dynamicwinslow_model_1999FromCellMLGRL2(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 33, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1800; // (var_RyR_channel__v1) [per_second] + this->mParameters[1] = 1; // (var_SERCA2a_pump__K_SR) [dimensionless] + this->mParameters[2] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[3] = 2; // (var_standard_ionic_concentrations__Cao) [millimolar] + this->mParameters[4] = 4; // (var_standard_ionic_concentrations__Ko) [millimolar] + this->mParameters[5] = 138; // (var_standard_ionic_concentrations__Nao) [millimolar] + this->mParameters[6] = 0.00031250000000000001; // (var_L_type_Ca_current__P_Ca) [cm_per_second] + this->mParameters[7] = 0.001; // (var_membrane__C_sc) [microF_per_cm2] + this->mParameters[8] = 12.800000000000001; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[9] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[10] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[11] = 2.7999999999999998; // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = 0.0033999999999999998; // (var_rapid_activating_delayed_rectifiyer_K_current__g_Kr) [milliS_per_microF] + this->mParameters[13] = 0.0027133999999999999; // (var_slow_activating_delayed_rectifiyer_K_current__g_Ks) [milliS_per_microF] + this->mParameters[14] = 0.29999999999999999; // (var_Na_Ca_exchanger__K_NaCa) [microA_per_microF] + this->mParameters[15] = 0.23815; // (var_transient_outward_potassium_current__g_to1) [milliS_per_microF] + } + + Dynamicwinslow_model_1999FromCellMLGRL2::~Dynamicwinslow_model_1999FromCellMLGRL2() + { + } + + + void Dynamicwinslow_model_1999FromCellMLGRL2::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 33; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca; // uA_per_cm2 + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_K = 1 * pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[4] + 0.018329999999999999 * mParameters[5]) / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_activating_delayed_rectifiyer_K_current__i_Ks; // uA_per_cm2 + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_transient_outward_potassium_current__i_to1_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_potassium_current__i_to1; // uA_per_cm2 + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca_K + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Ca_b + HeartConfig::Instance()->GetCapacitance() * var_plateau_potassium_current__i_Kp + HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump__i_p_Ca + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Na_b + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_current__i_Ca_converted + var_Na_Ca_exchanger__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted + var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_potassium_current__i_to1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicwinslow_model_1999FromCellMLGRL2::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + const double yinit = rY[v_index]; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_K = 1 * pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[4] + 0.018329999999999999 * mParameters[5]) / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_membrane__V_orig_deriv = -1 * (var_L_type_Ca_current__i_Ca + var_L_type_Ca_current__i_Ca_K + var_Na_Ca_exchanger__i_NaCa + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_membrane__i_Stim + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) / mParameters[7]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + double evalF = d_dt_chaste_interface_var_membrane__V; + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += 0.5*evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*0.5*mDt)-1.0); + } + + rY[v_index] = yinit; + evalF = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + mEvalF[0] = evalF; + partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] = yinit + evalF*mDt; + } + else + { + rY[v_index] = yinit + (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Dynamicwinslow_model_1999FromCellMLGRL2::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const double delta=1e-8; + const unsigned size = GetNumberOfStateVariables(); + mYInit = rY; + double y_save; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; + // Units: dimensionless; Initial value: 0.997208 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; + // Units: dimensionless; Initial value: 0.00272826 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_C1 = rY[24]; + // Units: dimensionless; Initial value: 0.47 + double var_chaste_interface__RyR_channel__P_C2 = rY[25]; + // Units: dimensionless; Initial value: 0.53 + double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; + // Units: millimolar; Initial value: 0.98 + double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; + // Units: millimolar; Initial value: 0.078 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__f = 300; // per_second + const double var_L_type_Ca_current__fprime = 7; // per_second + const double var_L_type_Ca_current__g = 2000; // per_second + const double var_L_type_Ca_current__O_orig_deriv = var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__f - var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__O = 0.001 * var_L_type_Ca_current__O_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__gprime = 7000; // per_second + const double var_L_type_Ca_current__O_Ca_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__fprime - var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__O_Ca = 0.001 * var_L_type_Ca_current__O_Ca_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_RyR_channel__k_a_minus = 576; // per_second + const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second + const double var_RyR_channel__k_b_minus = 1930; // per_second + const double var_RyR_channel__k_b_plus = 4050000000.0; // millimolar3_per_second + const double var_RyR_channel__k_c_minus = 0.80000000000000004; // per_second + const double var_RyR_channel__k_c_plus = 100; // per_second + const double var_RyR_channel__P_C2_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus - var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_C2 = 0.001 * var_RyR_channel__P_C2_orig_deriv; // 1 / millisecond + const double var_RyR_channel__m = 3; // dimensionless + const double var_RyR_channel__n = 4; // dimensionless + const double var_SERCA2a_pump__K_fb = 0.00016799999999999999; // millimolar + const double var_SERCA2a_pump__K_rb = 3.29; // millimolar + const double var_SERCA2a_pump__N_fb = 1.2; // dimensionless + const double var_SERCA2a_pump__N_rb = 1; // dimensionless + const double var_SERCA2a_pump__Vmaxf = 0.081299999999999997; // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = 0.318; // millimolar_per_second + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_intracellular_Ca_fluxes__HTRPN_tot = 0.14000000000000001; // dimensionless + const double var_intracellular_Ca_fluxes__LTRPN_tot = 0.070000000000000007; // dimensionless + const double var_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second + const double var_intracellular_Ca_fluxes__k_htrpn_plus = 20000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40; // per_second + const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second + const double var_intracellular_Ca_fluxes__tau_xfer = 0.026700000000000002; // second + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = 0.050000000000000003; // millimolar + const double var_intracellular_ion_concentrations__CSQN_tot = 15; // millimolar + const double var_SERCA2a_pump__rb = pow((var_chaste_interface__intracellular_ion_concentrations__Ca_NSR / var_SERCA2a_pump__K_rb), var_SERCA2a_pump__N_rb); // dimensionless + const double var_intracellular_Ca_fluxes__J_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_chaste_interface__intracellular_ion_concentrations__Ca_NSR) / var_intracellular_Ca_fluxes__tau_tr; // millimolar_per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second + const double var_RyR_channel__P_C1_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_C1 = 0.001 * var_RyR_channel__P_C1_orig_deriv; // 1 / millisecond + const double var_RyR_channel__P_O1_orig_deriv = var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus + var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_O1 = 0.001 * var_RyR_channel__P_O1_orig_deriv; // 1 / millisecond + const double var_RyR_channel__P_O2_orig_deriv = -var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_O2 = 0.001 * var_RyR_channel__P_O2_orig_deriv; // 1 / millisecond + const double var_SERCA2a_pump__fb = pow((var_chaste_interface__intracellular_ion_concentrations__Cai / var_SERCA2a_pump__K_fb), var_SERCA2a_pump__N_fb); // dimensionless + const double var_SERCA2a_pump__J_up = (var_SERCA2a_pump__Vmaxf * var_SERCA2a_pump__fb - var_SERCA2a_pump__Vmaxr * var_SERCA2a_pump__rb) * mParameters[1] / (1 + var_SERCA2a_pump__fb + var_SERCA2a_pump__rb); // millimolar_per_second + const double var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa * var_intracellular_Ca_fluxes__k_htrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) * var_intracellular_Ca_fluxes__k_htrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa = 0.001 * var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar / millisecond + const double var_intracellular_Ca_fluxes__J_HTRPNCa = var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_xfer = (-var_chaste_interface__intracellular_ion_concentrations__Cai + var_chaste_interface__intracellular_ion_concentrations__Ca_ss) / var_intracellular_Ca_fluxes__tau_xfer; // millimolar_per_second + const double var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa * var_intracellular_Ca_fluxes__k_ltrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) * var_intracellular_Ca_fluxes__k_ltrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa = 0.001 * var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar / millisecond + const double var_intracellular_Ca_fluxes__J_LTRPNCa = var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_trpn = var_intracellular_Ca_fluxes__HTRPN_tot * var_intracellular_Ca_fluxes__J_HTRPNCa + var_intracellular_Ca_fluxes__J_LTRPNCa * var_intracellular_Ca_fluxes__LTRPN_tot; // millimolar_per_second + const double var_intracellular_ion_concentrations__EGTA_tot = 0; // millimolar + const double var_intracellular_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_intracellular_ion_concentrations__K_mCSQN = 0.80000000000000004; // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = 0.00014999999999999999; // millimolar + const double var_intracellular_ion_concentrations__V_JSR = 1.6e-7; // micro_litre + const double var_intracellular_ion_concentrations__V_NSR = 2.0999999999999998e-6; // micro_litre + const double var_intracellular_ion_concentrations__V_SS = 1.2e-9; // micro_litre + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_intracellular_ion_concentrations__Ca_NSR_orig_deriv = var_SERCA2a_pump__J_up * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_NSR - var_intracellular_Ca_fluxes__J_tr * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_NSR; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR = 0.001 * var_intracellular_ion_concentrations__Ca_NSR_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__beta_JSR = 1 / (1 + var_intracellular_ion_concentrations__CSQN_tot * var_intracellular_ion_concentrations__K_mCSQN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_intracellular_ion_concentrations__K_mCSQN), 2)); // dimensionless + const double var_intracellular_ion_concentrations__Ca_JSR_orig_deriv = (-var_RyR_channel__J_rel + var_intracellular_Ca_fluxes__J_tr) * var_intracellular_ion_concentrations__beta_JSR; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR = 0.001 * var_intracellular_ion_concentrations__Ca_JSR_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__beta_SS = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_intracellular_ion_concentrations__beta_i = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C0_orig_deriv = var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__omega - (4 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C0; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C0 = 0.001 * var_L_type_Ca_current__C0_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C1_orig_deriv = -(3 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__a * var_L_type_Ca_current__gamma + var_L_type_Ca_current__beta) * var_chaste_interface__L_type_Ca_current__C1 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__beta + 4 * var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__omega / var_L_type_Ca_current__b; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C1 = 0.001 * var_L_type_Ca_current__C1_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C2_orig_deriv = -(2 * var_L_type_Ca_current__alpha + 2 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 2) * var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C2 + 3 * var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__alpha + 3 * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C2 = 0.001 * var_L_type_Ca_current__C2_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C3_orig_deriv = -(3 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 3) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__alpha) * var_chaste_interface__L_type_Ca_current__C3 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__alpha + 4 * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C3 = 0.001 * var_L_type_Ca_current__C3_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C4_orig_deriv = var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g - (4 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 4) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__f) * var_chaste_interface__L_type_Ca_current__C4 + var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C4 = 0.001 * var_L_type_Ca_current__C4_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca0_orig_deriv = var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__gamma + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__beta_b - (4 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega) * var_chaste_interface__L_type_Ca_current__C_Ca0; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0 = 0.001 * var_L_type_Ca_current__C_Ca0_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C_Ca1_orig_deriv = -(3 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega / var_L_type_Ca_current__b + var_L_type_Ca_current__beta_b) * var_chaste_interface__L_type_Ca_current__C_Ca1 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__beta_b + 4 * var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__a * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1 = 0.001 * var_L_type_Ca_current__C_Ca1_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C_Ca2_orig_deriv = -(2 * var_L_type_Ca_current__alpha_a + 2 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2)) * var_chaste_interface__L_type_Ca_current__C_Ca2 + 3 * var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__alpha_a + 3 * var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 2) * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2 = 0.001 * var_L_type_Ca_current__C_Ca2_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C_Ca3_orig_deriv = -(3 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3) + var_L_type_Ca_current__alpha_a) * var_chaste_interface__L_type_Ca_current__C_Ca3 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__alpha_a + 4 * var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 3) * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3 = 0.001 * var_L_type_Ca_current__C_Ca3_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C_Ca4_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime - (4 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4) + var_L_type_Ca_current__fprime) * var_chaste_interface__L_type_Ca_current__C_Ca4 + pow(var_L_type_Ca_current__a, 4) * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4 = 0.001 * var_L_type_Ca_current__C_Ca4_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current_y_gate__tau_y = 0.02 + 0.59999999999999998 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // second + const double var_L_type_Ca_current_y_gate__y_infinity = 0.20000000000000001 + 0.80000000000000004 / (1 + exp(2.5 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current_y_gate__y_orig_deriv = (-var_chaste_interface__L_type_Ca_current_y_gate__y + var_L_type_Ca_current_y_gate__y_infinity) / var_L_type_Ca_current_y_gate__tau_y; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y = 0.001 * var_L_type_Ca_current_y_gate__y_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_second + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (3560 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10])) : (7692.3076923076924 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // dimensionless + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_fast_sodium_current_h_gate__h_orig_deriv = (-var_chaste_interface__fast_sodium_current_h_gate__h + var_fast_sodium_current_h_gate__h_inf) / var_fast_sodium_current_h_gate__tau_h; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * var_fast_sodium_current_h_gate__h_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (121.2 * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300 * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[10] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // dimensionless + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // second + const double var_fast_sodium_current_j_gate__j_orig_deriv = (-var_chaste_interface__fast_sodium_current_j_gate__j + var_fast_sodium_current_j_gate__j_inf) / var_fast_sodium_current_j_gate__tau_j; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * var_fast_sodium_current_j_gate__j_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_m_gate__E0_m = 47.130000000000003 + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((fabs(var_fast_sodium_current_m_gate__E0_m) < 1.0000000000000001e-5) ? (1000 / (0.10000000000000001 - 0.0050000000000000001 * var_fast_sodium_current_m_gate__E0_m)) : (320 * var_fast_sodium_current_m_gate__E0_m / (1 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 80 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_m_gate__m_orig_deriv = ((var_chaste_interface__membrane__V >= -90) ? ((1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m) : (0)); // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf = var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor = 1; // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr = 0.001 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21) + 0.027 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor; // second + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv = (-var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf) / var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr; // 1 / second + const double d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = 0.001 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv; // 1 / millisecond + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity = 1 / (1 + exp(1.8161764705882353 - 0.073529411764705885 * var_chaste_interface__membrane__V)); // dimensionless + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = 0.001 / (0.00013100000000000001 * (-10 + var_chaste_interface__membrane__V) / (-1 + exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V)) + 7.1899999999999999e-5 * (-10 + var_chaste_interface__membrane__V) / (1 - exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V))); // second + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv = (-var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks + var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity) / var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks; // 1 / second + const double d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = 0.001 * var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv; // 1 / millisecond + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_intracellular_ion_concentrations__Ca_ss_orig_deriv = (var_RyR_channel__J_rel * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_SS - var_intracellular_Ca_fluxes__J_xfer * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_SS - 0.5 * var_L_type_Ca_current__i_Ca * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_SS * var_membrane__F)) * var_intracellular_ion_concentrations__beta_SS; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss = 0.001 * var_intracellular_ion_concentrations__Ca_ss_orig_deriv; // millimolar / millisecond + const double var_L_type_Ca_current__i_Ca_K = 1 * pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_intracellular_ion_concentrations__Cai_orig_deriv = (-var_SERCA2a_pump__J_up - var_intracellular_Ca_fluxes__J_trpn + 0.5 * (-var_calcium_background_current__i_Ca_b - var_sarcolemmal_calcium_pump__i_p_Ca + 2 * var_Na_Ca_exchanger__i_NaCa) * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_myo * var_membrane__F) + var_intracellular_Ca_fluxes__J_xfer) * var_intracellular_ion_concentrations__beta_i; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai = 0.001 * var_intracellular_ion_concentrations__Cai_orig_deriv; // millimolar / millisecond + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[4] + 0.018329999999999999 * mParameters[5]) / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_intracellular_ion_concentrations__Nai_orig_deriv = -1 * (3 * var_Na_Ca_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Na_b) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai = 0.001 * var_intracellular_ion_concentrations__Nai_orig_deriv; // millimolar / millisecond + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 = 45.159999999999997 * exp(0.035770000000000003 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__beta_X_to1 = 98.900000000000006 * exp(-0.062370000000000002 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1) * var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_transient_outward_potassium_current_X_to1_gate__beta_X_to1; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1 = 0.001 * var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv; // 1 / millisecond + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_intracellular_ion_concentrations__Ki_orig_deriv = -1 * (-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_current__i_Ca_K + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki = 0.001 * var_intracellular_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond + const double var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 = 5.415 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1 = 5.415 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1) * var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 * var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1 = 0.001 * var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv; // 1 / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_membrane__V_orig_deriv = -1 * (var_L_type_Ca_current__i_Ca + var_L_type_Ca_current__i_Ca_K + var_Na_Ca_exchanger__i_NaCa + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_membrane__i_Stim + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) / mParameters[7]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + } + + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + mEvalF[1] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai; + mEvalF[2] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + mEvalF[3] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + mEvalF[4] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + mEvalF[5] = d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + mEvalF[6] = d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; + mEvalF[7] = d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1; + mEvalF[8] = d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1; + mEvalF[9] = d_dt_chaste_interface_var_L_type_Ca_current__O; + mEvalF[10] = d_dt_chaste_interface_var_L_type_Ca_current__O_Ca; + mEvalF[11] = d_dt_chaste_interface_var_L_type_Ca_current__C0; + mEvalF[12] = d_dt_chaste_interface_var_L_type_Ca_current__C1; + mEvalF[13] = d_dt_chaste_interface_var_L_type_Ca_current__C2; + mEvalF[14] = d_dt_chaste_interface_var_L_type_Ca_current__C3; + mEvalF[15] = d_dt_chaste_interface_var_L_type_Ca_current__C4; + mEvalF[16] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0; + mEvalF[17] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1; + mEvalF[18] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2; + mEvalF[19] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3; + mEvalF[20] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4; + mEvalF[21] = d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y; + mEvalF[22] = d_dt_chaste_interface_var_RyR_channel__P_O1; + mEvalF[23] = d_dt_chaste_interface_var_RyR_channel__P_O2; + mEvalF[24] = d_dt_chaste_interface_var_RyR_channel__P_C1; + mEvalF[25] = d_dt_chaste_interface_var_RyR_channel__P_C2; + mEvalF[26] = d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa; + mEvalF[27] = d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa; + mEvalF[28] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai; + mEvalF[29] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki; + mEvalF[30] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss; + mEvalF[31] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR; + mEvalF[32] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR; + + + mPartialF[0] = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[25] = EvaluatePartialDerivative25(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[26] = EvaluatePartialDerivative26(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[27] = EvaluatePartialDerivative27(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[28] = EvaluatePartialDerivative28(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[29] = EvaluatePartialDerivative29(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[30] = EvaluatePartialDerivative30(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[31] = EvaluatePartialDerivative31(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[32] = EvaluatePartialDerivative32(var_chaste_interface__environment__time_converted, rY, delta); + for (unsigned var=0; var& rY) + { + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + // Mathematics + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_K = 1 * pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[4] + 0.018329999999999999 * mParameters[5]) / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_membrane__V_orig_deriv = -1 * (var_L_type_Ca_current__i_Ca + var_L_type_Ca_current__i_Ca_K + var_Na_Ca_exchanger__i_NaCa + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_membrane__i_Stim + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) / mParameters[7]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + return d_dt_chaste_interface_var_membrane__V; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + const double var_x0 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x1 = var_x0 * mParameters[8] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x2 = var_x1 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x3 = pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); + const double var_x4 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); + const double var_x5 = var_x4 * mParameters[3]; + const double var_x6 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); + const double var_x7 = pow(mParameters[5], 3); + const double var_x8 = var_x6 * var_x7; + const double var_x9 = var_x8 * var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x10 = 1 + 0.20000000000000001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = 1 / (669921.875 + var_x7); + const double var_x13 = 1 / (1.3799999999999999 + mParameters[3]); + const double var_x14 = var_x12 * var_x13 * mParameters[14]; + const double var_x15 = var_x11 * var_x14; + const double var_x16 = var_x15 * (0.024332029034784559 * var_x9 + 0.013101861787960915 * var_x3 * var_x5); + const double var_x17 = 1 / var_chaste_interface__intracellular_ion_concentrations__Nai; + const double var_x18 = pow(var_x17, 1.5); + const double var_x19 = exp(-0.0037433890822745476 * var_chaste_interface__membrane__V); + const double var_x20 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x21 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5])) * exp(-var_x20); + const double var_x22 = 1 + 0.1245 * var_x19 + 0.036499999999999998 * var_x21; + const double var_x23 = mParameters[4] / (1.5 + mParameters[4]); + const double var_x24 = var_x23 * (0.0013663370150302097 * var_x21 + 0.00046605194074318115 * var_x19) / (pow(var_x22, 2) * (1 + 31.622776601683793 * var_x18)); + const double var_x25 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); + const double var_x26 = -1 + var_x25; + const double var_x27 = 1 / var_x26; + const double var_x28 = 0.001 * var_x25 - 0.34100000000000003 * mParameters[3]; + const double var_x29 = var_x27 * var_x28 * mParameters[6]; + const double var_x30 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_current_y_gate__y; + const double var_x32 = var_x29 * var_x31; + const double var_x33 = var_x25 * mParameters[6] * var_chaste_interface__membrane__V; + const double var_x34 = var_x27 * var_x33; + const double var_x35 = var_x31 * var_x34; + const double var_x36 = -var_x9 + var_x3 * var_x4 * mParameters[3]; + const double var_x37 = var_x14 * var_x36 * var_x6 / pow(var_x10, 2); + const double var_x38 = pow(var_x26, (-2)); + const double var_x39 = var_x28 * var_x33 * var_x38; + const double var_x40 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x41 = 1 + var_x40; + const double var_x42 = 1 / var_x41; + const double var_x43 = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * mParameters[13]; + const double var_x44 = mParameters[15] * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; + const double var_x45 = var_x44 * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1; + const double var_x46 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ki; + const double var_x47 = var_x46 * mParameters[4]; + const double var_x48 = log(var_x47); + const double var_x49 = -26.713760659695648 * var_x48 + var_chaste_interface__membrane__V; + const double var_x50 = exp(0.044600000000000001 * var_chaste_interface__membrane__V); + const double var_x51 = sqrt(mParameters[4]); + const double var_x52 = var_x51 * mParameters[12] / (1 + 1.4944999999999999 * var_x50); + const double var_x53 = var_x52 * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + const double var_x54 = 1 * mParameters[4]; + const double var_x55 = exp(0.056150836234118207 * var_chaste_interface__membrane__V - 1.5 * var_x48); + const double var_x56 = mParameters[11] / (13 + mParameters[4]); + const double var_x57 = var_x56 / (2 + var_x55); + const double var_x58 = var_x29 * var_chaste_interface__membrane__V; + const double var_x59 = 1 / (1 - 54518.063995566983 * var_x58); + const double var_x60 = exp(var_x20); + const double var_x61 = -1 + var_x60; + const double var_x62 = 1 / var_x61; + const double var_x63 = var_x60 * var_chaste_interface__intracellular_ion_concentrations__Ki; + const double var_x64 = var_x63 - mParameters[4]; + const double var_x65 = var_x59 * var_x62 * var_x64; + const double var_x66 = 2.0912447872899554e-6 * var_x65; + const double var_x67 = var_x49 * var_x55 * var_x56 / pow((1 + 0.5 * var_x55), 2); + const double var_x68 = var_x31 * var_x62 * var_chaste_interface__membrane__V; + const double var_x69 = var_x59 * var_x68; + const double var_x70 = var_x43 + var_x45 + 0.5 * var_x53 + 0.0022160000000000001 * var_x42 + var_x31 * var_x66 + var_x54 * var_x57 + 7.8283429051047759e-8 * var_x63 * var_x69 - 0.014037709058529552 * var_x67 * mParameters[4] + 0.00037056856187290968 * var_x40 * var_x49 / pow(var_x41, 2) + 7.035970683610309e-16 * var_x64 * var_x68 * (4.0816465109550109 * var_x34 + 54518.063995566983 * var_x29 - 4081.6465109550109 * var_x39) / pow((1.8342544226833014e-5 - var_x58), 2) - 7.8283429051047759e-8 * var_x31 * var_x59 * var_x60 * var_x64 * var_chaste_interface__membrane__V / pow(var_x61, 2) - 0.014921378387420543 * var_x49 * var_x50 * var_x51 * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr / pow((0.66912010705921721 + var_x50), 2); + const double var_x71 = 1 / mParameters[7]; + const double var_x72 = 0.001 * var_x71; + + partialF = -var_x72 * (0.0034841999999999998 + var_x2 + var_x70 + 5000 * var_x16 + 0.69299999999999995 * var_x24 + 1.0816363254030779 * var_x35 + 24.332029034784558 * var_x37 + 14447.286958825252 * var_x32 - 1081.636325403078 * var_x31 * var_x39); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; + // Units: millimolar; Initial value: 0.98 + double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; + // Units: millimolar; Initial value: 0.078 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_SERCA2a_pump__K_fb = 0.00016799999999999999; // millimolar + const double var_SERCA2a_pump__K_rb = 3.29; // millimolar + const double var_SERCA2a_pump__N_fb = 1.2; // dimensionless + const double var_SERCA2a_pump__N_rb = 1; // dimensionless + const double var_SERCA2a_pump__Vmaxf = 0.081299999999999997; // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = 0.318; // millimolar_per_second + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_intracellular_Ca_fluxes__HTRPN_tot = 0.14000000000000001; // dimensionless + const double var_intracellular_Ca_fluxes__LTRPN_tot = 0.070000000000000007; // dimensionless + const double var_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second + const double var_intracellular_Ca_fluxes__k_htrpn_plus = 20000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40; // per_second + const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__tau_xfer = 0.026700000000000002; // second + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = 0.050000000000000003; // millimolar + const double var_SERCA2a_pump__rb = pow((var_chaste_interface__intracellular_ion_concentrations__Ca_NSR / var_SERCA2a_pump__K_rb), var_SERCA2a_pump__N_rb); // dimensionless + const double var_SERCA2a_pump__fb = pow((var_chaste_interface__intracellular_ion_concentrations__Cai / var_SERCA2a_pump__K_fb), var_SERCA2a_pump__N_fb); // dimensionless + const double var_SERCA2a_pump__J_up = (var_SERCA2a_pump__Vmaxf * var_SERCA2a_pump__fb - var_SERCA2a_pump__Vmaxr * var_SERCA2a_pump__rb) * mParameters[1] / (1 + var_SERCA2a_pump__fb + var_SERCA2a_pump__rb); // millimolar_per_second + const double var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa * var_intracellular_Ca_fluxes__k_htrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) * var_intracellular_Ca_fluxes__k_htrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double var_intracellular_Ca_fluxes__J_HTRPNCa = var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_xfer = (-var_chaste_interface__intracellular_ion_concentrations__Cai + var_chaste_interface__intracellular_ion_concentrations__Ca_ss) / var_intracellular_Ca_fluxes__tau_xfer; // millimolar_per_second + const double var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa * var_intracellular_Ca_fluxes__k_ltrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) * var_intracellular_Ca_fluxes__k_ltrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double var_intracellular_Ca_fluxes__J_LTRPNCa = var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_trpn = var_intracellular_Ca_fluxes__HTRPN_tot * var_intracellular_Ca_fluxes__J_HTRPNCa + var_intracellular_Ca_fluxes__J_LTRPNCa * var_intracellular_Ca_fluxes__LTRPN_tot; // millimolar_per_second + const double var_intracellular_ion_concentrations__EGTA_tot = 0; // millimolar + const double var_intracellular_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = 0.00014999999999999999; // millimolar + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_intracellular_ion_concentrations__beta_i = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_intracellular_ion_concentrations__Cai_orig_deriv = (-var_SERCA2a_pump__J_up - var_intracellular_Ca_fluxes__J_trpn + 0.5 * (-var_calcium_background_current__i_Ca_b - var_sarcolemmal_calcium_pump__i_p_Ca + 2 * var_Na_Ca_exchanger__i_NaCa) * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_myo * var_membrane__F) + var_intracellular_Ca_fluxes__J_xfer) * var_intracellular_ion_concentrations__beta_i; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai = 0.001 * var_intracellular_ion_concentrations__Cai_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; + // Units: millimolar; Initial value: 0.98 + double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; + // Units: millimolar; Initial value: 0.078 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + const double var_x3 = pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); + const double var_x4 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); + const double var_x6 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); + const double var_x7 = pow(mParameters[5], 3); + const double var_x8 = var_x6 * var_x7; + const double var_x9 = var_x8 * var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x10 = 1 + 0.20000000000000001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = 1 / (669921.875 + var_x7); + const double var_x13 = 1 / (1.3799999999999999 + mParameters[3]); + const double var_x14 = var_x12 * var_x13 * mParameters[14]; + const double var_x15 = var_x11 * var_x14; + const double var_x36 = -var_x9 + var_x3 * var_x4 * mParameters[3]; + const double var_x73 = 5.0000000000000002e-5 + var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x74 = 1 / var_x73; + const double var_x75 = 1 / var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x76 = pow(var_x73, (-2)); + const double var_x97 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x98 = 1 + 0.00011900000000000002 / pow(var_x97, 2); + const double var_x99 = 1 / var_x98; + const double var_x100 = 0.001 * var_x99; + const double var_x101 = 0.0015381954438488301 * var_x74; + const double var_x102 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 0.19999999999999996); + const double var_x103 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 1.2); + const double var_x104 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); + const double var_x105 = 1 / (1 + 33855.471141425078 * var_x103 + 0.303951367781155 * var_x104); + const double var_x106 = var_x105 * mParameters[1]; + const double var_x107 = pow((2.9537323401073989e-5 + var_x103 + 8.9779098483507565e-6 * var_x104), (-2)); + const double var_x108 = 2752.4498037978587 * var_x103 - 0.096656534954407292 * var_x104; + const double var_x109 = 2800.0000000000005 * var_chaste_interface__intracellular_ion_concentrations__Cai; + + partialF = var_x100 * (-5637.4531835205999 - var_x101 + 2800.0000000000005 * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + 2800.0000000000005 * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa - 0.00015787156411954756 * var_x75 + 0.0015381954438488301 * var_x76 * var_chaste_interface__intracellular_ion_concentrations__Cai - 307.63908876976598 * var_x15 * var_x8 - 3302.9397645574304 * var_x102 * var_x106 + 3.5444788081288787e-5 * var_x102 * var_x107 * var_x108 * mParameters[1]) + 2.3800000000000004e-7 * (2.8000000000000003 * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa + 37.453183520599246 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss + 0.0092400000000000017 * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + 0.00015787156411954756 * log(var_x75 * mParameters[3]) - 37.453183520599246 * var_chaste_interface__intracellular_ion_concentrations__Cai - 1.181949379053441e-5 * var_chaste_interface__membrane__V - var_x101 * var_chaste_interface__intracellular_ion_concentrations__Cai - var_x106 * var_x108 - var_x109 * (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) - var_x109 * (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) + 307.63908876976598 * var_x11 * var_x12 * var_x13 * var_x36 * mParameters[14]) / (pow(var_x97, 3) * pow(var_x98, 2)); + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + + + // Mathematics + const double var_fast_sodium_current_m_gate__E0_m = 47.130000000000003 + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((fabs(var_fast_sodium_current_m_gate__E0_m) < 1.0000000000000001e-5) ? (1000 / (0.10000000000000001 - 0.0050000000000000001 * var_fast_sodium_current_m_gate__E0_m)) : (320 * var_fast_sodium_current_m_gate__E0_m / (1 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 80 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_m_gate__m_orig_deriv = ((var_chaste_interface__membrane__V >= -90) ? ((1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m) : (0)); // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x112 = exp(-0.090909090909090912 * var_chaste_interface__membrane__V); + const double var_x114 = var_chaste_interface__membrane__V >= -90; + const double var_x115 = 47.130000000000003 + var_chaste_interface__membrane__V; + const double var_x116 = (var_x114) && (fabs(var_x115) < 1.0000000000000001e-5); + const double var_x117 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x118 = exp(-4.7130000000000001 - var_x117); + const double var_x119 = 1 - var_x118; + const double var_x120 = 320 / var_x119; + const double var_x121 = 80 * var_x112; + + partialF = 0.001 * ((var_x116) ? (-var_x121 - 1000 / (-0.13565000000000002 - 0.0050000000000000001 * var_chaste_interface__membrane__V)) : ((var_x114) ? (-var_x121 - var_x115 * var_x120) : (0))); + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + + + // Mathematics + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_second + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (3560 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10])) : (7692.3076923076924 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // dimensionless + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_fast_sodium_current_h_gate__h_orig_deriv = (-var_chaste_interface__fast_sodium_current_h_gate__h + var_fast_sodium_current_h_gate__h_inf) / var_fast_sodium_current_h_gate__tau_h; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * var_fast_sodium_current_h_gate__h_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x122 = exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V); + const double var_x123 = var_chaste_interface__membrane__V < -40; + const double var_x124 = ((var_x123) ? (135 * var_x122) : (0)); + const double var_x125 = exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]); + const double var_x126 = exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10]); + const double var_x127 = exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V); + const double var_x128 = 1 + var_x127; + const double var_x129 = ((var_x123) ? (3560 * var_x125 + 310000 * var_x126) : (7692.3076923076924 / var_x128)); + + partialF = -0.001 * var_x124 - 0.001 * var_x129; + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + + + // Mathematics + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (121.2 * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300 * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[10] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // dimensionless + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // second + const double var_fast_sodium_current_j_gate__j_orig_deriv = (-var_chaste_interface__fast_sodium_current_j_gate__j + var_fast_sodium_current_j_gate__j_inf) / var_fast_sodium_current_j_gate__tau_j; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * var_fast_sodium_current_j_gate__j_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x117 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x123 = var_chaste_interface__membrane__V < -40; + const double var_x136 = exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V); + const double var_x137 = 1 + var_x136; + const double var_x138 = exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V); + const double var_x139 = var_x138 / var_x137; + const double var_x140 = exp(-3.2000000000000002 - var_x117 + 0.10000000000000001 * mParameters[10]); + const double var_x141 = 1 + var_x140; + const double var_x142 = exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V); + const double var_x143 = var_x142 / var_x141; + const double var_x144 = ((var_x123) ? (121.2 * var_x139) : (300 * var_x143)); + const double var_x145 = 37.780000000000001 + var_chaste_interface__membrane__V; + const double var_x146 = exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]); + const double var_x147 = exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V); + const double var_x148 = -127140 * var_x146 - 3.4740000000000003e-5 * var_x147; + const double var_x149 = exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]); + const double var_x150 = 1 + var_x149; + const double var_x151 = 1000 / var_x150; + const double var_x152 = var_x148 * var_x151; + const double var_x153 = ((var_x123) ? (var_x145 * var_x152) : (0)); + + partialF = -0.001 * var_x144 - 0.001 * var_x153; + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + + + // Mathematics + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf = var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor = 1; // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr = 0.001 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21) + 0.027 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor; // second + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv = (-var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf) / var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr; // 1 / second + const double d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = 0.001 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x158 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); + const double var_x159 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); + const double var_x160 = var_x158 + var_x159; + const double var_x161 = 1 / var_x160; + const double var_x162 = 1 / (0.027 + 0.001 * var_x161); + + partialF = -0.001 * var_x162; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + + + // Mathematics + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity = 1 / (1 + exp(1.8161764705882353 - 0.073529411764705885 * var_chaste_interface__membrane__V)); // dimensionless + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = 0.001 / (0.00013100000000000001 * (-10 + var_chaste_interface__membrane__V) / (-1 + exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V)) + 7.1899999999999999e-5 * (-10 + var_chaste_interface__membrane__V) / (1 - exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V))); // second + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv = (-var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks + var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity) / var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks; // 1 / second + const double d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = 0.001 * var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x167 = exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V); + const double var_x168 = -1 + var_x167; + const double var_x169 = 1 / var_x168; + const double var_x170 = exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V); + const double var_x171 = 1 - var_x170; + const double var_x172 = 1 / var_x171; + const double var_x173 = -10 + var_chaste_interface__membrane__V; + + partialF = -0.00013100000000000001 * var_x169 * var_x173 - 7.1899999999999999e-5 * var_x172 * var_x173; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + + + // Mathematics + const double var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 = 45.159999999999997 * exp(0.035770000000000003 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__beta_X_to1 = 98.900000000000006 * exp(-0.062370000000000002 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1) * var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_transient_outward_potassium_current_X_to1_gate__beta_X_to1; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1 = 0.001 * var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x174 = exp(-0.062370000000000002 * var_chaste_interface__membrane__V); + const double var_x175 = exp(0.035770000000000003 * var_chaste_interface__membrane__V); + + partialF = -0.045159999999999999 * var_x175 - 0.098900000000000002 * var_x174; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + + + // Mathematics + const double var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 = 5.415 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1 = 5.415 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1) * var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 * var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1 = 0.001 * var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x176 = 0.20000000000000001 * var_chaste_interface__membrane__V; + const double var_x177 = 6.7000000000000002 + var_x176; + const double var_x178 = exp(var_x177); + const double var_x179 = 1 + 0.051334999999999999 * var_x178; + const double var_x180 = var_x178 / var_x179; + const double var_x182 = exp(-var_x177); + const double var_x183 = 1 + 0.051334999999999999 * var_x182; + const double var_x184 = var_x182 / var_x183; + + partialF = -0.0054149999999999997 * var_x180 - 0.0054149999999999997 * var_x184; + } + else + { + const double y_save = rY[8]; + rY[8] += delta; + const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[8])/delta; + rY[8] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + + + // Mathematics + const double var_L_type_Ca_current__f = 300; // per_second + const double var_L_type_Ca_current__g = 2000; // per_second + const double var_L_type_Ca_current__O_orig_deriv = var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__f - var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__O = 0.001 * var_L_type_Ca_current__O_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__O; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -2; + } + else + { + const double y_save = rY[9]; + rY[9] += delta; + const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[9])/delta; + rY[9] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + + + // Mathematics + const double var_L_type_Ca_current__fprime = 7; // per_second + const double var_L_type_Ca_current__gprime = 7000; // per_second + const double var_L_type_Ca_current__O_Ca_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__fprime - var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__O_Ca = 0.001 * var_L_type_Ca_current__O_Ca_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__O_Ca; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -7; + } + else + { + const double y_save = rY[10]; + rY[10] += delta; + const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[10])/delta; + rY[10] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; + // Units: dimensionless; Initial value: 0.997208 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; + // Units: dimensionless; Initial value: 0.00272826 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C0_orig_deriv = var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__omega - (4 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C0; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C0 = 0.001 * var_L_type_Ca_current__C0_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C0; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x189 = 1.6000000000000001 * var_x187; + const double var_x190 = 0.10375 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -var_x189 - var_x190; + } + else + { + const double y_save = rY[11]; + rY[11] += delta; + const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[11])/delta; + rY[11] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; + // Units: dimensionless; Initial value: 0.997208 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C1_orig_deriv = -(3 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__a * var_L_type_Ca_current__gamma + var_L_type_Ca_current__beta) * var_chaste_interface__L_type_Ca_current__C1 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__beta + 4 * var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__omega / var_L_type_Ca_current__b; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C1 = 0.001 * var_L_type_Ca_current__C1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x191 = 0.050000000000000003 * var_x185; + const double var_x195 = 1.2 * var_x187; + const double var_x196 = 0.20749999999999999 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -var_x191 - var_x195 - var_x196; + } + else + { + const double y_save = rY[12]; + rY[12] += delta; + const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[12])/delta; + rY[12] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C2_orig_deriv = -(2 * var_L_type_Ca_current__alpha + 2 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 2) * var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C2 + 3 * var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__alpha + 3 * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C2 = 0.001 * var_L_type_Ca_current__C2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C2; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x197 = 0.10000000000000001 * var_x185; + const double var_x200 = 0.80000000000000004 * var_x187; + const double var_x201 = 0.41499999999999998 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -var_x197 - var_x200 - var_x201; + } + else + { + const double y_save = rY[13]; + rY[13] += delta; + const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[13])/delta; + rY[13] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C3_orig_deriv = -(3 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 3) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__alpha) * var_chaste_interface__L_type_Ca_current__C3 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__alpha + 4 * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C3 = 0.001 * var_L_type_Ca_current__C3_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C3; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x202 = 0.14999999999999999 * var_x185; + const double var_x205 = 0.40000000000000002 * var_x187; + const double var_x206 = 0.82999999999999996 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -var_x202 - var_x205 - var_x206; + } + else + { + const double y_save = rY[14]; + rY[14] += delta; + const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[14])/delta; + rY[14] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__f = 300; // per_second + const double var_L_type_Ca_current__g = 2000; // per_second + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C4_orig_deriv = var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g - (4 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 4) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__f) * var_chaste_interface__L_type_Ca_current__C4 + var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C4 = 0.001 * var_L_type_Ca_current__C4_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C4; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x207 = 0.20000000000000001 * var_x185; + const double var_x209 = 1.6599999999999999 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -0.29999999999999999 - var_x207 - var_x209; + } + else + { + const double y_save = rY[15]; + rY[15] += delta; + const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[15])/delta; + rY[15] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; + // Units: dimensionless; Initial value: 0.997208 + double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; + // Units: dimensionless; Initial value: 0.00272826 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca0_orig_deriv = var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__gamma + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__beta_b - (4 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega) * var_chaste_interface__L_type_Ca_current__C_Ca0; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0 = 0.001 * var_L_type_Ca_current__C_Ca0_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x212 = 3.2000000000000002 * var_x187; + + partialF = -0.01 - var_x212; + } + else + { + const double y_save = rY[16]; + rY[16] += delta; + const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[16])/delta; + rY[16] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; + // Units: dimensionless; Initial value: 0.00272826 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca1_orig_deriv = -(3 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega / var_L_type_Ca_current__b + var_L_type_Ca_current__beta_b) * var_chaste_interface__L_type_Ca_current__C_Ca1 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__beta_b + 4 * var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__a * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1 = 0.001 * var_L_type_Ca_current__C_Ca1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x213 = 0.025000000000000001 * var_x185; + const double var_x214 = 2.3999999999999999 * var_x187; + + partialF = -0.0050000000000000001 - var_x213 - var_x214; + } + else + { + const double y_save = rY[17]; + rY[17] += delta; + const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[17])/delta; + rY[17] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca2_orig_deriv = -(2 * var_L_type_Ca_current__alpha_a + 2 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2)) * var_chaste_interface__L_type_Ca_current__C_Ca2 + 3 * var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__alpha_a + 3 * var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 2) * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2 = 0.001 * var_L_type_Ca_current__C_Ca2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x189 = 1.6000000000000001 * var_x187; + const double var_x191 = 0.050000000000000003 * var_x185; + + partialF = -0.0025000000000000001 - var_x189 - var_x191; + } + else + { + const double y_save = rY[18]; + rY[18] += delta; + const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[18])/delta; + rY[18] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca3_orig_deriv = -(3 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3) + var_L_type_Ca_current__alpha_a) * var_chaste_interface__L_type_Ca_current__C_Ca3 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__alpha_a + 4 * var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 3) * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3 = 0.001 * var_L_type_Ca_current__C_Ca3_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x187 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x200 = 0.80000000000000004 * var_x187; + const double var_x215 = 0.074999999999999997 * var_x185; + + partialF = -0.00125 - var_x200 - var_x215; + } + else + { + const double y_save = rY[19]; + rY[19] += delta; + const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[19])/delta; + rY[19] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__fprime = 7; // per_second + const double var_L_type_Ca_current__gprime = 7000; // per_second + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca4_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime - (4 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4) + var_L_type_Ca_current__fprime) * var_chaste_interface__L_type_Ca_current__C_Ca4 + pow(var_L_type_Ca_current__a, 4) * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4 = 0.001 * var_L_type_Ca_current__C_Ca4_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x185 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x197 = 0.10000000000000001 * var_x185; + + partialF = -0.0076249999999999998 - var_x197; + } + else + { + const double y_save = rY[20]; + rY[20] += delta; + const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[20])/delta; + rY[20] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + + + // Mathematics + const double var_L_type_Ca_current_y_gate__tau_y = 0.02 + 0.59999999999999998 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // second + const double var_L_type_Ca_current_y_gate__y_infinity = 0.20000000000000001 + 0.80000000000000004 / (1 + exp(2.5 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current_y_gate__y_orig_deriv = (-var_chaste_interface__L_type_Ca_current_y_gate__y + var_L_type_Ca_current_y_gate__y_infinity) / var_L_type_Ca_current_y_gate__tau_y; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y = 0.001 * var_L_type_Ca_current_y_gate__y_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x219 = exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V); + const double var_x220 = 1 + var_x219; + const double var_x221 = 1 / var_x220; + const double var_x222 = 1 / (0.02 + 0.59999999999999998 * var_x221); + + partialF = -0.001 * var_x222; + } + else + { + const double y_save = rY[21]; + rY[21] += delta; + const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[21])/delta; + rY[21] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_C1 = rY[24]; + // Units: dimensionless; Initial value: 0.47 + double var_chaste_interface__RyR_channel__P_C2 = rY[25]; + // Units: dimensionless; Initial value: 0.53 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_RyR_channel__k_a_minus = 576; // per_second + const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second + const double var_RyR_channel__k_b_minus = 1930; // per_second + const double var_RyR_channel__k_b_plus = 4050000000.0; // millimolar3_per_second + const double var_RyR_channel__k_c_minus = 0.80000000000000004; // per_second + const double var_RyR_channel__k_c_plus = 100; // per_second + const double var_RyR_channel__m = 3; // dimensionless + const double var_RyR_channel__n = 4; // dimensionless + const double var_RyR_channel__P_O1_orig_deriv = var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus + var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_O1 = 0.001 * var_RyR_channel__P_O1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__P_O1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x223 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 3); + const double var_x224 = 4050000 * var_x223; + + partialF = -0.67600000000000005 - var_x224; + } + else + { + const double y_save = rY[22]; + rY[22] += delta; + const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[22])/delta; + rY[22] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_RyR_channel__k_b_minus = 1930; // per_second + const double var_RyR_channel__k_b_plus = 4050000000.0; // millimolar3_per_second + const double var_RyR_channel__m = 3; // dimensionless + const double var_RyR_channel__P_O2_orig_deriv = -var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_O2 = 0.001 * var_RyR_channel__P_O2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__P_O2; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -1.9299999999999999; + } + else + { + const double y_save = rY[23]; + rY[23] += delta; + const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[23])/delta; + rY[23] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_C1 = rY[24]; + // Units: dimensionless; Initial value: 0.47 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_RyR_channel__k_a_minus = 576; // per_second + const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second + const double var_RyR_channel__n = 4; // dimensionless + const double var_RyR_channel__P_C1_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_C1 = 0.001 * var_RyR_channel__P_C1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__P_C1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x225 = 12150000000.0 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 4); + + partialF = -var_x225; + } + else + { + const double y_save = rY[24]; + rY[24] += delta; + const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[24])/delta; + rY[24] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_C2 = rY[25]; + // Units: dimensionless; Initial value: 0.53 + + + // Mathematics + const double var_RyR_channel__k_c_minus = 0.80000000000000004; // per_second + const double var_RyR_channel__k_c_plus = 100; // per_second + const double var_RyR_channel__P_C2_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus - var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_C2 = 0.001 * var_RyR_channel__P_C2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__P_C2; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -0.00080000000000000004; + } + else + { + const double y_save = rY[25]; + rY[25] += delta; + const double temp = EvaluateYDerivative25(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[25])/delta; + rY[25] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; + // Units: millimolar; Initial value: 0.98 + + + // Mathematics + const double var_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second + const double var_intracellular_Ca_fluxes__k_htrpn_plus = 20000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa * var_intracellular_Ca_fluxes__k_htrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) * var_intracellular_Ca_fluxes__k_htrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa = 0.001 * var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + + + + partialF = -6.6000000000000005e-5 - 20 * var_chaste_interface__intracellular_ion_concentrations__Cai; + } + else + { + const double y_save = rY[26]; + rY[26] += delta; + const double temp = EvaluateYDerivative26(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[26])/delta; + rY[26] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative27(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; + // Units: millimolar; Initial value: 0.078 + + + // Mathematics + const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40; // per_second + const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa * var_intracellular_Ca_fluxes__k_ltrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) * var_intracellular_Ca_fluxes__k_ltrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa = 0.001 * var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative27(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + + + + partialF = -0.040000000000000001 - 40 * var_chaste_interface__intracellular_ion_concentrations__Cai; + } + else + { + const double y_save = rY[27]; + rY[27] += delta; + const double temp = EvaluateYDerivative27(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[27])/delta; + rY[27] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative28(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + + + // Mathematics + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_intracellular_ion_concentrations__Nai_orig_deriv = -1 * (3 * var_Na_Ca_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Na_b) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai = 0.001 * var_intracellular_ion_concentrations__Nai_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative28(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + + + const double var_x0 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x1 = var_x0 * mParameters[8] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x2 = var_x1 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x4 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); + const double var_x5 = var_x4 * mParameters[3]; + const double var_x6 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); + const double var_x7 = pow(mParameters[5], 3); + const double var_x10 = 1 + 0.20000000000000001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = 1 / (669921.875 + var_x7); + const double var_x13 = 1 / (1.3799999999999999 + mParameters[3]); + const double var_x14 = var_x12 * var_x13 * mParameters[14]; + const double var_x15 = var_x11 * var_x14; + const double var_x17 = 1 / var_chaste_interface__intracellular_ion_concentrations__Nai; + const double var_x18 = pow(var_x17, 1.5); + const double var_x19 = exp(-0.0037433890822745476 * var_chaste_interface__membrane__V); + const double var_x20 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x21 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5])) * exp(-var_x20); + const double var_x22 = 1 + 0.1245 * var_x19 + 0.036499999999999998 * var_x21; + const double var_x23 = mParameters[4] / (1.5 + mParameters[4]); + const double var_x93 = var_x17 * var_x18 * var_x23 / (var_x22 * pow((0.031622776601683791 + var_x18), 2)); + const double var_x94 = var_x15 * var_x5 * pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 2); + const double var_x95 = 0.082812658045056511 * var_x17 + 26.713760659695648 * var_x17 * var_x2; + const double var_x228 = 6.1527817753953199e-5 * mParameters[2]; + + partialF = -var_x228 * (var_x95 + 45000 * var_x94 + 0.098615628832350907 * var_x93); + } + else + { + const double y_save = rY[28]; + rY[28] += delta; + const double temp = EvaluateYDerivative28(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[28])/delta; + rY[28] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative29(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + // Mathematics + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_L_type_Ca_current__i_Ca_K = 1 * pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[4] + 0.018329999999999999 * mParameters[5]) / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_intracellular_ion_concentrations__Ki_orig_deriv = -1 * (-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_current__i_Ca_K + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki = 0.001 * var_intracellular_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative29(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + const double var_x20 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x25 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); + const double var_x26 = -1 + var_x25; + const double var_x27 = 1 / var_x26; + const double var_x28 = 0.001 * var_x25 - 0.34100000000000003 * mParameters[3]; + const double var_x29 = var_x27 * var_x28 * mParameters[6]; + const double var_x30 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_current_y_gate__y; + const double var_x40 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x41 = 1 + var_x40; + const double var_x42 = 1 / var_x41; + const double var_x43 = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * mParameters[13]; + const double var_x44 = mParameters[15] * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; + const double var_x45 = var_x44 * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1; + const double var_x46 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ki; + const double var_x47 = var_x46 * mParameters[4]; + const double var_x48 = log(var_x47); + const double var_x49 = -26.713760659695648 * var_x48 + var_chaste_interface__membrane__V; + const double var_x50 = exp(0.044600000000000001 * var_chaste_interface__membrane__V); + const double var_x51 = sqrt(mParameters[4]); + const double var_x52 = var_x51 * mParameters[12] / (1 + 1.4944999999999999 * var_x50); + const double var_x53 = var_x52 * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + const double var_x55 = exp(0.056150836234118207 * var_chaste_interface__membrane__V - 1.5 * var_x48); + const double var_x56 = mParameters[11] / (13 + mParameters[4]); + const double var_x57 = var_x56 / (2 + var_x55); + const double var_x58 = var_x29 * var_chaste_interface__membrane__V; + const double var_x59 = 1 / (1 - 54518.063995566983 * var_x58); + const double var_x60 = exp(var_x20); + const double var_x61 = -1 + var_x60; + const double var_x62 = 1 / var_x61; + const double var_x67 = var_x49 * var_x55 * var_x56 / pow((1 + 0.5 * var_x55), 2); + const double var_x68 = var_x31 * var_x62 * var_chaste_interface__membrane__V; + const double var_x69 = var_x59 * var_x68; + const double var_x84 = 1 / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai); + const double var_x91 = var_x43 * var_x84; + const double var_x96 = 26.713760659695648 * var_x91 + 13.356880329847824 * var_x46 * var_x53 + 26.713760659695648 * var_x45 * var_x46 + 26.713760659695648 * var_x47 * var_x57 + 0.05919769362188556 * var_x42 * var_x46 + 2.0912447872899554e-6 * var_x60 * var_x69 - 0.375 * var_x47 * var_x67; + const double var_x228 = 6.1527817753953199e-5 * mParameters[2]; + + partialF = -var_x228 * var_x96; + } + else + { + const double y_save = rY[29]; + rY[29] += delta; + const double temp = EvaluateYDerivative29(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[29])/delta; + rY[29] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative30(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + const double var_intracellular_Ca_fluxes__tau_xfer = 0.026700000000000002; // second + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = 0.050000000000000003; // millimolar + const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_xfer = (-var_chaste_interface__intracellular_ion_concentrations__Cai + var_chaste_interface__intracellular_ion_concentrations__Ca_ss) / var_intracellular_Ca_fluxes__tau_xfer; // millimolar_per_second + const double var_intracellular_ion_concentrations__EGTA_tot = 0; // millimolar + const double var_intracellular_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = 0.00014999999999999999; // millimolar + const double var_intracellular_ion_concentrations__V_JSR = 1.6e-7; // micro_litre + const double var_intracellular_ion_concentrations__V_SS = 1.2e-9; // micro_litre + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_intracellular_ion_concentrations__beta_SS = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_intracellular_ion_concentrations__Ca_ss_orig_deriv = (var_RyR_channel__J_rel * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_SS - var_intracellular_Ca_fluxes__J_xfer * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_SS - 0.5 * var_L_type_Ca_current__i_Ca * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_SS * var_membrane__F)) * var_intracellular_ion_concentrations__beta_SS; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss = 0.001 * var_intracellular_ion_concentrations__Ca_ss_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative30(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + + + const double var_x25 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); + const double var_x26 = -1 + var_x25; + const double var_x27 = 1 / var_x26; + const double var_x28 = 0.001 * var_x25 - 0.34100000000000003 * mParameters[3]; + const double var_x29 = var_x27 * var_x28 * mParameters[6]; + const double var_x30 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_current_y_gate__y; + const double var_x58 = var_x29 * var_chaste_interface__membrane__V; + const double var_x233 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + const double var_x234 = 1 + 0.00011900000000000002 / pow(var_x233, 2); + const double var_x235 = 1 / var_x234; + const double var_x236 = 0.001 * var_x235; + const double var_x240 = -var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; + const double var_x243 = var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2; + const double var_x244 = var_x243 * mParameters[0]; + + partialF = var_x236 * (-806491.88514357049 - 133.33333333333334 * var_x244) + 2.3800000000000004e-7 * (806491.88514357049 * var_chaste_interface__intracellular_ion_concentrations__Cai - 806491.88514357049 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss - 9570598.0870152581 * var_x31 * var_x58 + 133.33333333333334 * var_x240 * var_x243 * mParameters[0]) / (pow(var_x233, 3) * pow(var_x234, 2)); + } + else + { + const double y_save = rY[30]; + rY[30] += delta; + const double temp = EvaluateYDerivative30(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[30])/delta; + rY[30] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative31(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second + const double var_intracellular_ion_concentrations__CSQN_tot = 15; // millimolar + const double var_intracellular_Ca_fluxes__J_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_chaste_interface__intracellular_ion_concentrations__Ca_NSR) / var_intracellular_Ca_fluxes__tau_tr; // millimolar_per_second + const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second + const double var_intracellular_ion_concentrations__K_mCSQN = 0.80000000000000004; // millimolar + const double var_intracellular_ion_concentrations__beta_JSR = 1 / (1 + var_intracellular_ion_concentrations__CSQN_tot * var_intracellular_ion_concentrations__K_mCSQN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_intracellular_ion_concentrations__K_mCSQN), 2)); // dimensionless + const double var_intracellular_ion_concentrations__Ca_JSR_orig_deriv = (-var_RyR_channel__J_rel + var_intracellular_Ca_fluxes__J_tr) * var_intracellular_ion_concentrations__beta_JSR; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR = 0.001 * var_intracellular_ion_concentrations__Ca_JSR_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative31(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + const double var_x240 = -var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; + const double var_x243 = var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2; + const double var_x244 = var_x243 * mParameters[0]; + const double var_x245 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; + const double var_x246 = pow(var_x245, (-2)); + const double var_x247 = 1 / (1 + 12 * var_x246); + const double var_x248 = 0.001 * var_x247; + + partialF = var_x248 * (-1740.0382808421784 - var_x244) + 0.00016666666666666666 * (1740.0382808421784 * var_chaste_interface__intracellular_ion_concentrations__Ca_NSR - 1740.0382808421784 * var_chaste_interface__intracellular_ion_concentrations__Ca_JSR - var_x240 * var_x244) / (pow(var_x245, 3) * pow((0.083333333333333329 + var_x246), 2)); + } + else + { + const double y_save = rY[31]; + rY[31] += delta; + const double temp = EvaluateYDerivative31(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[31])/delta; + rY[31] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative32(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + const double var_SERCA2a_pump__K_fb = 0.00016799999999999999; // millimolar + const double var_SERCA2a_pump__K_rb = 3.29; // millimolar + const double var_SERCA2a_pump__N_fb = 1.2; // dimensionless + const double var_SERCA2a_pump__N_rb = 1; // dimensionless + const double var_SERCA2a_pump__Vmaxf = 0.081299999999999997; // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = 0.318; // millimolar_per_second + const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second + const double var_SERCA2a_pump__rb = pow((var_chaste_interface__intracellular_ion_concentrations__Ca_NSR / var_SERCA2a_pump__K_rb), var_SERCA2a_pump__N_rb); // dimensionless + const double var_intracellular_Ca_fluxes__J_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_chaste_interface__intracellular_ion_concentrations__Ca_NSR) / var_intracellular_Ca_fluxes__tau_tr; // millimolar_per_second + const double var_SERCA2a_pump__fb = pow((var_chaste_interface__intracellular_ion_concentrations__Cai / var_SERCA2a_pump__K_fb), var_SERCA2a_pump__N_fb); // dimensionless + const double var_SERCA2a_pump__J_up = (var_SERCA2a_pump__Vmaxf * var_SERCA2a_pump__fb - var_SERCA2a_pump__Vmaxr * var_SERCA2a_pump__rb) * mParameters[1] / (1 + var_SERCA2a_pump__fb + var_SERCA2a_pump__rb); // millimolar_per_second + const double var_intracellular_ion_concentrations__V_JSR = 1.6e-7; // micro_litre + const double var_intracellular_ion_concentrations__V_NSR = 2.0999999999999998e-6; // micro_litre + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_intracellular_ion_concentrations__Ca_NSR_orig_deriv = var_SERCA2a_pump__J_up * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_NSR - var_intracellular_Ca_fluxes__J_tr * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_NSR; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR = 0.001 * var_intracellular_ion_concentrations__Ca_NSR_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative32(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + const double var_x103 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 1.2); + const double var_x104 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); + const double var_x105 = 1 / (1 + 33855.471141425078 * var_x103 + 0.303951367781155 * var_x104); + const double var_x106 = var_x105 * mParameters[1]; + const double var_x107 = pow((2.9537323401073989e-5 + var_x103 + 8.9779098483507565e-6 * var_x104), (-2)); + const double var_x108 = 2752.4498037978587 * var_x103 - 0.096656534954407292 * var_x104; + const double var_x110 = var_x107 * var_x108 * mParameters[1]; + + partialF = -0.13257434520702313 - 0.0011893356491532784 * var_x106 - 3.2630189260961817e-12 * var_x110; + } + else + { + const double y_save = rY[32]; + rY[32] += delta; + const double temp = EvaluateYDerivative32(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[32])/delta; + rY[32] = y_save; + } + return partialF; + } + + std::vector Dynamicwinslow_model_1999FromCellMLGRL2::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + + // Mathematics + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current_y_gate__tau_y = 0.02 + 0.59999999999999998 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // second + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_second + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (3560 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10])) : (7692.3076923076924 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (121.2 * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300 * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[10] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // second + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca; // uA_per_cm2 + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[4] + 0.018329999999999999 * mParameters[5]) / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_activating_delayed_rectifiyer_K_current__i_Ks; // uA_per_cm2 + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_transient_outward_potassium_current__i_to1_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_potassium_current__i_to1; // uA_per_cm2 + + std::vector dqs(13); + dqs[0] = var_RyR_channel__J_rel; + dqs[1] = var_L_type_Ca_current__i_Ca_converted; + dqs[2] = var_L_type_Ca_current_y_gate__tau_y; + dqs[3] = var_fast_sodium_current__i_Na_converted; + dqs[4] = var_fast_sodium_current_h_gate__tau_h; + dqs[5] = var_fast_sodium_current_j_gate__tau_j; + dqs[6] = var_time_independent_potassium_current__i_K1_converted; + dqs[7] = var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted; + dqs[8] = var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted; + dqs[9] = var_Na_Ca_exchanger__i_NaCa_converted; + dqs[10] = var_membrane__i_Stim_converted; + dqs[11] = var_transient_outward_potassium_current__i_to1_converted; + dqs[12] = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "winslow_model_1999"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-96.1638); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8e-05); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0328302); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.988354); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99254); + + // rY[5]: + this->mVariableNames.push_back("rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.51); + + // rY[6]: + this->mVariableNames.push_back("slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.264); + + // rY[7]: + this->mVariableNames.push_back("transient_outward_potassium_current_X_to1_gate__X_to1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.63); + + // rY[8]: + this->mVariableNames.push_back("transient_outward_potassium_current_Y_to1_gate__Y_to1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.84546e-21); + + // rY[10]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[11]: + this->mVariableNames.push_back("L_type_Ca_current__C0"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.997208); + + // rY[12]: + this->mVariableNames.push_back("L_type_Ca_current__C1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.38897e-05); + + // rY[13]: + this->mVariableNames.push_back("L_type_Ca_current__C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.535e-09); + + // rY[14]: + this->mVariableNames.push_back("L_type_Ca_current__C3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.63909e-14); + + // rY[15]: + this->mVariableNames.push_back("L_type_Ca_current__C4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.56337e-20); + + // rY[16]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca0"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00272826); + + // rY[17]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.99215e-07); + + // rY[18]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.71989e-11); + + // rY[19]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.87031e-15); + + // rY[20]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(4.59752e-20); + + // rY[21]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.798); + + // rY[22]: + this->mVariableNames.push_back("RyR_channel__P_O1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[23]: + this->mVariableNames.push_back("RyR_channel__P_O2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[24]: + this->mVariableNames.push_back("RyR_channel__P_C1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.47); + + // rY[25]: + this->mVariableNames.push_back("RyR_channel__P_C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.53); + + // rY[26]: + this->mVariableNames.push_back("intracellular_Ca_fluxes__HTRPNCa"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.98); + + // rY[27]: + this->mVariableNames.push_back("intracellular_Ca_fluxes__LTRPNCa"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.078); + + // rY[28]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(10.0); + + // rY[29]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(157.8); + + // rY[30]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00011); + + // rY[31]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.257); + + // rY[32]: + this->mVariableNames.push_back("NSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.257); + + // mParameters[0]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_second"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[2]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[3]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("cm_per_second"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_second"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicwinslow_model_1999FromCellMLGRL2) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicwinslow_model_1999FromCellMLGRL2(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999--sympy_1_14.cpp new file mode 100644 index 00000000..d2432c65 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2/dynamic_winslow_model_1999--sympy_1_14.cpp @@ -0,0 +1,3442 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: winslow_model_1999 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenSecondOrder) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_winslow_model_1999.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Dynamicwinslow_model_1999FromCellMLGRL2::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -21.126799999999999 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = 2; // millisecond + const double var_chaste_interface__membrane__stim_period_converted = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start_converted = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration_converted, + var_chaste_interface__membrane__stim_period_converted, + var_chaste_interface__membrane__stim_start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamicwinslow_model_1999FromCellMLGRL2::Dynamicwinslow_model_1999FromCellMLGRL2(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 33, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1800; // (var_RyR_channel__v1) [per_second] + this->mParameters[1] = 1; // (var_SERCA2a_pump__K_SR) [dimensionless] + this->mParameters[2] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[3] = 2; // (var_standard_ionic_concentrations__Cao) [millimolar] + this->mParameters[4] = 4; // (var_standard_ionic_concentrations__Ko) [millimolar] + this->mParameters[5] = 138; // (var_standard_ionic_concentrations__Nao) [millimolar] + this->mParameters[6] = 0.00031250000000000001; // (var_L_type_Ca_current__P_Ca) [cm_per_second] + this->mParameters[7] = 0.001; // (var_membrane__C_sc) [microF_per_cm2] + this->mParameters[8] = 12.800000000000001; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[9] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[10] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[11] = 2.7999999999999998; // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = 0.0033999999999999998; // (var_rapid_activating_delayed_rectifiyer_K_current__g_Kr) [milliS_per_microF] + this->mParameters[13] = 0.0027133999999999999; // (var_slow_activating_delayed_rectifiyer_K_current__g_Ks) [milliS_per_microF] + this->mParameters[14] = 0.29999999999999999; // (var_Na_Ca_exchanger__K_NaCa) [microA_per_microF] + this->mParameters[15] = 0.23815; // (var_transient_outward_potassium_current__g_to1) [milliS_per_microF] + } + + Dynamicwinslow_model_1999FromCellMLGRL2::~Dynamicwinslow_model_1999FromCellMLGRL2() + { + } + + + void Dynamicwinslow_model_1999FromCellMLGRL2::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 33; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca; // uA_per_cm2 + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_K = 1 * pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[4] + 0.018329999999999999 * mParameters[5]) / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_activating_delayed_rectifiyer_K_current__i_Ks; // uA_per_cm2 + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_transient_outward_potassium_current__i_to1_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_potassium_current__i_to1; // uA_per_cm2 + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca_K + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Ca_b + HeartConfig::Instance()->GetCapacitance() * var_plateau_potassium_current__i_Kp + HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump__i_p_Ca + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Na_b + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_current__i_Ca_converted + var_Na_Ca_exchanger__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted + var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_potassium_current__i_to1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicwinslow_model_1999FromCellMLGRL2::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + const double yinit = rY[v_index]; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_K = 1 * pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[4] + 0.018329999999999999 * mParameters[5]) / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_membrane__V_orig_deriv = -1 * (var_L_type_Ca_current__i_Ca + var_L_type_Ca_current__i_Ca_K + var_Na_Ca_exchanger__i_NaCa + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_membrane__i_Stim + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) / mParameters[7]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + double evalF = d_dt_chaste_interface_var_membrane__V; + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += 0.5*evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*0.5*mDt)-1.0); + } + + rY[v_index] = yinit; + evalF = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + mEvalF[0] = evalF; + partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] = yinit + evalF*mDt; + } + else + { + rY[v_index] = yinit + (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Dynamicwinslow_model_1999FromCellMLGRL2::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const double delta=1e-8; + const unsigned size = GetNumberOfStateVariables(); + mYInit = rY; + double y_save; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; + // Units: dimensionless; Initial value: 0.997208 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; + // Units: dimensionless; Initial value: 0.00272826 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_C1 = rY[24]; + // Units: dimensionless; Initial value: 0.47 + double var_chaste_interface__RyR_channel__P_C2 = rY[25]; + // Units: dimensionless; Initial value: 0.53 + double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; + // Units: millimolar; Initial value: 0.98 + double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; + // Units: millimolar; Initial value: 0.078 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__f = 300; // per_second + const double var_L_type_Ca_current__fprime = 7; // per_second + const double var_L_type_Ca_current__g = 2000; // per_second + const double var_L_type_Ca_current__O_orig_deriv = var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__f - var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__O = 0.001 * var_L_type_Ca_current__O_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__gprime = 7000; // per_second + const double var_L_type_Ca_current__O_Ca_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__fprime - var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__O_Ca = 0.001 * var_L_type_Ca_current__O_Ca_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_RyR_channel__k_a_minus = 576; // per_second + const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second + const double var_RyR_channel__k_b_minus = 1930; // per_second + const double var_RyR_channel__k_b_plus = 4050000000.0; // millimolar3_per_second + const double var_RyR_channel__k_c_minus = 0.80000000000000004; // per_second + const double var_RyR_channel__k_c_plus = 100; // per_second + const double var_RyR_channel__P_C2_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus - var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_C2 = 0.001 * var_RyR_channel__P_C2_orig_deriv; // 1 / millisecond + const double var_RyR_channel__m = 3; // dimensionless + const double var_RyR_channel__n = 4; // dimensionless + const double var_SERCA2a_pump__K_fb = 0.00016799999999999999; // millimolar + const double var_SERCA2a_pump__K_rb = 3.29; // millimolar + const double var_SERCA2a_pump__N_fb = 1.2; // dimensionless + const double var_SERCA2a_pump__N_rb = 1; // dimensionless + const double var_SERCA2a_pump__Vmaxf = 0.081299999999999997; // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = 0.318; // millimolar_per_second + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_intracellular_Ca_fluxes__HTRPN_tot = 0.14000000000000001; // dimensionless + const double var_intracellular_Ca_fluxes__LTRPN_tot = 0.070000000000000007; // dimensionless + const double var_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second + const double var_intracellular_Ca_fluxes__k_htrpn_plus = 20000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40; // per_second + const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second + const double var_intracellular_Ca_fluxes__tau_xfer = 0.026700000000000002; // second + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = 0.050000000000000003; // millimolar + const double var_intracellular_ion_concentrations__CSQN_tot = 15; // millimolar + const double var_SERCA2a_pump__rb = pow((var_chaste_interface__intracellular_ion_concentrations__Ca_NSR / var_SERCA2a_pump__K_rb), var_SERCA2a_pump__N_rb); // dimensionless + const double var_intracellular_Ca_fluxes__J_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_chaste_interface__intracellular_ion_concentrations__Ca_NSR) / var_intracellular_Ca_fluxes__tau_tr; // millimolar_per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second + const double var_RyR_channel__P_C1_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_C1 = 0.001 * var_RyR_channel__P_C1_orig_deriv; // 1 / millisecond + const double var_RyR_channel__P_O1_orig_deriv = var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus + var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_O1 = 0.001 * var_RyR_channel__P_O1_orig_deriv; // 1 / millisecond + const double var_RyR_channel__P_O2_orig_deriv = -var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_O2 = 0.001 * var_RyR_channel__P_O2_orig_deriv; // 1 / millisecond + const double var_SERCA2a_pump__fb = pow((var_chaste_interface__intracellular_ion_concentrations__Cai / var_SERCA2a_pump__K_fb), var_SERCA2a_pump__N_fb); // dimensionless + const double var_SERCA2a_pump__J_up = (var_SERCA2a_pump__Vmaxf * var_SERCA2a_pump__fb - var_SERCA2a_pump__Vmaxr * var_SERCA2a_pump__rb) * mParameters[1] / (1 + var_SERCA2a_pump__fb + var_SERCA2a_pump__rb); // millimolar_per_second + const double var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa * var_intracellular_Ca_fluxes__k_htrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) * var_intracellular_Ca_fluxes__k_htrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa = 0.001 * var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar / millisecond + const double var_intracellular_Ca_fluxes__J_HTRPNCa = var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_xfer = (-var_chaste_interface__intracellular_ion_concentrations__Cai + var_chaste_interface__intracellular_ion_concentrations__Ca_ss) / var_intracellular_Ca_fluxes__tau_xfer; // millimolar_per_second + const double var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa * var_intracellular_Ca_fluxes__k_ltrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) * var_intracellular_Ca_fluxes__k_ltrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa = 0.001 * var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar / millisecond + const double var_intracellular_Ca_fluxes__J_LTRPNCa = var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_trpn = var_intracellular_Ca_fluxes__HTRPN_tot * var_intracellular_Ca_fluxes__J_HTRPNCa + var_intracellular_Ca_fluxes__J_LTRPNCa * var_intracellular_Ca_fluxes__LTRPN_tot; // millimolar_per_second + const double var_intracellular_ion_concentrations__EGTA_tot = 0; // millimolar + const double var_intracellular_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_intracellular_ion_concentrations__K_mCSQN = 0.80000000000000004; // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = 0.00014999999999999999; // millimolar + const double var_intracellular_ion_concentrations__V_JSR = 1.6e-7; // micro_litre + const double var_intracellular_ion_concentrations__V_NSR = 2.0999999999999998e-6; // micro_litre + const double var_intracellular_ion_concentrations__V_SS = 1.2e-9; // micro_litre + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_intracellular_ion_concentrations__Ca_NSR_orig_deriv = var_SERCA2a_pump__J_up * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_NSR - var_intracellular_Ca_fluxes__J_tr * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_NSR; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR = 0.001 * var_intracellular_ion_concentrations__Ca_NSR_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__beta_JSR = 1 / (1 + var_intracellular_ion_concentrations__CSQN_tot * var_intracellular_ion_concentrations__K_mCSQN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_intracellular_ion_concentrations__K_mCSQN), 2)); // dimensionless + const double var_intracellular_ion_concentrations__Ca_JSR_orig_deriv = (-var_RyR_channel__J_rel + var_intracellular_Ca_fluxes__J_tr) * var_intracellular_ion_concentrations__beta_JSR; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR = 0.001 * var_intracellular_ion_concentrations__Ca_JSR_orig_deriv; // millimolar / millisecond + const double var_intracellular_ion_concentrations__beta_SS = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_intracellular_ion_concentrations__beta_i = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C0_orig_deriv = var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__omega - (4 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C0; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C0 = 0.001 * var_L_type_Ca_current__C0_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C1_orig_deriv = -(3 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__a * var_L_type_Ca_current__gamma + var_L_type_Ca_current__beta) * var_chaste_interface__L_type_Ca_current__C1 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__beta + 4 * var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__omega / var_L_type_Ca_current__b; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C1 = 0.001 * var_L_type_Ca_current__C1_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C2_orig_deriv = -(2 * var_L_type_Ca_current__alpha + 2 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 2) * var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C2 + 3 * var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__alpha + 3 * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C2 = 0.001 * var_L_type_Ca_current__C2_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C3_orig_deriv = -(3 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 3) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__alpha) * var_chaste_interface__L_type_Ca_current__C3 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__alpha + 4 * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C3 = 0.001 * var_L_type_Ca_current__C3_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C4_orig_deriv = var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g - (4 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 4) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__f) * var_chaste_interface__L_type_Ca_current__C4 + var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C4 = 0.001 * var_L_type_Ca_current__C4_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca0_orig_deriv = var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__gamma + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__beta_b - (4 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega) * var_chaste_interface__L_type_Ca_current__C_Ca0; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0 = 0.001 * var_L_type_Ca_current__C_Ca0_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C_Ca1_orig_deriv = -(3 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega / var_L_type_Ca_current__b + var_L_type_Ca_current__beta_b) * var_chaste_interface__L_type_Ca_current__C_Ca1 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__beta_b + 4 * var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__a * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1 = 0.001 * var_L_type_Ca_current__C_Ca1_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C_Ca2_orig_deriv = -(2 * var_L_type_Ca_current__alpha_a + 2 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2)) * var_chaste_interface__L_type_Ca_current__C_Ca2 + 3 * var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__alpha_a + 3 * var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 2) * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2 = 0.001 * var_L_type_Ca_current__C_Ca2_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C_Ca3_orig_deriv = -(3 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3) + var_L_type_Ca_current__alpha_a) * var_chaste_interface__L_type_Ca_current__C_Ca3 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__alpha_a + 4 * var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 3) * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3 = 0.001 * var_L_type_Ca_current__C_Ca3_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current__C_Ca4_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime - (4 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4) + var_L_type_Ca_current__fprime) * var_chaste_interface__L_type_Ca_current__C_Ca4 + pow(var_L_type_Ca_current__a, 4) * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4 = 0.001 * var_L_type_Ca_current__C_Ca4_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_current_y_gate__tau_y = 0.02 + 0.59999999999999998 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // second + const double var_L_type_Ca_current_y_gate__y_infinity = 0.20000000000000001 + 0.80000000000000004 / (1 + exp(2.5 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current_y_gate__y_orig_deriv = (-var_chaste_interface__L_type_Ca_current_y_gate__y + var_L_type_Ca_current_y_gate__y_infinity) / var_L_type_Ca_current_y_gate__tau_y; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y = 0.001 * var_L_type_Ca_current_y_gate__y_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_second + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (3560 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10])) : (7692.3076923076924 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // dimensionless + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_fast_sodium_current_h_gate__h_orig_deriv = (-var_chaste_interface__fast_sodium_current_h_gate__h + var_fast_sodium_current_h_gate__h_inf) / var_fast_sodium_current_h_gate__tau_h; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * var_fast_sodium_current_h_gate__h_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (121.2 * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300 * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[10] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // dimensionless + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // second + const double var_fast_sodium_current_j_gate__j_orig_deriv = (-var_chaste_interface__fast_sodium_current_j_gate__j + var_fast_sodium_current_j_gate__j_inf) / var_fast_sodium_current_j_gate__tau_j; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * var_fast_sodium_current_j_gate__j_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_m_gate__E0_m = 47.130000000000003 + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((fabs(var_fast_sodium_current_m_gate__E0_m) < 1.0000000000000001e-5) ? (1000 / (0.10000000000000001 - 0.0050000000000000001 * var_fast_sodium_current_m_gate__E0_m)) : (320 * var_fast_sodium_current_m_gate__E0_m / (1 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 80 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_m_gate__m_orig_deriv = ((var_chaste_interface__membrane__V >= -90) ? ((1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m) : (0)); // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf = var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor = 1; // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr = 0.001 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21) + 0.027 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor; // second + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv = (-var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf) / var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr; // 1 / second + const double d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = 0.001 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv; // 1 / millisecond + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity = 1 / (1 + exp(1.8161764705882353 - 0.073529411764705885 * var_chaste_interface__membrane__V)); // dimensionless + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = 0.001 / (0.00013100000000000001 * (-10 + var_chaste_interface__membrane__V) / (-1 + exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V)) + 7.1899999999999999e-5 * (-10 + var_chaste_interface__membrane__V) / (1 - exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V))); // second + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv = (-var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks + var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity) / var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks; // 1 / second + const double d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = 0.001 * var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv; // 1 / millisecond + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_intracellular_ion_concentrations__Ca_ss_orig_deriv = (var_RyR_channel__J_rel * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_SS - var_intracellular_Ca_fluxes__J_xfer * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_SS - 0.5 * var_L_type_Ca_current__i_Ca * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_SS * var_membrane__F)) * var_intracellular_ion_concentrations__beta_SS; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss = 0.001 * var_intracellular_ion_concentrations__Ca_ss_orig_deriv; // millimolar / millisecond + const double var_L_type_Ca_current__i_Ca_K = 1 * pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_intracellular_ion_concentrations__Cai_orig_deriv = (-var_SERCA2a_pump__J_up - var_intracellular_Ca_fluxes__J_trpn + 0.5 * (-var_calcium_background_current__i_Ca_b - var_sarcolemmal_calcium_pump__i_p_Ca + 2 * var_Na_Ca_exchanger__i_NaCa) * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_myo * var_membrane__F) + var_intracellular_Ca_fluxes__J_xfer) * var_intracellular_ion_concentrations__beta_i; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai = 0.001 * var_intracellular_ion_concentrations__Cai_orig_deriv; // millimolar / millisecond + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[4] + 0.018329999999999999 * mParameters[5]) / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_intracellular_ion_concentrations__Nai_orig_deriv = -1 * (3 * var_Na_Ca_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Na_b) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai = 0.001 * var_intracellular_ion_concentrations__Nai_orig_deriv; // millimolar / millisecond + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 = 45.159999999999997 * exp(0.035770000000000003 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__beta_X_to1 = 98.900000000000006 * exp(-0.062370000000000002 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1) * var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_transient_outward_potassium_current_X_to1_gate__beta_X_to1; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1 = 0.001 * var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv; // 1 / millisecond + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_intracellular_ion_concentrations__Ki_orig_deriv = -1 * (-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_current__i_Ca_K + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki = 0.001 * var_intracellular_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond + const double var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 = 5.415 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1 = 5.415 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1) * var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 * var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1 = 0.001 * var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv; // 1 / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_membrane__V_orig_deriv = -1 * (var_L_type_Ca_current__i_Ca + var_L_type_Ca_current__i_Ca_K + var_Na_Ca_exchanger__i_NaCa + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_membrane__i_Stim + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) / mParameters[7]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + } + + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + mEvalF[1] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai; + mEvalF[2] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + mEvalF[3] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + mEvalF[4] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + mEvalF[5] = d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + mEvalF[6] = d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; + mEvalF[7] = d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1; + mEvalF[8] = d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1; + mEvalF[9] = d_dt_chaste_interface_var_L_type_Ca_current__O; + mEvalF[10] = d_dt_chaste_interface_var_L_type_Ca_current__O_Ca; + mEvalF[11] = d_dt_chaste_interface_var_L_type_Ca_current__C0; + mEvalF[12] = d_dt_chaste_interface_var_L_type_Ca_current__C1; + mEvalF[13] = d_dt_chaste_interface_var_L_type_Ca_current__C2; + mEvalF[14] = d_dt_chaste_interface_var_L_type_Ca_current__C3; + mEvalF[15] = d_dt_chaste_interface_var_L_type_Ca_current__C4; + mEvalF[16] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0; + mEvalF[17] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1; + mEvalF[18] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2; + mEvalF[19] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3; + mEvalF[20] = d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4; + mEvalF[21] = d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y; + mEvalF[22] = d_dt_chaste_interface_var_RyR_channel__P_O1; + mEvalF[23] = d_dt_chaste_interface_var_RyR_channel__P_O2; + mEvalF[24] = d_dt_chaste_interface_var_RyR_channel__P_C1; + mEvalF[25] = d_dt_chaste_interface_var_RyR_channel__P_C2; + mEvalF[26] = d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa; + mEvalF[27] = d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa; + mEvalF[28] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai; + mEvalF[29] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki; + mEvalF[30] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss; + mEvalF[31] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR; + mEvalF[32] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR; + + + mPartialF[0] = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[25] = EvaluatePartialDerivative25(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[26] = EvaluatePartialDerivative26(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[27] = EvaluatePartialDerivative27(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[28] = EvaluatePartialDerivative28(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[29] = EvaluatePartialDerivative29(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[30] = EvaluatePartialDerivative30(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[31] = EvaluatePartialDerivative31(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[32] = EvaluatePartialDerivative32(var_chaste_interface__environment__time_converted, rY, delta); + for (unsigned var=0; var& rY) + { + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + // Mathematics + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_K = 1 * pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[4] + 0.018329999999999999 * mParameters[5]) / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_membrane__V_orig_deriv = -1 * (var_L_type_Ca_current__i_Ca + var_L_type_Ca_current__i_Ca_K + var_Na_Ca_exchanger__i_NaCa + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_membrane__i_Stim + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) / mParameters[7]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + + return d_dt_chaste_interface_var_membrane__V; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + const double var_x0 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x1 = var_x0 * mParameters[8] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x2 = var_x1 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x3 = pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); + const double var_x4 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); + const double var_x5 = var_x4 * mParameters[3]; + const double var_x6 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); + const double var_x7 = pow(mParameters[5], 3); + const double var_x8 = var_x6 * var_x7; + const double var_x9 = var_x8 * var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x10 = 1 + 0.20000000000000001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = 1 / (669921.875 + var_x7); + const double var_x13 = 1 / (1.3799999999999999 + mParameters[3]); + const double var_x14 = var_x12 * var_x13 * mParameters[14]; + const double var_x15 = var_x11 * var_x14; + const double var_x16 = var_x15 * (0.024332029034784559 * var_x9 + 0.013101861787960915 * var_x3 * var_x5); + const double var_x17 = 1 / var_chaste_interface__intracellular_ion_concentrations__Nai; + const double var_x18 = pow(var_x17, 1.5); + const double var_x19 = 1 + 31.622776601683793 * var_x18; + const double var_x20 = exp(-0.0037433890822745476 * var_chaste_interface__membrane__V); + const double var_x21 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x22 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5])) * exp(-var_x21); + const double var_x23 = 1 + 0.1245 * var_x20 + 0.036499999999999998 * var_x22; + const double var_x24 = mParameters[4] / (1.5 + mParameters[4]); + const double var_x25 = var_x24 * (0.0013663370150302097 * var_x22 + 0.00046605194074318115 * var_x20) / (var_x19 * pow(var_x23, 2)); + const double var_x26 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; + const double var_x27 = var_x26 * var_chaste_interface__L_type_Ca_current_y_gate__y; + const double var_x28 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); + const double var_x29 = 0.001 * var_x28 - 0.34100000000000003 * mParameters[3]; + const double var_x30 = -1 + var_x28; + const double var_x31 = mParameters[6] / var_x30; + const double var_x32 = var_x29 * var_x31; + const double var_x33 = 14447.286958825252 * var_x32; + const double var_x34 = var_x28 * var_chaste_interface__membrane__V; + const double var_x35 = var_x31 * var_x34; + const double var_x36 = var_x27 * var_x35; + const double var_x37 = -var_x9 + var_x3 * var_x4 * mParameters[3]; + const double var_x38 = var_x14 * var_x37 * var_x6 / pow(var_x10, 2); + const double var_x39 = pow(var_x30, (-2)); + const double var_x40 = var_x29 * var_x34 * var_x39 * mParameters[6]; + const double var_x41 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x42 = 1 + var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * mParameters[13]; + const double var_x45 = mParameters[15] * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; + const double var_x46 = var_x45 * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1; + const double var_x47 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ki; + const double var_x48 = var_x47 * mParameters[4]; + const double var_x49 = log(var_x48); + const double var_x50 = -26.713760659695648 * var_x49 + var_chaste_interface__membrane__V; + const double var_x51 = exp(0.044600000000000001 * var_chaste_interface__membrane__V); + const double var_x52 = 1 + 1.4944999999999999 * var_x51; + const double var_x53 = sqrt(mParameters[4]); + const double var_x54 = var_x53 * mParameters[12] / var_x52; + const double var_x55 = var_x54 * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + const double var_x56 = 1 * mParameters[4]; + const double var_x57 = exp(0.056150836234118207 * var_chaste_interface__membrane__V - 1.5 * var_x49); + const double var_x58 = 2 + var_x57; + const double var_x59 = mParameters[11] / (13 + mParameters[4]); + const double var_x60 = var_x59 / var_x58; + const double var_x61 = 54518.063995566983 * var_x32; + const double var_x62 = 1 - var_x61 * var_chaste_interface__membrane__V; + const double var_x63 = 1 / var_x62; + const double var_x64 = exp(var_x21); + const double var_x65 = -1 + var_x64; + const double var_x66 = 1 / var_x65; + const double var_x67 = var_x64 * var_chaste_interface__intracellular_ion_concentrations__Ki; + const double var_x68 = var_x67 - mParameters[4]; + const double var_x69 = var_x63 * var_x66 * var_x68; + const double var_x70 = 2.0912447872899554e-6 * var_x69; + const double var_x71 = var_x50 * var_x57 * var_x59 / pow(var_x58, 2); + const double var_x72 = var_x27 * var_x63 * var_x66 * var_chaste_interface__membrane__V; + const double var_x73 = var_x27 * var_x68 * var_chaste_interface__membrane__V; + const double var_x74 = var_x44 + var_x46 + 0.5 * var_x55 + 0.0022160000000000001 * var_x43 + var_x27 * var_x70 + var_x56 * var_x60 + 7.8283429051047759e-8 * var_x67 * var_x72 - 0.056150836234118207 * var_x71 * mParameters[4] + 0.00037056856187290968 * var_x41 * var_x50 / pow(var_x42, 2) + 2.0912447872899554e-6 * var_x66 * var_x73 * (var_x61 + 4.0816465109550109 * var_x35 - 4081.6465109550109 * var_x40) / pow(var_x62, 2) - 7.8283429051047759e-8 * var_x63 * var_x64 * var_x73 / pow(var_x65, 2) - 0.033327349999999999 * var_x50 * var_x51 * var_x53 * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr / pow(var_x52, 2); + const double var_x75 = 1 / mParameters[7]; + const double var_x76 = 0.001 * var_x75; + + partialF = -var_x76 * (0.0034841999999999998 + var_x2 + var_x74 + 5000 * var_x16 + 0.69299999999999995 * var_x25 + 1.0816363254030779 * var_x36 + 24.332029034784558 * var_x38 + var_x27 * var_x33 - 1081.636325403078 * var_x27 * var_x40); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; + // Units: millimolar; Initial value: 0.98 + double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; + // Units: millimolar; Initial value: 0.078 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_SERCA2a_pump__K_fb = 0.00016799999999999999; // millimolar + const double var_SERCA2a_pump__K_rb = 3.29; // millimolar + const double var_SERCA2a_pump__N_fb = 1.2; // dimensionless + const double var_SERCA2a_pump__N_rb = 1; // dimensionless + const double var_SERCA2a_pump__Vmaxf = 0.081299999999999997; // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = 0.318; // millimolar_per_second + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_intracellular_Ca_fluxes__HTRPN_tot = 0.14000000000000001; // dimensionless + const double var_intracellular_Ca_fluxes__LTRPN_tot = 0.070000000000000007; // dimensionless + const double var_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second + const double var_intracellular_Ca_fluxes__k_htrpn_plus = 20000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40; // per_second + const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__tau_xfer = 0.026700000000000002; // second + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = 0.050000000000000003; // millimolar + const double var_SERCA2a_pump__rb = pow((var_chaste_interface__intracellular_ion_concentrations__Ca_NSR / var_SERCA2a_pump__K_rb), var_SERCA2a_pump__N_rb); // dimensionless + const double var_SERCA2a_pump__fb = pow((var_chaste_interface__intracellular_ion_concentrations__Cai / var_SERCA2a_pump__K_fb), var_SERCA2a_pump__N_fb); // dimensionless + const double var_SERCA2a_pump__J_up = (var_SERCA2a_pump__Vmaxf * var_SERCA2a_pump__fb - var_SERCA2a_pump__Vmaxr * var_SERCA2a_pump__rb) * mParameters[1] / (1 + var_SERCA2a_pump__fb + var_SERCA2a_pump__rb); // millimolar_per_second + const double var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa * var_intracellular_Ca_fluxes__k_htrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) * var_intracellular_Ca_fluxes__k_htrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double var_intracellular_Ca_fluxes__J_HTRPNCa = var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_xfer = (-var_chaste_interface__intracellular_ion_concentrations__Cai + var_chaste_interface__intracellular_ion_concentrations__Ca_ss) / var_intracellular_Ca_fluxes__tau_xfer; // millimolar_per_second + const double var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa * var_intracellular_Ca_fluxes__k_ltrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) * var_intracellular_Ca_fluxes__k_ltrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double var_intracellular_Ca_fluxes__J_LTRPNCa = var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_trpn = var_intracellular_Ca_fluxes__HTRPN_tot * var_intracellular_Ca_fluxes__J_HTRPNCa + var_intracellular_Ca_fluxes__J_LTRPNCa * var_intracellular_Ca_fluxes__LTRPN_tot; // millimolar_per_second + const double var_intracellular_ion_concentrations__EGTA_tot = 0; // millimolar + const double var_intracellular_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = 0.00014999999999999999; // millimolar + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_intracellular_ion_concentrations__beta_i = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Cai + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_sarcolemmal_calcium_pump__I_pCa = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__K_mpCa = 5.0000000000000002e-5; // millimolar + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_chaste_interface__intracellular_ion_concentrations__Cai * var_sarcolemmal_calcium_pump__I_pCa / (var_chaste_interface__intracellular_ion_concentrations__Cai + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[3] / var_chaste_interface__intracellular_ion_concentrations__Cai) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_intracellular_ion_concentrations__Cai_orig_deriv = (-var_SERCA2a_pump__J_up - var_intracellular_Ca_fluxes__J_trpn + 0.5 * (-var_calcium_background_current__i_Ca_b - var_sarcolemmal_calcium_pump__i_p_Ca + 2 * var_Na_Ca_exchanger__i_NaCa) * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_myo * var_membrane__F) + var_intracellular_Ca_fluxes__J_xfer) * var_intracellular_ion_concentrations__beta_i; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai = 0.001 * var_intracellular_ion_concentrations__Cai_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Cai; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; + // Units: millimolar; Initial value: 0.98 + double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; + // Units: millimolar; Initial value: 0.078 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + const double var_x3 = pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3); + const double var_x4 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); + const double var_x6 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); + const double var_x7 = pow(mParameters[5], 3); + const double var_x8 = var_x6 * var_x7; + const double var_x9 = var_x8 * var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x10 = 1 + 0.20000000000000001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = 1 / (669921.875 + var_x7); + const double var_x13 = 1 / (1.3799999999999999 + mParameters[3]); + const double var_x14 = var_x12 * var_x13 * mParameters[14]; + const double var_x15 = var_x11 * var_x14; + const double var_x37 = -var_x9 + var_x3 * var_x4 * mParameters[3]; + const double var_x77 = 5.0000000000000002e-5 + var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x78 = 1 / var_x77; + const double var_x79 = 1 / var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x80 = pow(var_x77, (-2)); + const double var_x101 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Cai; + const double var_x102 = 1 + 0.00011900000000000002 / pow(var_x101, 2); + const double var_x103 = 1 / var_x102; + const double var_x104 = 0.001 * var_x103; + const double var_x105 = 0.0015381954438488301 * var_x78; + const double var_x106 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 0.19999999999999996); + const double var_x107 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 1.2); + const double var_x108 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); + const double var_x109 = 1 + 33855.471141425078 * var_x107 + 0.303951367781155 * var_x108; + const double var_x110 = 1 / var_x109; + const double var_x111 = var_x110 * mParameters[1]; + const double var_x112 = pow(var_x109, (-2)); + const double var_x113 = 2752.4498037978587 * var_x107 - 0.096656534954407292 * var_x108; + const double var_x114 = 2800.0000000000005 * var_chaste_interface__intracellular_ion_concentrations__Cai; + + partialF = var_x104 * (-5637.4531835205999 - var_x105 + 2800.0000000000005 * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + 2800.0000000000005 * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa - 0.00015787156411954756 * var_x79 + 0.0015381954438488301 * var_x80 * var_chaste_interface__intracellular_ion_concentrations__Cai - 307.63908876976598 * var_x15 * var_x8 - 3302.9397645574304 * var_x106 * var_x111 + 40626.565369710093 * var_x106 * var_x112 * var_x113 * mParameters[1]) + 2.3800000000000004e-7 * (2.8000000000000003 * var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa + 37.453183520599246 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss + 0.0092400000000000017 * var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa + 0.00015787156411954756 * log(var_x79 * mParameters[3]) - 37.453183520599246 * var_chaste_interface__intracellular_ion_concentrations__Cai - 1.181949379053441e-5 * var_chaste_interface__membrane__V - var_x105 * var_chaste_interface__intracellular_ion_concentrations__Cai - var_x111 * var_x113 - var_x114 * (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) - var_x114 * (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) + 307.63908876976598 * var_x11 * var_x12 * var_x13 * var_x37 * mParameters[14]) / (pow(var_x101, 3) * pow(var_x102, 2)); + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + + + // Mathematics + const double var_fast_sodium_current_m_gate__E0_m = 47.130000000000003 + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((fabs(var_fast_sodium_current_m_gate__E0_m) < 1.0000000000000001e-5) ? (1000 / (0.10000000000000001 - 0.0050000000000000001 * var_fast_sodium_current_m_gate__E0_m)) : (320 * var_fast_sodium_current_m_gate__E0_m / (1 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 80 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_m_gate__m_orig_deriv = ((var_chaste_interface__membrane__V >= -90) ? ((1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m) : (0)); // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x116 = -0.13565000000000002 - 0.0050000000000000001 * var_chaste_interface__membrane__V; + const double var_x118 = exp(-0.090909090909090912 * var_chaste_interface__membrane__V); + const double var_x120 = var_chaste_interface__membrane__V >= -90; + const double var_x121 = 47.130000000000003 + var_chaste_interface__membrane__V; + const double var_x122 = (var_x120) && (fabs(var_x121) < 1.0000000000000001e-5); + const double var_x123 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x124 = exp(-4.7130000000000001 - var_x123); + const double var_x125 = 1 - var_x124; + const double var_x126 = 320 / var_x125; + const double var_x127 = 80 * var_x118; + + partialF = 0.001 * ((var_x122) ? (-var_x127 - 1000 / var_x116) : ((var_x120) ? (-var_x127 - var_x121 * var_x126) : (0))); + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + + + // Mathematics + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_second + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (3560 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10])) : (7692.3076923076924 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // dimensionless + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_fast_sodium_current_h_gate__h_orig_deriv = (-var_chaste_interface__fast_sodium_current_h_gate__h + var_fast_sodium_current_h_gate__h_inf) / var_fast_sodium_current_h_gate__tau_h; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * var_fast_sodium_current_h_gate__h_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x128 = exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V); + const double var_x129 = var_chaste_interface__membrane__V < -40; + const double var_x130 = ((var_x129) ? (135 * var_x128) : (0)); + const double var_x131 = exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]); + const double var_x132 = exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10]); + const double var_x133 = exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V); + const double var_x134 = 1 + var_x133; + const double var_x135 = ((var_x129) ? (3560 * var_x131 + 310000 * var_x132) : (7692.3076923076924 / var_x134)); + + partialF = -0.001 * var_x130 - 0.001 * var_x135; + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + + + // Mathematics + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (121.2 * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300 * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[10] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // dimensionless + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // second + const double var_fast_sodium_current_j_gate__j_orig_deriv = (-var_chaste_interface__fast_sodium_current_j_gate__j + var_fast_sodium_current_j_gate__j_inf) / var_fast_sodium_current_j_gate__tau_j; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * var_fast_sodium_current_j_gate__j_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x123 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x129 = var_chaste_interface__membrane__V < -40; + const double var_x142 = exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V); + const double var_x143 = 1 + var_x142; + const double var_x144 = exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V); + const double var_x145 = var_x144 / var_x143; + const double var_x146 = exp(-3.2000000000000002 - var_x123 + 0.10000000000000001 * mParameters[10]); + const double var_x147 = 1 + var_x146; + const double var_x148 = exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V); + const double var_x149 = var_x148 / var_x147; + const double var_x150 = ((var_x129) ? (121.2 * var_x145) : (300 * var_x149)); + const double var_x151 = 37.780000000000001 + var_chaste_interface__membrane__V; + const double var_x152 = exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]); + const double var_x153 = exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V); + const double var_x154 = -127140 * var_x152 - 3.4740000000000003e-5 * var_x153; + const double var_x155 = exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]); + const double var_x156 = 1 + var_x155; + const double var_x157 = 1000 / var_x156; + const double var_x158 = var_x154 * var_x157; + const double var_x159 = ((var_x129) ? (var_x151 * var_x158) : (0)); + + partialF = -0.001 * var_x150 - 0.001 * var_x159; + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + + + // Mathematics + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf = var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor = 1; // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr = 0.001 / (var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K12 + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__K21) + 0.027 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_factor; // second + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv = (-var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf) / var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr; // 1 / second + const double d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = 0.001 * var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x164 = exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V); + const double var_x165 = exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V); + const double var_x166 = var_x164 + var_x165; + const double var_x167 = 1 / var_x166; + const double var_x170 = 0.027 + 0.001 * var_x167; + const double var_x171 = 0.001 / var_x170; + + partialF = -var_x171; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + + + // Mathematics + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity = 1 / (1 + exp(1.8161764705882353 - 0.073529411764705885 * var_chaste_interface__membrane__V)); // dimensionless + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = 0.001 / (0.00013100000000000001 * (-10 + var_chaste_interface__membrane__V) / (-1 + exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V)) + 7.1899999999999999e-5 * (-10 + var_chaste_interface__membrane__V) / (1 - exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V))); // second + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv = (-var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks + var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity) / var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks; // 1 / second + const double d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = 0.001 * var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x174 = exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V); + const double var_x175 = -1 + var_x174; + const double var_x176 = 1 / var_x175; + const double var_x177 = exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V); + const double var_x178 = 1 - var_x177; + const double var_x179 = 1 / var_x178; + const double var_x180 = -10 + var_chaste_interface__membrane__V; + + partialF = -0.00013100000000000001 * var_x176 * var_x180 - 7.1899999999999999e-5 * var_x179 * var_x180; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + + + // Mathematics + const double var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 = 45.159999999999997 * exp(0.035770000000000003 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__beta_X_to1 = 98.900000000000006 * exp(-0.062370000000000002 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1) * var_transient_outward_potassium_current_X_to1_gate__alpha_X_to1 - var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_transient_outward_potassium_current_X_to1_gate__beta_X_to1; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1 = 0.001 * var_transient_outward_potassium_current_X_to1_gate__X_to1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_potassium_current_X_to1_gate__X_to1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x181 = exp(-0.062370000000000002 * var_chaste_interface__membrane__V); + const double var_x182 = exp(0.035770000000000003 * var_chaste_interface__membrane__V); + + partialF = -0.045159999999999999 * var_x182 - 0.098900000000000002 * var_x181; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + + + // Mathematics + const double var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 = 5.415 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1 = 5.415 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv = (1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1) * var_transient_outward_potassium_current_Y_to1_gate__alpha_Y_to1 - var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 * var_transient_outward_potassium_current_Y_to1_gate__beta_Y_to1; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1 = 0.001 * var_transient_outward_potassium_current_Y_to1_gate__Y_to1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to1_gate__Y_to1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x183 = 0.20000000000000001 * var_chaste_interface__membrane__V; + const double var_x184 = 6.7000000000000002 + var_x183; + const double var_x185 = exp(var_x184); + const double var_x186 = 1 + 0.051334999999999999 * var_x185; + const double var_x187 = var_x185 / var_x186; + const double var_x189 = exp(-var_x184); + const double var_x190 = 1 + 0.051334999999999999 * var_x189; + const double var_x191 = var_x189 / var_x190; + + partialF = -0.0054149999999999997 * var_x187 - 0.0054149999999999997 * var_x191; + } + else + { + const double y_save = rY[8]; + rY[8] += delta; + const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[8])/delta; + rY[8] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + + + // Mathematics + const double var_L_type_Ca_current__f = 300; // per_second + const double var_L_type_Ca_current__g = 2000; // per_second + const double var_L_type_Ca_current__O_orig_deriv = var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__f - var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__O = 0.001 * var_L_type_Ca_current__O_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__O; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -2; + } + else + { + const double y_save = rY[9]; + rY[9] += delta; + const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[9])/delta; + rY[9] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + + + // Mathematics + const double var_L_type_Ca_current__fprime = 7; // per_second + const double var_L_type_Ca_current__gprime = 7000; // per_second + const double var_L_type_Ca_current__O_Ca_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__fprime - var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__O_Ca = 0.001 * var_L_type_Ca_current__O_Ca_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__O_Ca; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -7; + } + else + { + const double y_save = rY[10]; + rY[10] += delta; + const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[10])/delta; + rY[10] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; + // Units: dimensionless; Initial value: 0.997208 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; + // Units: dimensionless; Initial value: 0.00272826 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C0_orig_deriv = var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__omega - (4 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C0; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C0 = 0.001 * var_L_type_Ca_current__C0_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C0; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x194 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x196 = 1.6000000000000001 * var_x194; + const double var_x197 = 0.10375 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -var_x196 - var_x197; + } + else + { + const double y_save = rY[11]; + rY[11] += delta; + const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[11])/delta; + rY[11] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; + // Units: dimensionless; Initial value: 0.997208 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C1_orig_deriv = -(3 * var_L_type_Ca_current__alpha + var_L_type_Ca_current__a * var_L_type_Ca_current__gamma + var_L_type_Ca_current__beta) * var_chaste_interface__L_type_Ca_current__C1 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__beta + 4 * var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__omega / var_L_type_Ca_current__b; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C1 = 0.001 * var_L_type_Ca_current__C1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x192 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x194 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x198 = 0.050000000000000003 * var_x192; + const double var_x202 = 1.2 * var_x194; + const double var_x203 = 0.20749999999999999 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -var_x198 - var_x202 - var_x203; + } + else + { + const double y_save = rY[12]; + rY[12] += delta; + const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[12])/delta; + rY[12] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C2_orig_deriv = -(2 * var_L_type_Ca_current__alpha + 2 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 2) * var_L_type_Ca_current__gamma) * var_chaste_interface__L_type_Ca_current__C2 + 3 * var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__alpha + 3 * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C2 = 0.001 * var_L_type_Ca_current__C2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C2; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x192 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x194 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x204 = 0.10000000000000001 * var_x192; + const double var_x207 = 0.80000000000000004 * var_x194; + const double var_x208 = 0.41499999999999998 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -var_x204 - var_x207 - var_x208; + } + else + { + const double y_save = rY[13]; + rY[13] += delta; + const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[13])/delta; + rY[13] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C3_orig_deriv = -(3 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 3) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__alpha) * var_chaste_interface__L_type_Ca_current__C3 + 2 * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__alpha + 4 * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__beta + var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C3 = 0.001 * var_L_type_Ca_current__C3_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C3; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x192 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x194 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x209 = 0.14999999999999999 * var_x192; + const double var_x212 = 0.40000000000000002 * var_x194; + const double var_x213 = 0.82999999999999996 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -var_x209 - var_x212 - var_x213; + } + else + { + const double y_save = rY[14]; + rY[14] += delta; + const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[14])/delta; + rY[14] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__f = 300; // per_second + const double var_L_type_Ca_current__g = 2000; // per_second + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__C4_orig_deriv = var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__alpha + var_chaste_interface__L_type_Ca_current__O * var_L_type_Ca_current__g - (4 * var_L_type_Ca_current__beta + pow(var_L_type_Ca_current__a, 4) * var_L_type_Ca_current__gamma + var_L_type_Ca_current__f) * var_chaste_interface__L_type_Ca_current__C4 + var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C4 = 0.001 * var_L_type_Ca_current__C4_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C4; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x192 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x214 = 0.20000000000000001 * var_x192; + const double var_x216 = 1.6599999999999999 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + + partialF = -0.29999999999999999 - var_x214 - var_x216; + } + else + { + const double y_save = rY[15]; + rY[15] += delta; + const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[15])/delta; + rY[15] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C0 = rY[11]; + // Units: dimensionless; Initial value: 0.997208 + double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; + // Units: dimensionless; Initial value: 0.00272826 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca0_orig_deriv = var_chaste_interface__L_type_Ca_current__C0 * var_L_type_Ca_current__gamma + var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__beta_b - (4 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega) * var_chaste_interface__L_type_Ca_current__C_Ca0; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0 = 0.001 * var_L_type_Ca_current__C_Ca0_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca0; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x194 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x219 = 3.2000000000000002 * var_x194; + + partialF = -0.01 - var_x219; + } + else + { + const double y_save = rY[16]; + rY[16] += delta; + const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[16])/delta; + rY[16] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C1 = rY[12]; + // Units: dimensionless; Initial value: 6.38897e-05 + double var_chaste_interface__L_type_Ca_current__C_Ca0 = rY[16]; + // Units: dimensionless; Initial value: 0.00272826 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca1_orig_deriv = -(3 * var_L_type_Ca_current__alpha_a + var_L_type_Ca_current__omega / var_L_type_Ca_current__b + var_L_type_Ca_current__beta_b) * var_chaste_interface__L_type_Ca_current__C_Ca1 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__beta_b + 4 * var_chaste_interface__L_type_Ca_current__C_Ca0 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__C1 * var_L_type_Ca_current__a * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1 = 0.001 * var_L_type_Ca_current__C_Ca1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x192 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x194 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x220 = 0.025000000000000001 * var_x192; + const double var_x221 = 2.3999999999999999 * var_x194; + + partialF = -0.0050000000000000001 - var_x220 - var_x221; + } + else + { + const double y_save = rY[17]; + rY[17] += delta; + const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[17])/delta; + rY[17] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C2 = rY[13]; + // Units: dimensionless; Initial value: 1.535e-09 + double var_chaste_interface__L_type_Ca_current__C_Ca1 = rY[17]; + // Units: dimensionless; Initial value: 6.99215e-07 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca2_orig_deriv = -(2 * var_L_type_Ca_current__alpha_a + 2 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 2)) * var_chaste_interface__L_type_Ca_current__C_Ca2 + 3 * var_chaste_interface__L_type_Ca_current__C_Ca1 * var_L_type_Ca_current__alpha_a + 3 * var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 2) * var_chaste_interface__L_type_Ca_current__C2 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2 = 0.001 * var_L_type_Ca_current__C_Ca2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca2; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x192 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x194 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x196 = 1.6000000000000001 * var_x194; + const double var_x198 = 0.050000000000000003 * var_x192; + + partialF = -0.0025000000000000001 - var_x196 - var_x198; + } + else + { + const double y_save = rY[18]; + rY[18] += delta; + const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[18])/delta; + rY[18] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__C3 = rY[14]; + // Units: dimensionless; Initial value: 1.63909e-14 + double var_chaste_interface__L_type_Ca_current__C_Ca2 = rY[18]; + // Units: dimensionless; Initial value: 6.71989e-11 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca3_orig_deriv = -(3 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 3) + var_L_type_Ca_current__alpha_a) * var_chaste_interface__L_type_Ca_current__C_Ca3 + 2 * var_chaste_interface__L_type_Ca_current__C_Ca2 * var_L_type_Ca_current__alpha_a + 4 * var_chaste_interface__L_type_Ca_current__C_Ca4 * var_L_type_Ca_current__beta_b + pow(var_L_type_Ca_current__a, 3) * var_chaste_interface__L_type_Ca_current__C3 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3 = 0.001 * var_L_type_Ca_current__C_Ca3_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca3; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x192 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x194 = exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); + const double var_x207 = 0.80000000000000004 * var_x194; + const double var_x222 = 0.074999999999999997 * var_x192; + + partialF = -0.00125 - var_x207 - var_x222; + } + else + { + const double y_save = rY[19]; + rY[19] += delta; + const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[19])/delta; + rY[19] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current__C4 = rY[15]; + // Units: dimensionless; Initial value: 6.56337e-20 + double var_chaste_interface__L_type_Ca_current__C_Ca3 = rY[19]; + // Units: dimensionless; Initial value: 2.87031e-15 + double var_chaste_interface__L_type_Ca_current__C_Ca4 = rY[20]; + // Units: dimensionless; Initial value: 4.59752e-20 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_L_type_Ca_current__a = 2; // dimensionless + const double var_L_type_Ca_current__b = 2; // dimensionless + const double var_L_type_Ca_current__fprime = 7; // per_second + const double var_L_type_Ca_current__gprime = 7000; // per_second + const double var_L_type_Ca_current__omega = 10; // per_second + const double var_L_type_Ca_current__gamma = 103.75 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss; // per_second + const double var_L_type_Ca_current__alpha = 400 * exp(0.20000000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__alpha_a = var_L_type_Ca_current__a * var_L_type_Ca_current__alpha; // per_second + const double var_L_type_Ca_current__beta = 50 * exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); // per_second + const double var_L_type_Ca_current__beta_b = var_L_type_Ca_current__beta / var_L_type_Ca_current__b; // per_second + const double var_L_type_Ca_current__C_Ca4_orig_deriv = var_chaste_interface__L_type_Ca_current__C_Ca3 * var_L_type_Ca_current__alpha_a + var_chaste_interface__L_type_Ca_current__O_Ca * var_L_type_Ca_current__gprime - (4 * var_L_type_Ca_current__beta_b + var_L_type_Ca_current__omega / pow(var_L_type_Ca_current__b, 4) + var_L_type_Ca_current__fprime) * var_chaste_interface__L_type_Ca_current__C_Ca4 + pow(var_L_type_Ca_current__a, 4) * var_chaste_interface__L_type_Ca_current__C4 * var_L_type_Ca_current__gamma; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4 = 0.001 * var_L_type_Ca_current__C_Ca4_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current__C_Ca4; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x192 = exp(-0.15384615384615385 - 0.076923076923076927 * var_chaste_interface__membrane__V); + const double var_x204 = 0.10000000000000001 * var_x192; + + partialF = -0.0076249999999999998 - var_x204; + } + else + { + const double y_save = rY[20]; + rY[20] += delta; + const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[20])/delta; + rY[20] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + + + // Mathematics + const double var_L_type_Ca_current_y_gate__tau_y = 0.02 + 0.59999999999999998 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // second + const double var_L_type_Ca_current_y_gate__y_infinity = 0.20000000000000001 + 0.80000000000000004 / (1 + exp(2.5 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current_y_gate__y_orig_deriv = (-var_chaste_interface__L_type_Ca_current_y_gate__y + var_L_type_Ca_current_y_gate__y_infinity) / var_L_type_Ca_current_y_gate__tau_y; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y = 0.001 * var_L_type_Ca_current_y_gate__y_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_current_y_gate__y; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + + + const double var_x226 = exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V); + const double var_x227 = 1 + var_x226; + const double var_x228 = 0.02 + 0.59999999999999998 / var_x227; + const double var_x229 = 1 / var_x228; + + partialF = -0.001 * var_x229; + } + else + { + const double y_save = rY[21]; + rY[21] += delta; + const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[21])/delta; + rY[21] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_C1 = rY[24]; + // Units: dimensionless; Initial value: 0.47 + double var_chaste_interface__RyR_channel__P_C2 = rY[25]; + // Units: dimensionless; Initial value: 0.53 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_RyR_channel__k_a_minus = 576; // per_second + const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second + const double var_RyR_channel__k_b_minus = 1930; // per_second + const double var_RyR_channel__k_b_plus = 4050000000.0; // millimolar3_per_second + const double var_RyR_channel__k_c_minus = 0.80000000000000004; // per_second + const double var_RyR_channel__k_c_plus = 100; // per_second + const double var_RyR_channel__m = 3; // dimensionless + const double var_RyR_channel__n = 4; // dimensionless + const double var_RyR_channel__P_O1_orig_deriv = var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus + var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_O1 = 0.001 * var_RyR_channel__P_O1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__P_O1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x230 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 3); + const double var_x231 = 4050000 * var_x230; + + partialF = -0.67600000000000005 - var_x231; + } + else + { + const double y_save = rY[22]; + rY[22] += delta; + const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[22])/delta; + rY[22] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_RyR_channel__k_b_minus = 1930; // per_second + const double var_RyR_channel__k_b_plus = 4050000000.0; // millimolar3_per_second + const double var_RyR_channel__m = 3; // dimensionless + const double var_RyR_channel__P_O2_orig_deriv = -var_chaste_interface__RyR_channel__P_O2 * var_RyR_channel__k_b_minus + pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__m) * var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_b_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_O2 = 0.001 * var_RyR_channel__P_O2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__P_O2; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -1.9299999999999999; + } + else + { + const double y_save = rY[23]; + rY[23] += delta; + const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[23])/delta; + rY[23] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_C1 = rY[24]; + // Units: dimensionless; Initial value: 0.47 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + // Mathematics + const double var_RyR_channel__k_a_minus = 576; // per_second + const double var_RyR_channel__k_a_plus = 12150000000000.0; // millimolar4_per_second + const double var_RyR_channel__n = 4; // dimensionless + const double var_RyR_channel__P_C1_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_a_minus - pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, var_RyR_channel__n) * var_chaste_interface__RyR_channel__P_C1 * var_RyR_channel__k_a_plus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_C1 = 0.001 * var_RyR_channel__P_C1_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__P_C1; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + + + const double var_x232 = 12150000000.0 * pow(var_chaste_interface__intracellular_ion_concentrations__Ca_ss, 4); + + partialF = -var_x232; + } + else + { + const double y_save = rY[24]; + rY[24] += delta; + const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[24])/delta; + rY[24] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_C2 = rY[25]; + // Units: dimensionless; Initial value: 0.53 + + + // Mathematics + const double var_RyR_channel__k_c_minus = 0.80000000000000004; // per_second + const double var_RyR_channel__k_c_plus = 100; // per_second + const double var_RyR_channel__P_C2_orig_deriv = var_chaste_interface__RyR_channel__P_O1 * var_RyR_channel__k_c_plus - var_chaste_interface__RyR_channel__P_C2 * var_RyR_channel__k_c_minus; // 1 / second + const double d_dt_chaste_interface_var_RyR_channel__P_C2 = 0.001 * var_RyR_channel__P_C2_orig_deriv; // 1 / millisecond + + return d_dt_chaste_interface_var_RyR_channel__P_C2; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative25(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + partialF = -0.00080000000000000004; + } + else + { + const double y_save = rY[25]; + rY[25] += delta; + const double temp = EvaluateYDerivative25(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[25])/delta; + rY[25] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa = rY[26]; + // Units: millimolar; Initial value: 0.98 + + + // Mathematics + const double var_intracellular_Ca_fluxes__k_htrpn_minus = 0.066000000000000003; // per_second + const double var_intracellular_Ca_fluxes__k_htrpn_plus = 20000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa * var_intracellular_Ca_fluxes__k_htrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__HTRPNCa) * var_intracellular_Ca_fluxes__k_htrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa = 0.001 * var_intracellular_Ca_fluxes__HTRPNCa_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_Ca_fluxes__HTRPNCa; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative26(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + + + + partialF = -6.6000000000000005e-5 - 20 * var_chaste_interface__intracellular_ion_concentrations__Cai; + } + else + { + const double y_save = rY[26]; + rY[26] += delta; + const double temp = EvaluateYDerivative26(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[26])/delta; + rY[26] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative27(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa = rY[27]; + // Units: millimolar; Initial value: 0.078 + + + // Mathematics + const double var_intracellular_Ca_fluxes__k_ltrpn_minus = 40; // per_second + const double var_intracellular_Ca_fluxes__k_ltrpn_plus = 40000; // per_millimolar_second + const double var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv = -var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa * var_intracellular_Ca_fluxes__k_ltrpn_minus + (1 - var_chaste_interface__intracellular_Ca_fluxes__LTRPNCa) * var_intracellular_Ca_fluxes__k_ltrpn_plus * var_chaste_interface__intracellular_ion_concentrations__Cai; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa = 0.001 * var_intracellular_Ca_fluxes__LTRPNCa_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_Ca_fluxes__LTRPNCa; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative27(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + + + + partialF = -0.040000000000000001 - 40 * var_chaste_interface__intracellular_ion_concentrations__Cai; + } + else + { + const double y_save = rY[27]; + rY[27] += delta; + const double temp = EvaluateYDerivative27(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[27])/delta; + rY[27] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative28(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + + + // Mathematics + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_intracellular_ion_concentrations__Nai_orig_deriv = -1 * (3 * var_Na_Ca_exchanger__i_NaCa + 3 * var_sodium_potassium_pump__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Na_b) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai = 0.001 * var_intracellular_ion_concentrations__Nai_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Nai; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative28(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + + + const double var_x0 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x1 = var_x0 * mParameters[8] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x2 = var_x1 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x4 = exp(0.013101861787960915 * var_chaste_interface__membrane__V); + const double var_x5 = var_x4 * mParameters[3]; + const double var_x6 = exp(-0.024332029034784559 * var_chaste_interface__membrane__V); + const double var_x7 = pow(mParameters[5], 3); + const double var_x10 = 1 + 0.20000000000000001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = 1 / (669921.875 + var_x7); + const double var_x13 = 1 / (1.3799999999999999 + mParameters[3]); + const double var_x14 = var_x12 * var_x13 * mParameters[14]; + const double var_x15 = var_x11 * var_x14; + const double var_x17 = 1 / var_chaste_interface__intracellular_ion_concentrations__Nai; + const double var_x18 = pow(var_x17, 1.5); + const double var_x19 = 1 + 31.622776601683793 * var_x18; + const double var_x20 = exp(-0.0037433890822745476 * var_chaste_interface__membrane__V); + const double var_x21 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x22 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5])) * exp(-var_x21); + const double var_x23 = 1 + 0.1245 * var_x20 + 0.036499999999999998 * var_x22; + const double var_x24 = mParameters[4] / (1.5 + mParameters[4]); + const double var_x97 = var_x17 * var_x18 * var_x24 / (pow(var_x19, 2) * var_x23); + const double var_x98 = var_x15 * var_x5 * pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 2); + const double var_x99 = 0.082812658045056511 * var_x17 + 26.713760659695648 * var_x17 * var_x2; + const double var_x235 = 6.1527817753953199e-5 * mParameters[2]; + + partialF = -var_x235 * (var_x99 + 45000 * var_x98 + 98.615628832350907 * var_x97); + } + else + { + const double y_save = rY[28]; + rY[28] += delta; + const double temp = EvaluateYDerivative28(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[28])/delta; + rY[28] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative29(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + // Mathematics + const double var_L_type_Ca_current__P_K = 5.7899999999999998e-7; // cm_per_second + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sodium_potassium_pump__I_NaK = 0.69299999999999995; // microA_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__p_prime_k = var_L_type_Ca_current__P_K / (1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half); // cm_per_second + const double var_L_type_Ca_current__i_Ca_K = 1 * pow(var_membrane__F, 2) * (-mParameters[4] + var_chaste_interface__intracellular_ion_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__p_prime_k * var_chaste_interface__L_type_Ca_current_y_gate__y * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[4] + 0.018329999999999999 * mParameters[5]) / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[5]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__I_NaK * var_sodium_potassium_pump__f_NaK * mParameters[4] / ((1 + pow((var_sodium_potassium_pump__K_mNai / var_chaste_interface__intracellular_ion_concentrations__Nai), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[4])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_intracellular_ion_concentrations__Ki_orig_deriv = -1 * (-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_current__i_Ca_K + var_plateau_potassium_current__i_Kp + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr + var_slow_activating_delayed_rectifiyer_K_current__i_Ks + var_time_independent_potassium_current__i_K1 + var_transient_outward_potassium_current__i_to1) * var_intracellular_ion_concentrations__A_cap * mParameters[2] / (var_intracellular_ion_concentrations__V_myo * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki = 0.001 * var_intracellular_ion_concentrations__Ki_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ki; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative29(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + + + const double var_x21 = 0.037433890822745473 * var_chaste_interface__membrane__V; + const double var_x26 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; + const double var_x27 = var_x26 * var_chaste_interface__L_type_Ca_current_y_gate__y; + const double var_x28 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); + const double var_x29 = 0.001 * var_x28 - 0.34100000000000003 * mParameters[3]; + const double var_x30 = -1 + var_x28; + const double var_x31 = mParameters[6] / var_x30; + const double var_x32 = var_x29 * var_x31; + const double var_x41 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x42 = 1 + var_x41; + const double var_x43 = 1 / var_x42; + const double var_x44 = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * mParameters[13]; + const double var_x45 = mParameters[15] * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; + const double var_x46 = var_x45 * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1; + const double var_x47 = 1 / var_chaste_interface__intracellular_ion_concentrations__Ki; + const double var_x48 = var_x47 * mParameters[4]; + const double var_x49 = log(var_x48); + const double var_x50 = -26.713760659695648 * var_x49 + var_chaste_interface__membrane__V; + const double var_x51 = exp(0.044600000000000001 * var_chaste_interface__membrane__V); + const double var_x52 = 1 + 1.4944999999999999 * var_x51; + const double var_x53 = sqrt(mParameters[4]); + const double var_x54 = var_x53 * mParameters[12] / var_x52; + const double var_x55 = var_x54 * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + const double var_x57 = exp(0.056150836234118207 * var_chaste_interface__membrane__V - 1.5 * var_x49); + const double var_x58 = 2 + var_x57; + const double var_x59 = mParameters[11] / (13 + mParameters[4]); + const double var_x60 = var_x59 / var_x58; + const double var_x61 = 54518.063995566983 * var_x32; + const double var_x62 = 1 - var_x61 * var_chaste_interface__membrane__V; + const double var_x63 = 1 / var_x62; + const double var_x64 = exp(var_x21); + const double var_x65 = -1 + var_x64; + const double var_x66 = 1 / var_x65; + const double var_x71 = var_x50 * var_x57 * var_x59 / pow(var_x58, 2); + const double var_x72 = var_x27 * var_x63 * var_x66 * var_chaste_interface__membrane__V; + const double var_x88 = 1 / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai); + const double var_x95 = var_x44 * var_x88; + const double var_x100 = 26.713760659695648 * var_x95 + 13.356880329847824 * var_x47 * var_x55 + 26.713760659695648 * var_x46 * var_x47 + 26.713760659695648 * var_x48 * var_x60 + 0.05919769362188556 * var_x43 * var_x47 + 2.0912447872899554e-6 * var_x64 * var_x72 - 1.5 * var_x48 * var_x71; + const double var_x235 = 6.1527817753953199e-5 * mParameters[2]; + + partialF = -var_x100 * var_x235; + } + else + { + const double y_save = rY[29]; + rY[29] += delta; + const double temp = EvaluateYDerivative29(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[29])/delta; + rY[29] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative30(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + const double var_intracellular_Ca_fluxes__tau_xfer = 0.026700000000000002; // second + const double var_intracellular_ion_concentrations__A_cap = 0.00015339999999999999; // cm2 + const double var_intracellular_ion_concentrations__CMDN_tot = 0.050000000000000003; // millimolar + const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second + const double var_intracellular_Ca_fluxes__J_xfer = (-var_chaste_interface__intracellular_ion_concentrations__Cai + var_chaste_interface__intracellular_ion_concentrations__Ca_ss) / var_intracellular_Ca_fluxes__tau_xfer; // millimolar_per_second + const double var_intracellular_ion_concentrations__EGTA_tot = 0; // millimolar + const double var_intracellular_ion_concentrations__K_mCMDN = 0.0023800000000000002; // millimolar + const double var_intracellular_ion_concentrations__K_mEGTA = 0.00014999999999999999; // millimolar + const double var_intracellular_ion_concentrations__V_JSR = 1.6e-7; // micro_litre + const double var_intracellular_ion_concentrations__V_SS = 1.2e-9; // micro_litre + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_intracellular_ion_concentrations__beta_SS = 1 / (1 + var_intracellular_ion_concentrations__CMDN_tot * var_intracellular_ion_concentrations__K_mCMDN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mCMDN), 2) + var_intracellular_ion_concentrations__EGTA_tot * var_intracellular_ion_concentrations__K_mEGTA / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_intracellular_ion_concentrations__K_mEGTA), 2)); // dimensionless + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_intracellular_ion_concentrations__Ca_ss_orig_deriv = (var_RyR_channel__J_rel * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_SS - var_intracellular_Ca_fluxes__J_xfer * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_SS - 0.5 * var_L_type_Ca_current__i_Ca * var_intracellular_ion_concentrations__A_cap / (var_intracellular_ion_concentrations__V_SS * var_membrane__F)) * var_intracellular_ion_concentrations__beta_SS; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss = 0.001 * var_intracellular_ion_concentrations__Ca_ss_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_ss; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative30(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + + + const double var_x26 = var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca; + const double var_x27 = var_x26 * var_chaste_interface__L_type_Ca_current_y_gate__y; + const double var_x28 = exp(0.074867781645490947 * var_chaste_interface__membrane__V); + const double var_x29 = 0.001 * var_x28 - 0.34100000000000003 * mParameters[3]; + const double var_x30 = -1 + var_x28; + const double var_x31 = mParameters[6] / var_x30; + const double var_x32 = var_x29 * var_x31; + const double var_x240 = 9570598.0870152581 * var_x27 * var_x32; + const double var_x241 = 0.0023800000000000002 + var_chaste_interface__intracellular_ion_concentrations__Ca_ss; + const double var_x242 = 1 + 0.00011900000000000002 / pow(var_x241, 2); + const double var_x243 = 1 / var_x242; + const double var_x244 = 0.001 * var_x243; + const double var_x248 = -var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; + const double var_x251 = var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2; + const double var_x252 = var_x251 * mParameters[0]; + + partialF = var_x244 * (-806491.88514357049 - 133.33333333333334 * var_x252) + 2.3800000000000004e-7 * (806491.88514357049 * var_chaste_interface__intracellular_ion_concentrations__Cai - 806491.88514357049 * var_chaste_interface__intracellular_ion_concentrations__Ca_ss - var_x240 * var_chaste_interface__membrane__V + 133.33333333333334 * var_x248 * var_x251 * mParameters[0]) / (pow(var_x241, 3) * pow(var_x242, 2)); + } + else + { + const double y_save = rY[30]; + rY[30] += delta; + const double temp = EvaluateYDerivative30(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[30])/delta; + rY[30] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative31(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second + const double var_intracellular_ion_concentrations__CSQN_tot = 15; // millimolar + const double var_intracellular_Ca_fluxes__J_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_chaste_interface__intracellular_ion_concentrations__Ca_NSR) / var_intracellular_Ca_fluxes__tau_tr; // millimolar_per_second + const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second + const double var_intracellular_ion_concentrations__K_mCSQN = 0.80000000000000004; // millimolar + const double var_intracellular_ion_concentrations__beta_JSR = 1 / (1 + var_intracellular_ion_concentrations__CSQN_tot * var_intracellular_ion_concentrations__K_mCSQN / pow((var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_intracellular_ion_concentrations__K_mCSQN), 2)); // dimensionless + const double var_intracellular_ion_concentrations__Ca_JSR_orig_deriv = (-var_RyR_channel__J_rel + var_intracellular_Ca_fluxes__J_tr) * var_intracellular_ion_concentrations__beta_JSR; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR = 0.001 * var_intracellular_ion_concentrations__Ca_JSR_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_JSR; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative31(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + const double var_x248 = -var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; + const double var_x251 = var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2; + const double var_x252 = var_x251 * mParameters[0]; + const double var_x253 = 0.80000000000000004 + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR; + const double var_x254 = 1 + 12 / pow(var_x253, 2); + const double var_x255 = 1 / var_x254; + const double var_x256 = 0.001 * var_x255; + + partialF = var_x256 * (-1740.0382808421784 - var_x252) + 0.024 * (1740.0382808421784 * var_chaste_interface__intracellular_ion_concentrations__Ca_NSR - 1740.0382808421784 * var_chaste_interface__intracellular_ion_concentrations__Ca_JSR - var_x248 * var_x252) / (pow(var_x253, 3) * pow(var_x254, 2)); + } + else + { + const double y_save = rY[31]; + rY[31] += delta; + const double temp = EvaluateYDerivative31(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[31])/delta; + rY[31] = y_save; + } + return partialF; + } + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluateYDerivative32(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + // Mathematics + const double var_SERCA2a_pump__K_fb = 0.00016799999999999999; // millimolar + const double var_SERCA2a_pump__K_rb = 3.29; // millimolar + const double var_SERCA2a_pump__N_fb = 1.2; // dimensionless + const double var_SERCA2a_pump__N_rb = 1; // dimensionless + const double var_SERCA2a_pump__Vmaxf = 0.081299999999999997; // millimolar_per_second + const double var_SERCA2a_pump__Vmaxr = 0.318; // millimolar_per_second + const double var_intracellular_Ca_fluxes__tau_tr = 0.00057470000000000004; // second + const double var_SERCA2a_pump__rb = pow((var_chaste_interface__intracellular_ion_concentrations__Ca_NSR / var_SERCA2a_pump__K_rb), var_SERCA2a_pump__N_rb); // dimensionless + const double var_intracellular_Ca_fluxes__J_tr = (-var_chaste_interface__intracellular_ion_concentrations__Ca_JSR + var_chaste_interface__intracellular_ion_concentrations__Ca_NSR) / var_intracellular_Ca_fluxes__tau_tr; // millimolar_per_second + const double var_SERCA2a_pump__fb = pow((var_chaste_interface__intracellular_ion_concentrations__Cai / var_SERCA2a_pump__K_fb), var_SERCA2a_pump__N_fb); // dimensionless + const double var_SERCA2a_pump__J_up = (var_SERCA2a_pump__Vmaxf * var_SERCA2a_pump__fb - var_SERCA2a_pump__Vmaxr * var_SERCA2a_pump__rb) * mParameters[1] / (1 + var_SERCA2a_pump__fb + var_SERCA2a_pump__rb); // millimolar_per_second + const double var_intracellular_ion_concentrations__V_JSR = 1.6e-7; // micro_litre + const double var_intracellular_ion_concentrations__V_NSR = 2.0999999999999998e-6; // micro_litre + const double var_intracellular_ion_concentrations__V_myo = 2.584e-5; // micro_litre + const double var_intracellular_ion_concentrations__Ca_NSR_orig_deriv = var_SERCA2a_pump__J_up * var_intracellular_ion_concentrations__V_myo / var_intracellular_ion_concentrations__V_NSR - var_intracellular_Ca_fluxes__J_tr * var_intracellular_ion_concentrations__V_JSR / var_intracellular_ion_concentrations__V_NSR; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR = 0.001 * var_intracellular_ion_concentrations__Ca_NSR_orig_deriv; // millimolar / millisecond + + return d_dt_chaste_interface_var_intracellular_ion_concentrations__Ca_NSR; + } + + double Dynamicwinslow_model_1999FromCellMLGRL2::EvaluatePartialDerivative32(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__intracellular_ion_concentrations__Ca_NSR = rY[32]; + // Units: millimolar; Initial value: 0.257 + + + const double var_x107 = pow(var_chaste_interface__intracellular_ion_concentrations__Cai, 1.2); + const double var_x108 = pow(var_chaste_interface__intracellular_ion_concentrations__Ca_NSR, 1); + const double var_x109 = 1 + 33855.471141425078 * var_x107 + 0.303951367781155 * var_x108; + const double var_x110 = 1 / var_x109; + const double var_x111 = var_x110 * mParameters[1]; + const double var_x112 = pow(var_x109, (-2)); + const double var_x113 = 2752.4498037978587 * var_x107 - 0.096656534954407292 * var_x108; + const double var_x115 = var_x112 * var_x113 * mParameters[1]; + + partialF = -0.13257434520702313 - 0.0011893356491532784 * var_x111 - 0.0037400492111738315 * var_x115; + } + else + { + const double y_save = rY[32]; + rY[32] += delta; + const double temp = EvaluateYDerivative32(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[32])/delta; + rY[32] = y_save; + } + return partialF; + } + + std::vector Dynamicwinslow_model_1999FromCellMLGRL2::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -96.1638 + double var_chaste_interface__intracellular_ion_concentrations__Cai = rY[1]; + // Units: millimolar; Initial value: 8e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.0328302 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988354 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99254 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.51 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.264 + double var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 = rY[7]; + // Units: dimensionless; Initial value: 2.63 + double var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1 = rY[8]; + // Units: dimensionless; Initial value: 0.99 + double var_chaste_interface__L_type_Ca_current__O = rY[9]; + // Units: dimensionless; Initial value: 9.84546e-21 + double var_chaste_interface__L_type_Ca_current__O_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_current_y_gate__y = rY[21]; + // Units: dimensionless; Initial value: 0.798 + double var_chaste_interface__RyR_channel__P_O1 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__RyR_channel__P_O2 = rY[23]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_ion_concentrations__Nai = rY[28]; + // Units: millimolar; Initial value: 10.0 + double var_chaste_interface__intracellular_ion_concentrations__Ki = rY[29]; + // Units: millimolar; Initial value: 157.8 + double var_chaste_interface__intracellular_ion_concentrations__Ca_ss = rY[30]; + // Units: millimolar; Initial value: 0.00011 + double var_chaste_interface__intracellular_ion_concentrations__Ca_JSR = rY[31]; + // Units: millimolar; Initial value: 0.257 + + // Mathematics + const double var_Na_Ca_exchanger__K_mCa = 1.3799999999999999; // millimolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_RyR_channel__J_rel = (-var_chaste_interface__intracellular_ion_concentrations__Ca_ss + var_chaste_interface__intracellular_ion_concentrations__Ca_JSR) * (var_chaste_interface__RyR_channel__P_O1 + var_chaste_interface__RyR_channel__P_O2) * mParameters[0]; // millimolar_per_second + const double var_membrane__F = 96.485341500000004; // coulomb_per_millimole + const double var_membrane__R = 8.3144720000000003; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current_y_gate__tau_y = 0.02 + 0.59999999999999998 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // second + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (135 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_second + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (3560 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[10])) : (7692.3076923076924 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[10] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? (1000 * (37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[10]))) : (0)); // per_second + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (121.2 * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[10] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (300 * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[10] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_second + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // second + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 1.4944999999999999 * exp(0.044600000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current__i_Ca_max = 4000 * pow(var_membrane__F, 2) * (0.001 * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - 0.34100000000000003 * mParameters[3]) * mParameters[6] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = (var_chaste_interface__L_type_Ca_current__O + var_chaste_interface__L_type_Ca_current__O_Ca) * var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_y_gate__y; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca; // uA_per_cm2 + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[4] / var_chaste_interface__intracellular_ion_concentrations__Ki) / var_membrane__F; // millivolt + const double var_rapid_activating_delayed_rectifiyer_K_current__f_Ko = 0.5 * sqrt(mParameters[4]); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * var_rapid_activating_delayed_rectifiyer_K_current__f_Ko * mParameters[12] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = 5000 * (pow(var_chaste_interface__intracellular_ion_concentrations__Nai, 3) * mParameters[3] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[5], 3) * var_chaste_interface__intracellular_ion_concentrations__Cai * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[14] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[5], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[3])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__Nai) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[8] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[4] + 0.018329999999999999 * mParameters[5]) / (1 * var_chaste_interface__intracellular_ion_concentrations__Ki + 0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Nai)) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[13]; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_activating_delayed_rectifiyer_K_current__i_Ks; // uA_per_cm2 + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity_V = 1 / (2 + exp(1.5 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[4] * mParameters[11] * var_time_independent_potassium_current_K1_gate__K1_infinity_V / (mParameters[4] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_potassium_current__i_to1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[15] * var_chaste_interface__transient_outward_potassium_current_X_to1_gate__X_to1 * var_chaste_interface__transient_outward_potassium_current_Y_to1_gate__Y_to1; // microA_per_microF + const double var_transient_outward_potassium_current__i_to1_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_potassium_current__i_to1; // uA_per_cm2 + + std::vector dqs(13); + dqs[0] = var_RyR_channel__J_rel; + dqs[1] = var_L_type_Ca_current__i_Ca_converted; + dqs[2] = var_L_type_Ca_current_y_gate__tau_y; + dqs[3] = var_fast_sodium_current__i_Na_converted; + dqs[4] = var_fast_sodium_current_h_gate__tau_h; + dqs[5] = var_fast_sodium_current_j_gate__tau_j; + dqs[6] = var_time_independent_potassium_current__i_K1_converted; + dqs[7] = var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted; + dqs[8] = var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted; + dqs[9] = var_Na_Ca_exchanger__i_NaCa_converted; + dqs[10] = var_membrane__i_Stim_converted; + dqs[11] = var_transient_outward_potassium_current__i_to1_converted; + dqs[12] = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "winslow_model_1999"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-96.1638); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(8e-05); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0328302); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.988354); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99254); + + // rY[5]: + this->mVariableNames.push_back("rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.51); + + // rY[6]: + this->mVariableNames.push_back("slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.264); + + // rY[7]: + this->mVariableNames.push_back("transient_outward_potassium_current_X_to1_gate__X_to1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.63); + + // rY[8]: + this->mVariableNames.push_back("transient_outward_potassium_current_Y_to1_gate__Y_to1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.84546e-21); + + // rY[10]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[11]: + this->mVariableNames.push_back("L_type_Ca_current__C0"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.997208); + + // rY[12]: + this->mVariableNames.push_back("L_type_Ca_current__C1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.38897e-05); + + // rY[13]: + this->mVariableNames.push_back("L_type_Ca_current__C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.535e-09); + + // rY[14]: + this->mVariableNames.push_back("L_type_Ca_current__C3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.63909e-14); + + // rY[15]: + this->mVariableNames.push_back("L_type_Ca_current__C4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.56337e-20); + + // rY[16]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca0"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00272826); + + // rY[17]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.99215e-07); + + // rY[18]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.71989e-11); + + // rY[19]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.87031e-15); + + // rY[20]: + this->mVariableNames.push_back("L_type_Ca_current__C_Ca4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(4.59752e-20); + + // rY[21]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.798); + + // rY[22]: + this->mVariableNames.push_back("RyR_channel__P_O1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[23]: + this->mVariableNames.push_back("RyR_channel__P_O2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[24]: + this->mVariableNames.push_back("RyR_channel__P_C1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.47); + + // rY[25]: + this->mVariableNames.push_back("RyR_channel__P_C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.53); + + // rY[26]: + this->mVariableNames.push_back("intracellular_Ca_fluxes__HTRPNCa"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.98); + + // rY[27]: + this->mVariableNames.push_back("intracellular_Ca_fluxes__LTRPNCa"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.078); + + // rY[28]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(10.0); + + // rY[29]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(157.8); + + // rY[30]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00011); + + // rY[31]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.257); + + // rY[32]: + this->mVariableNames.push_back("NSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.257); + + // mParameters[0]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_second"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[2]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[3]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("cm_per_second"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_second"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicwinslow_model_1999FromCellMLGRL2) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicwinslow_model_1999FromCellMLGRL2(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi--sympy_1_11.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi--sympy_1_11.cpp new file mode 100644 index 00000000..57447a72 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi--sympy_1_11.cpp @@ -0,0 +1,3454 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: viswanathan_model_1999_epi +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenSecondOrderOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_viswanathan_model_1999_epi.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractGeneralizedRushLarsenCardiacCell* Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt(p_solver, p_stimulus); +} + +bool Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::registered = ModelFactory::Register("dynamic_viswanathan_model_1999_epi", "GeneralizedRushLarsenSecondOrderOpt", (ModelFactory::TCreateMethod)Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::CreateMethod); + +class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<30; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= 2){ + EXCEPTION("Lookup table 15 at ["<= 2){ + EXCEPTION("Lookup table 16 at ["<= 2){ + EXCEPTION("Lookup table 17 at ["<= 2){ + EXCEPTION("Lookup table 18 at ["<= 1.0000000000000001e-5) ? (320 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V))) : (3200)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[19] < 2){ + double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[19] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[19] >= 2){ + EXCEPTION("Lookup table 19 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[30]; + + // Lookup tables + double (*_lookup_table_0)[30]; + int _lookup_table_0_num_misshit_piecewise[30] = {0}; + +}; + +std::shared_ptr Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -25.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = 2; // millisecond + const double var_chaste_interface__membrane__stim_period_converted = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start_converted = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration_converted, + var_chaste_interface__membrane__stim_period_converted, + var_chaste_interface__membrane__stim_start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 25, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1.8; // (var_calcium_dynamics__Cao) [millimolar] + this->mParameters[1] = 4.5; // (var_ionic_concentrations__Ko) [millimolar] + this->mParameters[2] = 132; // (var_ionic_concentrations__Nao) [millimolar] + this->mParameters[3] = 0.001; // (var_membrane__Cm) [microF] + this->mParameters[4] = 16; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[5] = 0.75; // (var_time_independent_potassium_current__g_K1_max) [milliS_per_cm2] + this->mParameters[6] = 0.02614; // (var_rapid_delayed_rectifier_potassium_current__g_Kr_max) [milliS_per_cm2] + } + + Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::~Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt() + { + } + + AbstractLookupTableCollection* Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::GetLookupTableCollection() + { + return Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance(); + } + + void Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 25; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_Ca_L_converted = (7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]) + 0.0024381008236689767 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]) + 0.00069711623550831479 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3])) * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // uA_per_cm2 + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_Ca = 3612.0012202503358 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])) + 3612.0012202503358 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[8]); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = 0.43033148291193518 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / (_lt_0_row[9]); // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1_converted = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // uA_per_cm2 + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double var_chaste_interface__i_ionic = -var_L_type_Ca_channel__i_Ca_L_converted - var_fast_sodium_current__i_Na_converted - var_rapid_delayed_rectifier_potassium_current__i_Kr_converted - var_time_independent_potassium_current__i_K1_converted - HeartConfig::Instance()->GetCapacitance() * var_ATP_sensitive_potassium_current__i_K_ATP - HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa - HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T - HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Ca_b - HeartConfig::Instance()->GetCapacitance() * var_non_specific_calcium_activated_current__i_ns_Ca - HeartConfig::Instance()->GetCapacitance() * var_plateau_potassium_current__i_Kp - HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump__i_p_Ca - HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks - HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Na_b - HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK - HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + const double yinit = rY[v_index]; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]); // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[8]); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / (_lt_0_row[9]); // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double var_membrane__dVdt = -(GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__dVdt; // millivolt / millisecond + + double evalF = d_dt_chaste_interface_var_membrane__V; + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += 0.5*evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*0.5*mDt)-1.0); + } + + rY[v_index] = yinit; + evalF = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + mEvalF[0] = evalF; + partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] = yinit + evalF*mDt; + } + else + { + rY[v_index] = yinit + (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const double delta=1e-8; + const unsigned size = GetNumberOfStateVariables(); + mYInit = rY; + double y_save; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__transient_outward_current_zdv_gate__zdv = rY[12]; + // Units: dimensionless; Initial value: 0.011528 + double var_chaste_interface__transient_outward_current_ydv_gate__ydv = rY[13]; + // Units: dimensionless; Initial value: 0.985232 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; + // Units: dimensionless; Initial value: 0.01925 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack2) : (-500 * var_chaste_interface__calcium_dynamics__APtrack2)); // 1 / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack3) : (-10 * var_chaste_interface__calcium_dynamics__APtrack3)); // 1 / millisecond + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack2)); // 1 / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack3) : (-10 * var_chaste_interface__calcium_dynamics__OVRLDtrack3)); // 1 / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (1 / (1 + 0.80000000000000004 / var_chaste_interface__calcium_dynamics__Ca_JSR) > 0.69999999999999996)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack)); // 1 / millisecond + const double var_calcium_dynamics__i_leak = 0.33333333333333331 * var_chaste_interface__calcium_dynamics__Ca_NSR; // millimolar_per_second + const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * ((var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack)) : ((var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0) ? (4000 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2) * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); // millimolar_per_second + const double var_calcium_dynamics__i_up = 5 * var_chaste_interface__calcium_dynamics__Cai / (0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second + const double var_calcium_dynamics__i_tr = 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR = 0.001 * (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__calcium_dynamics__Ca_JSR), 2)); // millimolar / millisecond + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_calcium_dynamics__V_JSR = 0.0070588235294117632 * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_dynamics__V_NSR = 0.081176470588235281 * var_ionic_concentrations__V_myo; // micro_litre + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR = 0.001 * var_calcium_dynamics__i_up - 0.001 * var_calcium_dynamics__i_leak - 0.001 * var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_tr / var_calcium_dynamics__V_NSR; // millimolar / millisecond + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]); // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF + const double var_L_type_Ca_channel_d_gate__E0_d = 10 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(var_L_type_Ca_channel_d_gate__E0_d) < 1.0000000000000001e-5) ? (0.0045787545787545781) : (0.028571428571428571 * (1 - exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__E0_d)); // second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d - 0.001 * (1 - var_L_type_Ca_channel_d_gate__d_infinity) * var_chaste_interface__L_type_Ca_channel_d_gate__d / var_L_type_Ca_channel_d_gate__tau_d; // 1 / millisecond + const double var_L_type_Ca_channel_f_gate__f_infinity = _lt_0_row[10]; // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f = _lt_0_row[11]; // second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f - 0.001 * (1 - var_L_type_Ca_channel_f_gate__f_infinity) * var_chaste_interface__L_type_Ca_channel_f_gate__f / var_L_type_Ca_channel_f_gate__tau_f; // 1 / millisecond + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b = 0.001 * (-var_chaste_interface__T_type_Ca_channel_b_gate__b + _lt_0_row[12]) / (_lt_0_row[13]); // 1 / millisecond + const double d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g = 0.001 * (-var_chaste_interface__T_type_Ca_channel_g_gate__g + _lt_0_row[14]) * ((var_chaste_interface__membrane__V <= 0) ? (1 / (0.012 - 0.00087500000000000002 * var_chaste_interface__membrane__V)) : (83.333333333333329)); // 1 / millisecond + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * _lt_0_row[15] - 0.001 * _lt_0_row[16] * var_chaste_interface__fast_sodium_current_h_gate__h; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * (1 - var_chaste_interface__fast_sodium_current_j_gate__j) * _lt_0_row[17] - 0.001 * _lt_0_row[18] * var_chaste_interface__fast_sodium_current_j_gate__j; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * _lt_0_row[19] - 0.080000000000000002 * var_chaste_interface__fast_sodium_current_m_gate__m * _lt_0_row[20]; // 1 / millisecond + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr = 0.001 * (-var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr + _lt_0_row[21]) * (_lt_0_row[22]); // 1 / millisecond + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cai = 0.001 * (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo + (-var_calcium_dynamics__i_up + var_calcium_dynamics__i_leak) * var_calcium_dynamics__V_NSR / var_ionic_concentrations__V_myo + var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_rel / var_ionic_concentrations__V_myo) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__calcium_dynamics__Cai), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack = 0.001 * ((var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001) ? (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo) : ((var_chaste_interface__calcium_dynamics__APtrack2 > 0.01) ? (0) : (-500 * var_chaste_interface__calcium_dynamics__Cainfluxtrack))); // 1 / millisecond + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 + _lt_0_row[23]) * (_lt_0_row[24]); // 1 / millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 + _lt_0_row[23]) * (_lt_0_row[25]); // 1 / millisecond + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Nai = 1.4862413846711923e-15 * (-var_L_type_Ca_channel__i_CaNa - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Na - var_sodium_background_current__i_Na_b - 3 * var_Na_Ca_exchanger__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[8]); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / (_lt_0_row[9]); // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current_ydv_gate__alpha_ydv = _lt_0_row[26]; // per_second + const double var_transient_outward_current_ydv_gate__beta_ydv = _lt_0_row[27]; // per_second + const double d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv = 0.001 * (-var_chaste_interface__transient_outward_current_ydv_gate__ydv + var_transient_outward_current_ydv_gate__alpha_ydv / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv)) * (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv); // 1 / millisecond + const double var_transient_outward_current_zdv_gate__alpha_zdv = _lt_0_row[28]; // per_second + const double var_transient_outward_current_zdv_gate__beta_zdv = _lt_0_row[29]; // per_second + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Ki = 1.4862413846711923e-15 * (-var_ATP_sensitive_potassium_current__i_K_ATP - var_L_type_Ca_channel__i_CaK - var_non_specific_calcium_activated_current__i_ns_K - var_plateau_potassium_current__i_Kp - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to + 2 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond + const double var_membrane__dVdt = -(GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack = 0.001 * ((var_membrane__dVdt > 150000) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack) : (-500 * var_chaste_interface__calcium_dynamics__APtrack)); // 1 / millisecond + const double d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv = 0.001 * (-var_chaste_interface__transient_outward_current_zdv_gate__zdv + var_transient_outward_current_zdv_gate__alpha_zdv / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv)) * (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv); // 1 / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__dVdt; // millivolt / millisecond + } + + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + mEvalF[1] = d_dt_chaste_interface_var_calcium_dynamics__Cai; + mEvalF[2] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + mEvalF[3] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + mEvalF[4] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + mEvalF[5] = d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d; + mEvalF[6] = d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f; + mEvalF[7] = d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b; + mEvalF[8] = d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g; + mEvalF[9] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr; + mEvalF[10] = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + mEvalF[11] = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + mEvalF[12] = d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv; + mEvalF[13] = d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv; + mEvalF[14] = d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR; + mEvalF[15] = d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR; + mEvalF[16] = d_dt_chaste_interface_var_calcium_dynamics__APtrack; + mEvalF[17] = d_dt_chaste_interface_var_calcium_dynamics__APtrack2; + mEvalF[18] = d_dt_chaste_interface_var_calcium_dynamics__APtrack3; + mEvalF[19] = d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack; + mEvalF[20] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack; + mEvalF[21] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2; + mEvalF[22] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3; + mEvalF[23] = d_dt_chaste_interface_var_ionic_concentrations__Nai; + mEvalF[24] = d_dt_chaste_interface_var_ionic_concentrations__Ki; + + + mPartialF[0] = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time_converted, rY, delta); + for (unsigned var=0; var& rY) + { + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]); // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[8]); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / (_lt_0_row[9]); // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double var_membrane__dVdt = -(GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__dVdt; // millivolt / millisecond + + return d_dt_chaste_interface_var_membrane__V; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x0 = 0.018717941753901308 * var_chaste_interface__membrane__V; + const double var_x1 = exp(var_x0); + const double var_x2 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = exp(-var_x0); + const double var_x5 = pow(mParameters[2], 3); + const double var_x6 = var_x5 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x7 = var_x4 * var_x6; + const double var_x8 = 0.018717941753901308 * var_x3 + 0.018717941753901308 * var_x7; + const double var_x9 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x10 = 1 + 0.001 * var_x2 + 0.001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = var_x11 * var_x9; + const double var_x13 = 0.002 * var_x12; + const double var_x14 = var_x13 * var_x8; + const double var_x15 = pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); + const double var_x16 = 1 / (1 + 100 * var_x15); + const double var_x17 = 2 * var_x16; + const double var_x18 = 1 / (1.5 + mParameters[1]); + const double var_x19 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); + const double var_x20 = 0.037435883507802616 * var_chaste_interface__membrane__V; + const double var_x21 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * exp(-var_x20); + const double var_x22 = 1 + 0.1245 * var_x19 + 0.036499999999999998 * var_x21; + const double var_x23 = pow(var_x22, (-2)); + const double var_x24 = 0.0013664097480347954 * var_x21 + 0.00046607674967214262 * var_x19; + const double var_x25 = var_x18 * var_x23 * var_x24 * mParameters[1]; + const double var_x26 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); + const double var_x27 = var_x26 * var_chaste_interface__T_type_Ca_channel_g_gate__g; + const double var_x28 = 0.050000000000000003 * var_x27; + const double var_x29 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x30 = var_x29 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x32 = _lt_0_row[0]; + const double var_x33 = -1 + var_x32; + const double var_x34 = 1 / var_x33; + const double var_x35 = var_x32 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x36 = var_x35 - 0.34100000000000003 * mParameters[0]; + const double var_x37 = var_x34 * var_x36; + const double var_x38 = 7.8019226357407252 * var_x37; + const double var_x39 = var_x31 * var_x38; + const double var_x40 = var_x31 * var_chaste_interface__membrane__V; + const double var_x41 = var_x34 * var_x40; + const double var_x42 = var_x28 + var_x39 + 0.58414373385695628 * var_x35 * var_x41 - 0.58414373385695628 * var_x32 * var_x36 * var_x40 / pow(var_x33, 2); + const double var_x43 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x44 = var_x43 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x45 = var_x44 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x46 = exp(var_x20); + const double var_x47 = -1 + var_x46; + const double var_x48 = 1 / var_x47; + const double var_x49 = var_x31 * var_x48; + const double var_x50 = 0.75 * var_x46; + const double var_x51 = -0.75 * mParameters[2] + var_x50 * var_chaste_interface__ionic_concentrations__Nai; + const double var_x52 = 0.0024381008236689767 * var_x51; + const double var_x53 = var_x49 * var_x52; + const double var_x54 = var_x46 * var_x49 * var_chaste_interface__membrane__V; + const double var_x55 = var_x40 * var_x46 / pow(var_x47, 2); + const double var_x56 = var_x45 + var_x53 + 6.8454343811362063e-5 * var_x54 * var_chaste_interface__ionic_concentrations__Nai - 9.1272458415149417e-5 * var_x51 * var_x55; + const double var_x57 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x58 = 1 + var_x57; + const double var_x59 = 1 / var_x58; + const double var_x60 = 0.0055199999999999997 * var_x59; + const double var_x61 = pow(mParameters[1], 0.23999999999999999); + const double var_x62 = 1.921898339896919e-8 * var_x61; + const double var_x63 = 1 / var_chaste_interface__calcium_dynamics__Cai; + const double var_x64 = pow(var_x63, 1.3999999999999999); + const double var_x65 = 1 + 6.4818210260626455e-7 * var_x64; + const double var_x66 = 0.433 + 0.25979999999999998 / var_x65; + const double var_x67 = var_x66 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + const double var_x68 = var_x67 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + const double var_x69 = 1 / var_chaste_interface__ionic_concentrations__Ki; + const double var_x70 = log(var_x69 * mParameters[1]); + const double var_x71 = -26.712338705498265 * var_x70 + var_chaste_interface__membrane__V; + const double var_x72 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); + const double var_x73 = 1 + var_x72; + const double var_x74 = sqrt(mParameters[1]); + const double var_x75 = var_x74 * mParameters[6] / var_x73; + const double var_x76 = var_x75 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; + const double var_x77 = 0.43033148291193518 * var_x76; + const double var_x78 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x70); + const double var_x79 = 1 + var_x78; + const double var_x80 = 1 / var_x79; + const double var_x81 = exp(-2.4444678999999998 + 13.738155796237757 * var_x70 - 0.51429999999999998 * var_chaste_interface__membrane__V); + const double var_x82 = 1 + var_x81; + const double var_x83 = 1 / var_x82; + const double var_x84 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x70); + const double var_x85 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x70); + const double var_x86 = var_x85 + 0.49124000000000001 * var_x84; + const double var_x87 = var_x83 * var_x86; + const double var_x88 = 1 / (1000 * var_x87 + 1020 * var_x80); + const double var_x89 = var_x74 * var_x80 * mParameters[5]; + const double var_x90 = var_x88 * var_x89; + const double var_x91 = 438.93811257017387 * var_x90; + const double var_x92 = -0.75 * mParameters[1] + var_x50 * var_chaste_interface__ionic_concentrations__Ki; + const double var_x93 = 0.00069711623550831479 * var_x92; + const double var_x94 = var_x49 * var_x93; + const double var_x95 = 1000 * var_x83; + const double var_x96 = pow(var_x79, (-2)); + const double var_x97 = var_x81 * var_x86 / pow(var_x82, 2); + const double var_x98 = 0.0004218936106979757 * var_x71 * var_x89 / pow((var_x80 + 0.98039215686274506 * var_x87), 2); + const double var_x99 = var_x71 * var_x74; + const double var_x100 = var_x78 * var_x96; + const double var_x101 = var_x88 * var_x99 * mParameters[5]; + const double var_x102 = var_x60 + var_x62 + var_x68 + var_x77 + var_x91 + var_x94 + var_x98 * (-514.29999999999995 * var_x97 - var_x95 * (0.061749999999999999 * var_x85 + 0.039456396800000001 * var_x84) + 243.26999999999998 * var_x78 * var_x96) + 1.9572871637915374e-5 * var_x54 * var_chaste_interface__ionic_concentrations__Ki - 2.6097162183887167e-5 * var_x55 * var_x92 - 104.68673984798647 * var_x100 * var_x101 + 0.00092307692307692295 * var_x57 * var_x71 / pow(var_x58, 2) - 0.019211226915711394 * var_x72 * var_x99 * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / pow(var_x73, 2); + const double var_x103 = 1 / mParameters[3]; + const double var_x104 = 0.001 * var_x103; + + partialF = -var_x104 * (0.0070159999999999997 + var_x102 + var_x14 + var_x42 + var_x56 + var_x17 * var_x25); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_dynamics__i_leak = 0.33333333333333331 * var_chaste_interface__calcium_dynamics__Ca_NSR; // millimolar_per_second + const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * ((var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack)) : ((var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0) ? (4000 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2) * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); // millimolar_per_second + const double var_calcium_dynamics__i_up = 5 * var_chaste_interface__calcium_dynamics__Cai / (0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_calcium_dynamics__V_JSR = 0.0070588235294117632 * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_dynamics__V_NSR = 0.081176470588235281 * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cai = 0.001 * (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo + (-var_calcium_dynamics__i_up + var_calcium_dynamics__i_leak) * var_calcium_dynamics__V_NSR / var_ionic_concentrations__V_myo + var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_rel / var_ionic_concentrations__V_myo) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__calcium_dynamics__Cai), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai), 2)); // millimolar / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__Cai; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x0 = 0.018717941753901308 * var_chaste_interface__membrane__V; + const double var_x1 = exp(var_x0); + const double var_x2 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = exp(-var_x0); + const double var_x5 = pow(mParameters[2], 3); + const double var_x6 = var_x5 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x7 = var_x4 * var_x6; + const double var_x9 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x10 = 1 + 0.001 * var_x2 + 0.001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = var_x11 * var_x9; + const double var_x13 = 0.002 * var_x12; + const double var_x26 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); + const double var_x27 = var_x26 * var_chaste_interface__T_type_Ca_channel_g_gate__g; + const double var_x28 = 0.050000000000000003 * var_x27; + const double var_x29 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x30 = var_x29 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x32 = _lt_0_row[0]; + const double var_x33 = -1 + var_x32; + const double var_x34 = 1 / var_x33; + const double var_x35 = var_x32 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x36 = var_x35 - 0.34100000000000003 * mParameters[0]; + const double var_x37 = var_x34 * var_x36; + const double var_x38 = 7.8019226357407252 * var_x37; + const double var_x39 = var_x31 * var_x38; + const double var_x40 = var_x31 * var_chaste_interface__membrane__V; + const double var_x41 = var_x34 * var_x40; + const double var_x63 = 1 / var_chaste_interface__calcium_dynamics__Cai; + const double var_x105 = var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__membrane__V; + const double var_x106 = var_x105 * var_chaste_interface__L_type_Ca_channel_f_gate__f / pow((0.00059999999999999995 + var_chaste_interface__calcium_dynamics__Cai), 2); + const double var_x109 = 0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x110 = 1 / var_x109; + const double var_x111 = pow(var_x109, (-2)); + const double var_x112 = 1.1499999999999999 * var_x111 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x113 = 0.0046811535814444347 * var_x106 * var_x37; + const double var_x117 = var_x3 - var_x7; + const double var_x118 = var_x11 * var_x117 / pow((0.0068999999999999999 + var_chaste_interface__calcium_dynamics__Cai), 2); + const double var_x119 = var_x4 * var_x5; + const double var_x120 = pow(var_x10, (-2)); + const double var_x121 = var_x117 * var_x120 * var_x9; + const double var_x122 = var_x121 * var_x5; + const double var_x123 = 1.38e-5 * var_x118 + 1.9999999999999999e-6 * var_x122 + var_x119 * var_x13; + const double var_x135 = log(var_x63 * mParameters[0]); + const double var_x136 = -13.356169352749133 * var_x135 + var_chaste_interface__membrane__V; + const double var_x154 = 0.0023800000000000002 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x155 = 1 + 0.00011900000000000002 / pow(var_x154, 2) + 3.5000000000000004e-5 * var_x111; + const double var_x156 = 1 / var_x155; + const double var_x157 = 1 / M_PI; + const double var_x160 = 0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x161 = 1 / var_x160; + const double var_x162 = 1 - var_chaste_interface__calcium_dynamics__APtrack2; + const double var_x163 = -0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x164 = 60000 * var_x161 * var_x162 * var_x163 * var_chaste_interface__calcium_dynamics__APtrack2; + const double var_x165 = var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001; + const double var_x166 = 1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2; + const double var_x167 = 4000 * var_x166 * var_chaste_interface__calcium_dynamics__OVRLDtrack2; + const double var_x168 = var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0; + const double var_x169 = ((var_x165) ? (-var_x164) : ((var_x168) ? (-var_x167) : (0))); + const double var_x170 = 0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x171 = 1 / var_x170; + const double var_x172 = 0.40588235294117642 * var_x171; + const double var_x173 = var_chaste_interface__calcium_dynamics__Cai / pow(var_x170, 2); + const double var_x174 = 1.1499999999999999 * var_x110; + const double var_x175 = var_x123 + var_x174 - var_x112 - var_x113 + 0.040282206767891383 * var_x63 + 7.8019226357407252 * var_x32 * var_x41 + 0.6678084676374566 * var_x27 * var_x63; + const double var_x176 = 0.090316078310111333 * var_x157; + const double var_x177 = -var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR; + const double var_x178 = ((var_x165) ? (var_x164 * var_x177) : ((var_x168) ? (var_x167 * var_x177) : (0))); + const double var_x179 = var_x117 * var_x13; + const double var_x180 = -0.040282206767891383 * var_x135 + var_x136 * var_x28 + var_x174 * var_chaste_interface__calcium_dynamics__Cai + var_x39 * var_chaste_interface__membrane__V; + + partialF = 0.001 * var_x156 * (-var_x172 + 0.40588235294117642 * var_x173 + 0.0070588235294117632 * var_x169 - var_x175 * var_x176) + 0.001 * (0.00023800000000000004 / pow(var_x154, 3) + 7.0000000000000007e-5 / pow(var_x109, 3)) * (0.027058823529411764 * var_chaste_interface__calcium_dynamics__Ca_NSR + 0.0070588235294117632 * var_x178 - var_x172 * var_chaste_interface__calcium_dynamics__Cai - var_x176 * (var_x180 - var_x179 + 0.003016 * var_chaste_interface__membrane__V)) / pow(var_x155, 2); + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * _lt_0_row[19] - 0.080000000000000002 * var_chaste_interface__fast_sodium_current_m_gate__m * _lt_0_row[20]; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x192 = _lt_0_row[20]; + const double var_x195 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x196 = exp(-4.7130000000000001 - var_x195); + const double var_x197 = 1 - var_x196; + const double var_x198 = 0.32000000000000001 / var_x197; + const double var_x199 = 47.130000000000003 + var_chaste_interface__membrane__V; + const double var_x200 = fabs(var_x199) >= 1.0000000000000001e-5; + const double var_x201 = 0.080000000000000002 * var_x192; + + partialF = ((var_x200) ? (-var_x201 - var_x198 * var_x199) : (-3.2000000000000002 - var_x201)); + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * _lt_0_row[15] - 0.001 * _lt_0_row[16] * var_chaste_interface__fast_sodium_current_h_gate__h; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x202 = exp(0.079000000000000001 * var_chaste_interface__membrane__V); + const double var_x203 = exp(0.34999999999999998 * var_chaste_interface__membrane__V); + const double var_x204 = exp(-11.764705882352942 - 0.14705882352941177 * var_chaste_interface__membrane__V); + const double var_x205 = var_chaste_interface__membrane__V < -40; + const double var_x206 = exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__membrane__V); + const double var_x207 = 1 + var_x206; + + partialF = ((var_x205) ? (-310000 * var_x203 - 0.13500000000000001 * var_x204 - 3.5600000000000001 * var_x202) : (-7.6923076923076934 / var_x207)); + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * (1 - var_chaste_interface__fast_sodium_current_j_gate__j) * _lt_0_row[17] - 0.001 * _lt_0_row[18] * var_chaste_interface__fast_sodium_current_j_gate__j; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x195 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x205 = var_chaste_interface__membrane__V < -40; + const double var_x209 = exp(0.24440000000000001 * var_chaste_interface__membrane__V); + const double var_x210 = exp(-0.043909999999999998 * var_chaste_interface__membrane__V); + const double var_x211 = -127140 * var_x209 - 3.4740000000000003e-5 * var_x210; + const double var_x213 = exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V); + const double var_x214 = 1 + var_x213; + const double var_x215 = 1 / var_x214; + const double var_x216 = exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__membrane__V); + const double var_x217 = 1 + var_x216; + const double var_x218 = exp(-0.01052 * var_chaste_interface__membrane__V); + const double var_x219 = var_x218 / var_x217; + const double var_x220 = 37.780000000000001 + var_chaste_interface__membrane__V; + const double var_x221 = var_x215 * var_x220; + const double var_x222 = exp(-3.2000000000000002 - var_x195); + const double var_x223 = 1 + var_x222; + const double var_x224 = exp(-2.5349999999999999e-7 * var_chaste_interface__membrane__V); + const double var_x225 = var_x224 / var_x223; + + partialF = ((var_x205) ? (-0.1212 * var_x219 - var_x211 * var_x221) : (-0.29999999999999999 * var_x225)); + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + + + + // Mathematics + const double var_L_type_Ca_channel_d_gate__E0_d = 10 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(var_L_type_Ca_channel_d_gate__E0_d) < 1.0000000000000001e-5) ? (0.0045787545787545781) : (0.028571428571428571 * (1 - exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__E0_d)); // second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d - 0.001 * (1 - var_L_type_Ca_channel_d_gate__d_infinity) * var_chaste_interface__L_type_Ca_channel_d_gate__d / var_L_type_Ca_channel_d_gate__tau_d; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x226 = exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V); + const double var_x227 = 1 + var_x226; + const double var_x228 = 1 / var_x227; + const double var_x230 = 10 + var_chaste_interface__membrane__V; + const double var_x231 = fabs(var_x230) < 1.0000000000000001e-5; + const double var_x232 = 1 - var_x226; + const double var_x233 = 1 / var_x232; + const double var_x236 = 1 - var_x228; + const double var_x237 = ((var_x231) ? (218.40000000000003) : (35 * var_x227 * var_x230 * var_x233)); + const double var_x239 = 0.001 * var_x237; + + partialF = -var_x228 * var_x239 - var_x236 * var_x239; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_gate__f_infinity = _lt_0_row[10]; // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f = _lt_0_row[11]; // second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f - 0.001 * (1 - var_L_type_Ca_channel_f_gate__f_infinity) * var_chaste_interface__L_type_Ca_channel_f_gate__f / var_L_type_Ca_channel_f_gate__tau_f; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x240 = exp(4 + 0.125 * var_chaste_interface__membrane__V); + const double var_x241 = 1 + var_x240; + const double var_x242 = exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane__V); + const double var_x243 = 1 + var_x242; + const double var_x245 = exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2)); + const double var_x246 = 20 + 19.699999999999999 * var_x245; + const double var_x247 = 0.001 * var_x246; + const double var_x249 = 1 / var_x241 + 0.59999999999999998 / var_x243; + const double var_x250 = 1 - var_x249; + + partialF = -var_x247 * var_x249 - var_x247 * var_x250; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b = 0.001 * (-var_chaste_interface__T_type_Ca_channel_b_gate__b + _lt_0_row[12]) / (_lt_0_row[13]); // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x254 = exp(5.5555555555555554 + 0.22222222222222221 * var_chaste_interface__membrane__V); + const double var_x255 = 1 + var_x254; + const double var_x256 = 1 / var_x255; + const double var_x257 = 1 / (0.0037000000000000002 + 0.0061000000000000004 * var_x256); + + partialF = -0.001 * var_x257; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g = 0.001 * (-var_chaste_interface__T_type_Ca_channel_g_gate__g + _lt_0_row[14]) * ((var_chaste_interface__membrane__V <= 0) ? (1 / (0.012 - 0.00087500000000000002 * var_chaste_interface__membrane__V)) : (83.333333333333329)); // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x260 = 1 / (0.012 - 0.00087500000000000002 * var_chaste_interface__membrane__V); + const double var_x262 = var_chaste_interface__membrane__V <= 0; + + partialF = ((var_x262) ? (-0.001 * var_x260) : (-0.083333333333333329)); + } + else + { + const double y_save = rY[8]; + rY[8] += delta; + const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[8])/delta; + rY[8] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr = 0.001 * (-var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr + _lt_0_row[21]) * (_lt_0_row[22]); // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x265 = exp(5.6404999999999994 + 0.14499999999999999 * var_chaste_interface__membrane__V); + const double var_x266 = -1 + var_x265; + const double var_x267 = 1 / var_x266; + const double var_x268 = exp(-1.7465999999999999 - 0.123 * var_chaste_interface__membrane__V); + const double var_x269 = 1 - var_x268; + const double var_x270 = 1 / var_x269; + const double var_x271 = 14.199999999999999 + var_chaste_interface__membrane__V; + const double var_x272 = 38.899999999999999 + var_chaste_interface__membrane__V; + + partialF = -0.0013799999999999999 * var_x270 * var_x271 - 0.00060999999999999997 * var_x267 * var_x272; + } + else + { + const double y_save = rY[9]; + rY[9] += delta; + const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[9])/delta; + rY[9] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 + _lt_0_row[23]) * (_lt_0_row[24]); // 1 / millisecond + + return d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x276 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V); + const double var_x277 = -1 + var_x276; + const double var_x278 = 1 / var_x277; + const double var_x279 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V); + const double var_x280 = 1 - var_x279; + const double var_x281 = 1 / var_x280; + const double var_x282 = 30 + var_chaste_interface__membrane__V; + const double var_x286 = var_x278 * var_x282; + const double var_x287 = var_x281 * var_x282; + + partialF = -0.00013100000000000001 * var_x286 - 7.1899999999999999e-5 * var_x287; + } + else + { + const double y_save = rY[10]; + rY[10] += delta; + const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[10])/delta; + rY[10] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 + _lt_0_row[23]) * (_lt_0_row[25]); // 1 / millisecond + + return d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x276 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V); + const double var_x277 = -1 + var_x276; + const double var_x278 = 1 / var_x277; + const double var_x279 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V); + const double var_x280 = 1 - var_x279; + const double var_x281 = 1 / var_x280; + const double var_x282 = 30 + var_chaste_interface__membrane__V; + const double var_x286 = var_x278 * var_x282; + const double var_x287 = var_x281 * var_x282; + + partialF = -3.2750000000000003e-5 * var_x286 - 1.7975e-5 * var_x287; + } + else + { + const double y_save = rY[11]; + rY[11] += delta; + const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[11])/delta; + rY[11] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__transient_outward_current_zdv_gate__zdv = rY[12]; + // Units: dimensionless; Initial value: 0.011528 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_transient_outward_current_zdv_gate__alpha_zdv = _lt_0_row[28]; // per_second + const double var_transient_outward_current_zdv_gate__beta_zdv = _lt_0_row[29]; // per_second + const double d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv = 0.001 * (-var_chaste_interface__transient_outward_current_zdv_gate__zdv + var_transient_outward_current_zdv_gate__alpha_zdv / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv)) * (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv); // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x288 = 0.040000000000000001 * var_chaste_interface__membrane__V; + const double var_x289 = exp(-1.6000000000000001 + var_x288); + const double var_x290 = 1 + var_x289; + const double var_x291 = 1 / var_x290; + const double var_x292 = var_x289 * var_x291; + const double var_x293 = exp(-3.6000000000000001 - var_x288); + const double var_x294 = 1 + var_x293; + const double var_x295 = var_x293 / var_x294; + + partialF = -10 * var_x292 - 10 * var_x295; + } + else + { + const double y_save = rY[12]; + rY[12] += delta; + const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[12])/delta; + rY[12] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__transient_outward_current_ydv_gate__ydv = rY[13]; + // Units: dimensionless; Initial value: 0.985232 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_transient_outward_current_ydv_gate__alpha_ydv = _lt_0_row[26]; // per_second + const double var_transient_outward_current_ydv_gate__beta_ydv = _lt_0_row[27]; // per_second + const double d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv = 0.001 * (-var_chaste_interface__transient_outward_current_ydv_gate__ydv + var_transient_outward_current_ydv_gate__alpha_ydv / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv)) * (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv); // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x301 = 0.20000000000000001 * var_chaste_interface__membrane__V; + const double var_x302 = exp(12 + var_x301); + const double var_x303 = 1 + var_x302; + const double var_x304 = 1 / var_x303; + const double var_x305 = exp(5 + var_x301); + const double var_x306 = 1 + var_x305; + const double var_x307 = 1 / var_x306; + const double var_x308 = var_x305 * var_x307; + + partialF = -0.014999999999999999 * var_x304 - 0.10000000000000001 * var_x308; + } + else + { + const double y_save = rY[13]; + rY[13] += delta; + const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[13])/delta; + rY[13] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + + + + // Mathematics + const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * ((var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack)) : ((var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0) ? (4000 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2) * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); // millimolar_per_second + const double var_calcium_dynamics__i_tr = 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR = 0.001 * (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__calcium_dynamics__Ca_JSR), 2)); // millimolar / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + + + + const double var_x160 = 0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x161 = 1 / var_x160; + const double var_x162 = 1 - var_chaste_interface__calcium_dynamics__APtrack2; + const double var_x163 = -0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x164 = 60000 * var_x161 * var_x162 * var_x163 * var_chaste_interface__calcium_dynamics__APtrack2; + const double var_x165 = var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001; + const double var_x166 = 1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2; + const double var_x167 = 4000 * var_x166 * var_chaste_interface__calcium_dynamics__OVRLDtrack2; + const double var_x168 = var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0; + const double var_x177 = -var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR; + const double var_x178 = ((var_x165) ? (var_x164 * var_x177) : ((var_x168) ? (var_x167 * var_x177) : (0))); + const double var_x186 = ((var_x165) ? (var_x164) : ((var_x168) ? (var_x167) : (0))); + const double var_x313 = 0.80000000000000004 + var_chaste_interface__calcium_dynamics__Ca_JSR; + const double var_x314 = pow(var_x313, (-2)); + const double var_x315 = 1 / (1 + 8 * var_x314); + const double var_x316 = 0.001 * var_x315; + + partialF = var_x316 * (-5.5555555555555554 - var_x186) + 0.00025000000000000001 * (-var_x178 + 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR) / (pow(var_x313, 3) * pow((0.125 + var_x314), 2)); + } + else + { + const double y_save = rY[14]; + rY[14] += delta; + const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[14])/delta; + rY[14] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + + + + // Mathematics + const double var_calcium_dynamics__i_leak = 0.33333333333333331 * var_chaste_interface__calcium_dynamics__Ca_NSR; // millimolar_per_second + const double var_calcium_dynamics__i_up = 5 * var_chaste_interface__calcium_dynamics__Cai / (0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second + const double var_calcium_dynamics__i_tr = 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_calcium_dynamics__V_JSR = 0.0070588235294117632 * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_dynamics__V_NSR = 0.081176470588235281 * var_ionic_concentrations__V_myo; // micro_litre + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR = 0.001 * var_calcium_dynamics__i_up - 0.001 * var_calcium_dynamics__i_leak - 0.001 * var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_tr / var_calcium_dynamics__V_NSR; // millimolar / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + + partialF = -0.00081642512077294684; + } + else + { + const double y_save = rY[15]; + rY[15] += delta; + const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[15])/delta; + rY[15] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]); // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[8]); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / (_lt_0_row[9]); // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double var_membrane__dVdt = -(GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack = 0.001 * ((var_membrane__dVdt > 150000) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack) : (-500 * var_chaste_interface__calcium_dynamics__APtrack)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__APtrack; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x0 = 0.018717941753901308 * var_chaste_interface__membrane__V; + const double var_x1 = exp(var_x0); + const double var_x2 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = exp(-var_x0); + const double var_x5 = pow(mParameters[2], 3); + const double var_x6 = var_x5 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x7 = var_x4 * var_x6; + const double var_x9 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x10 = 1 + 0.001 * var_x2 + 0.001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = var_x11 * var_x9; + const double var_x13 = 0.002 * var_x12; + const double var_x15 = pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); + const double var_x16 = 1 / (1 + 100 * var_x15); + const double var_x17 = 2 * var_x16; + const double var_x18 = 1 / (1.5 + mParameters[1]); + const double var_x19 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); + const double var_x20 = 0.037435883507802616 * var_chaste_interface__membrane__V; + const double var_x21 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * exp(-var_x20); + const double var_x22 = 1 + 0.1245 * var_x19 + 0.036499999999999998 * var_x21; + const double var_x26 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); + const double var_x27 = var_x26 * var_chaste_interface__T_type_Ca_channel_g_gate__g; + const double var_x28 = 0.050000000000000003 * var_x27; + const double var_x29 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x30 = var_x29 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x32 = _lt_0_row[0]; + const double var_x33 = -1 + var_x32; + const double var_x34 = 1 / var_x33; + const double var_x35 = var_x32 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x36 = var_x35 - 0.34100000000000003 * mParameters[0]; + const double var_x37 = var_x34 * var_x36; + const double var_x38 = 7.8019226357407252 * var_x37; + const double var_x39 = var_x31 * var_x38; + const double var_x43 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x44 = var_x43 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x45 = var_x44 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x46 = exp(var_x20); + const double var_x47 = -1 + var_x46; + const double var_x48 = 1 / var_x47; + const double var_x49 = var_x31 * var_x48; + const double var_x50 = 0.75 * var_x46; + const double var_x51 = -0.75 * mParameters[2] + var_x50 * var_chaste_interface__ionic_concentrations__Nai; + const double var_x52 = 0.0024381008236689767 * var_x51; + const double var_x53 = var_x49 * var_x52; + const double var_x57 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x58 = 1 + var_x57; + const double var_x59 = 1 / var_x58; + const double var_x60 = 0.0055199999999999997 * var_x59; + const double var_x61 = pow(mParameters[1], 0.23999999999999999); + const double var_x62 = 1.921898339896919e-8 * var_x61; + const double var_x63 = 1 / var_chaste_interface__calcium_dynamics__Cai; + const double var_x64 = pow(var_x63, 1.3999999999999999); + const double var_x65 = 1 + 6.4818210260626455e-7 * var_x64; + const double var_x66 = 0.433 + 0.25979999999999998 / var_x65; + const double var_x67 = var_x66 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + const double var_x68 = var_x67 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + const double var_x69 = 1 / var_chaste_interface__ionic_concentrations__Ki; + const double var_x70 = log(var_x69 * mParameters[1]); + const double var_x71 = -26.712338705498265 * var_x70 + var_chaste_interface__membrane__V; + const double var_x72 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); + const double var_x73 = 1 + var_x72; + const double var_x74 = sqrt(mParameters[1]); + const double var_x75 = var_x74 * mParameters[6] / var_x73; + const double var_x76 = var_x75 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; + const double var_x77 = 0.43033148291193518 * var_x76; + const double var_x78 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x70); + const double var_x79 = 1 + var_x78; + const double var_x80 = 1 / var_x79; + const double var_x81 = exp(-2.4444678999999998 + 13.738155796237757 * var_x70 - 0.51429999999999998 * var_chaste_interface__membrane__V); + const double var_x82 = 1 + var_x81; + const double var_x83 = 1 / var_x82; + const double var_x84 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x70); + const double var_x85 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x70); + const double var_x86 = var_x85 + 0.49124000000000001 * var_x84; + const double var_x87 = var_x83 * var_x86; + const double var_x88 = 1 / (1000 * var_x87 + 1020 * var_x80); + const double var_x89 = var_x74 * var_x80 * mParameters[5]; + const double var_x90 = var_x88 * var_x89; + const double var_x91 = 438.93811257017387 * var_x90; + const double var_x92 = -0.75 * mParameters[1] + var_x50 * var_chaste_interface__ionic_concentrations__Ki; + const double var_x93 = 0.00069711623550831479 * var_x92; + const double var_x94 = var_x49 * var_x93; + const double var_x103 = 1 / mParameters[3]; + const double var_x109 = 0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x110 = 1 / var_x109; + const double var_x114 = 1 / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki); + const double var_x115 = -26.712338705498265 * log(var_x114 * (0.018329999999999999 * mParameters[2] + mParameters[1])) + var_chaste_interface__membrane__V; + const double var_x117 = var_x3 - var_x7; + const double var_x124 = 1 / var_chaste_interface__ionic_concentrations__Nai; + const double var_x125 = log(var_x124 * mParameters[2]); + const double var_x126 = -26.712338705498265 * var_x125 + var_chaste_interface__membrane__V; + const double var_x135 = log(var_x63 * mParameters[0]); + const double var_x136 = -13.356169352749133 * var_x135 + var_chaste_interface__membrane__V; + const double var_x149 = var_x18 * mParameters[1] / var_x22; + const double var_x174 = 1.1499999999999999 * var_x110; + const double var_x179 = var_x117 * var_x13; + const double var_x180 = -0.040282206767891383 * var_x135 + var_x136 * var_x28 + var_x174 * var_chaste_interface__calcium_dynamics__Cai + var_x39 * var_chaste_interface__membrane__V; + + partialF = ((var_x103 * (var_x179 + var_x180 + 0.0070159999999999997 * var_chaste_interface__membrane__V - 0.10684935482199306 * var_x125 + var_x115 * var_x68 + var_x126 * var_x45 + var_x149 * var_x17 + var_x53 * var_chaste_interface__membrane__V + var_x60 * var_x71 + var_x62 * var_x71 + var_x71 * var_x77 + var_x71 * var_x91 + var_x94 * var_chaste_interface__membrane__V + GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance()) < -150000) ? (-100.5) : (-0.5)); + } + else + { + const double y_save = rY[16]; + rY[16] += delta; + const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[16])/delta; + rY[16] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack2) : (-500 * var_chaste_interface__calcium_dynamics__APtrack2)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__APtrack2; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + + + + const double var_x317 = (var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001); + + partialF = ((var_x317) ? (-100.5) : (-0.5)); + } + else + { + const double y_save = rY[17]; + rY[17] += delta; + const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[17])/delta; + rY[17] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; + // Units: dimensionless; Initial value: 0.01925 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack3) : (-10 * var_chaste_interface__calcium_dynamics__APtrack3)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__APtrack3; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + + + + const double var_x317 = (var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001); + + partialF = ((var_x317) ? (-100.5) : (-0.01)); + } + else + { + const double y_save = rY[18]; + rY[18] += delta; + const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[18])/delta; + rY[18] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * (-0.34100000000000003 * mParameters[0] + var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[1]); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack = 0.001 * ((var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001) ? (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo) : ((var_chaste_interface__calcium_dynamics__APtrack2 > 0.01) ? (0) : (-500 * var_chaste_interface__calcium_dynamics__Cainfluxtrack))); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + + + + const double var_x318 = var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001; + + partialF = (((var_x318) || (var_chaste_interface__calcium_dynamics__APtrack2 > 0.01)) ? (0) : (-0.5)); + } + else + { + const double y_save = rY[19]; + rY[19] += delta; + const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[19])/delta; + rY[19] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; + // Units: dimensionless; Initial value: 0.01925 + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (1 / (1 + 0.80000000000000004 / var_chaste_interface__calcium_dynamics__Ca_JSR) > 0.69999999999999996)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; + // Units: dimensionless; Initial value: 0.01925 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + + + + + partialF = (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (1 / (1 + 0.80000000000000004 / var_chaste_interface__calcium_dynamics__Ca_JSR) > 0.69999999999999996)) ? (-50) : (-0.5)); + } + else + { + const double y_save = rY[20]; + rY[20] += delta; + const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[20])/delta; + rY[20] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack2)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + + + + const double var_x319 = var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998; + + partialF = (((var_x319) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < 0.97999999999999998)) ? (-50) : (-0.5)); + } + else + { + const double y_save = rY[21]; + rY[21] += delta; + const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[21])/delta; + rY[21] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack3) : (-10 * var_chaste_interface__calcium_dynamics__OVRLDtrack3)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + + + + const double var_x319 = var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998; + + partialF = (((var_x319) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.97999999999999998)) ? (-50) : (-0.01)); + } + else + { + const double y_save = rY[22]; + rY[22] += delta; + const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[22])/delta; + rY[22] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Nai = 1.4862413846711923e-15 * (-var_L_type_Ca_channel__i_CaNa - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Na - var_sodium_background_current__i_Na_b - 3 * var_Na_Ca_exchanger__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond + + return d_dt_chaste_interface_var_ionic_concentrations__Nai; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + + const double var_x0 = 0.018717941753901308 * var_chaste_interface__membrane__V; + const double var_x1 = exp(var_x0); + const double var_x2 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = exp(-var_x0); + const double var_x5 = pow(mParameters[2], 3); + const double var_x6 = var_x5 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x7 = var_x4 * var_x6; + const double var_x9 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x10 = 1 + 0.001 * var_x2 + 0.001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = var_x11 * var_x9; + const double var_x15 = pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); + const double var_x18 = 1 / (1.5 + mParameters[1]); + const double var_x19 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); + const double var_x20 = 0.037435883507802616 * var_chaste_interface__membrane__V; + const double var_x21 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * exp(-var_x20); + const double var_x22 = 1 + 0.1245 * var_x19 + 0.036499999999999998 * var_x21; + const double var_x29 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x30 = var_x29 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x43 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x44 = var_x43 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x45 = var_x44 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x46 = exp(var_x20); + const double var_x47 = -1 + var_x46; + const double var_x48 = 1 / var_x47; + const double var_x49 = var_x31 * var_x48; + const double var_x54 = var_x46 * var_x49 * var_chaste_interface__membrane__V; + const double var_x117 = var_x3 - var_x7; + const double var_x120 = pow(var_x10, (-2)); + const double var_x124 = 1 / var_chaste_interface__ionic_concentrations__Nai; + const double var_x145 = pow(var_chaste_interface__ionic_concentrations__Nai, 2); + const double var_x146 = var_x145 * mParameters[0]; + const double var_x147 = var_x1 * var_x146; + const double var_x149 = var_x18 * mParameters[1] / var_x22; + const double var_x150 = var_x149 / (pow((0.01 + var_x15), 2) * pow(var_chaste_interface__ionic_concentrations__Nai, 3)); + const double var_x152 = 0.10684935482199306 * var_x124 + 0.0018285756177517324 * var_x54 + 26.712338705498265 * var_x124 * var_x45; + const double var_x157 = 1 / M_PI; + const double var_x320 = 0.00018063215662022267 * var_x157; + + partialF = var_x320 * (-var_x152 - 0.12 * var_x150 - 0.018000000000000002 * var_x12 * var_x147 + 1.8e-5 * var_x117 * var_x120 * var_x145 * var_x9 * mParameters[0]); + } + else + { + const double y_save = rY[23]; + rY[23] += delta; + const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[23])/delta; + rY[23] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V / (_lt_0_row[3]); // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / ((1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) * (_lt_0_row[3])); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) / (_lt_0_row[8]); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / (_lt_0_row[9]); // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Ki = 1.4862413846711923e-15 * (-var_ATP_sensitive_potassium_current__i_K_ATP - var_L_type_Ca_channel__i_CaK - var_non_specific_calcium_activated_current__i_ns_K - var_plateau_potassium_current__i_Kp - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to + 2 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond + + return d_dt_chaste_interface_var_ionic_concentrations__Ki; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + + const double var_x20 = 0.037435883507802616 * var_chaste_interface__membrane__V; + const double var_x29 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x30 = var_x29 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x46 = exp(var_x20); + const double var_x47 = -1 + var_x46; + const double var_x48 = 1 / var_x47; + const double var_x49 = var_x31 * var_x48; + const double var_x54 = var_x46 * var_x49 * var_chaste_interface__membrane__V; + const double var_x57 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x58 = 1 + var_x57; + const double var_x59 = 1 / var_x58; + const double var_x61 = pow(mParameters[1], 0.23999999999999999); + const double var_x63 = 1 / var_chaste_interface__calcium_dynamics__Cai; + const double var_x64 = pow(var_x63, 1.3999999999999999); + const double var_x65 = 1 + 6.4818210260626455e-7 * var_x64; + const double var_x66 = 0.433 + 0.25979999999999998 / var_x65; + const double var_x67 = var_x66 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + const double var_x68 = var_x67 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + const double var_x69 = 1 / var_chaste_interface__ionic_concentrations__Ki; + const double var_x70 = log(var_x69 * mParameters[1]); + const double var_x71 = -26.712338705498265 * var_x70 + var_chaste_interface__membrane__V; + const double var_x72 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); + const double var_x73 = 1 + var_x72; + const double var_x74 = sqrt(mParameters[1]); + const double var_x75 = var_x74 * mParameters[6] / var_x73; + const double var_x76 = var_x75 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; + const double var_x78 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x70); + const double var_x79 = 1 + var_x78; + const double var_x80 = 1 / var_x79; + const double var_x81 = exp(-2.4444678999999998 + 13.738155796237757 * var_x70 - 0.51429999999999998 * var_chaste_interface__membrane__V); + const double var_x82 = 1 + var_x81; + const double var_x83 = 1 / var_x82; + const double var_x84 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x70); + const double var_x85 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x70); + const double var_x86 = var_x85 + 0.49124000000000001 * var_x84; + const double var_x87 = var_x83 * var_x86; + const double var_x88 = 1 / (1000 * var_x87 + 1020 * var_x80); + const double var_x89 = var_x74 * var_x80 * mParameters[5]; + const double var_x90 = var_x88 * var_x89; + const double var_x95 = 1000 * var_x83; + const double var_x96 = pow(var_x79, (-2)); + const double var_x97 = var_x81 * var_x86 / pow(var_x82, 2); + const double var_x98 = 0.0004218936106979757 * var_x71 * var_x89 / pow((var_x80 + 0.98039215686274506 * var_x87), 2); + const double var_x99 = var_x71 * var_x74; + const double var_x100 = var_x78 * var_x96; + const double var_x101 = var_x88 * var_x99 * mParameters[5]; + const double var_x114 = 1 / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki); + const double var_x142 = var_x114 * var_x68; + const double var_x153 = 0.00052283717663123607 * var_x54 + 26.712338705498265 * var_x142 + var_x98 * (-var_x95 * (1.053972635420138 * var_x69 * var_x84 + 1.6494869150645177 * var_x69 * var_x85) - 13738.155796237757 * var_x69 * var_x97 + 6498.310636886562 * var_x69 * var_x78 * var_x96) + 11.495160327182951 * var_x69 * var_x76 + 5.1338399412861326e-7 * var_x61 * var_x69 + 0.14745210965435041 * var_x59 * var_x69 + 11725.06353372661 * var_x69 * var_x90 - 2796.4276527937964 * var_x100 * var_x101 * var_x69; + const double var_x157 = 1 / M_PI; + const double var_x320 = 0.00018063215662022267 * var_x157; + + partialF = -var_x153 * var_x320; + } + else + { + const double y_save = rY[24]; + rY[24] += delta; + const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[24])/delta; + rY[24] = y_save; + } + return partialF; + } + + std::vector Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel__P_Ca = 0.00054000000000000001; // cm_per_second + const double var_L_type_Ca_channel__P_K = 1.9299999999999999e-7; // cm_per_second + const double var_L_type_Ca_channel__P_Na = 6.75e-7; // cm_per_second + const double var_L_type_Ca_channel__gamma_Cai = 1; // dimensionless + const double var_L_type_Ca_channel__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_L_type_Ca_channel__gamma_Ki = 0.75; // dimensionless + const double var_L_type_Ca_channel__gamma_Ko = 0.75; // dimensionless + const double var_L_type_Ca_channel__gamma_Nai = 0.75; // dimensionless + const double var_L_type_Ca_channel__gamma_Nao = 0.75; // dimensionless + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // millimolar + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + var_chaste_interface__calcium_dynamics__Cai / var_L_type_Ca_channel_f_Ca_gate__Km_Ca); // dimensionless + const double var_membrane__F = 96485; // coulomb_per_mole + const double var_membrane__I_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__R = 8314; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai) / var_membrane__F; // millivolt + const double var_L_type_Ca_channel__I_CaCa = 4 * pow(var_membrane__F, 2) * (-var_L_type_Ca_channel__gamma_Cao * mParameters[0] + var_L_type_Ca_channel__gamma_Cai * var_chaste_interface__calcium_dynamics__Cai * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_Ca * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_channel__I_CaK = pow(var_membrane__F, 2) * (-var_L_type_Ca_channel__gamma_Ko * mParameters[1] + var_L_type_Ca_channel__gamma_Ki * var_chaste_interface__ionic_concentrations__Ki * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_K * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_channel__I_CaNa = pow(var_membrane__F, 2) * (-var_L_type_Ca_channel__gamma_Nao * mParameters[2] + var_L_type_Ca_channel__gamma_Nai * var_chaste_interface__ionic_concentrations__Nai * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_Na * var_chaste_interface__membrane__V / ((-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L; // uA_per_cm2 + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 / (_lt_0_row[9]); // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__g_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[6]; // milliS_per_microF + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_rapid_delayed_rectifier_potassium_current__Rect * var_rapid_delayed_rectifier_potassium_current__g_Kr * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[5]; // milliS_per_cm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)); // per_second + const double var_time_independent_potassium_current_K1_gate__beta_K1 = 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // per_second + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + + std::vector dqs(6); + dqs[0] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[1] = var_fast_sodium_current__i_Na_converted; + dqs[2] = var_time_independent_potassium_current__i_K1_converted; + dqs[3] = var_rapid_delayed_rectifier_potassium_current__i_Kr_converted; + dqs[4] = var_membrane__I_st_converted; + dqs[5] = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "viswanathan_model_1999_epi"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-88.984); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00035237); + + // rY[2]: + this->mVariableNames.push_back("fast_sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00079287); + + // rY[3]: + this->mVariableNames.push_back("fast_sodium_current_h_gate__h"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9938); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99573); + + // rY[5]: + this->mVariableNames.push_back("L_type_Ca_channel_d_gate__d"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.18355e-06); + + // rY[6]: + this->mVariableNames.push_back("L_type_Ca_channel_f_gate__f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9974388); + + // rY[7]: + this->mVariableNames.push_back("T_type_Ca_channel_b_gate__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000967785); + + // rY[8]: + this->mVariableNames.push_back("T_type_Ca_channel_g_gate__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.95331988); + + // rY[9]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00032151644); + + // rY[10]: + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current_xs1_gate__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0272635); + + // rY[11]: + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current_xs2_gate__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0631269); + + // rY[12]: + this->mVariableNames.push_back("transient_outward_current_zdv_gate__zdv"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.011528); + + // rY[13]: + this->mVariableNames.push_back("transient_outward_current_ydv_gate__ydv"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.985232); + + // rY[14]: + this->mVariableNames.push_back("calcium_dynamics__Ca_JSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.817895); + + // rY[15]: + this->mVariableNames.push_back("calcium_dynamics__Ca_NSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.797668); + + // rY[16]: + this->mVariableNames.push_back("calcium_dynamics__APtrack"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.814e-87); + + // rY[17]: + this->mVariableNames.push_back("calcium_dynamics__APtrack2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.1084e-86); + + // rY[18]: + this->mVariableNames.push_back("calcium_dynamics__APtrack3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01925); + + // rY[19]: + this->mVariableNames.push_back("calcium_dynamics__Cainfluxtrack"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.784e-87); + + // rY[20]: + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[21]: + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[22]: + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[23]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(15.6748357); + + // rY[24]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(137.6244); + + // mParameters[0]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[1]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi--sympy_1_13.cpp new file mode 100644 index 00000000..b605ac51 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi--sympy_1_13.cpp @@ -0,0 +1,3454 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: viswanathan_model_1999_epi +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenSecondOrderOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_viswanathan_model_1999_epi.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractGeneralizedRushLarsenCardiacCell* Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt(p_solver, p_stimulus); +} + +bool Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::registered = ModelFactory::Register("dynamic_viswanathan_model_1999_epi", "GeneralizedRushLarsenSecondOrderOpt", (ModelFactory::TCreateMethod)Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::CreateMethod); + +class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<30; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= 2){ + EXCEPTION("Lookup table 15 at ["<= 2){ + EXCEPTION("Lookup table 16 at ["<= 2){ + EXCEPTION("Lookup table 17 at ["<= 2){ + EXCEPTION("Lookup table 18 at ["<= 1.0000000000000001e-5) ? (320 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V))) : (3200)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[19] < 2){ + double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[19] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[19] >= 2){ + EXCEPTION("Lookup table 19 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[30]; + + // Lookup tables + double (*_lookup_table_0)[30]; + int _lookup_table_0_num_misshit_piecewise[30] = {0}; + +}; + +std::shared_ptr Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -25.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = 2; // millisecond + const double var_chaste_interface__membrane__stim_period_converted = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start_converted = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration_converted, + var_chaste_interface__membrane__stim_period_converted, + var_chaste_interface__membrane__stim_start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 25, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1.8; // (var_calcium_dynamics__Cao) [millimolar] + this->mParameters[1] = 4.5; // (var_ionic_concentrations__Ko) [millimolar] + this->mParameters[2] = 132; // (var_ionic_concentrations__Nao) [millimolar] + this->mParameters[3] = 0.001; // (var_membrane__Cm) [microF] + this->mParameters[4] = 16; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[5] = 0.75; // (var_time_independent_potassium_current__g_K1_max) [milliS_per_cm2] + this->mParameters[6] = 0.02614; // (var_rapid_delayed_rectifier_potassium_current__g_Kr_max) [milliS_per_cm2] + } + + Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::~Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt() + { + } + + AbstractLookupTableCollection* Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::GetLookupTableCollection() + { + return Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance(); + } + + void Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 25; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_Ca_L_converted = (7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V + 0.0024381008236689767 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V + 0.00069711623550831479 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // uA_per_cm2 + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_Ca = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) + 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * _lt_0_row[8] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1_converted = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // uA_per_cm2 + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double var_chaste_interface__i_ionic = -var_L_type_Ca_channel__i_Ca_L_converted - var_fast_sodium_current__i_Na_converted - var_rapid_delayed_rectifier_potassium_current__i_Kr_converted - var_time_independent_potassium_current__i_K1_converted - HeartConfig::Instance()->GetCapacitance() * var_ATP_sensitive_potassium_current__i_K_ATP - HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa - HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T - HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Ca_b - HeartConfig::Instance()->GetCapacitance() * var_non_specific_calcium_activated_current__i_ns_Ca - HeartConfig::Instance()->GetCapacitance() * var_plateau_potassium_current__i_Kp - HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump__i_p_Ca - HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks - HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Na_b - HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK - HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + const double yinit = rY[v_index]; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * _lt_0_row[8] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double var_membrane__dVdt = -1 * (GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__dVdt; // millivolt / millisecond + + double evalF = d_dt_chaste_interface_var_membrane__V; + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += 0.5*evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*0.5*mDt)-1.0); + } + + rY[v_index] = yinit; + evalF = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + mEvalF[0] = evalF; + partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] = yinit + evalF*mDt; + } + else + { + rY[v_index] = yinit + (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const double delta=1e-8; + const unsigned size = GetNumberOfStateVariables(); + mYInit = rY; + double y_save; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__transient_outward_current_zdv_gate__zdv = rY[12]; + // Units: dimensionless; Initial value: 0.011528 + double var_chaste_interface__transient_outward_current_ydv_gate__ydv = rY[13]; + // Units: dimensionless; Initial value: 0.985232 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; + // Units: dimensionless; Initial value: 0.01925 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack2) : (-500 * var_chaste_interface__calcium_dynamics__APtrack2)); // 1 / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack3) : (-10 * var_chaste_interface__calcium_dynamics__APtrack3)); // 1 / millisecond + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack2)); // 1 / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack3) : (-10 * var_chaste_interface__calcium_dynamics__OVRLDtrack3)); // 1 / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (1 / (1 + 0.80000000000000004 / var_chaste_interface__calcium_dynamics__Ca_JSR) > 0.69999999999999996)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack)); // 1 / millisecond + const double var_calcium_dynamics__i_leak = 0.33333333333333331 * var_chaste_interface__calcium_dynamics__Ca_NSR; // millimolar_per_second + const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * ((var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack)) : ((var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0) ? (4000 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2) * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); // millimolar_per_second + const double var_calcium_dynamics__i_up = 5 * var_chaste_interface__calcium_dynamics__Cai / (0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second + const double var_calcium_dynamics__i_tr = 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR = 0.001 * (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__calcium_dynamics__Ca_JSR), 2)); // millimolar / millisecond + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_calcium_dynamics__V_JSR = 0.0070588235294117632 * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_dynamics__V_NSR = 0.081176470588235281 * var_ionic_concentrations__V_myo; // micro_litre + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR = 0.001 * var_calcium_dynamics__i_up - 0.001 * var_calcium_dynamics__i_leak - 0.001 * var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_tr / var_calcium_dynamics__V_NSR; // millimolar / millisecond + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel_d_gate__E0_d = 10 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(var_L_type_Ca_channel_d_gate__E0_d) < 1.0000000000000001e-5) ? (0.0045787545787545781) : (0.028571428571428571 * (1 - exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__E0_d)); // second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d - 0.001 * (1 - var_L_type_Ca_channel_d_gate__d_infinity) * var_chaste_interface__L_type_Ca_channel_d_gate__d / var_L_type_Ca_channel_d_gate__tau_d; // 1 / millisecond + const double var_L_type_Ca_channel_f_gate__f_infinity = _lt_0_row[10]; // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f = _lt_0_row[11]; // second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f - 0.001 * (1 - var_L_type_Ca_channel_f_gate__f_infinity) * var_chaste_interface__L_type_Ca_channel_f_gate__f / var_L_type_Ca_channel_f_gate__tau_f; // 1 / millisecond + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b = 0.001 * _lt_0_row[13] * (-var_chaste_interface__T_type_Ca_channel_b_gate__b + _lt_0_row[12]); // 1 / millisecond + const double d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g = 0.001 * (-var_chaste_interface__T_type_Ca_channel_g_gate__g + _lt_0_row[14]) * ((var_chaste_interface__membrane__V <= 0) ? (1 / (0.012 - 0.00087500000000000002 * var_chaste_interface__membrane__V)) : (83.333333333333329)); // 1 / millisecond + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * _lt_0_row[15] - 0.001 * _lt_0_row[16] * var_chaste_interface__fast_sodium_current_h_gate__h; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * (1 - var_chaste_interface__fast_sodium_current_j_gate__j) * _lt_0_row[17] - 0.001 * _lt_0_row[18] * var_chaste_interface__fast_sodium_current_j_gate__j; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * _lt_0_row[19] - 0.080000000000000002 * var_chaste_interface__fast_sodium_current_m_gate__m * _lt_0_row[20]; // 1 / millisecond + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr = 0.001 * (-var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr + _lt_0_row[21]) * (_lt_0_row[22]); // 1 / millisecond + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cai = 0.001 * (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo + (-var_calcium_dynamics__i_up + var_calcium_dynamics__i_leak) * var_calcium_dynamics__V_NSR / var_ionic_concentrations__V_myo + var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_rel / var_ionic_concentrations__V_myo) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__calcium_dynamics__Cai), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack = 0.001 * ((var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001) ? (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo) : ((var_chaste_interface__calcium_dynamics__APtrack2 > 0.01) ? (0) : (-500 * var_chaste_interface__calcium_dynamics__Cainfluxtrack))); // 1 / millisecond + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 + _lt_0_row[23]) * (_lt_0_row[24]); // 1 / millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 + _lt_0_row[23]) * (_lt_0_row[25]); // 1 / millisecond + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Nai = 1.4862413846711923e-15 * (-var_L_type_Ca_channel__i_CaNa - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Na - var_sodium_background_current__i_Na_b - 3 * var_Na_Ca_exchanger__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * _lt_0_row[8] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current_ydv_gate__alpha_ydv = _lt_0_row[26]; // per_second + const double var_transient_outward_current_ydv_gate__beta_ydv = _lt_0_row[27]; // per_second + const double d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv = 0.001 * (-var_chaste_interface__transient_outward_current_ydv_gate__ydv + var_transient_outward_current_ydv_gate__alpha_ydv / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv)) * (1 * var_transient_outward_current_ydv_gate__alpha_ydv + 1 * var_transient_outward_current_ydv_gate__beta_ydv); // 1 / millisecond + const double var_transient_outward_current_zdv_gate__alpha_zdv = _lt_0_row[28]; // per_second + const double var_transient_outward_current_zdv_gate__beta_zdv = _lt_0_row[29]; // per_second + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Ki = 1.4862413846711923e-15 * (-var_ATP_sensitive_potassium_current__i_K_ATP - var_L_type_Ca_channel__i_CaK - var_non_specific_calcium_activated_current__i_ns_K - var_plateau_potassium_current__i_Kp - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to + 2 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond + const double var_membrane__dVdt = -1 * (GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack = 0.001 * ((var_membrane__dVdt > 150000) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack) : (-500 * var_chaste_interface__calcium_dynamics__APtrack)); // 1 / millisecond + const double d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv = 0.001 * (-var_chaste_interface__transient_outward_current_zdv_gate__zdv + var_transient_outward_current_zdv_gate__alpha_zdv / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv)) * (1 * var_transient_outward_current_zdv_gate__alpha_zdv + 1 * var_transient_outward_current_zdv_gate__beta_zdv); // 1 / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__dVdt; // millivolt / millisecond + } + + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + mEvalF[1] = d_dt_chaste_interface_var_calcium_dynamics__Cai; + mEvalF[2] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + mEvalF[3] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + mEvalF[4] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + mEvalF[5] = d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d; + mEvalF[6] = d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f; + mEvalF[7] = d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b; + mEvalF[8] = d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g; + mEvalF[9] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr; + mEvalF[10] = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + mEvalF[11] = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + mEvalF[12] = d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv; + mEvalF[13] = d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv; + mEvalF[14] = d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR; + mEvalF[15] = d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR; + mEvalF[16] = d_dt_chaste_interface_var_calcium_dynamics__APtrack; + mEvalF[17] = d_dt_chaste_interface_var_calcium_dynamics__APtrack2; + mEvalF[18] = d_dt_chaste_interface_var_calcium_dynamics__APtrack3; + mEvalF[19] = d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack; + mEvalF[20] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack; + mEvalF[21] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2; + mEvalF[22] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3; + mEvalF[23] = d_dt_chaste_interface_var_ionic_concentrations__Nai; + mEvalF[24] = d_dt_chaste_interface_var_ionic_concentrations__Ki; + + + mPartialF[0] = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time_converted, rY, delta); + for (unsigned var=0; var& rY) + { + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * _lt_0_row[8] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double var_membrane__dVdt = -1 * (GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__dVdt; // millivolt / millisecond + + return d_dt_chaste_interface_var_membrane__V; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x0 = 0.018717941753901308 * var_chaste_interface__membrane__V; + const double var_x1 = exp(var_x0); + const double var_x2 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = exp(-var_x0); + const double var_x5 = pow(mParameters[2], 3); + const double var_x6 = var_x5 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x7 = var_x4 * var_x6; + const double var_x8 = 0.018717941753901308 * var_x3 + 0.018717941753901308 * var_x7; + const double var_x9 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x10 = 1 + 0.001 * var_x2 + 0.001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = var_x11 * var_x9; + const double var_x13 = 0.002 * var_x12; + const double var_x14 = var_x13 * var_x8; + const double var_x15 = pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); + const double var_x16 = 1 / (1 + 100 * var_x15); + const double var_x17 = 2 * var_x16; + const double var_x18 = 1 / (1.5 + mParameters[1]); + const double var_x19 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); + const double var_x20 = 0.037435883507802616 * var_chaste_interface__membrane__V; + const double var_x21 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * exp(-var_x20); + const double var_x22 = 1 + 0.1245 * var_x19 + 0.036499999999999998 * var_x21; + const double var_x23 = pow(var_x22, (-2)); + const double var_x24 = 0.0013664097480347954 * var_x21 + 0.00046607674967214262 * var_x19; + const double var_x25 = var_x18 * var_x23 * var_x24 * mParameters[1]; + const double var_x26 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); + const double var_x27 = var_x26 * var_chaste_interface__T_type_Ca_channel_g_gate__g; + const double var_x28 = 0.050000000000000003 * var_x27; + const double var_x29 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x30 = var_x29 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x32 = _lt_0_row[0]; + const double var_x33 = -1 + var_x32; + const double var_x34 = 1 / var_x33; + const double var_x35 = var_x32 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x36 = 1 * var_x35 - 0.34100000000000003 * mParameters[0]; + const double var_x37 = var_x34 * var_x36; + const double var_x38 = 7.8019226357407252 * var_x37; + const double var_x39 = var_x31 * var_x38; + const double var_x40 = var_x31 * var_chaste_interface__membrane__V; + const double var_x41 = var_x34 * var_x40; + const double var_x42 = var_x28 + var_x39 + 0.58414373385695628 * var_x35 * var_x41 - 0.58414373385695628 * var_x32 * var_x36 * var_x40 / pow(var_x33, 2); + const double var_x43 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x44 = var_x43 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x45 = var_x44 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x46 = exp(var_x20); + const double var_x47 = -1 + var_x46; + const double var_x48 = 1 / var_x47; + const double var_x49 = var_x31 * var_x48; + const double var_x50 = 0.75 * var_x46; + const double var_x51 = -0.75 * mParameters[2] + var_x50 * var_chaste_interface__ionic_concentrations__Nai; + const double var_x52 = 0.0024381008236689767 * var_x51; + const double var_x53 = var_x49 * var_x52; + const double var_x54 = var_x46 * var_x49 * var_chaste_interface__membrane__V; + const double var_x55 = var_x40 * var_x46 / pow(var_x47, 2); + const double var_x56 = var_x45 + var_x53 + 6.8454343811362063e-5 * var_x54 * var_chaste_interface__ionic_concentrations__Nai - 9.1272458415149417e-5 * var_x51 * var_x55; + const double var_x57 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x58 = 1 + var_x57; + const double var_x59 = 1 / var_x58; + const double var_x60 = 0.0055199999999999997 * var_x59; + const double var_x61 = pow(mParameters[1], 0.23999999999999999); + const double var_x62 = 1.921898339896919e-8 * var_x61; + const double var_x63 = 1 / var_chaste_interface__calcium_dynamics__Cai; + const double var_x64 = pow(var_x63, 1.3999999999999999); + const double var_x65 = 1 + 6.4818210260626455e-7 * var_x64; + const double var_x66 = 0.433 + 0.25979999999999998 / var_x65; + const double var_x67 = var_x66 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + const double var_x68 = var_x67 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + const double var_x69 = 1 / var_chaste_interface__ionic_concentrations__Ki; + const double var_x70 = log(var_x69 * mParameters[1]); + const double var_x71 = -26.712338705498265 * var_x70 + var_chaste_interface__membrane__V; + const double var_x72 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); + const double var_x73 = 1 + var_x72; + const double var_x74 = sqrt(mParameters[1]); + const double var_x75 = var_x74 * mParameters[6] / var_x73; + const double var_x76 = var_x75 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; + const double var_x77 = 0.43033148291193518 * var_x76; + const double var_x78 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x70); + const double var_x79 = 1 + var_x78; + const double var_x80 = 1 / var_x79; + const double var_x81 = exp(-2.4444678999999998 + 13.738155796237757 * var_x70 - 0.51429999999999998 * var_chaste_interface__membrane__V); + const double var_x82 = 1 + var_x81; + const double var_x83 = 1 / var_x82; + const double var_x84 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x70); + const double var_x85 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x70); + const double var_x86 = var_x85 + 0.49124000000000001 * var_x84; + const double var_x87 = var_x83 * var_x86; + const double var_x88 = 1 / (1000 * var_x87 + 1020 * var_x80); + const double var_x89 = var_x74 * var_x80 * mParameters[5]; + const double var_x90 = var_x88 * var_x89; + const double var_x91 = 438.93811257017387 * var_x90; + const double var_x92 = -0.75 * mParameters[1] + var_x50 * var_chaste_interface__ionic_concentrations__Ki; + const double var_x93 = 0.00069711623550831479 * var_x92; + const double var_x94 = var_x49 * var_x93; + const double var_x95 = 1000 * var_x83; + const double var_x96 = pow(var_x79, (-2)); + const double var_x97 = var_x81 * var_x86 / pow(var_x82, 2); + const double var_x98 = 0.0004218936106979757 * var_x71 * var_x89 / pow((var_x80 + 0.98039215686274506 * var_x87), 2); + const double var_x99 = var_x71 * var_x74; + const double var_x100 = var_x78 * var_x96; + const double var_x101 = var_x88 * var_x99 * mParameters[5]; + const double var_x102 = var_x60 + var_x62 + var_x68 + var_x77 + var_x91 + var_x94 + var_x98 * (-514.29999999999995 * var_x97 - var_x95 * (0.061749999999999999 * var_x85 + 0.039456396800000001 * var_x84) + 243.26999999999998 * var_x78 * var_x96) + 1.9572871637915374e-5 * var_x54 * var_chaste_interface__ionic_concentrations__Ki - 2.6097162183887167e-5 * var_x55 * var_x92 - 104.68673984798647 * var_x100 * var_x101 + 0.00092307692307692295 * var_x57 * var_x71 / pow(var_x58, 2) - 0.019211226915711394 * var_x72 * var_x99 * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / pow(var_x73, 2); + const double var_x103 = 1 / mParameters[3]; + const double var_x104 = 0.001 * var_x103; + + partialF = -var_x104 * (0.0070159999999999997 + var_x102 + var_x14 + var_x42 + var_x56 + var_x17 * var_x25); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_dynamics__i_leak = 0.33333333333333331 * var_chaste_interface__calcium_dynamics__Ca_NSR; // millimolar_per_second + const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * ((var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack)) : ((var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0) ? (4000 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2) * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); // millimolar_per_second + const double var_calcium_dynamics__i_up = 5 * var_chaste_interface__calcium_dynamics__Cai / (0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_calcium_dynamics__V_JSR = 0.0070588235294117632 * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_dynamics__V_NSR = 0.081176470588235281 * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cai = 0.001 * (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo + (-var_calcium_dynamics__i_up + var_calcium_dynamics__i_leak) * var_calcium_dynamics__V_NSR / var_ionic_concentrations__V_myo + var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_rel / var_ionic_concentrations__V_myo) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__calcium_dynamics__Cai), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai), 2)); // millimolar / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__Cai; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x0 = 0.018717941753901308 * var_chaste_interface__membrane__V; + const double var_x1 = exp(var_x0); + const double var_x2 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = exp(-var_x0); + const double var_x5 = pow(mParameters[2], 3); + const double var_x6 = var_x5 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x7 = var_x4 * var_x6; + const double var_x9 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x10 = 1 + 0.001 * var_x2 + 0.001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = var_x11 * var_x9; + const double var_x13 = 0.002 * var_x12; + const double var_x26 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); + const double var_x27 = var_x26 * var_chaste_interface__T_type_Ca_channel_g_gate__g; + const double var_x28 = 0.050000000000000003 * var_x27; + const double var_x29 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x30 = var_x29 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x32 = _lt_0_row[0]; + const double var_x33 = -1 + var_x32; + const double var_x34 = 1 / var_x33; + const double var_x35 = var_x32 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x36 = 1 * var_x35 - 0.34100000000000003 * mParameters[0]; + const double var_x37 = var_x34 * var_x36; + const double var_x38 = 7.8019226357407252 * var_x37; + const double var_x39 = var_x31 * var_x38; + const double var_x40 = var_x31 * var_chaste_interface__membrane__V; + const double var_x41 = var_x34 * var_x40; + const double var_x63 = 1 / var_chaste_interface__calcium_dynamics__Cai; + const double var_x105 = var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__membrane__V; + const double var_x106 = var_x105 * var_chaste_interface__L_type_Ca_channel_f_gate__f / pow((0.00059999999999999995 + var_chaste_interface__calcium_dynamics__Cai), 2); + const double var_x109 = 0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x110 = 1 / var_x109; + const double var_x111 = pow(var_x109, (-2)); + const double var_x112 = 1.1499999999999999 * var_x111 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x113 = 0.0046811535814444347 * var_x106 * var_x37; + const double var_x117 = var_x3 - var_x7; + const double var_x118 = var_x11 * var_x117 / pow((0.0068999999999999999 + var_chaste_interface__calcium_dynamics__Cai), 2); + const double var_x119 = var_x4 * var_x5; + const double var_x120 = pow(var_x10, (-2)); + const double var_x121 = var_x117 * var_x120 * var_x9; + const double var_x122 = var_x121 * var_x5; + const double var_x123 = 1.38e-5 * var_x118 + 1.9999999999999999e-6 * var_x122 + var_x119 * var_x13; + const double var_x135 = log(var_x63 * mParameters[0]); + const double var_x136 = -13.356169352749133 * var_x135 + var_chaste_interface__membrane__V; + const double var_x154 = 0.0023800000000000002 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x155 = 1 + 0.00011900000000000002 / pow(var_x154, 2) + 3.5000000000000004e-5 * var_x111; + const double var_x156 = 1 / var_x155; + const double var_x157 = 1 / M_PI; + const double var_x160 = 0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x161 = 1 / var_x160; + const double var_x162 = 1 - var_chaste_interface__calcium_dynamics__APtrack2; + const double var_x163 = -0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x164 = 60000 * var_x161 * var_x162 * var_x163 * var_chaste_interface__calcium_dynamics__APtrack2; + const double var_x165 = var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001; + const double var_x166 = 1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2; + const double var_x167 = 4000 * var_x166 * var_chaste_interface__calcium_dynamics__OVRLDtrack2; + const double var_x168 = var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0; + const double var_x169 = ((var_x165) ? (-var_x164) : ((var_x168) ? (-var_x167) : (0))); + const double var_x170 = 0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x171 = 1 / var_x170; + const double var_x172 = 0.40588235294117642 * var_x171; + const double var_x173 = var_chaste_interface__calcium_dynamics__Cai / pow(var_x170, 2); + const double var_x174 = 1.1499999999999999 * var_x110; + const double var_x175 = var_x123 + var_x174 - var_x112 - var_x113 + 0.040282206767891383 * var_x63 + 7.8019226357407252 * var_x32 * var_x41 + 0.6678084676374566 * var_x27 * var_x63; + const double var_x176 = 0.090316078310111333 * var_x157; + const double var_x177 = -var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR; + const double var_x178 = ((var_x165) ? (var_x164 * var_x177) : ((var_x168) ? (var_x167 * var_x177) : (0))); + const double var_x179 = var_x117 * var_x13; + const double var_x180 = -0.040282206767891383 * var_x135 + var_x136 * var_x28 + var_x174 * var_chaste_interface__calcium_dynamics__Cai + var_x39 * var_chaste_interface__membrane__V; + + partialF = 0.001 * var_x156 * (-var_x172 + 0.40588235294117642 * var_x173 + 0.0070588235294117632 * var_x169 - var_x175 * var_x176) + 0.001 * (0.00023800000000000004 / pow(var_x154, 3) + 7.0000000000000007e-5 / pow(var_x109, 3)) * (0.027058823529411764 * var_chaste_interface__calcium_dynamics__Ca_NSR + 0.0070588235294117632 * var_x178 - var_x172 * var_chaste_interface__calcium_dynamics__Cai - var_x176 * (var_x180 - var_x179 + 0.003016 * var_chaste_interface__membrane__V)) / pow(var_x155, 2); + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * _lt_0_row[19] - 0.080000000000000002 * var_chaste_interface__fast_sodium_current_m_gate__m * _lt_0_row[20]; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x192 = _lt_0_row[20]; + const double var_x195 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x196 = exp(-4.7130000000000001 - var_x195); + const double var_x197 = 1 - var_x196; + const double var_x198 = 0.32000000000000001 / var_x197; + const double var_x199 = 47.130000000000003 + var_chaste_interface__membrane__V; + const double var_x200 = fabs(var_x199) >= 1.0000000000000001e-5; + const double var_x201 = 0.080000000000000002 * var_x192; + + partialF = ((var_x200) ? (-var_x201 - var_x198 * var_x199) : (-3.2000000000000002 - var_x201)); + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * _lt_0_row[15] - 0.001 * _lt_0_row[16] * var_chaste_interface__fast_sodium_current_h_gate__h; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x202 = exp(0.079000000000000001 * var_chaste_interface__membrane__V); + const double var_x203 = exp(0.34999999999999998 * var_chaste_interface__membrane__V); + const double var_x204 = exp(-11.764705882352942 - 0.14705882352941177 * var_chaste_interface__membrane__V); + const double var_x205 = var_chaste_interface__membrane__V < -40; + const double var_x206 = exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__membrane__V); + const double var_x207 = 1 + var_x206; + + partialF = ((var_x205) ? (-310000 * var_x203 - 0.13500000000000001 * var_x204 - 3.5600000000000001 * var_x202) : (-7.6923076923076934 / var_x207)); + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * (1 - var_chaste_interface__fast_sodium_current_j_gate__j) * _lt_0_row[17] - 0.001 * _lt_0_row[18] * var_chaste_interface__fast_sodium_current_j_gate__j; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x195 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x205 = var_chaste_interface__membrane__V < -40; + const double var_x209 = exp(0.24440000000000001 * var_chaste_interface__membrane__V); + const double var_x210 = exp(-0.043909999999999998 * var_chaste_interface__membrane__V); + const double var_x211 = -127140 * var_x209 - 3.4740000000000003e-5 * var_x210; + const double var_x213 = exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V); + const double var_x214 = 1 + var_x213; + const double var_x215 = 1 / var_x214; + const double var_x216 = exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__membrane__V); + const double var_x217 = 1 + var_x216; + const double var_x218 = exp(-0.01052 * var_chaste_interface__membrane__V); + const double var_x219 = var_x218 / var_x217; + const double var_x220 = 37.780000000000001 + var_chaste_interface__membrane__V; + const double var_x221 = var_x215 * var_x220; + const double var_x222 = exp(-3.2000000000000002 - var_x195); + const double var_x223 = 1 + var_x222; + const double var_x224 = exp(-2.5349999999999999e-7 * var_chaste_interface__membrane__V); + const double var_x225 = var_x224 / var_x223; + + partialF = ((var_x205) ? (-0.1212 * var_x219 - var_x211 * var_x221) : (-0.29999999999999999 * var_x225)); + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + + + + // Mathematics + const double var_L_type_Ca_channel_d_gate__E0_d = 10 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(var_L_type_Ca_channel_d_gate__E0_d) < 1.0000000000000001e-5) ? (0.0045787545787545781) : (0.028571428571428571 * (1 - exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__E0_d)); // second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d - 0.001 * (1 - var_L_type_Ca_channel_d_gate__d_infinity) * var_chaste_interface__L_type_Ca_channel_d_gate__d / var_L_type_Ca_channel_d_gate__tau_d; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x226 = exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V); + const double var_x227 = 1 + var_x226; + const double var_x228 = 1 / var_x227; + const double var_x230 = 10 + var_chaste_interface__membrane__V; + const double var_x231 = fabs(var_x230) < 1.0000000000000001e-5; + const double var_x232 = 1 - var_x226; + const double var_x233 = 1 / var_x232; + const double var_x236 = 1 - 1 * var_x228; + const double var_x237 = ((var_x231) ? (218.40000000000003) : (35 * var_x227 * var_x230 * var_x233)); + const double var_x239 = 0.001 * var_x237; + + partialF = -var_x228 * var_x239 - var_x236 * var_x239; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_gate__f_infinity = _lt_0_row[10]; // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f = _lt_0_row[11]; // second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f - 0.001 * (1 - var_L_type_Ca_channel_f_gate__f_infinity) * var_chaste_interface__L_type_Ca_channel_f_gate__f / var_L_type_Ca_channel_f_gate__tau_f; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x240 = exp(4 + 0.125 * var_chaste_interface__membrane__V); + const double var_x241 = 1 + var_x240; + const double var_x242 = exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane__V); + const double var_x243 = 1 + var_x242; + const double var_x245 = exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__membrane__V), 2)); + const double var_x246 = 20 + 19.699999999999999 * var_x245; + const double var_x247 = 0.001 * var_x246; + const double var_x249 = 1 / var_x241 + 0.59999999999999998 / var_x243; + const double var_x250 = 1 - var_x249; + + partialF = -var_x247 * var_x249 - var_x247 * var_x250; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b = 0.001 * _lt_0_row[13] * (-var_chaste_interface__T_type_Ca_channel_b_gate__b + _lt_0_row[12]); // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x254 = exp(5.5555555555555554 + 0.22222222222222221 * var_chaste_interface__membrane__V); + const double var_x255 = 1 + var_x254; + const double var_x256 = 1 / var_x255; + const double var_x257 = 1 / (0.0037000000000000002 + 0.0061000000000000004 * var_x256); + + partialF = -0.001 * var_x257; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g = 0.001 * (-var_chaste_interface__T_type_Ca_channel_g_gate__g + _lt_0_row[14]) * ((var_chaste_interface__membrane__V <= 0) ? (1 / (0.012 - 0.00087500000000000002 * var_chaste_interface__membrane__V)) : (83.333333333333329)); // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x260 = 1 / (0.012 - 0.00087500000000000002 * var_chaste_interface__membrane__V); + const double var_x262 = var_chaste_interface__membrane__V <= 0; + + partialF = ((var_x262) ? (-0.001 * var_x260) : (-0.083333333333333329)); + } + else + { + const double y_save = rY[8]; + rY[8] += delta; + const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[8])/delta; + rY[8] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr = 0.001 * (-var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr + _lt_0_row[21]) * (_lt_0_row[22]); // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x265 = exp(5.6404999999999994 + 0.14499999999999999 * var_chaste_interface__membrane__V); + const double var_x266 = -1 + var_x265; + const double var_x267 = 1 / var_x266; + const double var_x268 = exp(-1.7465999999999999 - 0.123 * var_chaste_interface__membrane__V); + const double var_x269 = 1 - var_x268; + const double var_x270 = 1 / var_x269; + const double var_x271 = 14.199999999999999 + var_chaste_interface__membrane__V; + const double var_x272 = 38.899999999999999 + var_chaste_interface__membrane__V; + + partialF = -0.0013799999999999999 * var_x270 * var_x271 - 0.00060999999999999997 * var_x267 * var_x272; + } + else + { + const double y_save = rY[9]; + rY[9] += delta; + const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[9])/delta; + rY[9] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 + _lt_0_row[23]) * (_lt_0_row[24]); // 1 / millisecond + + return d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x276 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V); + const double var_x277 = -1 + var_x276; + const double var_x278 = 1 / var_x277; + const double var_x279 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V); + const double var_x280 = 1 - var_x279; + const double var_x281 = 1 / var_x280; + const double var_x282 = 30 + var_chaste_interface__membrane__V; + const double var_x286 = var_x278 * var_x282; + const double var_x287 = var_x281 * var_x282; + + partialF = -0.00013100000000000001 * var_x286 - 7.1899999999999999e-5 * var_x287; + } + else + { + const double y_save = rY[10]; + rY[10] += delta; + const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[10])/delta; + rY[10] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 + _lt_0_row[23]) * (_lt_0_row[25]); // 1 / millisecond + + return d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x276 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V); + const double var_x277 = -1 + var_x276; + const double var_x278 = 1 / var_x277; + const double var_x279 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V); + const double var_x280 = 1 - var_x279; + const double var_x281 = 1 / var_x280; + const double var_x282 = 30 + var_chaste_interface__membrane__V; + const double var_x286 = var_x278 * var_x282; + const double var_x287 = var_x281 * var_x282; + + partialF = -3.2750000000000003e-5 * var_x286 - 1.7975e-5 * var_x287; + } + else + { + const double y_save = rY[11]; + rY[11] += delta; + const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[11])/delta; + rY[11] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__transient_outward_current_zdv_gate__zdv = rY[12]; + // Units: dimensionless; Initial value: 0.011528 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_transient_outward_current_zdv_gate__alpha_zdv = _lt_0_row[28]; // per_second + const double var_transient_outward_current_zdv_gate__beta_zdv = _lt_0_row[29]; // per_second + const double d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv = 0.001 * (-var_chaste_interface__transient_outward_current_zdv_gate__zdv + var_transient_outward_current_zdv_gate__alpha_zdv / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv)) * (1 * var_transient_outward_current_zdv_gate__alpha_zdv + 1 * var_transient_outward_current_zdv_gate__beta_zdv); // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x288 = 0.040000000000000001 * var_chaste_interface__membrane__V; + const double var_x289 = exp(-1.6000000000000001 + var_x288); + const double var_x290 = 1 + var_x289; + const double var_x291 = 1 / var_x290; + const double var_x292 = var_x289 * var_x291; + const double var_x293 = exp(-3.6000000000000001 - var_x288); + const double var_x294 = 1 + var_x293; + const double var_x295 = var_x293 / var_x294; + + partialF = -10 * var_x292 - 10 * var_x295; + } + else + { + const double y_save = rY[12]; + rY[12] += delta; + const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[12])/delta; + rY[12] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__transient_outward_current_ydv_gate__ydv = rY[13]; + // Units: dimensionless; Initial value: 0.985232 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_transient_outward_current_ydv_gate__alpha_ydv = _lt_0_row[26]; // per_second + const double var_transient_outward_current_ydv_gate__beta_ydv = _lt_0_row[27]; // per_second + const double d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv = 0.001 * (-var_chaste_interface__transient_outward_current_ydv_gate__ydv + var_transient_outward_current_ydv_gate__alpha_ydv / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv)) * (1 * var_transient_outward_current_ydv_gate__alpha_ydv + 1 * var_transient_outward_current_ydv_gate__beta_ydv); // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x301 = 0.20000000000000001 * var_chaste_interface__membrane__V; + const double var_x302 = exp(12 + var_x301); + const double var_x303 = 1 + var_x302; + const double var_x304 = 1 / var_x303; + const double var_x305 = exp(5 + var_x301); + const double var_x306 = 1 + var_x305; + const double var_x307 = 1 / var_x306; + const double var_x308 = var_x305 * var_x307; + + partialF = -0.014999999999999999 * var_x304 - 0.10000000000000001 * var_x308; + } + else + { + const double y_save = rY[13]; + rY[13] += delta; + const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[13])/delta; + rY[13] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + + + + // Mathematics + const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * ((var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack)) : ((var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0) ? (4000 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2) * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); // millimolar_per_second + const double var_calcium_dynamics__i_tr = 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR = 0.001 * (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__calcium_dynamics__Ca_JSR), 2)); // millimolar / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + + + + const double var_x160 = 0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x161 = 1 / var_x160; + const double var_x162 = 1 - var_chaste_interface__calcium_dynamics__APtrack2; + const double var_x163 = -0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x164 = 60000 * var_x161 * var_x162 * var_x163 * var_chaste_interface__calcium_dynamics__APtrack2; + const double var_x165 = var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001; + const double var_x166 = 1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2; + const double var_x167 = 4000 * var_x166 * var_chaste_interface__calcium_dynamics__OVRLDtrack2; + const double var_x168 = var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0; + const double var_x177 = -var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR; + const double var_x178 = ((var_x165) ? (var_x164 * var_x177) : ((var_x168) ? (var_x167 * var_x177) : (0))); + const double var_x186 = ((var_x165) ? (var_x164) : ((var_x168) ? (var_x167) : (0))); + const double var_x313 = 0.80000000000000004 + var_chaste_interface__calcium_dynamics__Ca_JSR; + const double var_x314 = pow(var_x313, (-2)); + const double var_x315 = 1 / (1 + 8 * var_x314); + const double var_x316 = 0.001 * var_x315; + + partialF = var_x316 * (-5.5555555555555554 - var_x186) + 0.00025000000000000001 * (-var_x178 + 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR) / (pow(var_x313, 3) * pow((0.125 + var_x314), 2)); + } + else + { + const double y_save = rY[14]; + rY[14] += delta; + const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[14])/delta; + rY[14] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + + + + // Mathematics + const double var_calcium_dynamics__i_leak = 0.33333333333333331 * var_chaste_interface__calcium_dynamics__Ca_NSR; // millimolar_per_second + const double var_calcium_dynamics__i_up = 5 * var_chaste_interface__calcium_dynamics__Cai / (0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second + const double var_calcium_dynamics__i_tr = 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_calcium_dynamics__V_JSR = 0.0070588235294117632 * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_dynamics__V_NSR = 0.081176470588235281 * var_ionic_concentrations__V_myo; // micro_litre + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR = 0.001 * var_calcium_dynamics__i_up - 0.001 * var_calcium_dynamics__i_leak - 0.001 * var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_tr / var_calcium_dynamics__V_NSR; // millimolar / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + + partialF = -0.00081642512077294684; + } + else + { + const double y_save = rY[15]; + rY[15] += delta; + const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[15])/delta; + rY[15] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * _lt_0_row[8] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double var_membrane__dVdt = -1 * (GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack = 0.001 * ((var_membrane__dVdt > 150000) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack) : (-500 * var_chaste_interface__calcium_dynamics__APtrack)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__APtrack; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x0 = 0.018717941753901308 * var_chaste_interface__membrane__V; + const double var_x1 = exp(var_x0); + const double var_x2 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = exp(-var_x0); + const double var_x5 = pow(mParameters[2], 3); + const double var_x6 = var_x5 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x7 = var_x4 * var_x6; + const double var_x9 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x10 = 1 + 0.001 * var_x2 + 0.001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = var_x11 * var_x9; + const double var_x13 = 0.002 * var_x12; + const double var_x15 = pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); + const double var_x16 = 1 / (1 + 100 * var_x15); + const double var_x17 = 2 * var_x16; + const double var_x18 = 1 / (1.5 + mParameters[1]); + const double var_x19 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); + const double var_x20 = 0.037435883507802616 * var_chaste_interface__membrane__V; + const double var_x21 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * exp(-var_x20); + const double var_x22 = 1 + 0.1245 * var_x19 + 0.036499999999999998 * var_x21; + const double var_x26 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); + const double var_x27 = var_x26 * var_chaste_interface__T_type_Ca_channel_g_gate__g; + const double var_x28 = 0.050000000000000003 * var_x27; + const double var_x29 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x30 = var_x29 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x32 = _lt_0_row[0]; + const double var_x33 = -1 + var_x32; + const double var_x34 = 1 / var_x33; + const double var_x35 = var_x32 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x36 = 1 * var_x35 - 0.34100000000000003 * mParameters[0]; + const double var_x37 = var_x34 * var_x36; + const double var_x38 = 7.8019226357407252 * var_x37; + const double var_x39 = var_x31 * var_x38; + const double var_x43 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x44 = var_x43 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x45 = var_x44 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x46 = exp(var_x20); + const double var_x47 = -1 + var_x46; + const double var_x48 = 1 / var_x47; + const double var_x49 = var_x31 * var_x48; + const double var_x50 = 0.75 * var_x46; + const double var_x51 = -0.75 * mParameters[2] + var_x50 * var_chaste_interface__ionic_concentrations__Nai; + const double var_x52 = 0.0024381008236689767 * var_x51; + const double var_x53 = var_x49 * var_x52; + const double var_x57 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x58 = 1 + var_x57; + const double var_x59 = 1 / var_x58; + const double var_x60 = 0.0055199999999999997 * var_x59; + const double var_x61 = pow(mParameters[1], 0.23999999999999999); + const double var_x62 = 1.921898339896919e-8 * var_x61; + const double var_x63 = 1 / var_chaste_interface__calcium_dynamics__Cai; + const double var_x64 = pow(var_x63, 1.3999999999999999); + const double var_x65 = 1 + 6.4818210260626455e-7 * var_x64; + const double var_x66 = 0.433 + 0.25979999999999998 / var_x65; + const double var_x67 = var_x66 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + const double var_x68 = var_x67 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + const double var_x69 = 1 / var_chaste_interface__ionic_concentrations__Ki; + const double var_x70 = log(var_x69 * mParameters[1]); + const double var_x71 = -26.712338705498265 * var_x70 + var_chaste_interface__membrane__V; + const double var_x72 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); + const double var_x73 = 1 + var_x72; + const double var_x74 = sqrt(mParameters[1]); + const double var_x75 = var_x74 * mParameters[6] / var_x73; + const double var_x76 = var_x75 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; + const double var_x77 = 0.43033148291193518 * var_x76; + const double var_x78 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x70); + const double var_x79 = 1 + var_x78; + const double var_x80 = 1 / var_x79; + const double var_x81 = exp(-2.4444678999999998 + 13.738155796237757 * var_x70 - 0.51429999999999998 * var_chaste_interface__membrane__V); + const double var_x82 = 1 + var_x81; + const double var_x83 = 1 / var_x82; + const double var_x84 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x70); + const double var_x85 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x70); + const double var_x86 = var_x85 + 0.49124000000000001 * var_x84; + const double var_x87 = var_x83 * var_x86; + const double var_x88 = 1 / (1000 * var_x87 + 1020 * var_x80); + const double var_x89 = var_x74 * var_x80 * mParameters[5]; + const double var_x90 = var_x88 * var_x89; + const double var_x91 = 438.93811257017387 * var_x90; + const double var_x92 = -0.75 * mParameters[1] + var_x50 * var_chaste_interface__ionic_concentrations__Ki; + const double var_x93 = 0.00069711623550831479 * var_x92; + const double var_x94 = var_x49 * var_x93; + const double var_x103 = 1 / mParameters[3]; + const double var_x109 = 0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x110 = 1 / var_x109; + const double var_x114 = 1 / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki); + const double var_x115 = -26.712338705498265 * log(var_x114 * (0.018329999999999999 * mParameters[2] + mParameters[1])) + var_chaste_interface__membrane__V; + const double var_x117 = var_x3 - var_x7; + const double var_x124 = 1 / var_chaste_interface__ionic_concentrations__Nai; + const double var_x125 = log(var_x124 * mParameters[2]); + const double var_x126 = -26.712338705498265 * var_x125 + var_chaste_interface__membrane__V; + const double var_x135 = log(var_x63 * mParameters[0]); + const double var_x136 = -13.356169352749133 * var_x135 + var_chaste_interface__membrane__V; + const double var_x149 = var_x18 * mParameters[1] / var_x22; + const double var_x174 = 1.1499999999999999 * var_x110; + const double var_x179 = var_x117 * var_x13; + const double var_x180 = -0.040282206767891383 * var_x135 + var_x136 * var_x28 + var_x174 * var_chaste_interface__calcium_dynamics__Cai + var_x39 * var_chaste_interface__membrane__V; + + partialF = ((1 * var_x103 * (var_x179 + var_x180 + 0.0070159999999999997 * var_chaste_interface__membrane__V - 0.10684935482199306 * var_x125 + var_x115 * var_x68 + var_x126 * var_x45 + var_x149 * var_x17 + var_x53 * var_chaste_interface__membrane__V + var_x60 * var_x71 + var_x62 * var_x71 + var_x71 * var_x77 + var_x71 * var_x91 + var_x94 * var_chaste_interface__membrane__V + GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance()) < -150000) ? (-100.5) : (-0.5)); + } + else + { + const double y_save = rY[16]; + rY[16] += delta; + const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[16])/delta; + rY[16] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack2) : (-500 * var_chaste_interface__calcium_dynamics__APtrack2)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__APtrack2; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + + + + const double var_x317 = (var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001); + + partialF = ((var_x317) ? (-100.5) : (-0.5)); + } + else + { + const double y_save = rY[17]; + rY[17] += delta; + const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[17])/delta; + rY[17] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; + // Units: dimensionless; Initial value: 0.01925 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack3) : (-10 * var_chaste_interface__calcium_dynamics__APtrack3)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__APtrack3; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + + + + const double var_x317 = (var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001); + + partialF = ((var_x317) ? (-100.5) : (-0.01)); + } + else + { + const double y_save = rY[18]; + rY[18] += delta; + const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[18])/delta; + rY[18] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack = 0.001 * ((var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001) ? (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo) : ((var_chaste_interface__calcium_dynamics__APtrack2 > 0.01) ? (0) : (-500 * var_chaste_interface__calcium_dynamics__Cainfluxtrack))); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + + + + const double var_x318 = var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001; + + partialF = (((var_x318) || (var_chaste_interface__calcium_dynamics__APtrack2 > 0.01)) ? (0) : (-0.5)); + } + else + { + const double y_save = rY[19]; + rY[19] += delta; + const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[19])/delta; + rY[19] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; + // Units: dimensionless; Initial value: 0.01925 + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (1 / (1 + 0.80000000000000004 / var_chaste_interface__calcium_dynamics__Ca_JSR) > 0.69999999999999996)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; + // Units: dimensionless; Initial value: 0.01925 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + + + + + partialF = (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (1 / (1 + 0.80000000000000004 / var_chaste_interface__calcium_dynamics__Ca_JSR) > 0.69999999999999996)) ? (-50) : (-0.5)); + } + else + { + const double y_save = rY[20]; + rY[20] += delta; + const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[20])/delta; + rY[20] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack2)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + + + + const double var_x319 = var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998; + + partialF = (((var_x319) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < 0.97999999999999998)) ? (-50) : (-0.5)); + } + else + { + const double y_save = rY[21]; + rY[21] += delta; + const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[21])/delta; + rY[21] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack3) : (-10 * var_chaste_interface__calcium_dynamics__OVRLDtrack3)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + + + + const double var_x319 = var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998; + + partialF = (((var_x319) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.97999999999999998)) ? (-50) : (-0.01)); + } + else + { + const double y_save = rY[22]; + rY[22] += delta; + const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[22])/delta; + rY[22] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Nai = 1.4862413846711923e-15 * (-var_L_type_Ca_channel__i_CaNa - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Na - var_sodium_background_current__i_Na_b - 3 * var_Na_Ca_exchanger__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond + + return d_dt_chaste_interface_var_ionic_concentrations__Nai; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + + const double var_x0 = 0.018717941753901308 * var_chaste_interface__membrane__V; + const double var_x1 = exp(var_x0); + const double var_x2 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = exp(-var_x0); + const double var_x5 = pow(mParameters[2], 3); + const double var_x6 = var_x5 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x7 = var_x4 * var_x6; + const double var_x9 = 1 / (1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x10 = 1 + 0.001 * var_x2 + 0.001 * var_x6; + const double var_x11 = 1 / var_x10; + const double var_x12 = var_x11 * var_x9; + const double var_x15 = pow(var_chaste_interface__ionic_concentrations__Nai, (-2)); + const double var_x18 = 1 / (1.5 + mParameters[1]); + const double var_x19 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); + const double var_x20 = 0.037435883507802616 * var_chaste_interface__membrane__V; + const double var_x21 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * exp(-var_x20); + const double var_x22 = 1 + 0.1245 * var_x19 + 0.036499999999999998 * var_x21; + const double var_x29 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x30 = var_x29 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x43 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x44 = var_x43 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x45 = var_x44 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x46 = exp(var_x20); + const double var_x47 = -1 + var_x46; + const double var_x48 = 1 / var_x47; + const double var_x49 = var_x31 * var_x48; + const double var_x54 = var_x46 * var_x49 * var_chaste_interface__membrane__V; + const double var_x117 = var_x3 - var_x7; + const double var_x120 = pow(var_x10, (-2)); + const double var_x124 = 1 / var_chaste_interface__ionic_concentrations__Nai; + const double var_x145 = pow(var_chaste_interface__ionic_concentrations__Nai, 2); + const double var_x146 = var_x145 * mParameters[0]; + const double var_x147 = var_x1 * var_x146; + const double var_x149 = var_x18 * mParameters[1] / var_x22; + const double var_x150 = var_x149 / (pow((0.01 + var_x15), 2) * pow(var_chaste_interface__ionic_concentrations__Nai, 3)); + const double var_x152 = 0.10684935482199306 * var_x124 + 0.0018285756177517324 * var_x54 + 26.712338705498265 * var_x124 * var_x45; + const double var_x157 = 1 / M_PI; + const double var_x320 = 0.00018063215662022267 * var_x157; + + partialF = var_x320 * (-var_x152 - 0.12 * var_x150 - 0.018000000000000002 * var_x12 * var_x147 + 1.8e-5 * var_x117 * var_x120 * var_x145 * var_x9 * mParameters[0]); + } + else + { + const double y_save = rY[23]; + rY[23] += delta; + const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[23])/delta; + rY[23] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * _lt_0_row[8] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Ki = 1.4862413846711923e-15 * (-var_ATP_sensitive_potassium_current__i_K_ATP - var_L_type_Ca_channel__i_CaK - var_non_specific_calcium_activated_current__i_ns_K - var_plateau_potassium_current__i_Kp - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to + 2 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond + + return d_dt_chaste_interface_var_ionic_concentrations__Ki; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + + const double var_x20 = 0.037435883507802616 * var_chaste_interface__membrane__V; + const double var_x29 = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); + const double var_x30 = var_x29 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x31 = var_x30 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x46 = exp(var_x20); + const double var_x47 = -1 + var_x46; + const double var_x48 = 1 / var_x47; + const double var_x49 = var_x31 * var_x48; + const double var_x54 = var_x46 * var_x49 * var_chaste_interface__membrane__V; + const double var_x57 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x58 = 1 + var_x57; + const double var_x59 = 1 / var_x58; + const double var_x61 = pow(mParameters[1], 0.23999999999999999); + const double var_x63 = 1 / var_chaste_interface__calcium_dynamics__Cai; + const double var_x64 = pow(var_x63, 1.3999999999999999); + const double var_x65 = 1 + 6.4818210260626455e-7 * var_x64; + const double var_x66 = 0.433 + 0.25979999999999998 / var_x65; + const double var_x67 = var_x66 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + const double var_x68 = var_x67 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + const double var_x69 = 1 / var_chaste_interface__ionic_concentrations__Ki; + const double var_x70 = log(var_x69 * mParameters[1]); + const double var_x71 = -26.712338705498265 * var_x70 + var_chaste_interface__membrane__V; + const double var_x72 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); + const double var_x73 = 1 + var_x72; + const double var_x74 = sqrt(mParameters[1]); + const double var_x75 = var_x74 * mParameters[6] / var_x73; + const double var_x76 = var_x75 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; + const double var_x78 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x70); + const double var_x79 = 1 + var_x78; + const double var_x80 = 1 / var_x79; + const double var_x81 = exp(-2.4444678999999998 + 13.738155796237757 * var_x70 - 0.51429999999999998 * var_chaste_interface__membrane__V); + const double var_x82 = 1 + var_x81; + const double var_x83 = 1 / var_x82; + const double var_x84 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x70); + const double var_x85 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x70); + const double var_x86 = var_x85 + 0.49124000000000001 * var_x84; + const double var_x87 = var_x83 * var_x86; + const double var_x88 = 1 / (1000 * var_x87 + 1020 * var_x80); + const double var_x89 = var_x74 * var_x80 * mParameters[5]; + const double var_x90 = var_x88 * var_x89; + const double var_x95 = 1000 * var_x83; + const double var_x96 = pow(var_x79, (-2)); + const double var_x97 = var_x81 * var_x86 / pow(var_x82, 2); + const double var_x98 = 0.0004218936106979757 * var_x71 * var_x89 / pow((var_x80 + 0.98039215686274506 * var_x87), 2); + const double var_x99 = var_x71 * var_x74; + const double var_x100 = var_x78 * var_x96; + const double var_x101 = var_x88 * var_x99 * mParameters[5]; + const double var_x114 = 1 / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki); + const double var_x142 = var_x114 * var_x68; + const double var_x153 = 0.00052283717663123607 * var_x54 + 26.712338705498265 * var_x142 + var_x98 * (-var_x95 * (1.053972635420138 * var_x69 * var_x84 + 1.6494869150645177 * var_x69 * var_x85) - 13738.155796237757 * var_x69 * var_x97 + 6498.310636886562 * var_x69 * var_x78 * var_x96) + 11.495160327182951 * var_x69 * var_x76 + 5.1338399412861326e-7 * var_x61 * var_x69 + 0.14745210965435041 * var_x59 * var_x69 + 11725.06353372661 * var_x69 * var_x90 - 2796.4276527937964 * var_x100 * var_x101 * var_x69; + const double var_x157 = 1 / M_PI; + const double var_x320 = 0.00018063215662022267 * var_x157; + + partialF = -var_x153 * var_x320; + } + else + { + const double y_save = rY[24]; + rY[24] += delta; + const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[24])/delta; + rY[24] = y_save; + } + return partialF; + } + + std::vector Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel__P_Ca = 0.00054000000000000001; // cm_per_second + const double var_L_type_Ca_channel__P_K = 1.9299999999999999e-7; // cm_per_second + const double var_L_type_Ca_channel__P_Na = 6.75e-7; // cm_per_second + const double var_L_type_Ca_channel__gamma_Cai = 1; // dimensionless + const double var_L_type_Ca_channel__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_L_type_Ca_channel__gamma_Ki = 0.75; // dimensionless + const double var_L_type_Ca_channel__gamma_Ko = 0.75; // dimensionless + const double var_L_type_Ca_channel__gamma_Nai = 0.75; // dimensionless + const double var_L_type_Ca_channel__gamma_Nao = 0.75; // dimensionless + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // millimolar + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + var_chaste_interface__calcium_dynamics__Cai / var_L_type_Ca_channel_f_Ca_gate__Km_Ca); // dimensionless + const double var_membrane__F = 96485; // coulomb_per_mole + const double var_membrane__I_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__R = 8314; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai) / var_membrane__F; // millivolt + const double var_L_type_Ca_channel__I_CaCa = 4 * pow(var_membrane__F, 2) * (-var_L_type_Ca_channel__gamma_Cao * mParameters[0] + var_L_type_Ca_channel__gamma_Cai * var_chaste_interface__calcium_dynamics__Cai * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_Ca * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_channel__I_CaK = 1 * pow(var_membrane__F, 2) * (-var_L_type_Ca_channel__gamma_Ko * mParameters[1] + var_L_type_Ca_channel__gamma_Ki * var_chaste_interface__ionic_concentrations__Ki * exp(1 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_K * var_chaste_interface__membrane__V / ((-1 + exp(1 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_channel__I_CaNa = 1 * pow(var_membrane__F, 2) * (-var_L_type_Ca_channel__gamma_Nao * mParameters[2] + var_L_type_Ca_channel__gamma_Nai * var_chaste_interface__ionic_concentrations__Nai * exp(1 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_Na * var_chaste_interface__membrane__V / ((-1 + exp(1 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L; // uA_per_cm2 + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 * _lt_0_row[9]; // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__g_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[6]; // milliS_per_microF + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_rapid_delayed_rectifier_potassium_current__Rect * var_rapid_delayed_rectifier_potassium_current__g_Kr * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[5]; // milliS_per_cm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)); // per_second + const double var_time_independent_potassium_current_K1_gate__beta_K1 = 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // per_second + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + + std::vector dqs(6); + dqs[0] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[1] = var_fast_sodium_current__i_Na_converted; + dqs[2] = var_time_independent_potassium_current__i_K1_converted; + dqs[3] = var_rapid_delayed_rectifier_potassium_current__i_Kr_converted; + dqs[4] = var_membrane__I_st_converted; + dqs[5] = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "viswanathan_model_1999_epi"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-88.984); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00035237); + + // rY[2]: + this->mVariableNames.push_back("fast_sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00079287); + + // rY[3]: + this->mVariableNames.push_back("fast_sodium_current_h_gate__h"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9938); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99573); + + // rY[5]: + this->mVariableNames.push_back("L_type_Ca_channel_d_gate__d"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.18355e-06); + + // rY[6]: + this->mVariableNames.push_back("L_type_Ca_channel_f_gate__f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9974388); + + // rY[7]: + this->mVariableNames.push_back("T_type_Ca_channel_b_gate__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000967785); + + // rY[8]: + this->mVariableNames.push_back("T_type_Ca_channel_g_gate__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.95331988); + + // rY[9]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00032151644); + + // rY[10]: + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current_xs1_gate__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0272635); + + // rY[11]: + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current_xs2_gate__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0631269); + + // rY[12]: + this->mVariableNames.push_back("transient_outward_current_zdv_gate__zdv"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.011528); + + // rY[13]: + this->mVariableNames.push_back("transient_outward_current_ydv_gate__ydv"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.985232); + + // rY[14]: + this->mVariableNames.push_back("calcium_dynamics__Ca_JSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.817895); + + // rY[15]: + this->mVariableNames.push_back("calcium_dynamics__Ca_NSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.797668); + + // rY[16]: + this->mVariableNames.push_back("calcium_dynamics__APtrack"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.814e-87); + + // rY[17]: + this->mVariableNames.push_back("calcium_dynamics__APtrack2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.1084e-86); + + // rY[18]: + this->mVariableNames.push_back("calcium_dynamics__APtrack3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01925); + + // rY[19]: + this->mVariableNames.push_back("calcium_dynamics__Cainfluxtrack"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.784e-87); + + // rY[20]: + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[21]: + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[22]: + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[23]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(15.6748357); + + // rY[24]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(137.6244); + + // mParameters[0]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[1]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi--sympy_1_14.cpp new file mode 100644 index 00000000..27698d6a --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/GRL2Opt/dynamic_viswanathan_model_1999_epi--sympy_1_14.cpp @@ -0,0 +1,3459 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: viswanathan_model_1999_epi +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: GeneralizedRushLarsenSecondOrderOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_viswanathan_model_1999_epi.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractGeneralizedRushLarsenCardiacCell* Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt(p_solver, p_stimulus); +} + +bool Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::registered = ModelFactory::Register("dynamic_viswanathan_model_1999_epi", "GeneralizedRushLarsenSecondOrderOpt", (ModelFactory::TCreateMethod)Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::CreateMethod); + +class Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<30; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V= 2){ + EXCEPTION("Lookup table 15 at ["<= 2){ + EXCEPTION("Lookup table 16 at ["<= 2){ + EXCEPTION("Lookup table 17 at ["<= 2){ + EXCEPTION("Lookup table 18 at ["<= 1.0000000000000001e-5) ? (320 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V))) : (3200)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[19] < 2){ + double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[19] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[19] >= 2){ + EXCEPTION("Lookup table 19 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[30]; + + // Lookup tables + double (*_lookup_table_0)[30]; + int _lookup_table_0_num_misshit_piecewise[30] = {0}; + +}; + +std::shared_ptr Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -25.5 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = 2; // millisecond + const double var_chaste_interface__membrane__stim_period_converted = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start_converted = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration_converted, + var_chaste_interface__membrane__stim_period_converted, + var_chaste_interface__membrane__stim_start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractGeneralizedRushLarsenCardiacCell( + 25, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1.8; // (var_calcium_dynamics__Cao) [millimolar] + this->mParameters[1] = 4.5; // (var_ionic_concentrations__Ko) [millimolar] + this->mParameters[2] = 132; // (var_ionic_concentrations__Nao) [millimolar] + this->mParameters[3] = 0.001; // (var_membrane__Cm) [microF] + this->mParameters[4] = 16; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[5] = 0.75; // (var_time_independent_potassium_current__g_K1_max) [milliS_per_cm2] + this->mParameters[6] = 0.02614; // (var_rapid_delayed_rectifier_potassium_current__g_Kr_max) [milliS_per_cm2] + } + + Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::~Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt() + { + } + + AbstractLookupTableCollection* Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::GetLookupTableCollection() + { + return Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance(); + } + + void Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 25; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_Ca_L_converted = (7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V + 0.0024381008236689767 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V + 0.00069711623550831479 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // uA_per_cm2 + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_Ca = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)) + 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * _lt_0_row[8] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1_converted = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // uA_per_cm2 + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double var_chaste_interface__i_ionic = -var_L_type_Ca_channel__i_Ca_L_converted - var_fast_sodium_current__i_Na_converted - var_rapid_delayed_rectifier_potassium_current__i_Kr_converted - var_time_independent_potassium_current__i_K1_converted - HeartConfig::Instance()->GetCapacitance() * var_ATP_sensitive_potassium_current__i_K_ATP - HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa - HeartConfig::Instance()->GetCapacitance() * var_T_type_Ca_channel__i_Ca_T - HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Ca_b - HeartConfig::Instance()->GetCapacitance() * var_non_specific_calcium_activated_current__i_ns_Ca - HeartConfig::Instance()->GetCapacitance() * var_plateau_potassium_current__i_Kp - HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump__i_p_Ca - HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks - HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Na_b - HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK - HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::UpdateTransmembranePotential(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const unsigned v_index = GetVoltageIndex(); + const double delta = 1e-8; + const double yinit = rY[v_index]; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * _lt_0_row[8] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double var_membrane__dVdt = -1 * (GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__dVdt; // millivolt / millisecond + + double evalF = d_dt_chaste_interface_var_membrane__V; + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + double partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] += 0.5*evalF*mDt; + } + else + { + rY[v_index] += (evalF/partialF)*(exp(partialF*0.5*mDt)-1.0); + } + + rY[v_index] = yinit; + evalF = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + mEvalF[0] = evalF; + partialF = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta, true); + if (fabs(partialF) < delta) + { + rY[v_index] = yinit + evalF*mDt; + } + else + { + rY[v_index] = yinit + (evalF/partialF)*(exp(partialF*mDt)-1.0); + } + } + + void Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::ComputeOneStepExceptVoltage(double var_chaste_interface__environment__time_converted) + { + std::vector& rY = rGetStateVariables(); + const double delta=1e-8; + const unsigned size = GetNumberOfStateVariables(); + mYInit = rY; + double y_save; + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__transient_outward_current_zdv_gate__zdv = rY[12]; + // Units: dimensionless; Initial value: 0.011528 + double var_chaste_interface__transient_outward_current_ydv_gate__ydv = rY[13]; + // Units: dimensionless; Initial value: 0.985232 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; + // Units: dimensionless; Initial value: 0.01925 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack2) : (-500 * var_chaste_interface__calcium_dynamics__APtrack2)); // 1 / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack3) : (-10 * var_chaste_interface__calcium_dynamics__APtrack3)); // 1 / millisecond + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack2)); // 1 / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack3) : (-10 * var_chaste_interface__calcium_dynamics__OVRLDtrack3)); // 1 / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (1 / (1 + 0.80000000000000004 / var_chaste_interface__calcium_dynamics__Ca_JSR) > 0.69999999999999996)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack)); // 1 / millisecond + const double var_calcium_dynamics__i_leak = 0.33333333333333331 * var_chaste_interface__calcium_dynamics__Ca_NSR; // millimolar_per_second + const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * ((var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack)) : ((var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0) ? (4000 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2) * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); // millimolar_per_second + const double var_calcium_dynamics__i_up = 5 * var_chaste_interface__calcium_dynamics__Cai / (0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second + const double var_calcium_dynamics__i_tr = 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR = 0.001 * (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__calcium_dynamics__Ca_JSR), 2)); // millimolar / millisecond + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_calcium_dynamics__V_JSR = 0.0070588235294117632 * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_dynamics__V_NSR = 0.081176470588235281 * var_ionic_concentrations__V_myo; // micro_litre + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR = 0.001 * var_calcium_dynamics__i_up - 0.001 * var_calcium_dynamics__i_leak - 0.001 * var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_tr / var_calcium_dynamics__V_NSR; // millimolar / millisecond + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel_d_gate__E0_d = 10 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(var_L_type_Ca_channel_d_gate__E0_d) < 1.0000000000000001e-5) ? (0.0045787545787545781) : (0.028571428571428571 * (1 - exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__E0_d)); // second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d - 0.001 * (1 - var_L_type_Ca_channel_d_gate__d_infinity) * var_chaste_interface__L_type_Ca_channel_d_gate__d / var_L_type_Ca_channel_d_gate__tau_d; // 1 / millisecond + const double var_L_type_Ca_channel_f_gate__f_infinity = _lt_0_row[10]; // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f = _lt_0_row[11]; // second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f - 0.001 * (1 - var_L_type_Ca_channel_f_gate__f_infinity) * var_chaste_interface__L_type_Ca_channel_f_gate__f / var_L_type_Ca_channel_f_gate__tau_f; // 1 / millisecond + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b = 0.001 * _lt_0_row[13] * (-var_chaste_interface__T_type_Ca_channel_b_gate__b + _lt_0_row[12]); // 1 / millisecond + const double d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g = 0.001 * (-var_chaste_interface__T_type_Ca_channel_g_gate__g + _lt_0_row[14]) * ((var_chaste_interface__membrane__V <= 0) ? (1 / (0.012 - 0.00087500000000000002 * var_chaste_interface__membrane__V)) : (83.333333333333329)); // 1 / millisecond + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * _lt_0_row[15] - 0.001 * _lt_0_row[16] * var_chaste_interface__fast_sodium_current_h_gate__h; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * (1 - var_chaste_interface__fast_sodium_current_j_gate__j) * _lt_0_row[17] - 0.001 * _lt_0_row[18] * var_chaste_interface__fast_sodium_current_j_gate__j; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * _lt_0_row[19] - 0.080000000000000002 * var_chaste_interface__fast_sodium_current_m_gate__m * _lt_0_row[20]; // 1 / millisecond + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr = 0.001 * (-var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr + _lt_0_row[21]) * (_lt_0_row[22]); // 1 / millisecond + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cai = 0.001 * (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo + (-var_calcium_dynamics__i_up + var_calcium_dynamics__i_leak) * var_calcium_dynamics__V_NSR / var_ionic_concentrations__V_myo + var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_rel / var_ionic_concentrations__V_myo) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__calcium_dynamics__Cai), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack = 0.001 * ((var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001) ? (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo) : ((var_chaste_interface__calcium_dynamics__APtrack2 > 0.01) ? (0) : (-500 * var_chaste_interface__calcium_dynamics__Cainfluxtrack))); // 1 / millisecond + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 + _lt_0_row[23]) * (_lt_0_row[24]); // 1 / millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 + _lt_0_row[23]) * (_lt_0_row[25]); // 1 / millisecond + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Nai = 1.4862413846711923e-15 * (-var_L_type_Ca_channel__i_CaNa - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Na - var_sodium_background_current__i_Na_b - 3 * var_Na_Ca_exchanger__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * _lt_0_row[8] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current_ydv_gate__alpha_ydv = _lt_0_row[26]; // per_second + const double var_transient_outward_current_ydv_gate__beta_ydv = _lt_0_row[27]; // per_second + const double d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv = 0.001 * (-var_chaste_interface__transient_outward_current_ydv_gate__ydv + var_transient_outward_current_ydv_gate__alpha_ydv / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv)) * (1 * var_transient_outward_current_ydv_gate__alpha_ydv + 1 * var_transient_outward_current_ydv_gate__beta_ydv); // 1 / millisecond + const double var_transient_outward_current_zdv_gate__alpha_zdv = _lt_0_row[28]; // per_second + const double var_transient_outward_current_zdv_gate__beta_zdv = _lt_0_row[29]; // per_second + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Ki = 1.4862413846711923e-15 * (-var_ATP_sensitive_potassium_current__i_K_ATP - var_L_type_Ca_channel__i_CaK - var_non_specific_calcium_activated_current__i_ns_K - var_plateau_potassium_current__i_Kp - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to + 2 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond + const double var_membrane__dVdt = -1 * (GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack = 0.001 * ((var_membrane__dVdt > 150000) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack) : (-500 * var_chaste_interface__calcium_dynamics__APtrack)); // 1 / millisecond + const double d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv = 0.001 * (-var_chaste_interface__transient_outward_current_zdv_gate__zdv + var_transient_outward_current_zdv_gate__alpha_zdv / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv)) * (1 * var_transient_outward_current_zdv_gate__alpha_zdv + 1 * var_transient_outward_current_zdv_gate__beta_zdv); // 1 / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__dVdt; // millivolt / millisecond + } + + mEvalF[0] = d_dt_chaste_interface_var_membrane__V; + mEvalF[1] = d_dt_chaste_interface_var_calcium_dynamics__Cai; + mEvalF[2] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + mEvalF[3] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + mEvalF[4] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + mEvalF[5] = d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d; + mEvalF[6] = d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f; + mEvalF[7] = d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b; + mEvalF[8] = d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g; + mEvalF[9] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr; + mEvalF[10] = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + mEvalF[11] = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + mEvalF[12] = d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv; + mEvalF[13] = d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv; + mEvalF[14] = d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR; + mEvalF[15] = d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR; + mEvalF[16] = d_dt_chaste_interface_var_calcium_dynamics__APtrack; + mEvalF[17] = d_dt_chaste_interface_var_calcium_dynamics__APtrack2; + mEvalF[18] = d_dt_chaste_interface_var_calcium_dynamics__APtrack3; + mEvalF[19] = d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack; + mEvalF[20] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack; + mEvalF[21] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2; + mEvalF[22] = d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3; + mEvalF[23] = d_dt_chaste_interface_var_ionic_concentrations__Nai; + mEvalF[24] = d_dt_chaste_interface_var_ionic_concentrations__Ki; + + + mPartialF[0] = EvaluatePartialDerivative0(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[1] = EvaluatePartialDerivative1(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[2] = EvaluatePartialDerivative2(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[3] = EvaluatePartialDerivative3(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[4] = EvaluatePartialDerivative4(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[5] = EvaluatePartialDerivative5(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[6] = EvaluatePartialDerivative6(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[7] = EvaluatePartialDerivative7(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[8] = EvaluatePartialDerivative8(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[9] = EvaluatePartialDerivative9(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[10] = EvaluatePartialDerivative10(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[11] = EvaluatePartialDerivative11(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[12] = EvaluatePartialDerivative12(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[13] = EvaluatePartialDerivative13(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[14] = EvaluatePartialDerivative14(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[15] = EvaluatePartialDerivative15(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[16] = EvaluatePartialDerivative16(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[17] = EvaluatePartialDerivative17(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[18] = EvaluatePartialDerivative18(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[19] = EvaluatePartialDerivative19(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[20] = EvaluatePartialDerivative20(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[21] = EvaluatePartialDerivative21(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[22] = EvaluatePartialDerivative22(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[23] = EvaluatePartialDerivative23(var_chaste_interface__environment__time_converted, rY, delta); + mPartialF[24] = EvaluatePartialDerivative24(var_chaste_interface__environment__time_converted, rY, delta); + for (unsigned var=0; var& rY) + { + double d_dt_chaste_interface_var_membrane__V; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * _lt_0_row[8] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double var_membrane__dVdt = -1 * (GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__dVdt; // millivolt / millisecond + + return d_dt_chaste_interface_var_membrane__V; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative0(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x0 = 0.018717941753901308 * var_chaste_interface__membrane__V; + const double var_x1 = exp(var_x0); + const double var_x2 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = exp(-var_x0); + const double var_x5 = pow(mParameters[2], 3); + const double var_x6 = var_x5 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x7 = var_x4 * var_x6; + const double var_x8 = 0.018717941753901308 * var_x3 + 0.018717941753901308 * var_x7; + const double var_x9 = 1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x10 = 1 / var_x9; + const double var_x11 = 1 + 0.001 * var_x2 + 0.001 * var_x6; + const double var_x12 = 1 / var_x11; + const double var_x13 = var_x10 * var_x12; + const double var_x14 = 0.002 * var_x13; + const double var_x15 = var_x14 * var_x8; + const double var_x16 = 1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2); + const double var_x17 = 1 / var_x16; + const double var_x18 = 2 * var_x17; + const double var_x19 = 1 / (1.5 + mParameters[1]); + const double var_x20 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); + const double var_x21 = 0.037435883507802616 * var_chaste_interface__membrane__V; + const double var_x22 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * exp(-var_x21); + const double var_x23 = 1 + 0.1245 * var_x20 + 0.036499999999999998 * var_x22; + const double var_x24 = pow(var_x23, (-2)); + const double var_x25 = 0.0013664097480347954 * var_x22 + 0.00046607674967214262 * var_x20; + const double var_x26 = var_x19 * var_x24 * var_x25 * mParameters[1]; + const double var_x27 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); + const double var_x28 = var_x27 * var_chaste_interface__T_type_Ca_channel_g_gate__g; + const double var_x29 = 0.050000000000000003 * var_x28; + const double var_x30 = 1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x31 = 1 / var_x30; + const double var_x32 = var_x31 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x33 = var_x32 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x34 = _lt_0_row[0]; + const double var_x35 = -1 + var_x34; + const double var_x36 = 1 / var_x35; + const double var_x37 = var_x34 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x38 = 1 * var_x37 - 0.34100000000000003 * mParameters[0]; + const double var_x39 = var_x36 * var_x38; + const double var_x40 = 7.8019226357407252 * var_x39; + const double var_x41 = var_x33 * var_x40; + const double var_x42 = var_x33 * var_chaste_interface__membrane__V; + const double var_x43 = var_x36 * var_x42; + const double var_x44 = var_x29 + var_x41 + 0.58414373385695628 * var_x37 * var_x43 - 0.58414373385695628 * var_x34 * var_x38 * var_x42 / pow(var_x35, 2); + const double var_x45 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x46 = var_x45 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x47 = var_x46 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x48 = exp(var_x21); + const double var_x49 = -1 + var_x48; + const double var_x50 = 1 / var_x49; + const double var_x51 = var_x33 * var_x50; + const double var_x52 = 0.75 * var_x48; + const double var_x53 = -0.75 * mParameters[2] + var_x52 * var_chaste_interface__ionic_concentrations__Nai; + const double var_x54 = 0.0024381008236689767 * var_x53; + const double var_x55 = var_x51 * var_x54; + const double var_x56 = var_x48 * var_x51 * var_chaste_interface__membrane__V; + const double var_x57 = var_x42 * var_x48 / pow(var_x49, 2); + const double var_x58 = var_x47 + var_x55 + 6.8454343811362063e-5 * var_x56 * var_chaste_interface__ionic_concentrations__Nai - 9.1272458415149417e-5 * var_x53 * var_x57; + const double var_x59 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x60 = 1 + var_x59; + const double var_x61 = 1 / var_x60; + const double var_x62 = 0.0055199999999999997 * var_x61; + const double var_x63 = pow(mParameters[1], 0.23999999999999999); + const double var_x64 = 1.921898339896919e-8 * var_x63; + const double var_x65 = 1 / var_chaste_interface__calcium_dynamics__Cai; + const double var_x66 = pow(var_x65, 1.3999999999999999); + const double var_x67 = 1 + 6.4818210260626455e-7 * var_x66; + const double var_x68 = 0.433 + 0.25979999999999998 / var_x67; + const double var_x69 = var_x68 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + const double var_x70 = var_x69 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + const double var_x71 = 1 / var_chaste_interface__ionic_concentrations__Ki; + const double var_x72 = log(var_x71 * mParameters[1]); + const double var_x73 = -26.712338705498265 * var_x72 + var_chaste_interface__membrane__V; + const double var_x74 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); + const double var_x75 = 1 + var_x74; + const double var_x76 = sqrt(mParameters[1]); + const double var_x77 = var_x76 * mParameters[6] / var_x75; + const double var_x78 = var_x77 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; + const double var_x79 = 0.43033148291193518 * var_x78; + const double var_x80 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x72); + const double var_x81 = 1 + var_x80; + const double var_x82 = 1 / var_x81; + const double var_x83 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x72); + const double var_x84 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x72); + const double var_x85 = var_x84 + 0.49124000000000001 * var_x83; + const double var_x86 = exp(-2.4444678999999998 + 13.738155796237757 * var_x72 - 0.51429999999999998 * var_chaste_interface__membrane__V); + const double var_x87 = 1 + var_x86; + const double var_x88 = 1000 / var_x87; + const double var_x89 = 1020 * var_x82 + var_x85 * var_x88; + const double var_x90 = var_x76 * mParameters[5] / var_x89; + const double var_x91 = var_x82 * var_x90; + const double var_x92 = 438.93811257017387 * var_x91; + const double var_x93 = -0.75 * mParameters[1] + var_x52 * var_chaste_interface__ionic_concentrations__Ki; + const double var_x94 = 0.00069711623550831479 * var_x93; + const double var_x95 = var_x51 * var_x94; + const double var_x96 = pow(var_x81, (-2)); + const double var_x97 = var_x85 * var_x86 / pow(var_x87, 2); + const double var_x98 = var_x73 * var_x76; + const double var_x99 = 438.93811257017387 * var_x82 * var_x98 * mParameters[5] / pow(var_x89, 2); + const double var_x100 = var_x80 * var_x96; + const double var_x101 = var_x73 * var_x90; + const double var_x102 = var_x62 + var_x64 + var_x70 + var_x79 + var_x92 + var_x95 + var_x99 * (-514.29999999999995 * var_x97 - var_x88 * (0.061749999999999999 * var_x84 + 0.039456396800000001 * var_x83) + 243.26999999999998 * var_x80 * var_x96) + 1.9572871637915374e-5 * var_x56 * var_chaste_interface__ionic_concentrations__Ki - 2.6097162183887167e-5 * var_x57 * var_x93 - 104.68673984798647 * var_x100 * var_x101 + 0.00092307692307692295 * var_x59 * var_x73 / pow(var_x60, 2) - 0.019211226915711394 * var_x74 * var_x98 * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr / pow(var_x75, 2); + const double var_x103 = 1 / mParameters[3]; + const double var_x104 = 0.001 * var_x103; + + partialF = -var_x104 * (0.0070159999999999997 + var_x102 + var_x15 + var_x44 + var_x58 + var_x18 * var_x26); + } + else + { + const double y_save = rY[0]; + rY[0] += delta; + const double temp = EvaluateYDerivative0(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[0])/delta; + rY[0] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_dynamics__i_leak = 0.33333333333333331 * var_chaste_interface__calcium_dynamics__Ca_NSR; // millimolar_per_second + const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * ((var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack)) : ((var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0) ? (4000 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2) * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); // millimolar_per_second + const double var_calcium_dynamics__i_up = 5 * var_chaste_interface__calcium_dynamics__Cai / (0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_calcium_dynamics__V_JSR = 0.0070588235294117632 * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_dynamics__V_NSR = 0.081176470588235281 * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cai = 0.001 * (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo + (-var_calcium_dynamics__i_up + var_calcium_dynamics__i_leak) * var_calcium_dynamics__V_NSR / var_ionic_concentrations__V_myo + var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_rel / var_ionic_concentrations__V_myo) / (1 + 0.00011900000000000002 / pow((0.0023800000000000002 + var_chaste_interface__calcium_dynamics__Cai), 2) + 3.5000000000000004e-5 / pow((0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai), 2)); // millimolar / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__Cai; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative1(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x0 = 0.018717941753901308 * var_chaste_interface__membrane__V; + const double var_x1 = exp(var_x0); + const double var_x2 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = exp(-var_x0); + const double var_x5 = pow(mParameters[2], 3); + const double var_x6 = var_x5 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x7 = var_x4 * var_x6; + const double var_x9 = 1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x10 = 1 / var_x9; + const double var_x11 = 1 + 0.001 * var_x2 + 0.001 * var_x6; + const double var_x12 = 1 / var_x11; + const double var_x13 = var_x10 * var_x12; + const double var_x14 = 0.002 * var_x13; + const double var_x27 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); + const double var_x28 = var_x27 * var_chaste_interface__T_type_Ca_channel_g_gate__g; + const double var_x29 = 0.050000000000000003 * var_x28; + const double var_x30 = 1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x31 = 1 / var_x30; + const double var_x32 = var_x31 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x33 = var_x32 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x34 = _lt_0_row[0]; + const double var_x35 = -1 + var_x34; + const double var_x36 = 1 / var_x35; + const double var_x37 = var_x34 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x38 = 1 * var_x37 - 0.34100000000000003 * mParameters[0]; + const double var_x39 = var_x36 * var_x38; + const double var_x40 = 7.8019226357407252 * var_x39; + const double var_x41 = var_x33 * var_x40; + const double var_x42 = var_x33 * var_chaste_interface__membrane__V; + const double var_x43 = var_x36 * var_x42; + const double var_x65 = 1 / var_chaste_interface__calcium_dynamics__Cai; + const double var_x105 = var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__membrane__V; + const double var_x106 = var_x105 * var_chaste_interface__L_type_Ca_channel_f_gate__f / pow(var_x30, 2); + const double var_x109 = 0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x110 = 1 / var_x109; + const double var_x111 = pow(var_x109, (-2)); + const double var_x112 = 1.1499999999999999 * var_x111 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x113 = 13003.204392901209 * var_x106 * var_x39; + const double var_x117 = var_x3 - var_x7; + const double var_x118 = var_x117 * var_x12 / pow(var_x9, 2); + const double var_x119 = var_x4 * var_x5; + const double var_x120 = pow(var_x11, (-2)); + const double var_x121 = var_x10 * var_x117 * var_x120; + const double var_x122 = var_x121 * var_x5; + const double var_x123 = 1.9999999999999999e-6 * var_x122 + 0.28985507246376813 * var_x118 + var_x119 * var_x14; + const double var_x135 = log(var_x65 * mParameters[0]); + const double var_x136 = -13.356169352749133 * var_x135 + var_chaste_interface__membrane__V; + const double var_x154 = 0.0023800000000000002 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x155 = 1 + 0.00011900000000000002 / pow(var_x154, 2) + 3.5000000000000004e-5 * var_x111; + const double var_x156 = 1 / var_x155; + const double var_x157 = 1 / M_PI; + const double var_x160 = 0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x161 = 1 / var_x160; + const double var_x162 = 1 - var_chaste_interface__calcium_dynamics__APtrack2; + const double var_x163 = -0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x164 = 60000 * var_x161 * var_x162 * var_x163 * var_chaste_interface__calcium_dynamics__APtrack2; + const double var_x165 = var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001; + const double var_x166 = 1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2; + const double var_x167 = 4000 * var_x166 * var_chaste_interface__calcium_dynamics__OVRLDtrack2; + const double var_x168 = var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0; + const double var_x169 = ((var_x165) ? (-var_x164) : ((var_x168) ? (-var_x167) : (0))); + const double var_x170 = 0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x171 = 1 / var_x170; + const double var_x172 = 0.40588235294117642 * var_x171; + const double var_x173 = var_chaste_interface__calcium_dynamics__Cai / pow(var_x170, 2); + const double var_x174 = 1.1499999999999999 * var_x110; + const double var_x175 = var_x123 + var_x174 - var_x112 - var_x113 + 0.040282206767891383 * var_x65 + 7.8019226357407252 * var_x34 * var_x43 + 0.6678084676374566 * var_x28 * var_x65; + const double var_x176 = 0.090316078310111333 * var_x157; + const double var_x177 = -var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR; + const double var_x178 = ((var_x165) ? (var_x164 * var_x177) : ((var_x168) ? (var_x167 * var_x177) : (0))); + const double var_x179 = var_x117 * var_x14; + const double var_x180 = -0.040282206767891383 * var_x135 + var_x136 * var_x29 + var_x174 * var_chaste_interface__calcium_dynamics__Cai + var_x41 * var_chaste_interface__membrane__V; + + partialF = 0.001 * var_x156 * (-var_x172 + 0.40588235294117642 * var_x173 + 0.0070588235294117632 * var_x169 - var_x175 * var_x176) + 0.001 * (0.00023800000000000004 / pow(var_x154, 3) + 7.0000000000000007e-5 / pow(var_x109, 3)) * (0.027058823529411764 * var_chaste_interface__calcium_dynamics__Ca_NSR + 0.0070588235294117632 * var_x178 - var_x172 * var_chaste_interface__calcium_dynamics__Cai - var_x176 * (var_x180 - var_x179 + 0.003016 * var_chaste_interface__membrane__V)) / pow(var_x155, 2); + } + else + { + const double y_save = rY[1]; + rY[1] += delta; + const double temp = EvaluateYDerivative1(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[1])/delta; + rY[1] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * _lt_0_row[19] - 0.080000000000000002 * var_chaste_interface__fast_sodium_current_m_gate__m * _lt_0_row[20]; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative2(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x192 = _lt_0_row[20]; + const double var_x195 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x196 = exp(-4.7130000000000001 - var_x195); + const double var_x197 = 1 - var_x196; + const double var_x198 = 0.32000000000000001 / var_x197; + const double var_x199 = 47.130000000000003 + var_chaste_interface__membrane__V; + const double var_x200 = fabs(var_x199) >= 1.0000000000000001e-5; + const double var_x201 = 0.080000000000000002 * var_x192; + + partialF = ((var_x200) ? (-var_x201 - var_x198 * var_x199) : (-3.2000000000000002 - var_x201)); + } + else + { + const double y_save = rY[2]; + rY[2] += delta; + const double temp = EvaluateYDerivative2(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[2])/delta; + rY[2] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * (1 - var_chaste_interface__fast_sodium_current_h_gate__h) * _lt_0_row[15] - 0.001 * _lt_0_row[16] * var_chaste_interface__fast_sodium_current_h_gate__h; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative3(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x202 = exp(0.079000000000000001 * var_chaste_interface__membrane__V); + const double var_x203 = exp(0.34999999999999998 * var_chaste_interface__membrane__V); + const double var_x204 = exp(-11.764705882352942 - 0.14705882352941177 * var_chaste_interface__membrane__V); + const double var_x205 = var_chaste_interface__membrane__V < -40; + const double var_x206 = exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__membrane__V); + const double var_x207 = 1 + var_x206; + + partialF = ((var_x205) ? (-310000 * var_x203 - 0.13500000000000001 * var_x204 - 3.5600000000000001 * var_x202) : (-7.6923076923076934 / var_x207)); + } + else + { + const double y_save = rY[3]; + rY[3] += delta; + const double temp = EvaluateYDerivative3(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[3])/delta; + rY[3] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = 0.001 * (1 - var_chaste_interface__fast_sodium_current_j_gate__j) * _lt_0_row[17] - 0.001 * _lt_0_row[18] * var_chaste_interface__fast_sodium_current_j_gate__j; // 1 / millisecond + + return d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative4(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x195 = 0.10000000000000001 * var_chaste_interface__membrane__V; + const double var_x205 = var_chaste_interface__membrane__V < -40; + const double var_x209 = exp(0.24440000000000001 * var_chaste_interface__membrane__V); + const double var_x210 = exp(-0.043909999999999998 * var_chaste_interface__membrane__V); + const double var_x211 = -127140 * var_x209 - 3.4740000000000003e-5 * var_x210; + const double var_x213 = exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V); + const double var_x214 = 1 + var_x213; + const double var_x215 = 1 / var_x214; + const double var_x216 = exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__membrane__V); + const double var_x217 = 1 + var_x216; + const double var_x218 = exp(-0.01052 * var_chaste_interface__membrane__V); + const double var_x219 = var_x218 / var_x217; + const double var_x220 = 37.780000000000001 + var_chaste_interface__membrane__V; + const double var_x221 = var_x215 * var_x220; + const double var_x222 = exp(-3.2000000000000002 - var_x195); + const double var_x223 = 1 + var_x222; + const double var_x224 = exp(-2.5349999999999999e-7 * var_chaste_interface__membrane__V); + const double var_x225 = var_x224 / var_x223; + + partialF = ((var_x205) ? (-0.1212 * var_x219 - var_x211 * var_x221) : (-0.29999999999999999 * var_x225)); + } + else + { + const double y_save = rY[4]; + rY[4] += delta; + const double temp = EvaluateYDerivative4(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[4])/delta; + rY[4] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + + + + // Mathematics + const double var_L_type_Ca_channel_d_gate__E0_d = 10 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_channel_d_gate__d_infinity = 1 / (1 + exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)); // dimensionless + const double var_L_type_Ca_channel_d_gate__tau_d = ((fabs(var_L_type_Ca_channel_d_gate__E0_d) < 1.0000000000000001e-5) ? (0.0045787545787545781) : (0.028571428571428571 * (1 - exp(-0.16025641025641024 * var_L_type_Ca_channel_d_gate__E0_d)) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__E0_d)); // second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__d_infinity / var_L_type_Ca_channel_d_gate__tau_d - 0.001 * (1 - var_L_type_Ca_channel_d_gate__d_infinity) * var_chaste_interface__L_type_Ca_channel_d_gate__d / var_L_type_Ca_channel_d_gate__tau_d; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative5(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x226 = exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V); + const double var_x227 = 1 + var_x226; + const double var_x228 = 1 / var_x227; + const double var_x230 = 10 + var_chaste_interface__membrane__V; + const double var_x231 = fabs(var_x230) < 1.0000000000000001e-5; + const double var_x232 = 1 - var_x226; + const double var_x233 = 1 / var_x232; + const double var_x236 = 1 - 1 * var_x228; + const double var_x237 = ((var_x231) ? (218.40000000000003) : (35 * var_x227 * var_x230 * var_x233)); + const double var_x239 = 0.001 * var_x237; + + partialF = -var_x228 * var_x239 - var_x236 * var_x239; + } + else + { + const double y_save = rY[5]; + rY[5] += delta; + const double temp = EvaluateYDerivative5(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[5])/delta; + rY[5] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_gate__f_infinity = _lt_0_row[10]; // dimensionless + const double var_L_type_Ca_channel_f_gate__tau_f = _lt_0_row[11]; // second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = 0.001 * (1 - var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__f_infinity / var_L_type_Ca_channel_f_gate__tau_f - 0.001 * (1 - var_L_type_Ca_channel_f_gate__f_infinity) * var_chaste_interface__L_type_Ca_channel_f_gate__f / var_L_type_Ca_channel_f_gate__tau_f; // 1 / millisecond + + return d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative6(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x240 = exp(4 + 0.125 * var_chaste_interface__membrane__V); + const double var_x241 = 1 + var_x240; + const double var_x242 = exp(2.5 - 0.050000000000000003 * var_chaste_interface__membrane__V); + const double var_x243 = 1 + var_x242; + const double var_x245 = exp(-pow((0.33700000000000002 + 0.033700000000000001 * var_chaste_interface__membrane__V), 2)); + const double var_x246 = 20 + 19.699999999999999 * var_x245; + const double var_x247 = 0.001 * var_x246; + const double var_x249 = 1 / var_x241 + 0.59999999999999998 / var_x243; + const double var_x250 = 1 - var_x249; + + partialF = -var_x247 * var_x249 - var_x247 * var_x250; + } + else + { + const double y_save = rY[6]; + rY[6] += delta; + const double temp = EvaluateYDerivative6(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[6])/delta; + rY[6] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b = 0.001 * _lt_0_row[13] * (-var_chaste_interface__T_type_Ca_channel_b_gate__b + _lt_0_row[12]); // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_b_gate__b; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative7(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x254 = exp(5.5555555555555554 + 0.22222222222222221 * var_chaste_interface__membrane__V); + const double var_x255 = 1 + var_x254; + const double var_x256 = 0.0037000000000000002 + 0.0061000000000000004 / var_x255; + const double var_x257 = 1 / var_x256; + + partialF = -0.001 * var_x257; + } + else + { + const double y_save = rY[7]; + rY[7] += delta; + const double temp = EvaluateYDerivative7(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[7])/delta; + rY[7] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g = 0.001 * (-var_chaste_interface__T_type_Ca_channel_g_gate__g + _lt_0_row[14]) * ((var_chaste_interface__membrane__V <= 0) ? (1 / (0.012 - 0.00087500000000000002 * var_chaste_interface__membrane__V)) : (83.333333333333329)); // 1 / millisecond + + return d_dt_chaste_interface_var_T_type_Ca_channel_g_gate__g; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative8(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x258 = 0.012 - 0.00087500000000000002 * var_chaste_interface__membrane__V; + const double var_x261 = 1 / var_x258; + const double var_x263 = var_chaste_interface__membrane__V <= 0; + + partialF = ((var_x263) ? (-0.001 * var_x261) : (-0.083333333333333329)); + } + else + { + const double y_save = rY[8]; + rY[8] += delta; + const double temp = EvaluateYDerivative8(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[8])/delta; + rY[8] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr = 0.001 * (-var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr + _lt_0_row[21]) * (_lt_0_row[22]); // 1 / millisecond + + return d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr_gate__xr; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative9(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x266 = exp(5.6404999999999994 + 0.14499999999999999 * var_chaste_interface__membrane__V); + const double var_x267 = -1 + var_x266; + const double var_x268 = 1 / var_x267; + const double var_x269 = exp(-1.7465999999999999 - 0.123 * var_chaste_interface__membrane__V); + const double var_x270 = 1 - var_x269; + const double var_x271 = 1 / var_x270; + const double var_x272 = 14.199999999999999 + var_chaste_interface__membrane__V; + const double var_x273 = 38.899999999999999 + var_chaste_interface__membrane__V; + + partialF = -0.0013799999999999999 * var_x271 * var_x272 - 0.00060999999999999997 * var_x268 * var_x273; + } + else + { + const double y_save = rY[9]; + rY[9] += delta; + const double temp = EvaluateYDerivative9(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[9])/delta; + rY[9] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 + _lt_0_row[23]) * (_lt_0_row[24]); // 1 / millisecond + + return d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative10(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x277 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V); + const double var_x278 = -1 + var_x277; + const double var_x279 = 1 / var_x278; + const double var_x280 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V); + const double var_x281 = 1 - var_x280; + const double var_x282 = 1 / var_x281; + const double var_x283 = 30 + var_chaste_interface__membrane__V; + const double var_x287 = var_x279 * var_x283; + const double var_x288 = var_x282 * var_x283; + + partialF = -0.00013100000000000001 * var_x287 - 7.1899999999999999e-5 * var_x288; + } + else + { + const double y_save = rY[10]; + rY[10] += delta; + const double temp = EvaluateYDerivative10(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[10])/delta; + rY[10] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = 0.001 * (-var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 + _lt_0_row[23]) * (_lt_0_row[25]); // 1 / millisecond + + return d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative11(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x277 = exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__membrane__V); + const double var_x278 = -1 + var_x277; + const double var_x279 = 1 / var_x278; + const double var_x280 = exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__membrane__V); + const double var_x281 = 1 - var_x280; + const double var_x282 = 1 / var_x281; + const double var_x283 = 30 + var_chaste_interface__membrane__V; + const double var_x287 = var_x279 * var_x283; + const double var_x288 = var_x282 * var_x283; + + partialF = -3.2750000000000003e-5 * var_x287 - 1.7975e-5 * var_x288; + } + else + { + const double y_save = rY[11]; + rY[11] += delta; + const double temp = EvaluateYDerivative11(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[11])/delta; + rY[11] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__transient_outward_current_zdv_gate__zdv = rY[12]; + // Units: dimensionless; Initial value: 0.011528 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_transient_outward_current_zdv_gate__alpha_zdv = _lt_0_row[28]; // per_second + const double var_transient_outward_current_zdv_gate__beta_zdv = _lt_0_row[29]; // per_second + const double d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv = 0.001 * (-var_chaste_interface__transient_outward_current_zdv_gate__zdv + var_transient_outward_current_zdv_gate__alpha_zdv / (var_transient_outward_current_zdv_gate__alpha_zdv + var_transient_outward_current_zdv_gate__beta_zdv)) * (1 * var_transient_outward_current_zdv_gate__alpha_zdv + 1 * var_transient_outward_current_zdv_gate__beta_zdv); // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_current_zdv_gate__zdv; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative12(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x289 = 0.040000000000000001 * var_chaste_interface__membrane__V; + const double var_x290 = exp(-1.6000000000000001 + var_x289); + const double var_x291 = 1 + var_x290; + const double var_x292 = 1 / var_x291; + const double var_x293 = var_x290 * var_x292; + const double var_x295 = exp(-3.6000000000000001 - var_x289); + const double var_x296 = 1 + var_x295; + const double var_x297 = var_x295 / var_x296; + + partialF = -10 * var_x293 - 10 * var_x297; + } + else + { + const double y_save = rY[12]; + rY[12] += delta; + const double temp = EvaluateYDerivative12(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[12])/delta; + rY[12] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__transient_outward_current_ydv_gate__ydv = rY[13]; + // Units: dimensionless; Initial value: 0.985232 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_transient_outward_current_ydv_gate__alpha_ydv = _lt_0_row[26]; // per_second + const double var_transient_outward_current_ydv_gate__beta_ydv = _lt_0_row[27]; // per_second + const double d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv = 0.001 * (-var_chaste_interface__transient_outward_current_ydv_gate__ydv + var_transient_outward_current_ydv_gate__alpha_ydv / (var_transient_outward_current_ydv_gate__alpha_ydv + var_transient_outward_current_ydv_gate__beta_ydv)) * (1 * var_transient_outward_current_ydv_gate__alpha_ydv + 1 * var_transient_outward_current_ydv_gate__beta_ydv); // 1 / millisecond + + return d_dt_chaste_interface_var_transient_outward_current_ydv_gate__ydv; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative13(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + + + + const double var_x303 = 0.20000000000000001 * var_chaste_interface__membrane__V; + const double var_x304 = exp(12 + var_x303); + const double var_x305 = 1 + var_x304; + const double var_x306 = 1 / var_x305; + const double var_x307 = exp(5 + var_x303); + const double var_x308 = 1 + var_x307; + const double var_x309 = 1 / var_x308; + const double var_x310 = var_x307 * var_x309; + + partialF = -0.014999999999999999 * var_x306 - 0.10000000000000001 * var_x310; + } + else + { + const double y_save = rY[13]; + rY[13] += delta; + const double temp = EvaluateYDerivative13(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[13])/delta; + rY[13] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + + + + // Mathematics + const double var_calcium_dynamics__i_rel = (-var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR) * ((var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001) ? (60000 * (1 - var_chaste_interface__calcium_dynamics__APtrack2) * (-0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack) * var_chaste_interface__calcium_dynamics__APtrack2 / (0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack)) : ((var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0) ? (4000 * (1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2) * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (0))); // millimolar_per_second + const double var_calcium_dynamics__i_tr = 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR = 0.001 * (-var_calcium_dynamics__i_rel + var_calcium_dynamics__i_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__calcium_dynamics__Ca_JSR), 2)); // millimolar / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__Ca_JSR; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative14(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + + + + const double var_x160 = 0.00062 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x161 = 1 / var_x160; + const double var_x162 = 1 - var_chaste_interface__calcium_dynamics__APtrack2; + const double var_x163 = -0.00018000000000000001 + var_chaste_interface__calcium_dynamics__Cainfluxtrack; + const double var_x164 = 60000 * var_x161 * var_x162 * var_x163 * var_chaste_interface__calcium_dynamics__APtrack2; + const double var_x165 = var_chaste_interface__calcium_dynamics__Cainfluxtrack > 0.00018000000000000001; + const double var_x166 = 1 - var_chaste_interface__calcium_dynamics__OVRLDtrack2; + const double var_x167 = 4000 * var_x166 * var_chaste_interface__calcium_dynamics__OVRLDtrack2; + const double var_x168 = var_chaste_interface__calcium_dynamics__OVRLDtrack2 > 0; + const double var_x177 = -var_chaste_interface__calcium_dynamics__Cai + var_chaste_interface__calcium_dynamics__Ca_JSR; + const double var_x178 = ((var_x165) ? (var_x164 * var_x177) : ((var_x168) ? (var_x167 * var_x177) : (0))); + const double var_x186 = ((var_x165) ? (var_x164) : ((var_x168) ? (var_x167) : (0))); + const double var_x315 = 0.80000000000000004 + var_chaste_interface__calcium_dynamics__Ca_JSR; + const double var_x316 = 1 + 8 / pow(var_x315, 2); + const double var_x317 = 1 / var_x316; + const double var_x318 = 0.001 * var_x317; + + partialF = var_x318 * (-5.5555555555555554 - var_x186) + 0.016 * (-var_x178 + 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR) / (pow(var_x315, 3) * pow(var_x316, 2)); + } + else + { + const double y_save = rY[14]; + rY[14] += delta; + const double temp = EvaluateYDerivative14(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[14])/delta; + rY[14] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__Ca_NSR = rY[15]; + // Units: millimolar; Initial value: 2.797668 + + + + // Mathematics + const double var_calcium_dynamics__i_leak = 0.33333333333333331 * var_chaste_interface__calcium_dynamics__Ca_NSR; // millimolar_per_second + const double var_calcium_dynamics__i_up = 5 * var_chaste_interface__calcium_dynamics__Cai / (0.00092000000000000003 + var_chaste_interface__calcium_dynamics__Cai); // millimolar_per_second + const double var_calcium_dynamics__i_tr = 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_NSR - 5.5555555555555554 * var_chaste_interface__calcium_dynamics__Ca_JSR; // millimolar_per_second + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_calcium_dynamics__V_JSR = 0.0070588235294117632 * var_ionic_concentrations__V_myo; // micro_litre + const double var_calcium_dynamics__V_NSR = 0.081176470588235281 * var_ionic_concentrations__V_myo; // micro_litre + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR = 0.001 * var_calcium_dynamics__i_up - 0.001 * var_calcium_dynamics__i_leak - 0.001 * var_calcium_dynamics__V_JSR * var_calcium_dynamics__i_tr / var_calcium_dynamics__V_NSR; // millimolar / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__Ca_NSR; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative15(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + + + + + partialF = -0.00081642512077294684; + } + else + { + const double y_save = rY[15]; + rY[15] += delta; + const double temp = EvaluateYDerivative15(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[15])/delta; + rY[15] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * _lt_0_row[8] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double var_membrane__dVdt = -1 * (GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance() + var_ATP_sensitive_potassium_current__i_K_ATP + var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa + var_Na_Ca_exchanger__i_NaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_fast_sodium_current__i_Na + var_non_specific_calcium_activated_current__i_ns_K + var_non_specific_calcium_activated_current__i_ns_Na + var_plateau_potassium_current__i_Kp + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_sarcolemmal_calcium_pump__i_p_Ca + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_Na_b + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[3]; // dimensionless + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack = 0.001 * ((var_membrane__dVdt > 150000) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack) : (-500 * var_chaste_interface__calcium_dynamics__APtrack)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__APtrack; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative16(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_x0 = 0.018717941753901308 * var_chaste_interface__membrane__V; + const double var_x1 = exp(var_x0); + const double var_x2 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = exp(-var_x0); + const double var_x5 = pow(mParameters[2], 3); + const double var_x6 = var_x5 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x7 = var_x4 * var_x6; + const double var_x9 = 1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x10 = 1 / var_x9; + const double var_x11 = 1 + 0.001 * var_x2 + 0.001 * var_x6; + const double var_x12 = 1 / var_x11; + const double var_x13 = var_x10 * var_x12; + const double var_x14 = 0.002 * var_x13; + const double var_x16 = 1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2); + const double var_x17 = 1 / var_x16; + const double var_x18 = 2 * var_x17; + const double var_x19 = 1 / (1.5 + mParameters[1]); + const double var_x20 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); + const double var_x21 = 0.037435883507802616 * var_chaste_interface__membrane__V; + const double var_x22 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * exp(-var_x21); + const double var_x23 = 1 + 0.1245 * var_x20 + 0.036499999999999998 * var_x22; + const double var_x27 = pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2); + const double var_x28 = var_x27 * var_chaste_interface__T_type_Ca_channel_g_gate__g; + const double var_x29 = 0.050000000000000003 * var_x28; + const double var_x30 = 1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x31 = 1 / var_x30; + const double var_x32 = var_x31 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x33 = var_x32 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x34 = _lt_0_row[0]; + const double var_x35 = -1 + var_x34; + const double var_x36 = 1 / var_x35; + const double var_x37 = var_x34 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x38 = 1 * var_x37 - 0.34100000000000003 * mParameters[0]; + const double var_x39 = var_x36 * var_x38; + const double var_x40 = 7.8019226357407252 * var_x39; + const double var_x41 = var_x33 * var_x40; + const double var_x45 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x46 = var_x45 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x47 = var_x46 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x48 = exp(var_x21); + const double var_x49 = -1 + var_x48; + const double var_x50 = 1 / var_x49; + const double var_x51 = var_x33 * var_x50; + const double var_x52 = 0.75 * var_x48; + const double var_x53 = -0.75 * mParameters[2] + var_x52 * var_chaste_interface__ionic_concentrations__Nai; + const double var_x54 = 0.0024381008236689767 * var_x53; + const double var_x55 = var_x51 * var_x54; + const double var_x59 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x60 = 1 + var_x59; + const double var_x61 = 1 / var_x60; + const double var_x62 = 0.0055199999999999997 * var_x61; + const double var_x63 = pow(mParameters[1], 0.23999999999999999); + const double var_x64 = 1.921898339896919e-8 * var_x63; + const double var_x65 = 1 / var_chaste_interface__calcium_dynamics__Cai; + const double var_x66 = pow(var_x65, 1.3999999999999999); + const double var_x67 = 1 + 6.4818210260626455e-7 * var_x66; + const double var_x68 = 0.433 + 0.25979999999999998 / var_x67; + const double var_x69 = var_x68 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + const double var_x70 = var_x69 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + const double var_x71 = 1 / var_chaste_interface__ionic_concentrations__Ki; + const double var_x72 = log(var_x71 * mParameters[1]); + const double var_x73 = -26.712338705498265 * var_x72 + var_chaste_interface__membrane__V; + const double var_x74 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); + const double var_x75 = 1 + var_x74; + const double var_x76 = sqrt(mParameters[1]); + const double var_x77 = var_x76 * mParameters[6] / var_x75; + const double var_x78 = var_x77 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; + const double var_x79 = 0.43033148291193518 * var_x78; + const double var_x80 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x72); + const double var_x81 = 1 + var_x80; + const double var_x82 = 1 / var_x81; + const double var_x83 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x72); + const double var_x84 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x72); + const double var_x85 = var_x84 + 0.49124000000000001 * var_x83; + const double var_x86 = exp(-2.4444678999999998 + 13.738155796237757 * var_x72 - 0.51429999999999998 * var_chaste_interface__membrane__V); + const double var_x87 = 1 + var_x86; + const double var_x88 = 1000 / var_x87; + const double var_x89 = 1020 * var_x82 + var_x85 * var_x88; + const double var_x90 = var_x76 * mParameters[5] / var_x89; + const double var_x91 = var_x82 * var_x90; + const double var_x92 = 438.93811257017387 * var_x91; + const double var_x93 = -0.75 * mParameters[1] + var_x52 * var_chaste_interface__ionic_concentrations__Ki; + const double var_x94 = 0.00069711623550831479 * var_x93; + const double var_x95 = var_x51 * var_x94; + const double var_x103 = 1 / mParameters[3]; + const double var_x109 = 0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai; + const double var_x110 = 1 / var_x109; + const double var_x114 = 1 / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki); + const double var_x115 = -26.712338705498265 * log(var_x114 * (0.018329999999999999 * mParameters[2] + mParameters[1])) + var_chaste_interface__membrane__V; + const double var_x117 = var_x3 - var_x7; + const double var_x124 = 1 / var_chaste_interface__ionic_concentrations__Nai; + const double var_x125 = log(var_x124 * mParameters[2]); + const double var_x126 = -26.712338705498265 * var_x125 + var_chaste_interface__membrane__V; + const double var_x135 = log(var_x65 * mParameters[0]); + const double var_x136 = -13.356169352749133 * var_x135 + var_chaste_interface__membrane__V; + const double var_x144 = var_x19 * mParameters[1] / var_x23; + const double var_x174 = 1.1499999999999999 * var_x110; + const double var_x179 = var_x117 * var_x14; + const double var_x180 = -0.040282206767891383 * var_x135 + var_x136 * var_x29 + var_x174 * var_chaste_interface__calcium_dynamics__Cai + var_x41 * var_chaste_interface__membrane__V; + + partialF = ((1 * var_x103 * (var_x179 + var_x180 + 0.0070159999999999997 * var_chaste_interface__membrane__V - 0.10684935482199306 * var_x125 + var_x115 * var_x70 + var_x126 * var_x47 + var_x144 * var_x18 + var_x55 * var_chaste_interface__membrane__V + var_x62 * var_x73 + var_x64 * var_x73 + var_x73 * var_x79 + var_x73 * var_x92 + var_x95 * var_chaste_interface__membrane__V + GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted) / HeartConfig::Instance()->GetCapacitance()) < -150000) ? (-100.5) : (-0.5)); + } + else + { + const double y_save = rY[16]; + rY[16] += delta; + const double temp = EvaluateYDerivative16(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[16])/delta; + rY[16] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack2) : (-500 * var_chaste_interface__calcium_dynamics__APtrack2)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__APtrack2; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative17(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + + + + const double var_x319 = (var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001); + + partialF = ((var_x319) ? (-100.5) : (-0.5)); + } + else + { + const double y_save = rY[17]; + rY[17] += delta; + const double temp = EvaluateYDerivative17(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[17])/delta; + rY[17] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; + // Units: dimensionless; Initial value: 0.01925 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__APtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001)) ? (100000 - 100500 * var_chaste_interface__calcium_dynamics__APtrack3) : (-10 * var_chaste_interface__calcium_dynamics__APtrack3)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__APtrack3; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative18(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + + + + const double var_x319 = (var_chaste_interface__calcium_dynamics__APtrack > 0.17999999999999999) && (var_chaste_interface__calcium_dynamics__APtrack < 0.20000000000000001); + + partialF = ((var_x319) ? (-100.5) : (-0.01)); + } + else + { + const double y_save = rY[18]; + rY[18] += delta; + const double temp = EvaluateYDerivative18(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[18])/delta; + rY[18] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__T_type_Ca_channel_b_gate__b = rY[7]; + // Units: dimensionless; Initial value: 0.000967785 + double var_chaste_interface__T_type_Ca_channel_g_gate__g = rY[8]; + // Units: dimensionless; Initial value: 0.95331988 + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + double var_chaste_interface__calcium_dynamics__Cainfluxtrack = rY[19]; + // Units: dimensionless; Initial value: 1.784e-87 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_calcium_background_current__E_Ca = 13.356169352749133 * log(mParameters[0] / var_chaste_interface__calcium_dynamics__Cai); // millivolt + const double var_L_type_Ca_channel__i_CaCa = 7.8019226357407252 * _lt_0_row[1] * (-0.34100000000000003 * mParameters[0] + 1 * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[0]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_T_type_Ca_channel__i_Ca_T = 0.050000000000000003 * pow(var_chaste_interface__T_type_Ca_channel_b_gate__b, 2) * (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_chaste_interface__T_type_Ca_channel_g_gate__g; // microA_per_microF + const double var_calcium_background_current__i_Ca_b = 0.003016 * var_chaste_interface__membrane__V - 0.003016 * var_calcium_background_current__E_Ca; // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = 1.1499999999999999 * var_chaste_interface__calcium_dynamics__Cai / (0.00050000000000000001 + var_chaste_interface__calcium_dynamics__Cai); // microA_per_microF + const double d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack = 0.001 * ((var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001) ? (-7.4312069233559624e-13 * (-var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_channel__i_CaCa + var_T_type_Ca_channel__i_Ca_T + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) / var_ionic_concentrations__V_myo) : ((var_chaste_interface__calcium_dynamics__APtrack2 > 0.01) ? (0) : (-500 * var_chaste_interface__calcium_dynamics__Cainfluxtrack))); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__Cainfluxtrack; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative19(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__APtrack = rY[16]; + // Units: dimensionless; Initial value: 3.814e-87 + double var_chaste_interface__calcium_dynamics__APtrack2 = rY[17]; + // Units: dimensionless; Initial value: 2.1084e-86 + + + + const double var_x320 = var_chaste_interface__calcium_dynamics__APtrack > 0.20000000000000001; + + partialF = (((var_x320) || (var_chaste_interface__calcium_dynamics__APtrack2 > 0.01)) ? (0) : (-0.5)); + } + else + { + const double y_save = rY[19]; + rY[19] += delta; + const double temp = EvaluateYDerivative19(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[19])/delta; + rY[19] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; + // Units: dimensionless; Initial value: 0.01925 + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack = 0.001 * (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (1 / (1 + 0.80000000000000004 / var_chaste_interface__calcium_dynamics__Ca_JSR) > 0.69999999999999996)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative20(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__Ca_JSR = rY[14]; + // Units: millimolar; Initial value: 0.817895 + double var_chaste_interface__calcium_dynamics__APtrack3 = rY[18]; + // Units: dimensionless; Initial value: 0.01925 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + + + + + partialF = (((var_chaste_interface__calcium_dynamics__APtrack3 < 0.37) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.37) && (1 / (1 + 0.80000000000000004 / var_chaste_interface__calcium_dynamics__Ca_JSR) > 0.69999999999999996)) ? (-50) : (-0.5)); + } + else + { + const double y_save = rY[20]; + rY[20] += delta; + const double temp = EvaluateYDerivative20(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[20])/delta; + rY[20] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack2) : (-500 * var_chaste_interface__calcium_dynamics__OVRLDtrack2)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack2; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative21(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack2 = rY[21]; + // Units: dimensionless; Initial value: 0.0 + + + + const double var_x321 = var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998; + + partialF = (((var_x321) && (var_chaste_interface__calcium_dynamics__OVRLDtrack2 < 0.97999999999999998)) ? (-50) : (-0.5)); + } + else + { + const double y_save = rY[21]; + rY[21] += delta; + const double temp = EvaluateYDerivative21(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[21])/delta; + rY[21] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + + + + // Mathematics + const double d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3 = 0.001 * (((var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.97999999999999998)) ? (50000 - 50000 * var_chaste_interface__calcium_dynamics__OVRLDtrack3) : (-10 * var_chaste_interface__calcium_dynamics__OVRLDtrack3)); // 1 / millisecond + + return d_dt_chaste_interface_var_calcium_dynamics__OVRLDtrack3; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative22(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__calcium_dynamics__OVRLDtrack = rY[20]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_dynamics__OVRLDtrack3 = rY[22]; + // Units: dimensionless; Initial value: 0.0 + + + + const double var_x321 = var_chaste_interface__calcium_dynamics__OVRLDtrack > 0.97999999999999998; + + partialF = (((var_x321) && (var_chaste_interface__calcium_dynamics__OVRLDtrack3 < 0.97999999999999998)) ? (-50) : (-0.01)); + } + else + { + const double y_save = rY[22]; + rY[22] += delta; + const double temp = EvaluateYDerivative22(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[22])/delta; + rY[22] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_fast_sodium_current__E_Na = 26.712338705498265 * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai); // millivolt + const double var_L_type_Ca_channel__i_CaNa = 0.0024381008236689767 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = 0.002 * (pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] * _lt_0_row[4] - pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai * _lt_0_row[5]) / ((1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai) * (1 + 0.001 * pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0] + 0.001 * pow(mParameters[2], 3) * var_chaste_interface__calcium_dynamics__Cai)); // microA_per_microF + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_Na = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[2] + 0.75 * var_chaste_interface__ionic_concentrations__Nai * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_sodium_background_current__i_Na_b = 0.0040000000000000001 * var_chaste_interface__membrane__V - 0.0040000000000000001 * var_fast_sodium_current__E_Na; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Nai = 1.4862413846711923e-15 * (-var_L_type_Ca_channel__i_CaNa - var_fast_sodium_current__i_Na - var_non_specific_calcium_activated_current__i_ns_Na - var_sodium_background_current__i_Na_b - 3 * var_Na_Ca_exchanger__i_NaCa - 3 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond + + return d_dt_chaste_interface_var_ionic_concentrations__Nai; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative23(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + + + + const double var_x0 = 0.018717941753901308 * var_chaste_interface__membrane__V; + const double var_x1 = exp(var_x0); + const double var_x2 = pow(var_chaste_interface__ionic_concentrations__Nai, 3) * mParameters[0]; + const double var_x3 = var_x1 * var_x2; + const double var_x4 = exp(-var_x0); + const double var_x5 = pow(mParameters[2], 3); + const double var_x6 = var_x5 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x7 = var_x4 * var_x6; + const double var_x9 = 1 + 144.92753623188406 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x10 = 1 / var_x9; + const double var_x11 = 1 + 0.001 * var_x2 + 0.001 * var_x6; + const double var_x12 = 1 / var_x11; + const double var_x13 = var_x10 * var_x12; + const double var_x16 = 1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2); + const double var_x19 = 1 / (1.5 + mParameters[1]); + const double var_x20 = exp(-0.003743588350780262 * var_chaste_interface__membrane__V); + const double var_x21 = 0.037435883507802616 * var_chaste_interface__membrane__V; + const double var_x22 = (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * exp(-var_x21); + const double var_x23 = 1 + 0.1245 * var_x20 + 0.036499999999999998 * var_x22; + const double var_x30 = 1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x31 = 1 / var_x30; + const double var_x32 = var_x31 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x33 = var_x32 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x45 = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3); + const double var_x46 = var_x45 * mParameters[4] * var_chaste_interface__fast_sodium_current_j_gate__j; + const double var_x47 = var_x46 * var_chaste_interface__fast_sodium_current_h_gate__h; + const double var_x48 = exp(var_x21); + const double var_x49 = -1 + var_x48; + const double var_x50 = 1 / var_x49; + const double var_x51 = var_x33 * var_x50; + const double var_x56 = var_x48 * var_x51 * var_chaste_interface__membrane__V; + const double var_x117 = var_x3 - var_x7; + const double var_x120 = pow(var_x11, (-2)); + const double var_x124 = 1 / var_chaste_interface__ionic_concentrations__Nai; + const double var_x144 = var_x19 * mParameters[1] / var_x23; + const double var_x145 = var_x144 / (pow(var_x16, 2) * pow(var_chaste_interface__ionic_concentrations__Nai, 3)); + const double var_x147 = pow(var_chaste_interface__ionic_concentrations__Nai, 2); + const double var_x148 = var_x147 * mParameters[0]; + const double var_x149 = var_x1 * var_x148; + const double var_x152 = 0.10684935482199306 * var_x124 + 0.0018285756177517324 * var_x56 + 26.712338705498265 * var_x124 * var_x47; + const double var_x157 = 1 / M_PI; + const double var_x322 = 0.00018063215662022267 * var_x157; + + partialF = var_x322 * (-var_x152 - 1200 * var_x145 - 0.018000000000000002 * var_x13 * var_x149 + 1.8e-5 * var_x10 * var_x117 * var_x120 * var_x147 * mParameters[0]); + } + else + { + const double y_save = rY[23]; + rY[23] += delta; + const double temp = EvaluateYDerivative23(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[23])/delta; + rY[23] = y_save; + } + return partialF; + } + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluateYDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY) + { + + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai); // dimensionless + const double var_ionic_concentrations__V_myo = 8.2280000000000009e-12 * M_PI; // micro_litre + const double var_L_type_Ca_channel__i_CaK = 0.00069711623550831479 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_chaste_interface__membrane__V; // microA_per_microF + const double var_non_specific_calcium_activated_current__P_ns_Ca = 0; // cm_per_second + const double var_non_specific_calcium_activated_current__i_ns_K = 3612.0012202503358 * _lt_0_row[3] * (-0.75 * mParameters[1] + 0.75 * var_chaste_interface__ionic_concentrations__Ki * _lt_0_row[2]) * var_chaste_interface__membrane__V * var_non_specific_calcium_activated_current__P_ns_Ca / (1 + 1.7279999999999996e-9 / pow(var_chaste_interface__calcium_dynamics__Cai, 3)); // microA_per_microF + const double var_slow_delayed_rectifier_potassium_current__i_Ks = (0.433 + 0.25979999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__calcium_dynamics__Cai), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[2] + mParameters[1]) / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki)) + var_chaste_interface__membrane__V) * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; // microA_per_microF + const double var_sodium_potassium_pump__i_NaK = 2 * mParameters[1] / ((1 + 100 / pow(var_chaste_interface__ionic_concentrations__Nai, 2)) * (1.5 + mParameters[1]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[2])) * _lt_0_row[6])); // microA_per_microF + const double var_time_independent_potassium_current__E_K = 26.712338705498265 * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki); // millivolt + const double var_ATP_sensitive_potassium_current__i_K_ATP = 1.921898339896919e-8 * pow(mParameters[1], 0.23999999999999999) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_plateau_potassium_current__i_Kp = 0.0055199999999999997 * _lt_0_row[8] * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 0.43033148291193518 * _lt_0_row[9] * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_time_independent_potassium_current__i_K1 = 438.93811257017387 * sqrt(mParameters[1]) * (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) * (1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)) + 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_microF + const double var_transient_outward_current__i_to = 0; // microA_per_microF + const double d_dt_chaste_interface_var_ionic_concentrations__Ki = 1.4862413846711923e-15 * (-var_ATP_sensitive_potassium_current__i_K_ATP - var_L_type_Ca_channel__i_CaK - var_non_specific_calcium_activated_current__i_ns_K - var_plateau_potassium_current__i_Kp - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_time_independent_potassium_current__i_K1 - var_transient_outward_current__i_to + 2 * var_sodium_potassium_pump__i_NaK) / var_ionic_concentrations__V_myo; // millimolar / millisecond + + return d_dt_chaste_interface_var_ionic_concentrations__Ki; + } + + double Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::EvaluatePartialDerivative24(double var_chaste_interface__environment__time_converted, std::vector& rY, double delta, bool forceNumerical) + { + double partialF; + if (!forceNumerical && this->mUseAnalyticJacobian) + { + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1 = rY[10]; + // Units: dimensionless; Initial value: 0.0272635 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2 = rY[11]; + // Units: dimensionless; Initial value: 0.0631269 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + + + const double var_x21 = 0.037435883507802616 * var_chaste_interface__membrane__V; + const double var_x30 = 1 + 1666.6666666666667 * var_chaste_interface__calcium_dynamics__Cai; + const double var_x31 = 1 / var_x30; + const double var_x32 = var_x31 * var_chaste_interface__L_type_Ca_channel_f_gate__f; + const double var_x33 = var_x32 * var_chaste_interface__L_type_Ca_channel_d_gate__d; + const double var_x48 = exp(var_x21); + const double var_x49 = -1 + var_x48; + const double var_x50 = 1 / var_x49; + const double var_x51 = var_x33 * var_x50; + const double var_x56 = var_x48 * var_x51 * var_chaste_interface__membrane__V; + const double var_x59 = exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V); + const double var_x60 = 1 + var_x59; + const double var_x61 = 1 / var_x60; + const double var_x63 = pow(mParameters[1], 0.23999999999999999); + const double var_x65 = 1 / var_chaste_interface__calcium_dynamics__Cai; + const double var_x66 = pow(var_x65, 1.3999999999999999); + const double var_x67 = 1 + 6.4818210260626455e-7 * var_x66; + const double var_x68 = 0.433 + 0.25979999999999998 / var_x67; + const double var_x69 = var_x68 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs2_gate__xs2; + const double var_x70 = var_x69 * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs1_gate__xs1; + const double var_x71 = 1 / var_chaste_interface__ionic_concentrations__Ki; + const double var_x72 = log(var_x71 * mParameters[1]); + const double var_x73 = -26.712338705498265 * var_x72 + var_chaste_interface__membrane__V; + const double var_x74 = exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V); + const double var_x75 = 1 + var_x74; + const double var_x76 = sqrt(mParameters[1]); + const double var_x77 = var_x76 * mParameters[6] / var_x75; + const double var_x78 = var_x77 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; + const double var_x80 = exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 6.3708927812613361 * var_x72); + const double var_x81 = 1 + var_x80; + const double var_x82 = 1 / var_x81; + const double var_x83 = exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 2.1455350448256207 * var_x72); + const double var_x84 = exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 1.6494869150645177 * var_x72); + const double var_x85 = var_x84 + 0.49124000000000001 * var_x83; + const double var_x86 = exp(-2.4444678999999998 + 13.738155796237757 * var_x72 - 0.51429999999999998 * var_chaste_interface__membrane__V); + const double var_x87 = 1 + var_x86; + const double var_x88 = 1000 / var_x87; + const double var_x89 = 1020 * var_x82 + var_x85 * var_x88; + const double var_x90 = var_x76 * mParameters[5] / var_x89; + const double var_x91 = var_x82 * var_x90; + const double var_x96 = pow(var_x81, (-2)); + const double var_x97 = var_x85 * var_x86 / pow(var_x87, 2); + const double var_x98 = var_x73 * var_x76; + const double var_x99 = 438.93811257017387 * var_x82 * var_x98 * mParameters[5] / pow(var_x89, 2); + const double var_x100 = var_x80 * var_x96; + const double var_x101 = var_x73 * var_x90; + const double var_x114 = 1 / (0.018329999999999999 * var_chaste_interface__ionic_concentrations__Nai + var_chaste_interface__ionic_concentrations__Ki); + const double var_x142 = var_x114 * var_x70; + const double var_x153 = 0.00052283717663123607 * var_x56 + 26.712338705498265 * var_x142 + var_x99 * (-var_x88 * (1.053972635420138 * var_x71 * var_x83 + 1.6494869150645177 * var_x71 * var_x84) - 13738.155796237757 * var_x71 * var_x97 + 6498.310636886562 * var_x71 * var_x80 * var_x96) + 11.495160327182951 * var_x71 * var_x78 + 5.1338399412861326e-7 * var_x63 * var_x71 + 0.14745210965435041 * var_x61 * var_x71 + 11725.06353372661 * var_x71 * var_x91 - 2796.4276527937964 * var_x100 * var_x101 * var_x71; + const double var_x157 = 1 / M_PI; + const double var_x322 = 0.00018063215662022267 * var_x157; + + partialF = -var_x153 * var_x322; + } + else + { + const double y_save = rY[24]; + rY[24] += delta; + const double temp = EvaluateYDerivative24(var_chaste_interface__environment__time_converted, rY); + partialF = (temp-mEvalF[24])/delta; + rY[24] = y_save; + } + return partialF; + } + + std::vector Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -88.984 + double var_chaste_interface__calcium_dynamics__Cai = rY[1]; + // Units: millimolar; Initial value: 0.00035237 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00079287 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9938 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99573 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 3.18355e-06 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.9974388 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr = rY[9]; + // Units: dimensionless; Initial value: 0.00032151644 + double var_chaste_interface__ionic_concentrations__Nai = rY[23]; + // Units: millimolar; Initial value: 15.6748357 + double var_chaste_interface__ionic_concentrations__Ki = rY[24]; + // Units: millimolar; Initial value: 137.6244 + + // Lookup table indexing + const bool _oob_0 = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time_converted)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_L_type_Ca_channel__P_Ca = 0.00054000000000000001; // cm_per_second + const double var_L_type_Ca_channel__P_K = 1.9299999999999999e-7; // cm_per_second + const double var_L_type_Ca_channel__P_Na = 6.75e-7; // cm_per_second + const double var_L_type_Ca_channel__gamma_Cai = 1; // dimensionless + const double var_L_type_Ca_channel__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_L_type_Ca_channel__gamma_Ki = 0.75; // dimensionless + const double var_L_type_Ca_channel__gamma_Ko = 0.75; // dimensionless + const double var_L_type_Ca_channel__gamma_Nai = 0.75; // dimensionless + const double var_L_type_Ca_channel__gamma_Nao = 0.75; // dimensionless + const double var_L_type_Ca_channel_f_Ca_gate__Km_Ca = 0.00059999999999999995; // millimolar + const double var_L_type_Ca_channel_f_Ca_gate__f_Ca = 1 / (1 + var_chaste_interface__calcium_dynamics__Cai / var_L_type_Ca_channel_f_Ca_gate__Km_Ca); // dimensionless + const double var_membrane__F = 96485; // coulomb_per_mole + const double var_membrane__I_st_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__R = 8314; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[2] / var_chaste_interface__ionic_concentrations__Nai) / var_membrane__F; // millivolt + const double var_L_type_Ca_channel__I_CaCa = 4 * pow(var_membrane__F, 2) * (-var_L_type_Ca_channel__gamma_Cao * mParameters[0] + var_L_type_Ca_channel__gamma_Cai * var_chaste_interface__calcium_dynamics__Cai * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_Ca * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_channel__I_CaK = 1 * pow(var_membrane__F, 2) * (-var_L_type_Ca_channel__gamma_Ko * mParameters[1] + var_L_type_Ca_channel__gamma_Ki * var_chaste_interface__ionic_concentrations__Ki * exp(1 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_K * var_chaste_interface__membrane__V / ((-1 + exp(1 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_channel__I_CaNa = 1 * pow(var_membrane__F, 2) * (-var_L_type_Ca_channel__gamma_Nao * mParameters[2] + var_L_type_Ca_channel__gamma_Nai * var_chaste_interface__ionic_concentrations__Nai * exp(1 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_Na * var_chaste_interface__membrane__V / ((-1 + exp(1 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_channel__i_CaCa = var_L_type_Ca_channel__I_CaCa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_CaK = var_L_type_Ca_channel__I_CaK * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_CaNa = var_L_type_Ca_channel__I_CaNa * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_L_type_Ca_channel_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_channel_f_gate__f; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_CaCa + var_L_type_Ca_channel__i_CaK + var_L_type_Ca_channel__i_CaNa; // microA_per_microF + const double var_L_type_Ca_channel__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L; // uA_per_cm2 + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__Rect = 1 * _lt_0_row[9]; // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__g_Kr = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[6]; // milliS_per_microF + const double var_time_independent_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[1] / var_chaste_interface__ionic_concentrations__Ki) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_rapid_delayed_rectifier_potassium_current__Rect * var_rapid_delayed_rectifier_potassium_current__g_Kr * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr_gate__xr; // microA_per_microF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(mParameters[1]) * mParameters[5]; // milliS_per_cm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1020 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K)); // per_second + const double var_time_independent_potassium_current_K1_gate__beta_K1 = 1000 * (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // per_second + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + + std::vector dqs(6); + dqs[0] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[1] = var_fast_sodium_current__i_Na_converted; + dqs[2] = var_time_independent_potassium_current__i_K1_converted; + dqs[3] = var_rapid_delayed_rectifier_potassium_current__i_Kr_converted; + dqs[4] = var_membrane__I_st_converted; + dqs[5] = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "viswanathan_model_1999_epi"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-88.984); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00035237); + + // rY[2]: + this->mVariableNames.push_back("fast_sodium_current_m_gate__m"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00079287); + + // rY[3]: + this->mVariableNames.push_back("fast_sodium_current_h_gate__h"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9938); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99573); + + // rY[5]: + this->mVariableNames.push_back("L_type_Ca_channel_d_gate__d"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.18355e-06); + + // rY[6]: + this->mVariableNames.push_back("L_type_Ca_channel_f_gate__f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9974388); + + // rY[7]: + this->mVariableNames.push_back("T_type_Ca_channel_b_gate__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000967785); + + // rY[8]: + this->mVariableNames.push_back("T_type_Ca_channel_g_gate__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.95331988); + + // rY[9]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00032151644); + + // rY[10]: + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current_xs1_gate__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0272635); + + // rY[11]: + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current_xs2_gate__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0631269); + + // rY[12]: + this->mVariableNames.push_back("transient_outward_current_zdv_gate__zdv"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.011528); + + // rY[13]: + this->mVariableNames.push_back("transient_outward_current_ydv_gate__ydv"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.985232); + + // rY[14]: + this->mVariableNames.push_back("calcium_dynamics__Ca_JSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.817895); + + // rY[15]: + this->mVariableNames.push_back("calcium_dynamics__Ca_NSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(2.797668); + + // rY[16]: + this->mVariableNames.push_back("calcium_dynamics__APtrack"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.814e-87); + + // rY[17]: + this->mVariableNames.push_back("calcium_dynamics__APtrack2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.1084e-86); + + // rY[18]: + this->mVariableNames.push_back("calcium_dynamics__APtrack3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.01925); + + // rY[19]: + this->mVariableNames.push_back("calcium_dynamics__Cainfluxtrack"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.784e-87); + + // rY[20]: + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[21]: + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[22]: + this->mVariableNames.push_back("calcium_dynamics__OVRLDtrack3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[23]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(15.6748357); + + // rY[24]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(137.6244); + + // mParameters[0]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[1]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicviswanathan_model_1999_epiFromCellMLGRL2Opt(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/fox_mcharg_gilmour_2002_console_script--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/fox_mcharg_gilmour_2002_console_script--sympy_1_13.cpp new file mode 100644 index 00000000..5508f261 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/fox_mcharg_gilmour_2002_console_script--sympy_1_13.cpp @@ -0,0 +1,663 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: fox_model_2001 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: Normal) +//! on (date omitted as unimportant) +//! +//! + +#include "fox_mcharg_gilmour_2002.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Cellfox_mcharg_gilmour_2002FromCellML::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 1; // millisecond + const double var_chaste_interface__membrane__stim_period = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellfox_mcharg_gilmour_2002FromCellML::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellfox_mcharg_gilmour_2002FromCellML::Cellfox_mcharg_gilmour_2002FromCellML(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCell( + pSolver, + 13, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 9.9999999999999995e-7; // (var_calcium_dynamics__P_leak) [per_millisecond] + this->mParameters[1] = 6; // (var_calcium_dynamics__P_rel) [per_millisecond] + this->mParameters[2] = 0.10000000000000001; // (var_calcium_dynamics__V_up) [micromolar_per_millisecond] + this->mParameters[3] = 149.40000000000001; // (var_standard_ionic_concentrations__K_i) [millimolar] + this->mParameters[4] = 10; // (var_standard_ionic_concentrations__Na_i) [millimolar] + this->mParameters[5] = 2000; // (var_standard_ionic_concentrations__Ca_o) [micromolar] + this->mParameters[6] = 4; // (var_standard_ionic_concentrations__K_o) [millimolar] + this->mParameters[7] = 138; // (var_standard_ionic_concentrations__Na_o) [millimolar] + this->mParameters[8] = 2.26e-5; // (var_L_type_Ca_current__P_Ca) [cm_per_millisecond] + this->mParameters[9] = 30; // (var_L_type_Ca_current_f_Ca_gate__tau_f_Ca) [millisecond] + this->mParameters[10] = 12.800000000000001; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[11] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[12] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[13] = 2.7999999999999998; // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[14] = 0.013599999999999999; // (var_rapid_activating_delayed_rectifiyer_K_current__g_Kr) [milliS_per_microF] + this->mParameters[15] = 0.024500000000000001; // (var_slow_activating_delayed_rectifiyer_K_current__g_Ks) [milliS_per_microF] + this->mParameters[16] = 1500; // (var_Na_Ca_exchanger__K_NaCa) [microA_per_microF] + this->mParameters[17] = 0.23815; // (var_transient_outward_potassium_current__g_to) [milliS_per_microF] + } + + Cellfox_mcharg_gilmour_2002FromCellML::~Cellfox_mcharg_gilmour_2002FromCellML() + { + } + + + void Cellfox_mcharg_gilmour_2002FromCellML::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 13; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellfox_mcharg_gilmour_2002FromCellML::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -94.7 + double var_chaste_interface__calcium_dynamics__Ca_i_converted = rY[1]; + // Units: millimolar; Initial value: 4.72e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00024676 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.99869 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99887 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.229 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.0001 + double var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to = rY[7]; + // Units: dimensionless; Initial value: 3.742e-05 + double var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to = rY[8]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__L_type_Ca_current_f_gate__f = rY[9]; + // Units: dimensionless; Initial value: 0.983 + double var_chaste_interface__L_type_Ca_current_d_gate__d = rY[10]; + // Units: dimensionless; Initial value: 0.0001 + double var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca = rY[11]; + // Units: dimensionless; Initial value: 0.942 + + const double var_L_type_Ca_current__C_sc = 1; // microF_per_cm2 + const double var_L_type_Ca_current__P_CaK = 5.7899999999999998e-7; // cm_per_millisecond + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_Na_Ca_exchanger__K_mCa = 1380; // micromolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_calcium_dynamics__Ca_i = 1000 * var_chaste_interface__calcium_dynamics__Ca_i_converted; // micromolar + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 2.5 * exp(2.8000000000000003 + 0.10000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sarcolemmal_calcium_pump__K_mpCa = 0.050000000000000003; // micromolar + const double var_sarcolemmal_calcium_pump__i_pCa_max = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_calcium_dynamics__Ca_i * var_sarcolemmal_calcium_pump__i_pCa_max / (var_calcium_dynamics__Ca_i + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.69299999999999995; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_max = 4 * pow(var_membrane__F, 2) * (-0.34100000000000003 * mParameters[5] + var_calcium_dynamics__Ca_i * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[8] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_current__C_sc * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_d_gate__d * var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_current_f_gate__f; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca; // uA_per_cm2 + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[5] / var_calcium_dynamics__Ca_i) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_L_type_Ca_current__i_CaK = 1000 * pow(var_membrane__F, 2) * (-mParameters[6] + mParameters[3] * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_current__P_CaK * var_chaste_interface__L_type_Ca_current_d_gate__d * var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_current_f_gate__f * var_chaste_interface__membrane__V / ((1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half) * (-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_current__C_sc * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[6] / mParameters[3]) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = 0.5 * sqrt(mParameters[6]) * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * mParameters[14] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = (pow(mParameters[4], 3) * mParameters[5] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[7], 3) * var_calcium_dynamics__Ca_i * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[7], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[5])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[7] / mParameters[4]) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.018329999999999999 * mParameters[7]) / (1 * mParameters[3] + 0.018329999999999999 * mParameters[4])) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[15]; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_activating_delayed_rectifiyer_K_current__i_Ks; // uA_per_cm2 + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[7]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[6] / ((1 + pow((var_sodium_potassium_pump__K_mNai / mParameters[4]), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[6])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity = 1 / (2 + exp(1.6200000000000001 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * mParameters[13] * var_time_independent_potassium_current_K1_gate__K1_infinity / (mParameters[6] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_potassium_current__i_to = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[17] * var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to * var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to; // microA_per_microF + const double var_transient_outward_potassium_current__i_to_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_potassium_current__i_to; // uA_per_cm2 + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_CaK + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Ca_b + HeartConfig::Instance()->GetCapacitance() * var_plateau_potassium_current__i_Kp + HeartConfig::Instance()->GetCapacitance() * var_sarcolemmal_calcium_pump__i_p_Ca + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Na_b + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_current__i_Ca_converted + var_Na_Ca_exchanger__i_NaCa_converted + var_fast_sodium_current__i_Na_converted + var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted + var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_potassium_current__i_to_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellfox_mcharg_gilmour_2002FromCellML::EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -94.7 + double var_chaste_interface__calcium_dynamics__Ca_i_converted = rY[1]; + // Units: millimolar; Initial value: 4.72e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00024676 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.99869 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99887 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.229 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.0001 + double var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to = rY[7]; + // Units: dimensionless; Initial value: 3.742e-05 + double var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to = rY[8]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__L_type_Ca_current_f_gate__f = rY[9]; + // Units: dimensionless; Initial value: 0.983 + double var_chaste_interface__L_type_Ca_current_d_gate__d = rY[10]; + // Units: dimensionless; Initial value: 0.0001 + double var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca = rY[11]; + // Units: dimensionless; Initial value: 0.942 + double var_chaste_interface__calcium_dynamics__Ca_SR = rY[12]; + // Units: micromolar; Initial value: 320.0 + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_L_type_Ca_current__C_sc = 1; // microF_per_cm2 + const double var_L_type_Ca_current_f_Ca_gate__K_mfCa = 0.17999999999999999; // micromolar + const double var_Na_Ca_exchanger__K_mCa = 1380; // micromolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_background_current__g_Cab = 0.00038420000000000001; // milliS_per_microF + const double var_calcium_dynamics__A_Cap = 0.00015339999999999999; // cm2 + const double var_calcium_dynamics__CMDN_tot = 10; // micromolar + const double var_calcium_dynamics__CSQN_tot = 10000; // micromolar + const double var_calcium_dynamics__Ca_i = 1000 * var_chaste_interface__calcium_dynamics__Ca_i_converted; // micromolar + const double var_L_type_Ca_current_f_Ca_gate__f_Ca_infinity = 1 / (1 + pow(var_calcium_dynamics__Ca_i, 3) / pow(var_L_type_Ca_current_f_Ca_gate__K_mfCa, 3)); // dimensionless + const double d_dt_chaste_interface_var_L_type_Ca_current_f_Ca_gate__f_Ca = (-var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca + var_L_type_Ca_current_f_Ca_gate__f_Ca_infinity) / mParameters[9]; // 1 / millisecond + const double var_calcium_dynamics__K_mCMDN = 2; // micromolar + const double var_calcium_dynamics__K_mCSQN = 600; // micromolar + const double var_calcium_dynamics__K_mup = 0.32000000000000001; // micromolar + const double var_calcium_dynamics__J_leak = (-var_calcium_dynamics__Ca_i + var_chaste_interface__calcium_dynamics__Ca_SR) * mParameters[0]; // micromolar_per_millisecond + const double var_calcium_dynamics__V_SR = 1.9999999999999999e-6; // microlitre + const double var_calcium_dynamics__V_myo = 2.584e-5; // microlitre + const double var_calcium_dynamics__J_up = mParameters[2] / (1 + pow(var_calcium_dynamics__K_mup, 2) / pow(var_calcium_dynamics__Ca_i, 2)); // micromolar_per_millisecond + const double var_calcium_dynamics__beta_SR = 1 / (1 + var_calcium_dynamics__CSQN_tot * var_calcium_dynamics__K_mCSQN / pow((var_chaste_interface__calcium_dynamics__Ca_SR + var_calcium_dynamics__K_mCSQN), 2)); // dimensionless + const double var_calcium_dynamics__beta_i = 1 / (1 + var_calcium_dynamics__CMDN_tot * var_calcium_dynamics__K_mCMDN / pow((var_calcium_dynamics__Ca_i + var_calcium_dynamics__K_mCMDN), 2)); // dimensionless + const double var_calcium_dynamics__gamma = 1 / (1 + 8000000000.0 / pow(var_chaste_interface__calcium_dynamics__Ca_SR, 3)); // dimensionless + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current_d_gate__E0_m = 40 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_current_d_gate__d_infinity = 1 / (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current_d_gate__tau_d = 1 / (0.25 * exp(-0.01 * var_chaste_interface__membrane__V) / (1 + exp(-0.070000000000000007 * var_chaste_interface__membrane__V)) + 0.070000000000000007 * exp(-0.050000000000000003 * var_L_type_Ca_current_d_gate__E0_m) / (1 + exp(0.050000000000000003 * var_L_type_Ca_current_d_gate__E0_m))); // millisecond + const double d_dt_chaste_interface_var_L_type_Ca_current_d_gate__d = (-var_chaste_interface__L_type_Ca_current_d_gate__d + var_L_type_Ca_current_d_gate__d_infinity) / var_L_type_Ca_current_d_gate__tau_d; // 1 / millisecond + const double var_L_type_Ca_current_f_gate__f_infinity = 1 / (1 + exp(2.5 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current_f_gate__tau_f = 30 + 200 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // millisecond + const double d_dt_chaste_interface_var_L_type_Ca_current_f_gate__f = (-var_chaste_interface__L_type_Ca_current_f_gate__f + var_L_type_Ca_current_f_gate__f_infinity) / var_L_type_Ca_current_f_gate__tau_f; // 1 / millisecond + const double var_calcium_dynamics__J_rel = (-var_calcium_dynamics__Ca_i + var_chaste_interface__calcium_dynamics__Ca_SR * var_calcium_dynamics__gamma) * var_chaste_interface__L_type_Ca_current_d_gate__d * var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_current_f_gate__f * mParameters[1] / (1 + 1.6499999999999999 * exp(0.050000000000000003 * var_chaste_interface__membrane__V)); // micromolar_per_millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_SR = (-var_calcium_dynamics__J_leak - var_calcium_dynamics__J_rel + var_calcium_dynamics__J_up) * var_calcium_dynamics__V_myo * var_calcium_dynamics__beta_SR / var_calcium_dynamics__V_SR; // micromolar / millisecond + const double var_fast_sodium_current_h_gate__alpha_h = 0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current_h_gate__beta_h = 7.5 / (1 + exp(-1.1000000000000001 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // dimensionless + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = (-var_chaste_interface__fast_sodium_current_h_gate__h + var_fast_sodium_current_h_gate__h_inf) / var_fast_sodium_current_h_gate__tau_h; // 1 / millisecond + const double var_fast_sodium_current_j_gate__alpha_j = 0.17499999999999999 * exp(-4.3478260869565215 + 0.043478260869565216 * mParameters[12] - 0.043478260869565216 * var_chaste_interface__membrane__V) / (1 + exp(11.85 + 0.14999999999999999 * var_chaste_interface__membrane__V - 0.14999999999999999 * mParameters[12])); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = 0.29999999999999999 / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current_j_gate__j_inf = 0.01 * mParameters[11] + (1 - 0.01 * mParameters[11]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // dimensionless + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = (-var_chaste_interface__fast_sodium_current_j_gate__j + var_fast_sodium_current_j_gate__j_inf) / var_fast_sodium_current_j_gate__tau_j; // 1 / millisecond + const double var_fast_sodium_current_m_gate__E0_m = 47.130000000000003 + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = 0.32000000000000001 * var_fast_sodium_current_m_gate__E0_m / (1 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m)); // per_millisecond + const double var_fast_sodium_current_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m; // 1 / millisecond + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf = 1 / (1 + exp(-2.1819999999999999 - 0.18190000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr = 43 + 1 / (exp(-7.6769999999999996 - 0.012800000000000001 * var_chaste_interface__membrane__V) + exp(-5.4950000000000001 + 0.1691 * var_chaste_interface__membrane__V)); // millisecond + const double d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = (-var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr + var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr_inf) / var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__tau_X_kr; // 1 / millisecond + const double var_sarcolemmal_calcium_pump__K_mpCa = 0.050000000000000003; // micromolar + const double var_sarcolemmal_calcium_pump__i_pCa_max = 0.050000000000000003; // microA_per_microF + const double var_sarcolemmal_calcium_pump__i_p_Ca = var_calcium_dynamics__Ca_i * var_sarcolemmal_calcium_pump__i_pCa_max / (var_calcium_dynamics__Ca_i + var_sarcolemmal_calcium_pump__K_mpCa); // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity = 1 / (1 + exp(1.1764705882352942 - 0.073529411764705885 * var_chaste_interface__membrane__V)); // dimensionless + const double var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks = 1 / (0.00013100000000000001 * (-10 + var_chaste_interface__membrane__V) / (-1 + exp(-0.68699999999999994 + 0.068699999999999997 * var_chaste_interface__membrane__V)) + 7.1899999999999999e-5 * (-10 + var_chaste_interface__membrane__V) / (1 - exp(1.48 - 0.14799999999999999 * var_chaste_interface__membrane__V))); // millisecond + const double d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = (-var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks + var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks_infinity) / var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__tau_X_ks; // 1 / millisecond + const double var_L_type_Ca_current__i_Ca_max = 4 * pow(var_membrane__F, 2) * (-0.34100000000000003 * mParameters[5] + var_calcium_dynamics__Ca_i * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[8] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_current__C_sc * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_d_gate__d * var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_current_f_gate__f; // microA_per_microF + const double var_calcium_background_current__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[5] / var_calcium_dynamics__Ca_i) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_Ca_b = (-var_calcium_background_current__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa = (pow(mParameters[4], 3) * mParameters[5] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[7], 3) * var_calcium_dynamics__Ca_i * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[7], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[5])); // microA_per_microF + const double var_calcium_dynamics__Ca_i_orig_deriv = (-var_calcium_dynamics__J_up - 0.5 * (-2 * var_Na_Ca_exchanger__i_NaCa + var_L_type_Ca_current__i_Ca + var_calcium_background_current__i_Ca_b + var_sarcolemmal_calcium_pump__i_p_Ca) * var_L_type_Ca_current__C_sc * var_calcium_dynamics__A_Cap / (var_calcium_dynamics__V_myo * var_membrane__F) + var_calcium_dynamics__J_leak + var_calcium_dynamics__J_rel) * var_calcium_dynamics__beta_i; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_dynamics__Ca_i_converted = 0.001 * var_calcium_dynamics__Ca_i_orig_deriv; // millimolar / millisecond + const double var_transient_outward_potassium_current_X_to_gate__alpha_X_to = 0.045159999999999999 * exp(0.035770000000000003 * var_chaste_interface__membrane__V); // per_millisecond + const double var_transient_outward_potassium_current_X_to_gate__beta_X_to = 0.098900000000000002 * exp(-0.062370000000000002 * var_chaste_interface__membrane__V); // per_millisecond + const double d_dt_chaste_interface_var_transient_outward_potassium_current_X_to_gate__X_to = (1 - var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to) * var_transient_outward_potassium_current_X_to_gate__alpha_X_to - var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to * var_transient_outward_potassium_current_X_to_gate__beta_X_to; // 1 / millisecond + const double var_transient_outward_potassium_current_Y_to_gate__alpha_Y_to = 0.0054149999999999997 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(-6.7000000000000002 - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_transient_outward_potassium_current_Y_to_gate__beta_Y_to = 0.0054149999999999997 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V) / (1 + 0.051334999999999999 * exp(6.7000000000000002 + 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to_gate__Y_to = (1 - var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to) * var_transient_outward_potassium_current_Y_to_gate__alpha_Y_to - var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to * var_transient_outward_potassium_current_Y_to_gate__beta_Y_to; // 1 / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_L_type_Ca_current__P_CaK = 5.7899999999999998e-7; // cm_per_millisecond + const double var_L_type_Ca_current__i_Ca_half = -0.26500000000000001; // microA_per_microF + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_Stim = var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_plateau_potassium_current__g_Kp = 0.0022160000000000001; // milliS_per_microF + const double var_plateau_potassium_current_Kp_gate__Kp_V = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 2.5 * exp(2.8000000000000003 + 0.10000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_sodium_background_current__g_Nab = 0.0030999999999999999; // milliS_per_microF + const double var_sodium_potassium_pump__K_mKo = 1.5; // millimolar + const double var_sodium_potassium_pump__K_mNai = 10; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.69299999999999995; // microA_per_microF + const double var_L_type_Ca_current__i_CaK = 1000 * pow(var_membrane__F, 2) * (-mParameters[6] + mParameters[3] * exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_current__P_CaK * var_chaste_interface__L_type_Ca_current_d_gate__d * var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_current_f_gate__f * var_chaste_interface__membrane__V / ((1 + var_L_type_Ca_current__i_Ca_max / var_L_type_Ca_current__i_Ca_half) * (-1 + exp(var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_current__C_sc * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[6] / mParameters[3]) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_plateau_potassium_current__g_Kp * var_plateau_potassium_current_Kp_gate__Kp_V; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = 0.5 * sqrt(mParameters[6]) * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * mParameters[14] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[7] / mParameters[4]) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.018329999999999999 * mParameters[7]) / (1 * mParameters[3] + 0.018329999999999999 * mParameters[4])) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[15]; // microA_per_microF + const double var_sodium_background_current__i_Na_b = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // microA_per_microF + const double var_sodium_potassium_pump__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[7]); // dimensionless + const double var_sodium_potassium_pump__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump__i_NaK = var_sodium_potassium_pump__f_NaK * var_sodium_potassium_pump__i_NaK_max * mParameters[6] / ((1 + pow((var_sodium_potassium_pump__K_mNai / mParameters[4]), 1.5)) * (var_sodium_potassium_pump__K_mKo + mParameters[6])); // microA_per_microF + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity = 1 / (2 + exp(1.6200000000000001 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * mParameters[13] * var_time_independent_potassium_current_K1_gate__K1_infinity / (mParameters[6] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_transient_outward_potassium_current__i_to = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[17] * var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to * var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to; // microA_per_microF + d_dt_chaste_interface_var_membrane__V = -var_L_type_Ca_current__i_Ca - var_L_type_Ca_current__i_CaK - var_Na_Ca_exchanger__i_NaCa - var_calcium_background_current__i_Ca_b - var_fast_sodium_current__i_Na - var_membrane__i_Stim - var_plateau_potassium_current__i_Kp - var_rapid_activating_delayed_rectifiyer_K_current__i_Kr - var_sarcolemmal_calcium_pump__i_p_Ca - var_slow_activating_delayed_rectifiyer_K_current__i_Ks - var_sodium_background_current__i_Na_b - var_sodium_potassium_pump__i_NaK - var_time_independent_potassium_current__i_K1 - var_transient_outward_potassium_current__i_to; // millivolt / millisecond + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_calcium_dynamics__Ca_i_converted; + rDY[2] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + rDY[3] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + rDY[4] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + rDY[5] = d_dt_chaste_interface_var_rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; + rDY[6] = d_dt_chaste_interface_var_slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks; + rDY[7] = d_dt_chaste_interface_var_transient_outward_potassium_current_X_to_gate__X_to; + rDY[8] = d_dt_chaste_interface_var_transient_outward_potassium_current_Y_to_gate__Y_to; + rDY[9] = d_dt_chaste_interface_var_L_type_Ca_current_f_gate__f; + rDY[10] = d_dt_chaste_interface_var_L_type_Ca_current_d_gate__d; + rDY[11] = d_dt_chaste_interface_var_L_type_Ca_current_f_Ca_gate__f_Ca; + rDY[12] = d_dt_chaste_interface_var_calcium_dynamics__Ca_SR; + } + + std::vector Cellfox_mcharg_gilmour_2002FromCellML::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -94.7 + double var_chaste_interface__calcium_dynamics__Ca_i_converted = rY[1]; + // Units: millimolar; Initial value: 4.72e-05 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.00024676 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.99869 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.99887 + double var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr = rY[5]; + // Units: dimensionless; Initial value: 0.229 + double var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks = rY[6]; + // Units: dimensionless; Initial value: 0.0001 + double var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to = rY[7]; + // Units: dimensionless; Initial value: 3.742e-05 + double var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to = rY[8]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__L_type_Ca_current_f_gate__f = rY[9]; + // Units: dimensionless; Initial value: 0.983 + double var_chaste_interface__L_type_Ca_current_d_gate__d = rY[10]; + // Units: dimensionless; Initial value: 0.0001 + double var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca = rY[11]; + // Units: dimensionless; Initial value: 0.942 + double var_chaste_interface__calcium_dynamics__Ca_SR = rY[12]; + // Units: micromolar; Initial value: 320.0 + + // Mathematics + const double var_L_type_Ca_current__C_sc = 1; // microF_per_cm2 + const double var_Na_Ca_exchanger__K_mCa = 1380; // micromolar + const double var_Na_Ca_exchanger__K_mNa = 87.5; // millimolar + const double var_Na_Ca_exchanger__K_sat = 0.20000000000000001; // dimensionless + const double var_Na_Ca_exchanger__eta = 0.34999999999999998; // dimensionless + const double var_calcium_dynamics__Ca_i = 1000 * var_chaste_interface__calcium_dynamics__Ca_i_converted; // micromolar + const double var_calcium_dynamics__gamma = 1 / (1 + 8000000000.0 / pow(var_chaste_interface__calcium_dynamics__Ca_SR, 3)); // dimensionless + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_current_f_gate__tau_f = 30 + 200 / (1 + exp(2.1052631578947367 + 0.10526315789473684 * var_chaste_interface__membrane__V)); // millisecond + const double var_calcium_dynamics__J_rel = (-var_calcium_dynamics__Ca_i + var_chaste_interface__calcium_dynamics__Ca_SR * var_calcium_dynamics__gamma) * var_chaste_interface__L_type_Ca_current_d_gate__d * var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_current_f_gate__f * mParameters[1] / (1 + 1.6499999999999999 * exp(0.050000000000000003 * var_chaste_interface__membrane__V)); // micromolar_per_millisecond + const double var_fast_sodium_current_h_gate__alpha_h = 0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[12] - 0.14705882352941177 * var_chaste_interface__membrane__V); // per_millisecond + const double var_fast_sodium_current_h_gate__beta_h = 7.5 / (1 + exp(-1.1000000000000001 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // millisecond + const double var_fast_sodium_current_j_gate__alpha_j = 0.17499999999999999 * exp(-4.3478260869565215 + 0.043478260869565216 * mParameters[12] - 0.043478260869565216 * var_chaste_interface__membrane__V) / (1 + exp(11.85 + 0.14999999999999999 * var_chaste_interface__membrane__V - 0.14999999999999999 * mParameters[12])); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = 0.29999999999999999 / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[12] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // millisecond + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_rapid_activating_delayed_rectifiyer_K_current__R_V = 1 / (1 + 2.5 * exp(2.8000000000000003 + 0.10000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_L_type_Ca_current__i_Ca_max = 4 * pow(var_membrane__F, 2) * (-0.34100000000000003 * mParameters[5] + var_calcium_dynamics__Ca_i * exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[8] * var_chaste_interface__membrane__V / ((-1 + exp(2 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_current__C_sc * var_membrane__R * var_membrane__T); // microA_per_microF + const double var_L_type_Ca_current__i_Ca = var_L_type_Ca_current__i_Ca_max * var_chaste_interface__L_type_Ca_current_d_gate__d * var_chaste_interface__L_type_Ca_current_f_Ca_gate__f_Ca * var_chaste_interface__L_type_Ca_current_f_gate__f; // microA_per_microF + const double var_L_type_Ca_current__i_Ca_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_current__i_Ca; // uA_per_cm2 + const double var_rapid_activating_delayed_rectifiyer_K_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[6] / mParameters[3]) / var_membrane__F; // millivolt + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr = 0.5 * sqrt(mParameters[6]) * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_rapid_activating_delayed_rectifiyer_K_current__R_V * mParameters[14] * var_chaste_interface__rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr; // microA_per_microF + const double var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_activating_delayed_rectifiyer_K_current__i_Kr; // uA_per_cm2 + const double var_Na_Ca_exchanger__i_NaCa = (pow(mParameters[4], 3) * mParameters[5] * exp(var_Na_Ca_exchanger__eta * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) - pow(mParameters[7], 3) * var_calcium_dynamics__Ca_i * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[16] / ((1 + var_Na_Ca_exchanger__K_sat * exp((-1 + var_Na_Ca_exchanger__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(var_Na_Ca_exchanger__K_mNa, 3) + pow(mParameters[7], 3)) * (var_Na_Ca_exchanger__K_mCa + mParameters[5])); // microA_per_microF + const double var_Na_Ca_exchanger__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_Na_Ca_exchanger__i_NaCa; // uA_per_cm2 + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[7] / mParameters[4]) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[10] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_microF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_slow_activating_delayed_rectifiyer_K_current__E_Ks = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.018329999999999999 * mParameters[7]) / (1 * mParameters[3] + 0.018329999999999999 * mParameters[4])) / var_membrane__F; // millivolt + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks = pow(var_chaste_interface__slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks, 2) * (-var_slow_activating_delayed_rectifiyer_K_current__E_Ks + var_chaste_interface__membrane__V) * mParameters[15]; // microA_per_microF + const double var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_activating_delayed_rectifiyer_K_current__i_Ks; // uA_per_cm2 + const double var_time_independent_potassium_current__K_mK1 = 13; // millimolar + const double var_time_independent_potassium_current_K1_gate__K1_infinity = 1 / (2 + exp(1.6200000000000001 * (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[6] * mParameters[13] * var_time_independent_potassium_current_K1_gate__K1_infinity / (mParameters[6] + var_time_independent_potassium_current__K_mK1); // microA_per_microF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + const double var_transient_outward_potassium_current__i_to = (-var_rapid_activating_delayed_rectifiyer_K_current__E_K + var_chaste_interface__membrane__V) * mParameters[17] * var_chaste_interface__transient_outward_potassium_current_X_to_gate__X_to * var_chaste_interface__transient_outward_potassium_current_Y_to_gate__Y_to; // microA_per_microF + const double var_transient_outward_potassium_current__i_to_converted = HeartConfig::Instance()->GetCapacitance() * var_transient_outward_potassium_current__i_to; // uA_per_cm2 + + std::vector dqs(14); + dqs[0] = var_calcium_dynamics__J_rel; + dqs[1] = var_chaste_interface__calcium_dynamics__Ca_i_converted; + dqs[2] = var_L_type_Ca_current__i_Ca_converted; + dqs[3] = var_L_type_Ca_current_f_gate__tau_f; + dqs[4] = var_fast_sodium_current__i_Na_converted; + dqs[5] = var_fast_sodium_current_h_gate__tau_h; + dqs[6] = var_fast_sodium_current_j_gate__tau_j; + dqs[7] = var_time_independent_potassium_current__i_K1_converted; + dqs[8] = var_rapid_activating_delayed_rectifiyer_K_current__i_Kr_converted; + dqs[9] = var_slow_activating_delayed_rectifiyer_K_current__i_Ks_converted; + dqs[10] = var_Na_Ca_exchanger__i_NaCa_converted; + dqs[11] = var_membrane__i_Stim_converted; + dqs[12] = var_transient_outward_potassium_current__i_to_converted; + dqs[13] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "fox_model_2001"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-94.7); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(4.72e-05); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00024676); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99869); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99887); + + // rY[5]: + this->mVariableNames.push_back("rapid_activating_delayed_rectifiyer_K_current_X_kr_gate__X_kr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.229); + + // rY[6]: + this->mVariableNames.push_back("slow_activating_delayed_rectifiyer_K_current_X_ks_gate__X_ks"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0001); + + // rY[7]: + this->mVariableNames.push_back("transient_outward_potassium_current_X_to_gate__X_to"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.742e-05); + + // rY[8]: + this->mVariableNames.push_back("transient_outward_potassium_current_Y_to_gate__Y_to"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.983); + + // rY[10]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0001); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.942); + + // rY[12]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(320.0); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("micromolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("cytosolic_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[4]: + this->mParameterNames.push_back("cytosolic_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("cm_per_millisecond"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mParameterUnits.push_back("millisecond"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("micromolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellfox_mcharg_gilmour_2002FromCellML) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp new file mode 100644 index 00000000..dba051f1 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp @@ -0,0 +1,1089 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: aslanidi_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: Normal) +//! on (date omitted as unimportant) +//! +//! + +#include "aslanidi_Purkinje_model_2009.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Cellaslanidi_Purkinje_model_2009FromCellML::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 1; // millisecond + const double var_chaste_interface__membrane__stim_period = 800; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellaslanidi_Purkinje_model_2009FromCellML::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellaslanidi_Purkinje_model_2009FromCellML::Cellaslanidi_Purkinje_model_2009FromCellML(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCellWithModifiers( + pSolver, + 30, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + // These will get initialised to DummyModifiers in the base class method. + this->AddModifier("JSR_calcium_concentration", + mp_JSR_calcium_concentration_modifier); + this->AddModifier("SR_leak_current_max", + mp_SR_leak_current_max_modifier); + this->AddModifier("SR_release_current", + mp_SR_release_current_modifier); + this->AddModifier("SR_release_current_max", + mp_SR_release_current_max_modifier); + this->AddModifier("SR_uptake_current_max", + mp_SR_uptake_current_max_modifier); + this->AddModifier("concentration_clamp_onoff", + mp_concentration_clamp_onoff_modifier); + this->AddModifier("cytosolic_calcium_concentration", + mp_cytosolic_calcium_concentration_modifier); + this->AddModifier("cytosolic_potassium_concentration", + mp_cytosolic_potassium_concentration_modifier); + this->AddModifier("cytosolic_sodium_concentration", + mp_cytosolic_sodium_concentration_modifier); + this->AddModifier("dyadic_space_calcium_concentration", + mp_dyadic_space_calcium_concentration_modifier); + this->AddModifier("extracellular_calcium_concentration", + mp_extracellular_calcium_concentration_modifier); + this->AddModifier("extracellular_potassium_concentration", + mp_extracellular_potassium_concentration_modifier); + this->AddModifier("extracellular_sodium_concentration", + mp_extracellular_sodium_concentration_modifier); + this->AddModifier("membrane_L_type_calcium_current", + mp_i_Ca_L__i_Ca_L_modifier); + this->AddModifier("membrane_L_type_calcium_current_conductance", + mp_membrane_L_type_calcium_current_conductance_modifier); + this->AddModifier("membrane_L_type_calcium_current_d_gate", + mp_membrane_L_type_calcium_current_d_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate", + mp_membrane_L_type_calcium_current_f2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate_tau", + mp_membrane_L_type_calcium_current_f2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate", + mp_membrane_L_type_calcium_current_fCa2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate_tau", + mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate", + mp_membrane_L_type_calcium_current_fCa_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate_tau", + mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate", + mp_membrane_L_type_calcium_current_f_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate_tau", + mp_membrane_L_type_calcium_current_f_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current", + mp_i_Na__i_Na_modifier); + this->AddModifier("membrane_fast_sodium_current_conductance", + mp_membrane_fast_sodium_current_conductance_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate", + mp_membrane_fast_sodium_current_h_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate_tau", + mp_membrane_fast_sodium_current_h_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate", + mp_membrane_fast_sodium_current_j_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate_tau", + mp_membrane_fast_sodium_current_j_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_m_gate", + mp_membrane_fast_sodium_current_m_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_reduced_inactivation", + mp_membrane_fast_sodium_current_reduced_inactivation_modifier); + this->AddModifier("membrane_fast_sodium_current_shift_inactivation", + mp_membrane_fast_sodium_current_shift_inactivation_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current", + mp_i_K1__i_K1_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current_conductance", + mp_membrane_inward_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current", + mp_i_Kr__i_Kr_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current_conductance", + mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current", + mp_i_Ks__i_Ks_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current_conductance", + mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current", + mp_i_NaCa__i_NaCa_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current_conductance", + mp_membrane_sodium_calcium_exchanger_current_conductance_modifier); + this->AddModifier("membrane_transient_outward_current", + mp_i_to_1__i_to_1_modifier); + this->AddModifier("membrane_transient_outward_current_conductance", + mp_membrane_transient_outward_current_conductance_modifier); + this->AddModifier("membrane_voltage", + mp_membrane_voltage_modifier); + this->mParameters[0] = 0.0043750000000000004; // (var_q_leak__q_leak_max) [millimolar_per_millisecond] + this->mParameters[1] = 3000; // (var_q_rel__g_rel_max) [per_millisecond] + this->mParameters[2] = 0.0043750000000000004; // (var_q_up__q_up_max) [millimolar_per_millisecond] + this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_model_parameters__Ca_o) [millimolar] + this->mParameters[5] = 5.4000000000000004; // (var_model_parameters__K_o) [millimolar] + this->mParameters[6] = 140; // (var_model_parameters__Na_o) [millimolar] + this->mParameters[7] = 0.3392328; // (var_i_Ca_L__g_Ca_L) [dimensionless] + this->mParameters[8] = 8; // (var_i_Na__g_Na) [milliS_per_microF] + this->mParameters[9] = 0; // (var_i_Na__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[10] = 0; // (var_i_Na__shift_INa_inact) [millivolt] + this->mParameters[11] = 0.25; // (var_i_K1__g_K1_max) [milliS_per_microF] + this->mParameters[12] = 0.040008488000000002; // (var_i_Kr__g_Kr_max) [milliS_per_microF] + this->mParameters[13] = 0.052581329000000003; // (var_i_Ks__g_Ks_max) [milliS_per_microF] + this->mParameters[14] = 4.5; // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + this->mParameters[15] = 0.14135944; // (var_i_to_1__g_to_1) [milliS_per_microF] + } + + Cellaslanidi_Purkinje_model_2009FromCellML::~Cellaslanidi_Purkinje_model_2009FromCellML() + { + } + + + void Cellaslanidi_Purkinje_model_2009FromCellML::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 30; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellaslanidi_Purkinje_model_2009FromCellML::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = rY[5]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = rY[6]; + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = rY[7]; + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = rY[8]; + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = rY[9]; + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = rY[11]; + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = rY[12]; + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = rY[13]; + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = rY[20]; + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[21]; + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = rY[22]; + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[23]; + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_r__Ca_r = rY[27]; + // Units: millimolar; Initial value: 0.00022418117117903934 + + const double var_background_currents__g_Cl_b = 0.00022499999999999999; // milliS_per_microF + const double var_background_currents__g_K_b = 0.0050000000000000001; // milliS_per_microF + const double var_background_currents__g_Na_b = 0.0025000000000000001; // milliS_per_microF + const double var_background_currents__p_Ca_b = 1.9950840000000001e-7; // cm_per_second + const double var_equilibrium_potentials__r_NaK = 0.018329999999999999; // dimensionless + const double var_i_Ca_L__p_Ca = 0.000243; // cm_per_second + const double var_i_Ca_T__g_Ca_T = 0.13; // milliS_per_microF + const double var_i_Ca_p__i_Ca_p_max = 0.057500000000000002; // microA_per_microF + const double var_i_Ca_p__km_Ca_p = 0.00050000000000000001; // millimolar + const double var_i_Ca_p__i_Ca_p = var_chaste_interface__Ca_i__Ca_i * var_i_Ca_p__i_Ca_p_max / (var_chaste_interface__Ca_i__Ca_i + var_i_Ca_p__km_Ca_p); // microA_per_microF + const double var_i_K_p__g_K_p = 0.0027599999999999999; // milliS_per_microF + const double var_i_Ks__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * mParameters[13]; // milliS_per_microF + const double var_i_NaCa__X_NaCa = 0.40000000000000002; // dimensionless + const double var_i_NaCa__k_sat = 0.27000000000000002; // dimensionless + const double var_i_NaCa__km_Ca_act = 0.000125; // millimolar + const double var_i_NaCa__km_Ca_i = 0.0035999999999999999; // millimolar + const double var_i_NaCa__km_Ca_o = 1.3; // millimolar + const double var_i_NaCa__km_Na_i_1 = 12.300000000000001; // millimolar + const double var_i_NaCa__km_Na_o = 87.5; // millimolar + const double var_i_NaK__g_NaK = 0.61875000000000002; // microA_per_microF + const double var_i_NaK__km_K_o = 1.5; // millimolar + const double var_i_NaK__km_Na_i_2 = 10; // millimolar + const double var_i_Na_L__g_Na_L = 0.037374999999999999; // milliS_per_microF + const double var_i_to_2__p_Cl = 3.9999999999999998e-7; // cm_per_second + const double var_i_to_2__z_Cl = -1; // dimensionless + const double var_i_Ca_T__i_Ca_T = (-50 + var_chaste_interface__membrane__V) * var_i_Ca_T__g_Ca_T * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g; // microA_per_microF + const double var_i_K_p__kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Kr__rr_infinity = 1 / (1 + exp(-0.26470588235294124 + 0.049019607843137261 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_NaCa__dNaCa_1 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + 1.5 * pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + pow(var_i_NaCa__km_Na_i_1, 3) * (1 + 1.5 * var_chaste_interface__Ca_i__Ca_i / var_i_NaCa__km_Ca_i) * mParameters[4]; // millimolar4 + const double var_model_parameters__Cl_o = 100; // millimolar + const double var_model_parameters__Cm = 1; // microF_per_cm2 + const double var_model_parameters__F = 96485; // coulomb_per_mole + const double var_i_K1__g_K1 = 0.43033148291193518 * sqrt(mParameters[5]) * mParameters[11]; // milliS_per_microF + const double var_i_Kr__g_Kr = 0.43033148291193518 * sqrt(mParameters[5]) * mParameters[12]; // milliS_per_microF + const double var_i_NaCa__dNaCa_2 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] + 1.5 * pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i + pow(mParameters[6], 3) * (1 + var_chaste_interface__intracellular_ion_concentrations__Na_i / var_i_NaCa__km_Na_i_1) * var_i_NaCa__km_Ca_i; // millimolar4 + const double var_i_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_model_parameters__R = 8314; // joule_per_kilomole_kelvin + const double var_model_parameters__T = 310; // kelvin + const double var_equilibrium_potentials__E_Cl = -var_model_parameters__R * var_model_parameters__T * log(var_model_parameters__Cl_o / var_chaste_interface__intracellular_ion_concentrations__Cl_i) / var_model_parameters__F; // millivolt + const double var_background_currents__i_Cl_b = (-var_equilibrium_potentials__E_Cl + var_chaste_interface__membrane__V) * var_background_currents__g_Cl_b; // microA_per_microF + const double var_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_model_parameters__F; // millivolt + const double var_background_currents__i_K_b = (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_background_currents__g_K_b; // microA_per_microF + const double var_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * log((var_equilibrium_potentials__r_NaK * mParameters[6] + mParameters[5]) / (var_equilibrium_potentials__r_NaK * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Na = var_model_parameters__R * var_model_parameters__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_model_parameters__F; // millivolt + const double var_background_currents__i_Na_b = (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_Na_b; // microA_per_microF + const double var_i_K1_xK1_gate__alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_K1_xK1_gate__xK1 = var_i_K1_xK1_gate__alpha_xK1 / (var_i_K1_xK1_gate__alpha_xK1 + var_i_K1_xK1_gate__beta_xK1); // dimensionless + const double var_i_K1__i_K1 = (0.0040000000000000001 + var_i_K1__g_K1 * var_i_K1_xK1_gate__xK1) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_i_K_p__i_K_p = (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_K_p__g_K_p * var_i_K_p__kp; // microA_per_microF + const double var_i_Kr__i_Kr = (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_Kr__g_Kr * var_i_Kr__rr_infinity * var_chaste_interface__i_Kr_xr_gate__xr; // microA_per_microF + const double var_i_Ks__i_Ks = (-var_equilibrium_potentials__E_Ks + var_chaste_interface__membrane__V) * var_i_Ks__g_Ks * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2; // microA_per_microF + const double var_i_Na__i_Na = pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mParameters[8]; // microA_per_microF + const double var_i_NaCa__i_NaCa = (-1.5 * pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__X_NaCa * mParameters[14] * mParameters[4] * exp(0.34999999999999998 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) / ((1 + var_i_NaCa__k_sat * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + 0.44444444444444442 * pow(var_i_NaCa__km_Ca_act, 2) / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (var_i_NaCa__dNaCa_1 + var_i_NaCa__dNaCa_2)); // microA_per_microF + const double var_i_NaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + 0.036499999999999998 * var_i_NaK__sigma * exp(-var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))); // dimensionless + const double var_i_NaK__i_NaK = 1 * var_i_NaK__f_NaK * var_i_NaK__g_NaK * mParameters[5] / ((1 + pow(var_i_NaK__km_Na_i_2, 2) / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (var_i_NaK__km_K_o + mParameters[5])); // microA_per_microF + const double var_i_Na_L__i_Na_L = pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_i_Na_L__g_Na_L * var_chaste_interface__i_Na_L_h_L_gate__h_L; // microA_per_microF + const double var_i_to_1__i_to_1 = (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mParameters[15] * var_chaste_interface__i_to_1_a_gate__a; // microA_per_microF + const double var_i_to_2__i_to_2_max = 1 * pow(var_i_to_2__z_Cl, 2) * pow(var_model_parameters__F, 2) * (-var_model_parameters__Cl_o * exp(-var_i_to_2__z_Cl * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_i_to_2__p_Cl * var_chaste_interface__membrane__V / ((1 - exp(-var_i_to_2__z_Cl * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_to_2__i_to_2 = 20 * var_i_to_2__i_to_2_max * var_chaste_interface__i_to_2_a_gate__a; // microA_per_microF + const double var_model_parameters__gamma_Cai = 1; // dimensionless + const double var_model_parameters__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_background_currents__i_Ca_b = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-mParameters[4] * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_i__Ca_i * var_model_parameters__gamma_Cai * exp(var_chaste_interface__membrane__V * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_background_currents__p_Ca_b * var_chaste_interface__membrane__V / ((-1 + exp(var_chaste_interface__membrane__V * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-15 + var_chaste_interface__membrane__V) * (-mParameters[4] * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_r__Ca_r * var_model_parameters__gamma_Cai * exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_i_Ca_L__p_Ca / ((-1 + exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mParameters[7] * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f; // microA_per_microF + const double var_membrane__i_tot = var_background_currents__i_Ca_b + var_background_currents__i_Cl_b + var_background_currents__i_K_b + var_background_currents__i_Na_b + var_i_Ca_L__i_Ca_L + var_i_Ca_T__i_Ca_T + var_i_Ca_p__i_Ca_p + var_i_K1__i_K1 + var_i_K_p__i_K_p + var_i_Kr__i_Kr + var_i_Ks__i_Ks + var_i_Na__i_Na + var_i_NaCa__i_NaCa + var_i_NaK__i_NaK + var_i_Na_L__i_Na_L + var_i_to_1__i_to_1 + var_i_to_2__i_to_2; // microA_per_microF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellaslanidi_Purkinje_model_2009FromCellML::EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(rY[0], var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(rY[1], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(rY[2], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(rY[3], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(rY[4], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = rY[5]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = rY[6]; + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(rY[7], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(rY[8], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(rY[9], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(rY[10], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(rY[11], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = rY[12]; + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = rY[13]; + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = rY[20]; + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(rY[21], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = rY[22]; + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(rY[23], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = rY[24]; + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_NSR__Ca_NSR = rY[25]; + // Units: millimolar; Initial value: 1.2132524695849454 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(rY[26], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(rY[27], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = rY[28]; + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = rY[29]; + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_CT_K_Cl__CT_K_Cl_max = 7.0755999999999996e-6; // millimolar_per_millisecond + const double var_CT_Na_Cl__CT_Na_Cl_max = 9.8442999999999999e-6; // millimolar_per_millisecond + const double var_Ca_JSR__CSQN_max = 10; // millimolar + const double var_Ca_JSR__km_CSQN = 0.80000000000000004; // millimolar + const double var_Ca_MK_act__Ca_MK_0 = 0.050000000000000003; // dimensionless + const double var_Ca_MK_act__alpha_Ca_MK = 0.050000000000000003; // per_millisecond + const double var_Ca_MK_act__beta_Ca_MK = 0.00068000000000000005; // per_millisecond + const double var_Ca_MK_act__km_Ca_MK = 0.14999999999999999; // millimolar + const double var_Ca_i__CMDN_max = 0.050000000000000003; // millimolar + const double var_Ca_i__TRPN_max = 0.070000000000000007; // millimolar + const double var_Ca_i__km_CMDN = 0.0023800000000000002; // millimolar + const double var_Ca_i__CMDN = 2 * var_Ca_i__CMDN_max * var_chaste_interface__Ca_i__Ca_i / pow((var_chaste_interface__Ca_i__Ca_i + var_Ca_i__km_CMDN), 2); // dimensionless + const double var_Ca_i__km_TRPN = 0.00050000000000000001; // millimolar + const double var_Ca_i__TRPN = 2 * var_chaste_interface__Ca_i__Ca_i * var_Ca_i__TRPN_max / pow((var_chaste_interface__Ca_i__Ca_i + var_Ca_i__km_TRPN), 2); // dimensionless + const double var_Ca_i__b_myo = 1 / (1 + var_Ca_i__CMDN + var_Ca_i__TRPN); // dimensionless + const double var_Ca_MK_act__Ca_MK_bound = (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_0 / (1 + var_Ca_MK_act__km_Ca_MK / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_Ca_r__b_SL_max = 1.1240000000000001; // millimolar + const double var_Ca_r__b_SR_max = 0.047; // millimolar + const double var_Ca_r__km_b_SL = 0.0086999999999999994; // millimolar + const double var_Ca_r__b_SL = 2 * var_chaste_interface__Ca_r__Ca_r * var_Ca_r__b_SL_max / pow((var_chaste_interface__Ca_r__Ca_r + var_Ca_r__km_b_SL), 2); // dimensionless + const double var_Ca_r__km_b_SR = 0.00087000000000000001; // millimolar + const double var_Ca_r__b_SR = 2 * var_chaste_interface__Ca_r__Ca_r * var_Ca_r__b_SR_max / pow((var_chaste_interface__Ca_r__Ca_r + var_Ca_r__km_b_SR), 2); // dimensionless + const double var_Ca_r__Ca_r_tot = 1 / (1 + var_Ca_r__b_SL + var_Ca_r__b_SR); // dimensionless + const double var_Ca_r__tau_ss = 0.20000000000000001; // millisecond + const double var_Ca_r__q_diff = (-var_chaste_interface__Ca_i__Ca_i + var_chaste_interface__Ca_r__Ca_r) / var_Ca_r__tau_ss; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap = -var_chaste_interface__Ca_MK_act__Ca_MK_trap * var_Ca_MK_act__beta_Ca_MK + (var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_bound * var_Ca_MK_act__alpha_Ca_MK; // 1 / millisecond + const double var_background_currents__g_Cl_b = 0.00022499999999999999; // milliS_per_microF + const double var_background_currents__g_K_b = 0.0050000000000000001; // milliS_per_microF + const double var_background_currents__g_Na_b = 0.0025000000000000001; // milliS_per_microF + const double var_background_currents__p_Ca_b = 1.9950840000000001e-7; // cm_per_second + const double var_equilibrium_potentials__r_NaK = 0.018329999999999999; // dimensionless + const double var_i_Ca_L__p_Ca = 0.000243; // cm_per_second + const double var_i_Ca_L_f_Ca_gate__tau_f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier->Calc(0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK), var_chaste_interface__environment__time); // millisecond + const double var_i_Ca_p__i_Ca_p_max = 0.057500000000000002; // microA_per_microF + const double var_i_Ca_p__km_Ca_p = 0.00050000000000000001; // millimolar + const double var_i_Ca_p__i_Ca_p = var_chaste_interface__Ca_i__Ca_i * var_i_Ca_p__i_Ca_p_max / (var_chaste_interface__Ca_i__Ca_i + var_i_Ca_p__km_Ca_p); // microA_per_microF + const double var_i_K_p__g_K_p = 0.0027599999999999999; // milliS_per_microF + const double var_i_Ks__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[13], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__X_NaCa = 0.40000000000000002; // dimensionless + const double var_i_NaCa__k_sat = 0.27000000000000002; // dimensionless + const double var_i_NaCa__km_Ca_act = 0.000125; // millimolar + const double var_i_NaCa__km_Ca_i = 0.0035999999999999999; // millimolar + const double var_i_NaCa__km_Ca_o = 1.3; // millimolar + const double var_i_NaCa__km_Na_i_1 = 12.300000000000001; // millimolar + const double var_i_NaCa__km_Na_o = 87.5; // millimolar + const double var_i_NaK__g_NaK = 0.61875000000000002; // microA_per_microF + const double var_i_NaK__km_K_o = 1.5; // millimolar + const double var_i_NaK__km_Na_i_2 = 10; // millimolar + const double var_i_Na_L__g_Na_L = 0.037374999999999999; // milliS_per_microF + const double var_i_to_2__p_Cl = 3.9999999999999998e-7; // cm_per_second + const double var_i_to_2__z_Cl = -1; // dimensionless + const double var_i_to_2_a_gate__km_to_2 = 0.1502; // millimolar + const double var_i_to_2_a_gate__a_infinity = 1 / (1 + var_i_to_2_a_gate__km_to_2 / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_i_to_2_a_gate__tau_a = 1; // millisecond + const double d_dt_chaste_interface_var_i_to_2_a_gate__a = (-var_chaste_interface__i_to_2_a_gate__a + var_i_to_2_a_gate__a_infinity) / var_i_to_2_a_gate__tau_a; // 1 / millisecond + const double var_i_Ca_L_d_gate__d_infinity = 1 / (1 + exp(0.59347181008902072 - 0.14836795252225518 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Ca_L_d_gate__tau_d = 0.58999999999999997 + 0.80000000000000004 * exp(0.67599999999999993 + 0.051999999999999998 * var_chaste_interface__membrane__V) / (1 + exp(1.7160000000000002 + 0.13200000000000001 * var_chaste_interface__membrane__V)); // millisecond + const double d_dt_chaste_interface_var_i_Ca_L_d_gate__d = (-var_chaste_interface__i_Ca_L_d_gate__d + var_i_Ca_L_d_gate__d_infinity) / var_i_Ca_L_d_gate__tau_d; // 1 / millisecond + const double var_i_Ca_L_f2_gate__f2_infinity = 1 / (1 + exp(1.8 + 0.10000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Ca_L_f2_gate__tau_f2 = mp_membrane_L_type_calcium_current_f2_gate_tau_modifier->Calc(38 + 24.217200000000005 * pow((-1 + 0.053763440860215048 * var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2 = (-var_chaste_interface__i_Ca_L_f2_gate__f2 + var_i_Ca_L_f2_gate__f2_infinity) / var_i_Ca_L_f2_gate__tau_f2; // 1 / millisecond + const double var_i_Ca_L_f_gate__f_infinity = 1 / (1 + exp(1.8 + 0.10000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Ca_L_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(4 + 0.03125 * pow((-1 + 0.40000000000000002 * var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_gate__f = (-var_chaste_interface__i_Ca_L_f_gate__f + var_i_Ca_L_f_gate__f_infinity) / var_i_Ca_L_f_gate__tau_f; // 1 / millisecond + const double var_i_Ca_T_b_gate__alpha_b = 1.0680000000000001 * exp(0.54333333333333333 + 0.033333333333333333 * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Ca_T_b_gate__b_infinity = 1 / (1 + exp(-5.4098360655737707 - 0.16393442622950821 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Ca_T_b_gate__beta_b = 1.0680000000000001 * exp(-0.54333333333333333 - 0.033333333333333333 * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Ca_T_b_gate__tau_b = 1 / (var_i_Ca_T_b_gate__alpha_b + var_i_Ca_T_b_gate__beta_b); // millisecond + const double d_dt_chaste_interface_var_i_Ca_T_b_gate__b = (-var_chaste_interface__i_Ca_T_b_gate__b + var_i_Ca_T_b_gate__b_infinity) / var_i_Ca_T_b_gate__tau_b; // 1 / millisecond + const double var_i_Ca_T_g_gate__alpha_g = 0.014999999999999999 * exp(-0.86074429771908767 - 0.012004801920768308 * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Ca_T_g_gate__beta_g = 0.014999999999999999 * exp(4.6558441558441563 + 0.064935064935064929 * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Ca_T_g_gate__g_infinity = 1 / (1 + exp(9.0909090909090917 + 0.15151515151515152 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Ca_T_g_gate__tau_g = 1 / (var_i_Ca_T_g_gate__alpha_g + var_i_Ca_T_g_gate__beta_g); // millisecond + const double d_dt_chaste_interface_var_i_Ca_T_g_gate__g = (-var_chaste_interface__i_Ca_T_g_gate__g + var_i_Ca_T_g_gate__g_infinity) / var_i_Ca_T_g_gate__tau_g; // 1 / millisecond + const double var_i_K_p__kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Kr__rr_infinity = 1 / (1 + exp(-0.26470588235294124 + 0.049019607843137261 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Kr_xr_gate__tau_xr = 100 + 900 / (1 + exp(0.20000000000000001 * var_chaste_interface__membrane__V)); // millisecond + const double var_i_Kr_xr_gate__xr_infinity = 1 / (1 + exp(-0.0069387755102040824 - 0.081632653061224483 * var_chaste_interface__membrane__V)); // dimensionless + const double d_dt_chaste_interface_var_i_Kr_xr_gate__xr = (-var_chaste_interface__i_Kr_xr_gate__xr + var_i_Kr_xr_gate__xr_infinity) / var_i_Kr_xr_gate__tau_xr; // 1 / millisecond + const double var_i_Ks_xs1_gate__tau_xs1 = 1 / (7.6100000000000007e-5 * (44.600000000000001 + var_chaste_interface__membrane__V) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * var_chaste_interface__membrane__V)) + 0.00036000000000000002 * (-0.55000000000000004 + var_chaste_interface__membrane__V) / (-1 + exp(-0.070400000000000004 + 0.128 * var_chaste_interface__membrane__V))); // millisecond + const double var_i_Ks_xs1_gate__xs1_infinity = 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * var_chaste_interface__membrane__V)); // dimensionless + const double d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1 = (-var_chaste_interface__i_Ks_xs1_gate__xs1 + var_i_Ks_xs1_gate__xs1_infinity) / var_i_Ks_xs1_gate__tau_xs1; // 1 / millisecond + const double var_i_Ks_xs2_gate__tau_xs2 = 2 / (7.6100000000000007e-5 * (44.600000000000001 + var_chaste_interface__membrane__V) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * var_chaste_interface__membrane__V)) + 0.00036000000000000002 * (-0.55000000000000004 + var_chaste_interface__membrane__V) / (-1 + exp(-0.070400000000000004 + 0.128 * var_chaste_interface__membrane__V))); // millisecond + const double var_i_Ks_xs2_gate__xs2_infinity = 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * var_chaste_interface__membrane__V)); // dimensionless + const double d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2 = (-var_chaste_interface__i_Ks_xs2_gate__xs2 + var_i_Ks_xs2_gate__xs2_infinity) / var_i_Ks_xs2_gate__tau_xs2; // 1 / millisecond + const double var_i_Na_L_h_L_gate__h_L_infinity = 1 / (1 + exp(11.311475409836067 + 0.16393442622950821 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Na_L_h_L_gate__tau_h_L = 175 + 125 / (1 + exp(-4.166666666666667 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // millisecond + const double d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L = (-var_chaste_interface__i_Na_L_h_L_gate__h_L + var_i_Na_L_h_L_gate__h_L_infinity) / var_i_Na_L_h_L_gate__tau_h_L; // 1 / millisecond + const double var_i_Na_L_m_L_gate__alpha_m_L = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_Na_L_m_L_gate__beta_m_L = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Na_L_m_L_gate__m_L_infinity = var_i_Na_L_m_L_gate__alpha_m_L / (var_i_Na_L_m_L_gate__alpha_m_L + var_i_Na_L_m_L_gate__beta_m_L); // dimensionless + const double var_i_Na_L_m_L_gate__tau_m_L = 1 / (var_i_Na_L_m_L_gate__alpha_m_L + var_i_Na_L_m_L_gate__beta_m_L); // millisecond + const double d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L = (-var_chaste_interface__i_Na_L_m_L_gate__m_L + var_i_Na_L_m_L_gate__m_L_infinity) / var_i_Na_L_m_L_gate__tau_m_L; // 1 / millisecond + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_h_gate__h_infinity = 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time)) * var_i_Na_h_gate__alpha_h / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h); // dimensionless + const double var_i_Na_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_i_Na_h_gate__h = (-var_chaste_interface__i_Na_h_gate__h + var_i_Na_h_gate__h_infinity) / var_i_Na_h_gate__tau_h; // 1 / millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_j_gate__j_infinity = 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time)) * var_i_Na_j_gate__alpha_j / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j); // dimensionless + const double var_i_Na_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_i_Na_j_gate__j = (-var_chaste_interface__i_Na_j_gate__j + var_i_Na_j_gate__j_infinity) / var_i_Na_j_gate__tau_j; // 1 / millisecond + const double var_i_Na_m_gate__alpha_m = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_Na_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Na_m_gate__m_infinity = var_i_Na_m_gate__alpha_m / (var_i_Na_m_gate__alpha_m + var_i_Na_m_gate__beta_m); // dimensionless + const double var_i_Na_m_gate__tau_m = 1 / (var_i_Na_m_gate__alpha_m + var_i_Na_m_gate__beta_m); // millisecond + const double d_dt_chaste_interface_var_i_Na_m_gate__m = (-var_chaste_interface__i_Na_m_gate__m + var_i_Na_m_gate__m_infinity) / var_i_Na_m_gate__tau_m; // 1 / millisecond + const double var_i_to_1_a_gate__alpha_a = 25 * exp(-3.7999999999999998 + 0.050000000000000003 * var_chaste_interface__membrane__V) / (1 + exp(-3.7999999999999998 + 0.050000000000000003 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_a_gate__beta_a = 25 * exp(-2.7000000000000002 - 0.050000000000000003 * var_chaste_interface__membrane__V) / (1 + exp(-2.7000000000000002 - 0.050000000000000003 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_a_gate__a_infinity = var_i_to_1_a_gate__alpha_a / (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a); // dimensionless + const double var_i_to_1_a_gate__tau_a = 1 / (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a); // millisecond + const double d_dt_chaste_interface_var_i_to_1_a_gate__a = (-var_chaste_interface__i_to_1_a_gate__a + var_i_to_1_a_gate__a_infinity) / var_i_to_1_a_gate__tau_a; // 1 / millisecond + const double var_i_to_1_i2_gate__alpha_i2 = 0.0044200000000000003 / (1 + exp(1.7333333333333334 + 0.066666666666666666 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_i2_gate__beta_i2 = 0.050000000000000003 * exp(-0.66666666666666663 + 0.066666666666666666 * var_chaste_interface__membrane__V) / (1 + exp(-0.66666666666666663 + 0.066666666666666666 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_i2_gate__i2_infinity = var_i_to_1_i2_gate__alpha_i2 / (var_i_to_1_i2_gate__alpha_i2 + var_i_to_1_i2_gate__beta_i2); // dimensionless + const double var_i_to_1_i2_gate__tau_i2 = 21.5 + 30 / (1 + exp(-2.5 + 0.10000000000000001 * var_chaste_interface__membrane__V)); // millisecond + const double d_dt_chaste_interface_var_i_to_1_i2_gate__i2 = (-var_chaste_interface__i_to_1_i2_gate__i2 + var_i_to_1_i2_gate__i2_infinity) / var_i_to_1_i2_gate__tau_i2; // 1 / millisecond + const double var_i_to_1_i_gate__alpha_i = 0.029999999999999999 / (1 + exp(1.6666666666666667 + 0.066666666666666666 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_i_gate__beta_i = 0.10000000000000001 * exp(-2.6666666666666665 + 0.066666666666666666 * var_chaste_interface__membrane__V) / (1 + exp(-2.6666666666666665 + 0.066666666666666666 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_i_gate__i_infinity = var_i_to_1_i_gate__alpha_i / (var_i_to_1_i_gate__alpha_i + var_i_to_1_i_gate__beta_i); // dimensionless + const double var_i_to_1_i_gate__tau_i = 6 + 5 / (1 + exp(-1.6499999999999999 + 0.10000000000000001 * var_chaste_interface__membrane__V)); // millisecond + const double d_dt_chaste_interface_var_i_to_1_i_gate__i = (-var_chaste_interface__i_to_1_i_gate__i + var_i_to_1_i_gate__i_infinity) / var_i_to_1_i_gate__tau_i; // 1 / millisecond + const double var_i_NaCa__dNaCa_1 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + 1.5 * pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + pow(var_i_NaCa__km_Na_i_1, 3) * (1 + 1.5 * var_chaste_interface__Ca_i__Ca_i / var_i_NaCa__km_Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time); // millimolar4 + const double var_model_parameters__Cl_o = 100; // millimolar + const double var_model_parameters__Cm = 1; // microF_per_cm2 + const double var_model_parameters__F = 96485; // coulomb_per_mole + const double var_i_K1__g_K1 = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(mParameters[11], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_Kr__g_Kr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[12], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__dNaCa_2 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + var_chaste_interface__intracellular_ion_concentrations__Na_i / var_i_NaCa__km_Na_i_1) * var_i_NaCa__km_Ca_i; // millimolar4 + const double var_i_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time)); // dimensionless + const double var_model_parameters__R = 8314; // joule_per_kilomole_kelvin + const double var_model_parameters__T = 310; // kelvin + const double var_equilibrium_potentials__E_Cl = -var_model_parameters__R * var_model_parameters__T * log(var_model_parameters__Cl_o / var_chaste_interface__intracellular_ion_concentrations__Cl_i) / var_model_parameters__F; // millivolt + const double var_background_currents__i_Cl_b = (-var_equilibrium_potentials__E_Cl + var_chaste_interface__membrane__V) * var_background_currents__g_Cl_b; // microA_per_microF + const double var_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_model_parameters__F; // millivolt + const double var_CT_K_Cl__CT_K_Cl = (-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K) * var_CT_K_Cl__CT_K_Cl_max / (87.825100000000006 - var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K); // millimolar_per_millisecond + const double var_background_currents__i_K_b = (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_background_currents__g_K_b; // microA_per_microF + const double var_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * log((var_equilibrium_potentials__r_NaK * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) / (var_equilibrium_potentials__r_NaK * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Na = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_model_parameters__F; // millivolt + const double var_CT_Na_Cl__CT_Na_Cl = pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) * var_CT_Na_Cl__CT_Na_Cl_max / (59494197.640692554 + pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4)); // millimolar_per_millisecond + const double var_background_currents__i_Na_b = (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_Na_b; // microA_per_microF + const double var_i_K1_xK1_gate__alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_K1_xK1_gate__xK1 = var_i_K1_xK1_gate__alpha_xK1 / (var_i_K1_xK1_gate__alpha_xK1 + var_i_K1_xK1_gate__beta_xK1); // dimensionless + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + var_i_K1__g_K1 * var_i_K1_xK1_gate__xK1) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K_p__i_K_p = (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_K_p__g_K_p * var_i_K_p__kp; // microA_per_microF + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_Kr__g_Kr * var_i_Kr__rr_infinity * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((-var_equilibrium_potentials__E_Ks + var_chaste_interface__membrane__V) * var_i_Ks__g_Ks * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(mParameters[8], var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__X_NaCa * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(mParameters[14], var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * exp(0.34999999999999998 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) / ((1 + var_i_NaCa__k_sat * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + 0.44444444444444442 * pow(var_i_NaCa__km_Ca_act, 2) / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (var_i_NaCa__dNaCa_1 + var_i_NaCa__dNaCa_2)), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + 0.036499999999999998 * var_i_NaK__sigma * exp(-var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))); // dimensionless + const double var_i_NaK__i_NaK = 1 * var_i_NaK__f_NaK * var_i_NaK__g_NaK * mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / ((1 + pow(var_i_NaK__km_Na_i_2, 2) / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (var_i_NaK__km_K_o + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time))); // microA_per_microF + const double var_i_Na_L__i_Na_L = pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_i_Na_L__g_Na_L * var_chaste_interface__i_Na_L_h_L_gate__h_L; // microA_per_microF + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(mParameters[15], var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_2__i_to_2_max = 1 * pow(var_i_to_2__z_Cl, 2) * pow(var_model_parameters__F, 2) * (-var_model_parameters__Cl_o * exp(-var_i_to_2__z_Cl * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_i_to_2__p_Cl * var_chaste_interface__membrane__V / ((1 - exp(-var_i_to_2__z_Cl * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_to_2__i_to_2 = 20 * var_i_to_2__i_to_2_max * var_chaste_interface__i_to_2_a_gate__a; // microA_per_microF + const double var_model_parameters__Vol_cell = 0.34539999999999998; // microlitre + const double var_model_parameters__Vol_jsr = 0.0047999999999999996 * var_model_parameters__Vol_cell; // microlitre + const double var_model_parameters__Vol_myo = 0.68000000000000005 * var_model_parameters__Vol_cell; // microlitre + const double var_model_parameters__Vol_nsr = 0.055199999999999999 * var_model_parameters__Vol_cell; // microlitre + const double var_model_parameters__Vol_ss = 0.02 * var_model_parameters__Vol_cell; // microlitre + const double var_model_parameters__gamma_Cai = 1; // dimensionless + const double var_model_parameters__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_model_parameters__length = 0.01; // cm + const double var_model_parameters__radius = 0.0011000000000000001; // cm + const double var_model_parameters__a_geo = 6.2800000000000002 * pow(var_model_parameters__radius, 2) + 6.2800000000000002 * var_model_parameters__length * var_model_parameters__radius; // cm2 + const double var_model_parameters__rcg = 2; // dimensionless + const double var_model_parameters__a_cap = var_model_parameters__a_geo * var_model_parameters__rcg; // cm2 + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i = (-(var_background_currents__i_Cl_b + var_i_to_2__i_to_2) * var_model_parameters__Cm * var_model_parameters__a_cap / (var_model_parameters__F * var_model_parameters__Vol_myo) + var_CT_K_Cl__CT_K_Cl + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = (-(-2 * var_i_NaK__i_NaK + var_background_currents__i_K_b + var_i_K1__i_K1 + var_i_K_p__i_K_p + var_i_Kr__i_Kr + var_i_Ks__i_Ks + var_i_to_1__i_to_1) * var_model_parameters__Cm * var_model_parameters__a_cap / (var_model_parameters__F * var_model_parameters__Vol_myo) + var_CT_K_Cl__CT_K_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = (-(3 * var_i_NaCa__i_NaCa + 3 * var_i_NaK__i_NaK + var_background_currents__i_Na_b + var_i_Na__i_Na + var_i_Na_L__i_Na_L) * var_model_parameters__Cm * var_model_parameters__a_cap / (var_model_parameters__F * var_model_parameters__Vol_myo) + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_background_currents__i_Ca_b = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_i__Ca_i * var_model_parameters__gamma_Cai * exp(var_chaste_interface__membrane__V * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_background_currents__p_Ca_b * var_chaste_interface__membrane__V / ((-1 + exp(var_chaste_interface__membrane__V * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-15 + var_chaste_interface__membrane__V) * (-mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_r__Ca_r * var_model_parameters__gamma_Cai * exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_i_Ca_L__p_Ca / ((-1 + exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ca_L_f_Ca2_gate__f_Ca2_infinity = 1 / (1 - 100 * var_i_Ca_L__i_Ca_L); // dimensionless + const double var_i_Ca_L_f_Ca2_gate__tau_f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier->Calc(125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2 = (-var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 + var_i_Ca_L_f_Ca2_gate__f_Ca2_infinity) / var_i_Ca_L_f_Ca2_gate__tau_f_Ca2; // 1 / millisecond + const double var_i_Ca_L_f_Ca_gate__f_Ca_infinity = 0.14999999999999999 + 0.55000000000000004 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 0.29999999999999999 / (1 - 20 * var_i_Ca_L__i_Ca_L); // dimensionless + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca = (-var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca + var_i_Ca_L_f_Ca_gate__f_Ca_infinity) / var_i_Ca_L_f_Ca_gate__tau_f_Ca; // 1 / millisecond + const double var_q_leak__NSR_max = 15; // millimolar + const double var_q_leak__q_leak = var_chaste_interface__Ca_NSR__Ca_NSR * mp_SR_leak_current_max_modifier->Calc(mParameters[0], var_chaste_interface__environment__time) / var_q_leak__NSR_max; // millimolar_per_millisecond + const double var_q_rel__vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)); // dimensionless + const double var_q_rel__g_rel = mp_SR_release_current_max_modifier->Calc(mParameters[1], var_chaste_interface__environment__time) * var_q_rel__vg; // per_millisecond + const double var_q_rel_ri_gate__Ca_fac = 1 / (1 + exp(3.3333333333333335 + 66.666666666666671 * var_i_Ca_L__i_Ca_L)); // millimolar + const double var_q_rel_ri_gate__ri_infinity = 1 / (1 + exp(-16 + 80 * var_q_rel_ri_gate__Ca_fac + 40000 * var_chaste_interface__Ca_r__Ca_r)); // dimensionless + const double var_q_rel_ri_gate__tau_Ca_MK_max = 10; // millisecond + const double var_q_rel_ri_gate__tau_Ca_MK = 1 * var_Ca_MK_act__Ca_MK_act * var_q_rel_ri_gate__tau_Ca_MK_max / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK); // millisecond + const double var_q_rel_ri_gate__tau_ri = 3 + (350 - var_q_rel_ri_gate__tau_Ca_MK) / (1 + exp(-15 + 5000 * var_chaste_interface__Ca_r__Ca_r + 15 * var_q_rel_ri_gate__Ca_fac)) + var_q_rel_ri_gate__tau_Ca_MK; // millisecond + const double d_dt_chaste_interface_var_q_rel_ri_gate__ri = (-var_chaste_interface__q_rel_ri_gate__ri + var_q_rel_ri_gate__ri_infinity) / var_q_rel_ri_gate__tau_ri; // 1 / millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * var_q_rel__g_rel * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro, var_chaste_interface__environment__time); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_r__Ca_r = (-var_Ca_r__q_diff + var_model_parameters__Vol_jsr * var_q_rel__q_rel / var_model_parameters__Vol_ss - var_i_Ca_L__i_Ca_L * var_model_parameters__Cm * var_model_parameters__a_cap / (var_model_parameters__F * var_model_parameters__Vol_ss * var_model_parameters__z_Ca)) * var_Ca_r__Ca_r_tot; // millimolar / millisecond + const double var_q_rel_ro_gate__ro_infinity_JSR = pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) / (pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) + 1644.6531773416521 * pow((var_chaste_interface__Ca_r__Ca_r / (0.0028 + var_chaste_interface__Ca_r__Ca_r)), 1.8999999999999999)); // dimensionless + const double var_q_rel_ro_gate__ro_infinity = pow(var_i_Ca_L__i_Ca_L, 2) * var_q_rel_ro_gate__ro_infinity_JSR / (1 + pow(var_i_Ca_L__i_Ca_L, 2)); // dimensionless + const double var_q_rel_ro_gate__tau_ro = 3; // millisecond + const double d_dt_chaste_interface_var_q_rel_ro_gate__ro = (-var_chaste_interface__q_rel_ro_gate__ro + var_q_rel_ro_gate__ro_infinity) / var_q_rel_ro_gate__tau_ro; // 1 / millisecond + const double var_q_tr__tau_tr = 120; // millisecond + const double var_q_tr__q_tr = (-var_chaste_interface__Ca_JSR__Ca_JSR + var_chaste_interface__Ca_NSR__Ca_NSR) / var_q_tr__tau_tr; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_JSR__Ca_JSR = (-var_q_rel__q_rel + var_q_tr__q_tr) / (1 + var_Ca_JSR__CSQN_max * var_Ca_JSR__km_CSQN / pow((var_chaste_interface__Ca_JSR__Ca_JSR + var_Ca_JSR__km_CSQN), 2)); // millimolar / millisecond + const double var_q_up__X_q_up = 0.5; // dimensionless + const double var_q_up__dkm_plb_max = 0.00017000000000000001; // millimolar + const double var_q_up__dkm_plb = 1 * var_Ca_MK_act__Ca_MK_act * var_q_up__dkm_plb_max / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK); // millimolar + const double var_q_up__dq_up_Ca_MK_max = 0.75; // dimensionless + const double var_q_up__dq_up_Ca_MK = 1 * var_Ca_MK_act__Ca_MK_act * var_q_up__dq_up_Ca_MK_max / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK); // dimensionless + const double var_q_up__km_up = 0.00092000000000000003; // millimolar + const double var_q_up__q_up = (1 + var_q_up__dq_up_Ca_MK) * var_chaste_interface__Ca_i__Ca_i * var_q_up__X_q_up * mp_SR_uptake_current_max_modifier->Calc(mParameters[2], var_chaste_interface__environment__time) / (-var_q_up__dkm_plb + var_chaste_interface__Ca_i__Ca_i + var_q_up__km_up); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_NSR__Ca_NSR = -var_q_leak__q_leak - var_model_parameters__Vol_jsr * var_q_tr__q_tr / var_model_parameters__Vol_nsr + var_q_up__q_up; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_i__Ca_i = -((-var_q_leak__q_leak + var_q_up__q_up) * var_model_parameters__Vol_nsr / var_model_parameters__Vol_myo - var_Ca_r__q_diff * var_model_parameters__Vol_ss / var_model_parameters__Vol_myo + 0.5 * (-2 * var_i_NaCa__i_NaCa + var_background_currents__i_Ca_b + var_i_Ca_p__i_Ca_p) * var_model_parameters__Cm * var_model_parameters__a_cap / (var_model_parameters__F * var_model_parameters__Vol_myo)) * var_Ca_i__b_myo; // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_i_Ca_T__g_Ca_T = 0.13; // milliS_per_microF + const double var_i_Ca_T__i_Ca_T = (-50 + var_chaste_interface__membrane__V) * var_i_Ca_T__g_Ca_T * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g; // microA_per_microF + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_stim = var_membrane__i_stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_membrane__i_tot = var_background_currents__i_Ca_b + var_background_currents__i_Cl_b + var_background_currents__i_K_b + var_background_currents__i_Na_b + var_i_Ca_L__i_Ca_L + var_i_Ca_T__i_Ca_T + var_i_Ca_p__i_Ca_p + var_i_K1__i_K1 + var_i_K_p__i_K_p + var_i_Kr__i_Kr + var_i_Ks__i_Ks + var_i_Na__i_Na + var_i_NaCa__i_NaCa + var_i_NaK__i_NaK + var_i_Na_L__i_Na_L + var_i_to_1__i_to_1 + var_i_to_2__i_to_2; // microA_per_microF + d_dt_chaste_interface_var_membrane__V = -var_membrane__i_stim - var_membrane__i_tot; // millivolt / millisecond + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_Ca_i__Ca_i; + rDY[2] = d_dt_chaste_interface_var_i_Na_m_gate__m; + rDY[3] = d_dt_chaste_interface_var_i_Na_h_gate__h; + rDY[4] = d_dt_chaste_interface_var_i_Na_j_gate__j; + rDY[5] = d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L; + rDY[6] = d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L; + rDY[7] = d_dt_chaste_interface_var_i_Ca_L_d_gate__d; + rDY[8] = d_dt_chaste_interface_var_i_Ca_L_f_gate__f; + rDY[9] = d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2; + rDY[10] = d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca; + rDY[11] = d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2; + rDY[12] = d_dt_chaste_interface_var_i_Ca_T_b_gate__b; + rDY[13] = d_dt_chaste_interface_var_i_Ca_T_g_gate__g; + rDY[14] = d_dt_chaste_interface_var_i_to_1_a_gate__a; + rDY[15] = d_dt_chaste_interface_var_i_to_1_i_gate__i; + rDY[16] = d_dt_chaste_interface_var_i_to_1_i2_gate__i2; + rDY[17] = d_dt_chaste_interface_var_i_Kr_xr_gate__xr; + rDY[18] = d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1; + rDY[19] = d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2; + rDY[20] = d_dt_chaste_interface_var_i_to_2_a_gate__a; + rDY[21] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rDY[22] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i; + rDY[23] = d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rDY[24] = d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap; + rDY[25] = d_dt_chaste_interface_var_Ca_NSR__Ca_NSR; + rDY[26] = d_dt_chaste_interface_var_Ca_JSR__Ca_JSR; + rDY[27] = d_dt_chaste_interface_var_Ca_r__Ca_r; + rDY[28] = d_dt_chaste_interface_var_q_rel_ri_gate__ri; + rDY[29] = d_dt_chaste_interface_var_q_rel_ro_gate__ro; + } + + std::vector Cellaslanidi_Purkinje_model_2009FromCellML::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(rY[0], var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(rY[1], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(rY[2], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(rY[3], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(rY[4], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(rY[7], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(rY[8], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(rY[9], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(rY[10], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(rY[11], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(rY[21], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(rY[23], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = rY[24]; + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(rY[26], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(rY[27], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = rY[28]; + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = rY[29]; + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Mathematics + const double var_Ca_MK_act__Ca_MK_0 = 0.050000000000000003; // dimensionless + const double var_Ca_MK_act__km_Ca_MK = 0.14999999999999999; // millimolar + const double var_Ca_MK_act__Ca_MK_bound = (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_0 / (1 + var_Ca_MK_act__km_Ca_MK / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_equilibrium_potentials__r_NaK = 0.018329999999999999; // dimensionless + const double var_i_Ca_L__p_Ca = 0.000243; // cm_per_second + const double var_i_Ca_L_f_Ca_gate__tau_f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier->Calc(0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK), var_chaste_interface__environment__time); // millisecond + const double var_i_Ks__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[13], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__X_NaCa = 0.40000000000000002; // dimensionless + const double var_i_NaCa__k_sat = 0.27000000000000002; // dimensionless + const double var_i_NaCa__km_Ca_act = 0.000125; // millimolar + const double var_i_NaCa__km_Ca_i = 0.0035999999999999999; // millimolar + const double var_i_NaCa__km_Ca_o = 1.3; // millimolar + const double var_i_NaCa__km_Na_i_1 = 12.300000000000001; // millimolar + const double var_i_NaCa__km_Na_o = 87.5; // millimolar + const double var_i_Ca_L_f2_gate__tau_f2 = mp_membrane_L_type_calcium_current_f2_gate_tau_modifier->Calc(38 + 24.217200000000005 * pow((-1 + 0.053763440860215048 * var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Ca_L_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(4 + 0.03125 * pow((-1 + 0.40000000000000002 * var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Kr__rr_infinity = 1 / (1 + exp(-0.26470588235294124 + 0.049019607843137261 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + 1.5 * pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + pow(var_i_NaCa__km_Na_i_1, 3) * (1 + 1.5 * var_chaste_interface__Ca_i__Ca_i / var_i_NaCa__km_Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time); // millimolar4 + const double var_model_parameters__Cm = 1; // microF_per_cm2 + const double var_model_parameters__F = 96485; // coulomb_per_mole + const double var_i_K1__g_K1 = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(mParameters[11], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_Kr__g_Kr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[12], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__dNaCa_2 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + var_chaste_interface__intracellular_ion_concentrations__Na_i / var_i_NaCa__km_Na_i_1) * var_i_NaCa__km_Ca_i; // millimolar4 + const double var_model_parameters__R = 8314; // joule_per_kilomole_kelvin + const double var_model_parameters__T = 310; // kelvin + const double var_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * log((var_equilibrium_potentials__r_NaK * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) / (var_equilibrium_potentials__r_NaK * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Na = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_model_parameters__F; // millivolt + const double var_i_K1_xK1_gate__alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_K1_xK1_gate__xK1 = var_i_K1_xK1_gate__alpha_xK1 / (var_i_K1_xK1_gate__alpha_xK1 + var_i_K1_xK1_gate__beta_xK1); // dimensionless + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + var_i_K1__g_K1 * var_i_K1_xK1_gate__xK1) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_K1__i_K1; // uA_per_cm2 + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_Kr__g_Kr * var_i_Kr__rr_infinity * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Kr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Kr__i_Kr; // uA_per_cm2 + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((-var_equilibrium_potentials__E_Ks + var_chaste_interface__membrane__V) * var_i_Ks__g_Ks * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(mParameters[8], var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__X_NaCa * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(mParameters[14], var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * exp(0.34999999999999998 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) / ((1 + var_i_NaCa__k_sat * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + 0.44444444444444442 * pow(var_i_NaCa__km_Ca_act, 2) / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (var_i_NaCa__dNaCa_1 + var_i_NaCa__dNaCa_2)), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaCa__i_NaCa; // uA_per_cm2 + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(mParameters[15], var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_1__i_to_1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_to_1__i_to_1; // uA_per_cm2 + const double var_model_parameters__gamma_Cai = 1; // dimensionless + const double var_model_parameters__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_i_Ca_L__i_Ca_L_max = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-15 + var_chaste_interface__membrane__V) * (-mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_r__Ca_r * var_model_parameters__gamma_Cai * exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_i_Ca_L__p_Ca / ((-1 + exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ca_L__i_Ca_L; // uA_per_cm2 + const double var_i_Ca_L_f_Ca2_gate__tau_f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier->Calc(125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)); // dimensionless + const double var_q_rel__g_rel = mp_SR_release_current_max_modifier->Calc(mParameters[1], var_chaste_interface__environment__time) * var_q_rel__vg; // per_millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * var_q_rel__g_rel * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro, var_chaste_interface__environment__time); // millimolar_per_millisecond + + std::vector dqs(16); + dqs[0] = var_q_rel__q_rel; + dqs[1] = var_i_Ca_L__i_Ca_L_converted; + dqs[2] = var_i_Ca_L_f2_gate__tau_f2; + dqs[3] = var_i_Ca_L_f_Ca2_gate__tau_f_Ca2; + dqs[4] = var_i_Ca_L_f_Ca_gate__tau_f_Ca; + dqs[5] = var_i_Ca_L_f_gate__tau_f; + dqs[6] = var_i_Na__i_Na_converted; + dqs[7] = var_i_Na_h_gate__tau_h; + dqs[8] = var_i_Na_j_gate__tau_j; + dqs[9] = var_i_K1__i_K1_converted; + dqs[10] = var_i_Kr__i_Kr_converted; + dqs[11] = var_i_Ks__i_Ks_converted; + dqs[12] = var_i_NaCa__i_NaCa_converted; + dqs[13] = var_membrane__i_stim_converted; + dqs[14] = var_i_to_1__i_to_1_converted; + dqs[15] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "aslanidi_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-83.43812846286808); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022355433459434943); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9786390933308567); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09866447258167589); + + // rY[5]: + this->mVariableNames.push_back("i_Na_L_m_L_gate__m_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // rY[6]: + this->mVariableNames.push_back("i_Na_L_h_L_gate__h_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8946968372659203); + + // rY[7]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.322223865147363e-06); + + // rY[8]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9985607329462358); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8173435436674658); + + // rY[10]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9610551285529658); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.868690796671854); + + // rY[12]: + this->mVariableNames.push_back("i_Ca_T_b_gate__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0002563937630984438); + + // rY[13]: + this->mVariableNames.push_back("i_Ca_T_g_gate__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9720432601848331); + + // rY[14]: + this->mVariableNames.push_back("i_to_1_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0004238729429342389); + + // rY[15]: + this->mVariableNames.push_back("i_to_1_i_gate__i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9990935802459496); + + // rY[16]: + this->mVariableNames.push_back("i_to_1_i2_gate__i2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9777368439681764); + + // rY[17]: + this->mVariableNames.push_back("i_Kr_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.07084939408222911); + + // rY[18]: + this->mVariableNames.push_back("i_Ks_xs1_gate__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0011737654433043125); + + // rY[19]: + this->mVariableNames.push_back("i_Ks_xs2_gate__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001179442867470093); + + // rY[20]: + this->mVariableNames.push_back("i_to_2_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0014909437525000811); + + // rY[21]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.927155552932733); + + // rY[22]: + this->mVariableNames.push_back("intracellular_ion_concentrations__Cl_i"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(18.904682470140408); + + // rY[23]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(141.9670801746057); + + // rY[24]: + this->mVariableNames.push_back("Ca_MK_act__Ca_MK_trap"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.789168284782809e-06); + + // rY[25]: + this->mVariableNames.push_back("Ca_NSR__Ca_NSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.2132524695849454); + + // rY[26]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.1433050636518596); + + // rY[27]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022418117117903934); + + // rY[28]: + this->mVariableNames.push_back("q_rel_ri_gate__ri"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7802870066567904); + + // rY[29]: + this->mVariableNames.push_back("q_rel_ro_gate__ro"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.2785734760674763e-09); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellaslanidi_Purkinje_model_2009FromCellML) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp new file mode 100644 index 00000000..48db4163 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp @@ -0,0 +1,1089 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: aslanidi_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: Normal) +//! on (date omitted as unimportant) +//! +//! + +#include "aslanidi_Purkinje_model_2009.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Cellaslanidi_Purkinje_model_2009FromCellML::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 1; // millisecond + const double var_chaste_interface__membrane__stim_period = 800; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellaslanidi_Purkinje_model_2009FromCellML::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellaslanidi_Purkinje_model_2009FromCellML::Cellaslanidi_Purkinje_model_2009FromCellML(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCellWithModifiers( + pSolver, + 30, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + // These will get initialised to DummyModifiers in the base class method. + this->AddModifier("JSR_calcium_concentration", + mp_JSR_calcium_concentration_modifier); + this->AddModifier("SR_leak_current_max", + mp_SR_leak_current_max_modifier); + this->AddModifier("SR_release_current", + mp_SR_release_current_modifier); + this->AddModifier("SR_release_current_max", + mp_SR_release_current_max_modifier); + this->AddModifier("SR_uptake_current_max", + mp_SR_uptake_current_max_modifier); + this->AddModifier("concentration_clamp_onoff", + mp_concentration_clamp_onoff_modifier); + this->AddModifier("cytosolic_calcium_concentration", + mp_cytosolic_calcium_concentration_modifier); + this->AddModifier("cytosolic_potassium_concentration", + mp_cytosolic_potassium_concentration_modifier); + this->AddModifier("cytosolic_sodium_concentration", + mp_cytosolic_sodium_concentration_modifier); + this->AddModifier("dyadic_space_calcium_concentration", + mp_dyadic_space_calcium_concentration_modifier); + this->AddModifier("extracellular_calcium_concentration", + mp_extracellular_calcium_concentration_modifier); + this->AddModifier("extracellular_potassium_concentration", + mp_extracellular_potassium_concentration_modifier); + this->AddModifier("extracellular_sodium_concentration", + mp_extracellular_sodium_concentration_modifier); + this->AddModifier("membrane_L_type_calcium_current", + mp_i_Ca_L__i_Ca_L_modifier); + this->AddModifier("membrane_L_type_calcium_current_conductance", + mp_membrane_L_type_calcium_current_conductance_modifier); + this->AddModifier("membrane_L_type_calcium_current_d_gate", + mp_membrane_L_type_calcium_current_d_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate", + mp_membrane_L_type_calcium_current_f2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate_tau", + mp_membrane_L_type_calcium_current_f2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate", + mp_membrane_L_type_calcium_current_fCa2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate_tau", + mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate", + mp_membrane_L_type_calcium_current_fCa_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate_tau", + mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate", + mp_membrane_L_type_calcium_current_f_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate_tau", + mp_membrane_L_type_calcium_current_f_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current", + mp_i_Na__i_Na_modifier); + this->AddModifier("membrane_fast_sodium_current_conductance", + mp_membrane_fast_sodium_current_conductance_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate", + mp_membrane_fast_sodium_current_h_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate_tau", + mp_membrane_fast_sodium_current_h_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate", + mp_membrane_fast_sodium_current_j_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate_tau", + mp_membrane_fast_sodium_current_j_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_m_gate", + mp_membrane_fast_sodium_current_m_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_reduced_inactivation", + mp_membrane_fast_sodium_current_reduced_inactivation_modifier); + this->AddModifier("membrane_fast_sodium_current_shift_inactivation", + mp_membrane_fast_sodium_current_shift_inactivation_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current", + mp_i_K1__i_K1_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current_conductance", + mp_membrane_inward_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current", + mp_i_Kr__i_Kr_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current_conductance", + mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current", + mp_i_Ks__i_Ks_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current_conductance", + mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current", + mp_i_NaCa__i_NaCa_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current_conductance", + mp_membrane_sodium_calcium_exchanger_current_conductance_modifier); + this->AddModifier("membrane_transient_outward_current", + mp_i_to_1__i_to_1_modifier); + this->AddModifier("membrane_transient_outward_current_conductance", + mp_membrane_transient_outward_current_conductance_modifier); + this->AddModifier("membrane_voltage", + mp_membrane_voltage_modifier); + this->mParameters[0] = 0.0043750000000000004; // (var_q_leak__q_leak_max) [millimolar_per_millisecond] + this->mParameters[1] = 3000; // (var_q_rel__g_rel_max) [per_millisecond] + this->mParameters[2] = 0.0043750000000000004; // (var_q_up__q_up_max) [millimolar_per_millisecond] + this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_model_parameters__Ca_o) [millimolar] + this->mParameters[5] = 5.4000000000000004; // (var_model_parameters__K_o) [millimolar] + this->mParameters[6] = 140; // (var_model_parameters__Na_o) [millimolar] + this->mParameters[7] = 0.3392328; // (var_i_Ca_L__g_Ca_L) [dimensionless] + this->mParameters[8] = 8; // (var_i_Na__g_Na) [milliS_per_microF] + this->mParameters[9] = 0; // (var_i_Na__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[10] = 0; // (var_i_Na__shift_INa_inact) [millivolt] + this->mParameters[11] = 0.25; // (var_i_K1__g_K1_max) [milliS_per_microF] + this->mParameters[12] = 0.040008488000000002; // (var_i_Kr__g_Kr_max) [milliS_per_microF] + this->mParameters[13] = 0.052581329000000003; // (var_i_Ks__g_Ks_max) [milliS_per_microF] + this->mParameters[14] = 4.5; // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + this->mParameters[15] = 0.14135944; // (var_i_to_1__g_to_1) [milliS_per_microF] + } + + Cellaslanidi_Purkinje_model_2009FromCellML::~Cellaslanidi_Purkinje_model_2009FromCellML() + { + } + + + void Cellaslanidi_Purkinje_model_2009FromCellML::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 30; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellaslanidi_Purkinje_model_2009FromCellML::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = rY[5]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = rY[6]; + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = rY[7]; + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = rY[8]; + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = rY[9]; + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = rY[11]; + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = rY[12]; + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = rY[13]; + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = rY[20]; + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[21]; + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = rY[22]; + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[23]; + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_r__Ca_r = rY[27]; + // Units: millimolar; Initial value: 0.00022418117117903934 + + const double var_background_currents__g_Cl_b = 0.00022499999999999999; // milliS_per_microF + const double var_background_currents__g_K_b = 0.0050000000000000001; // milliS_per_microF + const double var_background_currents__g_Na_b = 0.0025000000000000001; // milliS_per_microF + const double var_background_currents__p_Ca_b = 1.9950840000000001e-7; // cm_per_second + const double var_equilibrium_potentials__r_NaK = 0.018329999999999999; // dimensionless + const double var_i_Ca_L__p_Ca = 0.000243; // cm_per_second + const double var_i_Ca_T__g_Ca_T = 0.13; // milliS_per_microF + const double var_i_Ca_p__i_Ca_p_max = 0.057500000000000002; // microA_per_microF + const double var_i_Ca_p__km_Ca_p = 0.00050000000000000001; // millimolar + const double var_i_Ca_p__i_Ca_p = var_chaste_interface__Ca_i__Ca_i * var_i_Ca_p__i_Ca_p_max / (var_chaste_interface__Ca_i__Ca_i + var_i_Ca_p__km_Ca_p); // microA_per_microF + const double var_i_K_p__g_K_p = 0.0027599999999999999; // milliS_per_microF + const double var_i_Ks__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * mParameters[13]; // milliS_per_microF + const double var_i_NaCa__X_NaCa = 0.40000000000000002; // dimensionless + const double var_i_NaCa__k_sat = 0.27000000000000002; // dimensionless + const double var_i_NaCa__km_Ca_act = 0.000125; // millimolar + const double var_i_NaCa__km_Ca_i = 0.0035999999999999999; // millimolar + const double var_i_NaCa__km_Ca_o = 1.3; // millimolar + const double var_i_NaCa__km_Na_i_1 = 12.300000000000001; // millimolar + const double var_i_NaCa__km_Na_o = 87.5; // millimolar + const double var_i_NaK__g_NaK = 0.61875000000000002; // microA_per_microF + const double var_i_NaK__km_K_o = 1.5; // millimolar + const double var_i_NaK__km_Na_i_2 = 10; // millimolar + const double var_i_Na_L__g_Na_L = 0.037374999999999999; // milliS_per_microF + const double var_i_to_2__p_Cl = 3.9999999999999998e-7; // cm_per_second + const double var_i_to_2__z_Cl = -1; // dimensionless + const double var_i_Ca_T__i_Ca_T = (-50 + var_chaste_interface__membrane__V) * var_i_Ca_T__g_Ca_T * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g; // microA_per_microF + const double var_i_K_p__kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Kr__rr_infinity = 1 / (1 + exp(-0.26470588235294124 + 0.049019607843137261 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_NaCa__dNaCa_1 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + 1.5 * pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + pow(var_i_NaCa__km_Na_i_1, 3) * (1 + 1.5 * var_chaste_interface__Ca_i__Ca_i / var_i_NaCa__km_Ca_i) * mParameters[4]; // millimolar4 + const double var_model_parameters__Cl_o = 100; // millimolar + const double var_model_parameters__Cm = 1; // microF_per_cm2 + const double var_model_parameters__F = 96485; // coulomb_per_mole + const double var_i_K1__g_K1 = 0.43033148291193518 * sqrt(mParameters[5]) * mParameters[11]; // milliS_per_microF + const double var_i_Kr__g_Kr = 0.43033148291193518 * sqrt(mParameters[5]) * mParameters[12]; // milliS_per_microF + const double var_i_NaCa__dNaCa_2 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] + 1.5 * pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i + pow(mParameters[6], 3) * (1 + var_chaste_interface__intracellular_ion_concentrations__Na_i / var_i_NaCa__km_Na_i_1) * var_i_NaCa__km_Ca_i; // millimolar4 + const double var_i_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_model_parameters__R = 8314; // joule_per_kilomole_kelvin + const double var_model_parameters__T = 310; // kelvin + const double var_equilibrium_potentials__E_Cl = -var_model_parameters__R * var_model_parameters__T * log(var_model_parameters__Cl_o / var_chaste_interface__intracellular_ion_concentrations__Cl_i) / var_model_parameters__F; // millivolt + const double var_background_currents__i_Cl_b = (-var_equilibrium_potentials__E_Cl + var_chaste_interface__membrane__V) * var_background_currents__g_Cl_b; // microA_per_microF + const double var_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_model_parameters__F; // millivolt + const double var_background_currents__i_K_b = (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_background_currents__g_K_b; // microA_per_microF + const double var_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * log((var_equilibrium_potentials__r_NaK * mParameters[6] + mParameters[5]) / (var_equilibrium_potentials__r_NaK * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Na = var_model_parameters__R * var_model_parameters__T * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_model_parameters__F; // millivolt + const double var_background_currents__i_Na_b = (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_Na_b; // microA_per_microF + const double var_i_K1_xK1_gate__alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_K1_xK1_gate__xK1 = var_i_K1_xK1_gate__alpha_xK1 / (var_i_K1_xK1_gate__alpha_xK1 + var_i_K1_xK1_gate__beta_xK1); // dimensionless + const double var_i_K1__i_K1 = (0.0040000000000000001 + var_i_K1__g_K1 * var_i_K1_xK1_gate__xK1) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_i_K_p__i_K_p = (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_K_p__g_K_p * var_i_K_p__kp; // microA_per_microF + const double var_i_Kr__i_Kr = (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_Kr__g_Kr * var_i_Kr__rr_infinity * var_chaste_interface__i_Kr_xr_gate__xr; // microA_per_microF + const double var_i_Ks__i_Ks = (-var_equilibrium_potentials__E_Ks + var_chaste_interface__membrane__V) * var_i_Ks__g_Ks * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2; // microA_per_microF + const double var_i_Na__i_Na = pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mParameters[8]; // microA_per_microF + const double var_i_NaCa__i_NaCa = (-1.5 * pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__X_NaCa * mParameters[14] * mParameters[4] * exp(0.34999999999999998 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) / ((1 + var_i_NaCa__k_sat * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + 0.44444444444444442 * pow(var_i_NaCa__km_Ca_act, 2) / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (var_i_NaCa__dNaCa_1 + var_i_NaCa__dNaCa_2)); // microA_per_microF + const double var_i_NaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + 0.036499999999999998 * var_i_NaK__sigma * exp(-var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))); // dimensionless + const double var_i_NaK__i_NaK = 1 * var_i_NaK__f_NaK * var_i_NaK__g_NaK * mParameters[5] / ((1 + pow(var_i_NaK__km_Na_i_2, 2) / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (var_i_NaK__km_K_o + mParameters[5])); // microA_per_microF + const double var_i_Na_L__i_Na_L = pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_i_Na_L__g_Na_L * var_chaste_interface__i_Na_L_h_L_gate__h_L; // microA_per_microF + const double var_i_to_1__i_to_1 = (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mParameters[15] * var_chaste_interface__i_to_1_a_gate__a; // microA_per_microF + const double var_i_to_2__i_to_2_max = 1 * pow(var_i_to_2__z_Cl, 2) * pow(var_model_parameters__F, 2) * (-var_model_parameters__Cl_o * exp(-var_i_to_2__z_Cl * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_i_to_2__p_Cl * var_chaste_interface__membrane__V / ((1 - exp(-var_i_to_2__z_Cl * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_to_2__i_to_2 = 20 * var_i_to_2__i_to_2_max * var_chaste_interface__i_to_2_a_gate__a; // microA_per_microF + const double var_model_parameters__gamma_Cai = 1; // dimensionless + const double var_model_parameters__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_background_currents__i_Ca_b = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-mParameters[4] * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_i__Ca_i * var_model_parameters__gamma_Cai * exp(var_chaste_interface__membrane__V * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_background_currents__p_Ca_b * var_chaste_interface__membrane__V / ((-1 + exp(var_chaste_interface__membrane__V * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-15 + var_chaste_interface__membrane__V) * (-mParameters[4] * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_r__Ca_r * var_model_parameters__gamma_Cai * exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_i_Ca_L__p_Ca / ((-1 + exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mParameters[7] * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f; // microA_per_microF + const double var_membrane__i_tot = var_background_currents__i_Ca_b + var_background_currents__i_Cl_b + var_background_currents__i_K_b + var_background_currents__i_Na_b + var_i_Ca_L__i_Ca_L + var_i_Ca_T__i_Ca_T + var_i_Ca_p__i_Ca_p + var_i_K1__i_K1 + var_i_K_p__i_K_p + var_i_Kr__i_Kr + var_i_Ks__i_Ks + var_i_Na__i_Na + var_i_NaCa__i_NaCa + var_i_NaK__i_NaK + var_i_Na_L__i_Na_L + var_i_to_1__i_to_1 + var_i_to_2__i_to_2; // microA_per_microF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellaslanidi_Purkinje_model_2009FromCellML::EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(rY[0], var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(rY[1], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(rY[2], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(rY[3], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(rY[4], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = rY[5]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = rY[6]; + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(rY[7], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(rY[8], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(rY[9], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(rY[10], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(rY[11], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = rY[12]; + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = rY[13]; + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = rY[20]; + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(rY[21], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = rY[22]; + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(rY[23], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = rY[24]; + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_NSR__Ca_NSR = rY[25]; + // Units: millimolar; Initial value: 1.2132524695849454 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(rY[26], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(rY[27], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = rY[28]; + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = rY[29]; + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_CT_K_Cl__CT_K_Cl_max = 7.0755999999999996e-6; // millimolar_per_millisecond + const double var_CT_Na_Cl__CT_Na_Cl_max = 9.8442999999999999e-6; // millimolar_per_millisecond + const double var_Ca_JSR__CSQN_max = 10; // millimolar + const double var_Ca_JSR__km_CSQN = 0.80000000000000004; // millimolar + const double var_Ca_MK_act__Ca_MK_0 = 0.050000000000000003; // dimensionless + const double var_Ca_MK_act__alpha_Ca_MK = 0.050000000000000003; // per_millisecond + const double var_Ca_MK_act__beta_Ca_MK = 0.00068000000000000005; // per_millisecond + const double var_Ca_MK_act__km_Ca_MK = 0.14999999999999999; // millimolar + const double var_Ca_i__CMDN_max = 0.050000000000000003; // millimolar + const double var_Ca_i__TRPN_max = 0.070000000000000007; // millimolar + const double var_Ca_i__km_CMDN = 0.0023800000000000002; // millimolar + const double var_Ca_i__CMDN = 2 * var_Ca_i__CMDN_max * var_chaste_interface__Ca_i__Ca_i / pow((var_chaste_interface__Ca_i__Ca_i + var_Ca_i__km_CMDN), 2); // dimensionless + const double var_Ca_i__km_TRPN = 0.00050000000000000001; // millimolar + const double var_Ca_i__TRPN = 2 * var_chaste_interface__Ca_i__Ca_i * var_Ca_i__TRPN_max / pow((var_chaste_interface__Ca_i__Ca_i + var_Ca_i__km_TRPN), 2); // dimensionless + const double var_Ca_i__b_myo = 1 / (1 + var_Ca_i__CMDN + var_Ca_i__TRPN); // dimensionless + const double var_Ca_MK_act__Ca_MK_bound = (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_0 / (1 + var_Ca_MK_act__km_Ca_MK / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_Ca_r__b_SL_max = 1.1240000000000001; // millimolar + const double var_Ca_r__b_SR_max = 0.047; // millimolar + const double var_Ca_r__km_b_SL = 0.0086999999999999994; // millimolar + const double var_Ca_r__b_SL = 2 * var_chaste_interface__Ca_r__Ca_r * var_Ca_r__b_SL_max / pow((var_chaste_interface__Ca_r__Ca_r + var_Ca_r__km_b_SL), 2); // dimensionless + const double var_Ca_r__km_b_SR = 0.00087000000000000001; // millimolar + const double var_Ca_r__b_SR = 2 * var_chaste_interface__Ca_r__Ca_r * var_Ca_r__b_SR_max / pow((var_chaste_interface__Ca_r__Ca_r + var_Ca_r__km_b_SR), 2); // dimensionless + const double var_Ca_r__Ca_r_tot = 1 / (1 + var_Ca_r__b_SL + var_Ca_r__b_SR); // dimensionless + const double var_Ca_r__tau_ss = 0.20000000000000001; // millisecond + const double var_Ca_r__q_diff = (-var_chaste_interface__Ca_i__Ca_i + var_chaste_interface__Ca_r__Ca_r) / var_Ca_r__tau_ss; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap = -var_chaste_interface__Ca_MK_act__Ca_MK_trap * var_Ca_MK_act__beta_Ca_MK + (var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_bound * var_Ca_MK_act__alpha_Ca_MK; // 1 / millisecond + const double var_background_currents__g_Cl_b = 0.00022499999999999999; // milliS_per_microF + const double var_background_currents__g_K_b = 0.0050000000000000001; // milliS_per_microF + const double var_background_currents__g_Na_b = 0.0025000000000000001; // milliS_per_microF + const double var_background_currents__p_Ca_b = 1.9950840000000001e-7; // cm_per_second + const double var_equilibrium_potentials__r_NaK = 0.018329999999999999; // dimensionless + const double var_i_Ca_L__p_Ca = 0.000243; // cm_per_second + const double var_i_Ca_L_f_Ca_gate__tau_f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier->Calc(0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK), var_chaste_interface__environment__time); // millisecond + const double var_i_Ca_p__i_Ca_p_max = 0.057500000000000002; // microA_per_microF + const double var_i_Ca_p__km_Ca_p = 0.00050000000000000001; // millimolar + const double var_i_Ca_p__i_Ca_p = var_chaste_interface__Ca_i__Ca_i * var_i_Ca_p__i_Ca_p_max / (var_chaste_interface__Ca_i__Ca_i + var_i_Ca_p__km_Ca_p); // microA_per_microF + const double var_i_K_p__g_K_p = 0.0027599999999999999; // milliS_per_microF + const double var_i_Ks__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[13], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__X_NaCa = 0.40000000000000002; // dimensionless + const double var_i_NaCa__k_sat = 0.27000000000000002; // dimensionless + const double var_i_NaCa__km_Ca_act = 0.000125; // millimolar + const double var_i_NaCa__km_Ca_i = 0.0035999999999999999; // millimolar + const double var_i_NaCa__km_Ca_o = 1.3; // millimolar + const double var_i_NaCa__km_Na_i_1 = 12.300000000000001; // millimolar + const double var_i_NaCa__km_Na_o = 87.5; // millimolar + const double var_i_NaK__g_NaK = 0.61875000000000002; // microA_per_microF + const double var_i_NaK__km_K_o = 1.5; // millimolar + const double var_i_NaK__km_Na_i_2 = 10; // millimolar + const double var_i_Na_L__g_Na_L = 0.037374999999999999; // milliS_per_microF + const double var_i_to_2__p_Cl = 3.9999999999999998e-7; // cm_per_second + const double var_i_to_2__z_Cl = -1; // dimensionless + const double var_i_to_2_a_gate__km_to_2 = 0.1502; // millimolar + const double var_i_to_2_a_gate__a_infinity = 1 / (1 + var_i_to_2_a_gate__km_to_2 / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_i_to_2_a_gate__tau_a = 1; // millisecond + const double d_dt_chaste_interface_var_i_to_2_a_gate__a = (-var_chaste_interface__i_to_2_a_gate__a + var_i_to_2_a_gate__a_infinity) / var_i_to_2_a_gate__tau_a; // 1 / millisecond + const double var_i_Ca_L_d_gate__d_infinity = 1 / (1 + exp(0.59347181008902072 - 0.14836795252225518 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Ca_L_d_gate__tau_d = 0.58999999999999997 + 0.80000000000000004 * exp(0.67599999999999993 + 0.051999999999999998 * var_chaste_interface__membrane__V) / (1 + exp(1.7160000000000002 + 0.13200000000000001 * var_chaste_interface__membrane__V)); // millisecond + const double d_dt_chaste_interface_var_i_Ca_L_d_gate__d = (-var_chaste_interface__i_Ca_L_d_gate__d + var_i_Ca_L_d_gate__d_infinity) / var_i_Ca_L_d_gate__tau_d; // 1 / millisecond + const double var_i_Ca_L_f2_gate__f2_infinity = 1 / (1 + exp(1.8 + 0.10000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Ca_L_f2_gate__tau_f2 = mp_membrane_L_type_calcium_current_f2_gate_tau_modifier->Calc(38 + 0.070000000000000007 * pow((-18.600000000000001 + var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2 = (-var_chaste_interface__i_Ca_L_f2_gate__f2 + var_i_Ca_L_f2_gate__f2_infinity) / var_i_Ca_L_f2_gate__tau_f2; // 1 / millisecond + const double var_i_Ca_L_f_gate__f_infinity = 1 / (1 + exp(1.8 + 0.10000000000000001 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Ca_L_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(4 + 0.0050000000000000001 * pow((-2.5 + var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_gate__f = (-var_chaste_interface__i_Ca_L_f_gate__f + var_i_Ca_L_f_gate__f_infinity) / var_i_Ca_L_f_gate__tau_f; // 1 / millisecond + const double var_i_Ca_T_b_gate__alpha_b = 1.0680000000000001 * exp(0.54333333333333333 + 0.033333333333333333 * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Ca_T_b_gate__b_infinity = 1 / (1 + exp(-5.4098360655737707 - 0.16393442622950821 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Ca_T_b_gate__beta_b = 1.0680000000000001 * exp(-0.54333333333333333 - 0.033333333333333333 * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Ca_T_b_gate__tau_b = 1 / (var_i_Ca_T_b_gate__alpha_b + var_i_Ca_T_b_gate__beta_b); // millisecond + const double d_dt_chaste_interface_var_i_Ca_T_b_gate__b = (-var_chaste_interface__i_Ca_T_b_gate__b + var_i_Ca_T_b_gate__b_infinity) / var_i_Ca_T_b_gate__tau_b; // 1 / millisecond + const double var_i_Ca_T_g_gate__alpha_g = 0.014999999999999999 * exp(-0.86074429771908767 - 0.012004801920768308 * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Ca_T_g_gate__beta_g = 0.014999999999999999 * exp(4.6558441558441563 + 0.064935064935064929 * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Ca_T_g_gate__g_infinity = 1 / (1 + exp(9.0909090909090917 + 0.15151515151515152 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Ca_T_g_gate__tau_g = 1 / (var_i_Ca_T_g_gate__alpha_g + var_i_Ca_T_g_gate__beta_g); // millisecond + const double d_dt_chaste_interface_var_i_Ca_T_g_gate__g = (-var_chaste_interface__i_Ca_T_g_gate__g + var_i_Ca_T_g_gate__g_infinity) / var_i_Ca_T_g_gate__tau_g; // 1 / millisecond + const double var_i_K_p__kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Kr__rr_infinity = 1 / (1 + exp(-0.26470588235294124 + 0.049019607843137261 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Kr_xr_gate__tau_xr = 100 + 900 / (1 + exp(0.20000000000000001 * var_chaste_interface__membrane__V)); // millisecond + const double var_i_Kr_xr_gate__xr_infinity = 1 / (1 + exp(-0.0069387755102040824 - 0.081632653061224483 * var_chaste_interface__membrane__V)); // dimensionless + const double d_dt_chaste_interface_var_i_Kr_xr_gate__xr = (-var_chaste_interface__i_Kr_xr_gate__xr + var_i_Kr_xr_gate__xr_infinity) / var_i_Kr_xr_gate__tau_xr; // 1 / millisecond + const double var_i_Ks_xs1_gate__tau_xs1 = 1 / (7.6100000000000007e-5 * (44.600000000000001 + var_chaste_interface__membrane__V) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * var_chaste_interface__membrane__V)) + 0.00036000000000000002 * (-0.55000000000000004 + var_chaste_interface__membrane__V) / (-1 + exp(-0.070400000000000004 + 0.128 * var_chaste_interface__membrane__V))); // millisecond + const double var_i_Ks_xs1_gate__xs1_infinity = 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * var_chaste_interface__membrane__V)); // dimensionless + const double d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1 = (-var_chaste_interface__i_Ks_xs1_gate__xs1 + var_i_Ks_xs1_gate__xs1_infinity) / var_i_Ks_xs1_gate__tau_xs1; // 1 / millisecond + const double var_i_Ks_xs2_gate__tau_xs2 = 2 / (7.6100000000000007e-5 * (44.600000000000001 + var_chaste_interface__membrane__V) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * var_chaste_interface__membrane__V)) + 0.00036000000000000002 * (-0.55000000000000004 + var_chaste_interface__membrane__V) / (-1 + exp(-0.070400000000000004 + 0.128 * var_chaste_interface__membrane__V))); // millisecond + const double var_i_Ks_xs2_gate__xs2_infinity = 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * var_chaste_interface__membrane__V)); // dimensionless + const double d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2 = (-var_chaste_interface__i_Ks_xs2_gate__xs2 + var_i_Ks_xs2_gate__xs2_infinity) / var_i_Ks_xs2_gate__tau_xs2; // 1 / millisecond + const double var_i_Na_L_h_L_gate__h_L_infinity = 1 / (1 + exp(11.311475409836067 + 0.16393442622950821 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Na_L_h_L_gate__tau_h_L = 175 + 125 / (1 + exp(-4.166666666666667 - 0.16666666666666666 * var_chaste_interface__membrane__V)); // millisecond + const double d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L = (-var_chaste_interface__i_Na_L_h_L_gate__h_L + var_i_Na_L_h_L_gate__h_L_infinity) / var_i_Na_L_h_L_gate__tau_h_L; // 1 / millisecond + const double var_i_Na_L_m_L_gate__alpha_m_L = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_Na_L_m_L_gate__beta_m_L = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Na_L_m_L_gate__m_L_infinity = var_i_Na_L_m_L_gate__alpha_m_L / (var_i_Na_L_m_L_gate__alpha_m_L + var_i_Na_L_m_L_gate__beta_m_L); // dimensionless + const double var_i_Na_L_m_L_gate__tau_m_L = 1 / (var_i_Na_L_m_L_gate__alpha_m_L + var_i_Na_L_m_L_gate__beta_m_L); // millisecond + const double d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L = (-var_chaste_interface__i_Na_L_m_L_gate__m_L + var_i_Na_L_m_L_gate__m_L_infinity) / var_i_Na_L_m_L_gate__tau_m_L; // 1 / millisecond + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_h_gate__h_infinity = 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time)) * var_i_Na_h_gate__alpha_h / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h); // dimensionless + const double var_i_Na_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_i_Na_h_gate__h = (-var_chaste_interface__i_Na_h_gate__h + var_i_Na_h_gate__h_infinity) / var_i_Na_h_gate__tau_h; // 1 / millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_j_gate__j_infinity = 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time)) * var_i_Na_j_gate__alpha_j / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j); // dimensionless + const double var_i_Na_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_i_Na_j_gate__j = (-var_chaste_interface__i_Na_j_gate__j + var_i_Na_j_gate__j_infinity) / var_i_Na_j_gate__tau_j; // 1 / millisecond + const double var_i_Na_m_gate__alpha_m = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__membrane__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_Na_m_gate__beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__membrane__V); // per_millisecond + const double var_i_Na_m_gate__m_infinity = var_i_Na_m_gate__alpha_m / (var_i_Na_m_gate__alpha_m + var_i_Na_m_gate__beta_m); // dimensionless + const double var_i_Na_m_gate__tau_m = 1 / (var_i_Na_m_gate__alpha_m + var_i_Na_m_gate__beta_m); // millisecond + const double d_dt_chaste_interface_var_i_Na_m_gate__m = (-var_chaste_interface__i_Na_m_gate__m + var_i_Na_m_gate__m_infinity) / var_i_Na_m_gate__tau_m; // 1 / millisecond + const double var_i_to_1_a_gate__alpha_a = 25 * exp(-3.7999999999999998 + 0.050000000000000003 * var_chaste_interface__membrane__V) / (1 + exp(-3.7999999999999998 + 0.050000000000000003 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_a_gate__beta_a = 25 * exp(-2.7000000000000002 - 0.050000000000000003 * var_chaste_interface__membrane__V) / (1 + exp(-2.7000000000000002 - 0.050000000000000003 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_a_gate__a_infinity = var_i_to_1_a_gate__alpha_a / (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a); // dimensionless + const double var_i_to_1_a_gate__tau_a = 1 / (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a); // millisecond + const double d_dt_chaste_interface_var_i_to_1_a_gate__a = (-var_chaste_interface__i_to_1_a_gate__a + var_i_to_1_a_gate__a_infinity) / var_i_to_1_a_gate__tau_a; // 1 / millisecond + const double var_i_to_1_i2_gate__alpha_i2 = 0.0044200000000000003 / (1 + exp(1.7333333333333334 + 0.066666666666666666 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_i2_gate__beta_i2 = 0.050000000000000003 * exp(-0.66666666666666663 + 0.066666666666666666 * var_chaste_interface__membrane__V) / (1 + exp(-0.66666666666666663 + 0.066666666666666666 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_i2_gate__i2_infinity = var_i_to_1_i2_gate__alpha_i2 / (var_i_to_1_i2_gate__alpha_i2 + var_i_to_1_i2_gate__beta_i2); // dimensionless + const double var_i_to_1_i2_gate__tau_i2 = 21.5 + 30 / (1 + exp(-2.5 + 0.10000000000000001 * var_chaste_interface__membrane__V)); // millisecond + const double d_dt_chaste_interface_var_i_to_1_i2_gate__i2 = (-var_chaste_interface__i_to_1_i2_gate__i2 + var_i_to_1_i2_gate__i2_infinity) / var_i_to_1_i2_gate__tau_i2; // 1 / millisecond + const double var_i_to_1_i_gate__alpha_i = 0.029999999999999999 / (1 + exp(1.6666666666666667 + 0.066666666666666666 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_i_gate__beta_i = 0.10000000000000001 * exp(-2.6666666666666665 + 0.066666666666666666 * var_chaste_interface__membrane__V) / (1 + exp(-2.6666666666666665 + 0.066666666666666666 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_i_to_1_i_gate__i_infinity = var_i_to_1_i_gate__alpha_i / (var_i_to_1_i_gate__alpha_i + var_i_to_1_i_gate__beta_i); // dimensionless + const double var_i_to_1_i_gate__tau_i = 6 + 5 / (1 + exp(-1.6499999999999999 + 0.10000000000000001 * var_chaste_interface__membrane__V)); // millisecond + const double d_dt_chaste_interface_var_i_to_1_i_gate__i = (-var_chaste_interface__i_to_1_i_gate__i + var_i_to_1_i_gate__i_infinity) / var_i_to_1_i_gate__tau_i; // 1 / millisecond + const double var_i_NaCa__dNaCa_1 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + 1.5 * pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + pow(var_i_NaCa__km_Na_i_1, 3) * (1 + 1.5 * var_chaste_interface__Ca_i__Ca_i / var_i_NaCa__km_Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time); // millimolar4 + const double var_model_parameters__Cl_o = 100; // millimolar + const double var_model_parameters__Cm = 1; // microF_per_cm2 + const double var_model_parameters__F = 96485; // coulomb_per_mole + const double var_i_K1__g_K1 = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(mParameters[11], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_Kr__g_Kr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[12], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__dNaCa_2 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + var_chaste_interface__intracellular_ion_concentrations__Na_i / var_i_NaCa__km_Na_i_1) * var_i_NaCa__km_Ca_i; // millimolar4 + const double var_i_NaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time)); // dimensionless + const double var_model_parameters__R = 8314; // joule_per_kilomole_kelvin + const double var_model_parameters__T = 310; // kelvin + const double var_equilibrium_potentials__E_Cl = -var_model_parameters__R * var_model_parameters__T * log(var_model_parameters__Cl_o / var_chaste_interface__intracellular_ion_concentrations__Cl_i) / var_model_parameters__F; // millivolt + const double var_background_currents__i_Cl_b = (-var_equilibrium_potentials__E_Cl + var_chaste_interface__membrane__V) * var_background_currents__g_Cl_b; // microA_per_microF + const double var_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_model_parameters__F; // millivolt + const double var_CT_K_Cl__CT_K_Cl = (-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K) * var_CT_K_Cl__CT_K_Cl_max / (87.825100000000006 - var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K); // millimolar_per_millisecond + const double var_background_currents__i_K_b = (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_background_currents__g_K_b; // microA_per_microF + const double var_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * log((var_equilibrium_potentials__r_NaK * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) / (var_equilibrium_potentials__r_NaK * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Na = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_model_parameters__F; // millivolt + const double var_CT_Na_Cl__CT_Na_Cl = pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) * var_CT_Na_Cl__CT_Na_Cl_max / (59494197.640692554 + pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4)); // millimolar_per_millisecond + const double var_background_currents__i_Na_b = (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_background_currents__g_Na_b; // microA_per_microF + const double var_i_K1_xK1_gate__alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_K1_xK1_gate__xK1 = var_i_K1_xK1_gate__alpha_xK1 / (var_i_K1_xK1_gate__alpha_xK1 + var_i_K1_xK1_gate__beta_xK1); // dimensionless + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + var_i_K1__g_K1 * var_i_K1_xK1_gate__xK1) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K_p__i_K_p = (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_K_p__g_K_p * var_i_K_p__kp; // microA_per_microF + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_Kr__g_Kr * var_i_Kr__rr_infinity * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((-var_equilibrium_potentials__E_Ks + var_chaste_interface__membrane__V) * var_i_Ks__g_Ks * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(mParameters[8], var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__X_NaCa * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(mParameters[14], var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * exp(0.34999999999999998 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) / ((1 + var_i_NaCa__k_sat * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + 0.44444444444444442 * pow(var_i_NaCa__km_Ca_act, 2) / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (var_i_NaCa__dNaCa_1 + var_i_NaCa__dNaCa_2)), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaK__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + 0.036499999999999998 * var_i_NaK__sigma * exp(-var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))); // dimensionless + const double var_i_NaK__i_NaK = 1 * var_i_NaK__f_NaK * var_i_NaK__g_NaK * mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / ((1 + pow(var_i_NaK__km_Na_i_2, 2) / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (var_i_NaK__km_K_o + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time))); // microA_per_microF + const double var_i_Na_L__i_Na_L = pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_i_Na_L__g_Na_L * var_chaste_interface__i_Na_L_h_L_gate__h_L; // microA_per_microF + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(mParameters[15], var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_2__i_to_2_max = 1 * pow(var_i_to_2__z_Cl, 2) * pow(var_model_parameters__F, 2) * (-var_model_parameters__Cl_o * exp(-var_i_to_2__z_Cl * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_i_to_2__p_Cl * var_chaste_interface__membrane__V / ((1 - exp(-var_i_to_2__z_Cl * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_to_2__i_to_2 = 20 * var_i_to_2__i_to_2_max * var_chaste_interface__i_to_2_a_gate__a; // microA_per_microF + const double var_model_parameters__Vol_cell = 0.34539999999999998; // microlitre + const double var_model_parameters__Vol_jsr = 0.0047999999999999996 * var_model_parameters__Vol_cell; // microlitre + const double var_model_parameters__Vol_myo = 0.68000000000000005 * var_model_parameters__Vol_cell; // microlitre + const double var_model_parameters__Vol_nsr = 0.055199999999999999 * var_model_parameters__Vol_cell; // microlitre + const double var_model_parameters__Vol_ss = 0.02 * var_model_parameters__Vol_cell; // microlitre + const double var_model_parameters__gamma_Cai = 1; // dimensionless + const double var_model_parameters__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_model_parameters__length = 0.01; // cm + const double var_model_parameters__radius = 0.0011000000000000001; // cm + const double var_model_parameters__a_geo = 6.2800000000000002 * pow(var_model_parameters__radius, 2) + 6.2800000000000002 * var_model_parameters__length * var_model_parameters__radius; // cm2 + const double var_model_parameters__rcg = 2; // dimensionless + const double var_model_parameters__a_cap = var_model_parameters__a_geo * var_model_parameters__rcg; // cm2 + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i = (-(var_background_currents__i_Cl_b + var_i_to_2__i_to_2) * var_model_parameters__Cm * var_model_parameters__a_cap / (var_model_parameters__F * var_model_parameters__Vol_myo) + var_CT_K_Cl__CT_K_Cl + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = (-(-2 * var_i_NaK__i_NaK + var_background_currents__i_K_b + var_i_K1__i_K1 + var_i_K_p__i_K_p + var_i_Kr__i_Kr + var_i_Ks__i_Ks + var_i_to_1__i_to_1) * var_model_parameters__Cm * var_model_parameters__a_cap / (var_model_parameters__F * var_model_parameters__Vol_myo) + var_CT_K_Cl__CT_K_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = (-(3 * var_i_NaCa__i_NaCa + 3 * var_i_NaK__i_NaK + var_background_currents__i_Na_b + var_i_Na__i_Na + var_i_Na_L__i_Na_L) * var_model_parameters__Cm * var_model_parameters__a_cap / (var_model_parameters__F * var_model_parameters__Vol_myo) + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_background_currents__i_Ca_b = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_i__Ca_i * var_model_parameters__gamma_Cai * exp(var_chaste_interface__membrane__V * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_background_currents__p_Ca_b * var_chaste_interface__membrane__V / ((-1 + exp(var_chaste_interface__membrane__V * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-15 + var_chaste_interface__membrane__V) * (-mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_r__Ca_r * var_model_parameters__gamma_Cai * exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_i_Ca_L__p_Ca / ((-1 + exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ca_L_f_Ca2_gate__f_Ca2_infinity = 1 / (1 - 100 * var_i_Ca_L__i_Ca_L); // dimensionless + const double var_i_Ca_L_f_Ca2_gate__tau_f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier->Calc(125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2 = (-var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 + var_i_Ca_L_f_Ca2_gate__f_Ca2_infinity) / var_i_Ca_L_f_Ca2_gate__tau_f_Ca2; // 1 / millisecond + const double var_i_Ca_L_f_Ca_gate__f_Ca_infinity = 0.14999999999999999 + 0.55000000000000004 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 0.29999999999999999 / (1 - 20 * var_i_Ca_L__i_Ca_L); // dimensionless + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca = (-var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca + var_i_Ca_L_f_Ca_gate__f_Ca_infinity) / var_i_Ca_L_f_Ca_gate__tau_f_Ca; // 1 / millisecond + const double var_q_leak__NSR_max = 15; // millimolar + const double var_q_leak__q_leak = var_chaste_interface__Ca_NSR__Ca_NSR * mp_SR_leak_current_max_modifier->Calc(mParameters[0], var_chaste_interface__environment__time) / var_q_leak__NSR_max; // millimolar_per_millisecond + const double var_q_rel__vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)); // dimensionless + const double var_q_rel__g_rel = mp_SR_release_current_max_modifier->Calc(mParameters[1], var_chaste_interface__environment__time) * var_q_rel__vg; // per_millisecond + const double var_q_rel_ri_gate__Ca_fac = 1 / (1 + exp(3.3333333333333335 + 66.666666666666671 * var_i_Ca_L__i_Ca_L)); // millimolar + const double var_q_rel_ri_gate__ri_infinity = 1 / (1 + exp(-16 + 80 * var_q_rel_ri_gate__Ca_fac + 40000 * var_chaste_interface__Ca_r__Ca_r)); // dimensionless + const double var_q_rel_ri_gate__tau_Ca_MK_max = 10; // millisecond + const double var_q_rel_ri_gate__tau_Ca_MK = 1 * var_Ca_MK_act__Ca_MK_act * var_q_rel_ri_gate__tau_Ca_MK_max / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK); // millisecond + const double var_q_rel_ri_gate__tau_ri = 3 + (350 - var_q_rel_ri_gate__tau_Ca_MK) / (1 + exp(-15 + 5000 * var_chaste_interface__Ca_r__Ca_r + 15 * var_q_rel_ri_gate__Ca_fac)) + var_q_rel_ri_gate__tau_Ca_MK; // millisecond + const double d_dt_chaste_interface_var_q_rel_ri_gate__ri = (-var_chaste_interface__q_rel_ri_gate__ri + var_q_rel_ri_gate__ri_infinity) / var_q_rel_ri_gate__tau_ri; // 1 / millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * var_q_rel__g_rel * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro, var_chaste_interface__environment__time); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_r__Ca_r = (-var_Ca_r__q_diff + var_model_parameters__Vol_jsr * var_q_rel__q_rel / var_model_parameters__Vol_ss - var_i_Ca_L__i_Ca_L * var_model_parameters__Cm * var_model_parameters__a_cap / (var_model_parameters__F * var_model_parameters__Vol_ss * var_model_parameters__z_Ca)) * var_Ca_r__Ca_r_tot; // millimolar / millisecond + const double var_q_rel_ro_gate__ro_infinity_JSR = pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) / (pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) + 1644.6531773416521 * pow((var_chaste_interface__Ca_r__Ca_r / (0.0028 + var_chaste_interface__Ca_r__Ca_r)), 1.8999999999999999)); // dimensionless + const double var_q_rel_ro_gate__ro_infinity = pow(var_i_Ca_L__i_Ca_L, 2) * var_q_rel_ro_gate__ro_infinity_JSR / (1 + pow(var_i_Ca_L__i_Ca_L, 2)); // dimensionless + const double var_q_rel_ro_gate__tau_ro = 3; // millisecond + const double d_dt_chaste_interface_var_q_rel_ro_gate__ro = (-var_chaste_interface__q_rel_ro_gate__ro + var_q_rel_ro_gate__ro_infinity) / var_q_rel_ro_gate__tau_ro; // 1 / millisecond + const double var_q_tr__tau_tr = 120; // millisecond + const double var_q_tr__q_tr = (-var_chaste_interface__Ca_JSR__Ca_JSR + var_chaste_interface__Ca_NSR__Ca_NSR) / var_q_tr__tau_tr; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_JSR__Ca_JSR = (-var_q_rel__q_rel + var_q_tr__q_tr) / (1 + var_Ca_JSR__CSQN_max * var_Ca_JSR__km_CSQN / pow((var_chaste_interface__Ca_JSR__Ca_JSR + var_Ca_JSR__km_CSQN), 2)); // millimolar / millisecond + const double var_q_up__X_q_up = 0.5; // dimensionless + const double var_q_up__dkm_plb_max = 0.00017000000000000001; // millimolar + const double var_q_up__dkm_plb = 1 * var_Ca_MK_act__Ca_MK_act * var_q_up__dkm_plb_max / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK); // millimolar + const double var_q_up__dq_up_Ca_MK_max = 0.75; // dimensionless + const double var_q_up__dq_up_Ca_MK = 1 * var_Ca_MK_act__Ca_MK_act * var_q_up__dq_up_Ca_MK_max / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK); // dimensionless + const double var_q_up__km_up = 0.00092000000000000003; // millimolar + const double var_q_up__q_up = (1 + var_q_up__dq_up_Ca_MK) * var_chaste_interface__Ca_i__Ca_i * var_q_up__X_q_up * mp_SR_uptake_current_max_modifier->Calc(mParameters[2], var_chaste_interface__environment__time) / (-var_q_up__dkm_plb + var_chaste_interface__Ca_i__Ca_i + var_q_up__km_up); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_NSR__Ca_NSR = -var_q_leak__q_leak - var_model_parameters__Vol_jsr * var_q_tr__q_tr / var_model_parameters__Vol_nsr + var_q_up__q_up; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_i__Ca_i = -((-var_q_leak__q_leak + var_q_up__q_up) * var_model_parameters__Vol_nsr / var_model_parameters__Vol_myo - var_Ca_r__q_diff * var_model_parameters__Vol_ss / var_model_parameters__Vol_myo + 0.5 * (-2 * var_i_NaCa__i_NaCa + var_background_currents__i_Ca_b + var_i_Ca_p__i_Ca_p) * var_model_parameters__Cm * var_model_parameters__a_cap / (var_model_parameters__F * var_model_parameters__Vol_myo)) * var_Ca_i__b_myo; // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_i_Ca_T__g_Ca_T = 0.13; // milliS_per_microF + const double var_i_Ca_T__i_Ca_T = (-50 + var_chaste_interface__membrane__V) * var_i_Ca_T__g_Ca_T * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g; // microA_per_microF + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_stim = var_membrane__i_stim_converted / HeartConfig::Instance()->GetCapacitance(); // microA_per_microF + const double var_membrane__i_tot = var_background_currents__i_Ca_b + var_background_currents__i_Cl_b + var_background_currents__i_K_b + var_background_currents__i_Na_b + var_i_Ca_L__i_Ca_L + var_i_Ca_T__i_Ca_T + var_i_Ca_p__i_Ca_p + var_i_K1__i_K1 + var_i_K_p__i_K_p + var_i_Kr__i_Kr + var_i_Ks__i_Ks + var_i_Na__i_Na + var_i_NaCa__i_NaCa + var_i_NaK__i_NaK + var_i_Na_L__i_Na_L + var_i_to_1__i_to_1 + var_i_to_2__i_to_2; // microA_per_microF + d_dt_chaste_interface_var_membrane__V = -var_membrane__i_stim - var_membrane__i_tot; // millivolt / millisecond + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_Ca_i__Ca_i; + rDY[2] = d_dt_chaste_interface_var_i_Na_m_gate__m; + rDY[3] = d_dt_chaste_interface_var_i_Na_h_gate__h; + rDY[4] = d_dt_chaste_interface_var_i_Na_j_gate__j; + rDY[5] = d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L; + rDY[6] = d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L; + rDY[7] = d_dt_chaste_interface_var_i_Ca_L_d_gate__d; + rDY[8] = d_dt_chaste_interface_var_i_Ca_L_f_gate__f; + rDY[9] = d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2; + rDY[10] = d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca; + rDY[11] = d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2; + rDY[12] = d_dt_chaste_interface_var_i_Ca_T_b_gate__b; + rDY[13] = d_dt_chaste_interface_var_i_Ca_T_g_gate__g; + rDY[14] = d_dt_chaste_interface_var_i_to_1_a_gate__a; + rDY[15] = d_dt_chaste_interface_var_i_to_1_i_gate__i; + rDY[16] = d_dt_chaste_interface_var_i_to_1_i2_gate__i2; + rDY[17] = d_dt_chaste_interface_var_i_Kr_xr_gate__xr; + rDY[18] = d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1; + rDY[19] = d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2; + rDY[20] = d_dt_chaste_interface_var_i_to_2_a_gate__a; + rDY[21] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rDY[22] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i; + rDY[23] = d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rDY[24] = d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap; + rDY[25] = d_dt_chaste_interface_var_Ca_NSR__Ca_NSR; + rDY[26] = d_dt_chaste_interface_var_Ca_JSR__Ca_JSR; + rDY[27] = d_dt_chaste_interface_var_Ca_r__Ca_r; + rDY[28] = d_dt_chaste_interface_var_q_rel_ri_gate__ri; + rDY[29] = d_dt_chaste_interface_var_q_rel_ro_gate__ro; + } + + std::vector Cellaslanidi_Purkinje_model_2009FromCellML::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(rY[0], var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(rY[1], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(rY[2], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(rY[3], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(rY[4], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(rY[7], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(rY[8], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(rY[9], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(rY[10], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(rY[11], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(rY[21], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(rY[23], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = rY[24]; + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(rY[26], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(rY[27], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = rY[28]; + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = rY[29]; + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Mathematics + const double var_Ca_MK_act__Ca_MK_0 = 0.050000000000000003; // dimensionless + const double var_Ca_MK_act__km_Ca_MK = 0.14999999999999999; // millimolar + const double var_Ca_MK_act__Ca_MK_bound = (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_0 / (1 + var_Ca_MK_act__km_Ca_MK / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_equilibrium_potentials__r_NaK = 0.018329999999999999; // dimensionless + const double var_i_Ca_L__p_Ca = 0.000243; // cm_per_second + const double var_i_Ca_L_f_Ca_gate__tau_f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier->Calc(0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK), var_chaste_interface__environment__time); // millisecond + const double var_i_Ks__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[13], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__X_NaCa = 0.40000000000000002; // dimensionless + const double var_i_NaCa__k_sat = 0.27000000000000002; // dimensionless + const double var_i_NaCa__km_Ca_act = 0.000125; // millimolar + const double var_i_NaCa__km_Ca_i = 0.0035999999999999999; // millimolar + const double var_i_NaCa__km_Ca_o = 1.3; // millimolar + const double var_i_NaCa__km_Na_i_1 = 12.300000000000001; // millimolar + const double var_i_NaCa__km_Na_o = 87.5; // millimolar + const double var_i_Ca_L_f2_gate__tau_f2 = mp_membrane_L_type_calcium_current_f2_gate_tau_modifier->Calc(38 + 0.070000000000000007 * pow((-18.600000000000001 + var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Ca_L_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(4 + 0.0050000000000000001 * pow((-2.5 + var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Kr__rr_infinity = 1 / (1 + exp(-0.26470588235294124 + 0.049019607843137261 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + 1.5 * pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + pow(var_i_NaCa__km_Na_i_1, 3) * (1 + 1.5 * var_chaste_interface__Ca_i__Ca_i / var_i_NaCa__km_Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time); // millimolar4 + const double var_model_parameters__Cm = 1; // microF_per_cm2 + const double var_model_parameters__F = 96485; // coulomb_per_mole + const double var_i_K1__g_K1 = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(mParameters[11], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_Kr__g_Kr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[12], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__dNaCa_2 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + var_chaste_interface__intracellular_ion_concentrations__Na_i / var_i_NaCa__km_Na_i_1) * var_i_NaCa__km_Ca_i; // millimolar4 + const double var_model_parameters__R = 8314; // joule_per_kilomole_kelvin + const double var_model_parameters__T = 310; // kelvin + const double var_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * log((var_equilibrium_potentials__r_NaK * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) / (var_equilibrium_potentials__r_NaK * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Na = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_model_parameters__F; // millivolt + const double var_i_K1_xK1_gate__alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_K1_xK1_gate__xK1 = var_i_K1_xK1_gate__alpha_xK1 / (var_i_K1_xK1_gate__alpha_xK1 + var_i_K1_xK1_gate__beta_xK1); // dimensionless + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + var_i_K1__g_K1 * var_i_K1_xK1_gate__xK1) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_K1__i_K1; // uA_per_cm2 + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_Kr__g_Kr * var_i_Kr__rr_infinity * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Kr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Kr__i_Kr; // uA_per_cm2 + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((-var_equilibrium_potentials__E_Ks + var_chaste_interface__membrane__V) * var_i_Ks__g_Ks * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(mParameters[8], var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__X_NaCa * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(mParameters[14], var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * exp(0.34999999999999998 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) / ((1 + var_i_NaCa__k_sat * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + 0.44444444444444442 * pow(var_i_NaCa__km_Ca_act, 2) / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (var_i_NaCa__dNaCa_1 + var_i_NaCa__dNaCa_2)), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaCa__i_NaCa; // uA_per_cm2 + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(mParameters[15], var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_1__i_to_1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_to_1__i_to_1; // uA_per_cm2 + const double var_model_parameters__gamma_Cai = 1; // dimensionless + const double var_model_parameters__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_i_Ca_L__i_Ca_L_max = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-15 + var_chaste_interface__membrane__V) * (-mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_r__Ca_r * var_model_parameters__gamma_Cai * exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_i_Ca_L__p_Ca / ((-1 + exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ca_L__i_Ca_L; // uA_per_cm2 + const double var_i_Ca_L_f_Ca2_gate__tau_f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier->Calc(125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)); // dimensionless + const double var_q_rel__g_rel = mp_SR_release_current_max_modifier->Calc(mParameters[1], var_chaste_interface__environment__time) * var_q_rel__vg; // per_millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * var_q_rel__g_rel * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro, var_chaste_interface__environment__time); // millimolar_per_millisecond + + std::vector dqs(16); + dqs[0] = var_q_rel__q_rel; + dqs[1] = var_i_Ca_L__i_Ca_L_converted; + dqs[2] = var_i_Ca_L_f2_gate__tau_f2; + dqs[3] = var_i_Ca_L_f_Ca2_gate__tau_f_Ca2; + dqs[4] = var_i_Ca_L_f_Ca_gate__tau_f_Ca; + dqs[5] = var_i_Ca_L_f_gate__tau_f; + dqs[6] = var_i_Na__i_Na_converted; + dqs[7] = var_i_Na_h_gate__tau_h; + dqs[8] = var_i_Na_j_gate__tau_j; + dqs[9] = var_i_K1__i_K1_converted; + dqs[10] = var_i_Kr__i_Kr_converted; + dqs[11] = var_i_Ks__i_Ks_converted; + dqs[12] = var_i_NaCa__i_NaCa_converted; + dqs[13] = var_membrane__i_stim_converted; + dqs[14] = var_i_to_1__i_to_1_converted; + dqs[15] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "aslanidi_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-83.43812846286808); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022355433459434943); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9786390933308567); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09866447258167589); + + // rY[5]: + this->mVariableNames.push_back("i_Na_L_m_L_gate__m_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // rY[6]: + this->mVariableNames.push_back("i_Na_L_h_L_gate__h_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8946968372659203); + + // rY[7]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.322223865147363e-06); + + // rY[8]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9985607329462358); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8173435436674658); + + // rY[10]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9610551285529658); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.868690796671854); + + // rY[12]: + this->mVariableNames.push_back("i_Ca_T_b_gate__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0002563937630984438); + + // rY[13]: + this->mVariableNames.push_back("i_Ca_T_g_gate__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9720432601848331); + + // rY[14]: + this->mVariableNames.push_back("i_to_1_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0004238729429342389); + + // rY[15]: + this->mVariableNames.push_back("i_to_1_i_gate__i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9990935802459496); + + // rY[16]: + this->mVariableNames.push_back("i_to_1_i2_gate__i2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9777368439681764); + + // rY[17]: + this->mVariableNames.push_back("i_Kr_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.07084939408222911); + + // rY[18]: + this->mVariableNames.push_back("i_Ks_xs1_gate__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0011737654433043125); + + // rY[19]: + this->mVariableNames.push_back("i_Ks_xs2_gate__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001179442867470093); + + // rY[20]: + this->mVariableNames.push_back("i_to_2_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0014909437525000811); + + // rY[21]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.927155552932733); + + // rY[22]: + this->mVariableNames.push_back("intracellular_ion_concentrations__Cl_i"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(18.904682470140408); + + // rY[23]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(141.9670801746057); + + // rY[24]: + this->mVariableNames.push_back("Ca_MK_act__Ca_MK_trap"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.789168284782809e-06); + + // rY[25]: + this->mVariableNames.push_back("Ca_NSR__Ca_NSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.2132524695849454); + + // rY[26]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.1433050636518596); + + // rY[27]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022418117117903934); + + // rY[28]: + this->mVariableNames.push_back("q_rel_ri_gate__ri"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7802870066567904); + + // rY[29]: + this->mVariableNames.push_back("q_rel_ro_gate__ro"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.2785734760674763e-09); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellaslanidi_Purkinje_model_2009FromCellML) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/Normal/output_class--sympy_1_13.c b/chaste_codegen/data/tests/chaste_reference_models/Normal/output_class--sympy_1_13.c new file mode 100644 index 00000000..6087a294 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Normal/output_class--sympy_1_13.c @@ -0,0 +1,828 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: noble_model_1998 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: Normal) +//! on (date omitted as unimportant) +//! +//! + +#include "output_class.h" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractCardiacCell* Chaste_CG::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Chaste_CG(p_solver, p_stimulus); +} + +bool Chaste_CG::registered = ModelFactory::Register("output_class", "Normal", (ModelFactory::TCreateMethod)Chaste_CG::CreateMethod); + + + + boost::shared_ptr Chaste_CG::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -0.0030000000000000001 * HeartConfig::Instance()->GetCapacitance() / mParameters[10]; // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration_converted = 3; // millisecond + const double var_chaste_interface__membrane__stim_period_converted = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start_converted = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration_converted, + var_chaste_interface__membrane__stim_period_converted, + var_chaste_interface__membrane__stim_start_converted + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Chaste_CG::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Chaste_CG::Chaste_CG(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCell( + pSolver, + 22, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 0.050000000000000003; // (var_calcium_release__K_leak_rate) [per_second] + this->mParameters[1] = 250; // (var_calcium_release__K_m_rel) [per_second] + this->mParameters[2] = 0.00050000000000000001; // (var_calcium_release__K_m_Ca_cyt) [millimolar] + this->mParameters[3] = 0.01; // (var_calcium_release__K_m_Ca_ds) [millimolar] + this->mParameters[4] = 1; // (var_sarcoplasmic_reticulum_calcium_pump__uptake_factor) [dimensionless] + this->mParameters[5] = 1; // (var_intracellular_sodium_concentration__conc_clamp) [dimensionless] + this->mParameters[6] = 2; // (var_extracellular_calcium_concentration__Ca_o) [millimolar] + this->mParameters[7] = 4; // (var_extracellular_potassium_concentration__K_o) [millimolar] + this->mParameters[8] = 140; // (var_extracellular_sodium_concentration__Na_o) [millimolar] + this->mParameters[9] = 0.10000000000000001; // (var_L_type_Ca_channel__P_Ca_L) [nanoA_per_millimolar] + this->mParameters[10] = 9.5000000000000005e-5; // (var_membrane__Cm) [microF] + this->mParameters[11] = 2.5; // (var_fast_sodium_current__g_Na) [microS] + this->mParameters[12] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[13] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[14] = 0.5; // (var_time_independent_potassium_current__g_K1) [microS] + this->mParameters[15] = 0.0020999999999999999; // (var_rapid_delayed_rectifier_potassium_current__g_Kr1) [microS] + this->mParameters[16] = 0.0012999999999999999; // (var_rapid_delayed_rectifier_potassium_current__g_Kr2) [microS] + this->mParameters[17] = 0.0025999999999999999; // (var_slow_delayed_rectifier_potassium_current__g_Ks) [microS] + this->mParameters[18] = 0.00050000000000000001; // (var_sodium_calcium_exchanger__k_NaCa) [nanoA] + this->mParameters[19] = 0.0050000000000000001; // (var_transient_outward_current__g_to) [microS] + } + + Chaste_CG::~Chaste_CG() + { + } + + + void Chaste_CG::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables();double var_chaste_interface__intracellular_calcium_concentration__Ca_ds = rY[17]; + // Units: millimolar; Initial value: 1.88e-05 + + if (var_chaste_interface__intracellular_calcium_concentration__Ca_ds < 0.0) + { + EXCEPTION(DumpState("State variable dyadic_space_calcium_concentration has gone out of range. Check numerical parameters, for example time and space stepsizes, and/or solver tolerances")); + } + + std::string error_message = ""; + + for (unsigned i=0; i < 22; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Chaste_CG::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -92.849333 + double var_chaste_interface__intracellular_calcium_concentration__Ca_i = rY[1]; + // Units: millimolar; Initial value: 1.4e-05 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr1_gate__xr1 = rY[2]; + // Units: dimensionless; Initial value: 1.03e-05 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr2_gate__xr2 = rY[3]; + // Units: dimensionless; Initial value: 2e-07 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs_gate__xs = rY[4]; + // Units: dimensionless; Initial value: 0.001302 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[5]; + // Units: dimensionless; Initial value: 0.0016203 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[6]; + // Units: dimensionless; Initial value: 0.9944036 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[7]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[8]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__L_type_Ca_channel_f2_gate__f2 = rY[9]; + // Units: dimensionless; Initial value: 0.9349197 + double var_chaste_interface__L_type_Ca_channel_f2ds_gate__f2ds = rY[10]; + // Units: dimensionless; Initial value: 0.9651958 + double var_chaste_interface__transient_outward_current_s_gate__s = rY[11]; + // Units: dimensionless; Initial value: 0.9948645 + double var_chaste_interface__transient_outward_current_r_gate__r = rY[12]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__intracellular_sodium_concentration__Na_i = rY[15]; + // Units: millimolar; Initial value: 7.3321223 + double var_chaste_interface__intracellular_potassium_concentration__K_i = rY[16]; + // Units: millimolar; Initial value: 136.5644281 + double var_chaste_interface__intracellular_calcium_concentration__Ca_ds = rY[17]; + // Units: millimolar; Initial value: 1.88e-05 + + const double var_L_type_Ca_channel__FrICa = 1; // dimensionless + const double var_L_type_Ca_channel__P_CaK = 0.002; // dimensionless + const double var_L_type_Ca_channel__P_CaNa = 0.01; // dimensionless + const double var_calcium_background_current__g_bca = 0.00025000000000000001; // microS + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L_Ca_cyt = 4 * (1 - var_L_type_Ca_channel__FrICa) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(100 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[6] * exp(2 * (50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2_gate__f2 * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp(2 * (50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_Ca_ds = 4 * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(100 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[6] * exp(2 * (50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__FrICa * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2ds_gate__f2ds * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp(2 * (50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_K_cyt = (1 - var_L_type_Ca_channel__FrICa) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[7] * exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_CaK * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2_gate__f2 * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_K_ds = (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[7] * exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__FrICa * var_L_type_Ca_channel__P_CaK * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2ds_gate__f2ds * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_Na_cyt = (1 - var_L_type_Ca_channel__FrICa) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[8] * exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_CaNa * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2_gate__f2 * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_Na_ds = (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[8] * exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__FrICa * var_L_type_Ca_channel__P_CaNa * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2ds_gate__f2ds * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_persistent_sodium_current__g_pna = 0.0040000000000000001; // microS + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_calcium_concentration__Ca_i) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_b_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_bca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(mParameters[7] / var_chaste_interface__intracellular_potassium_concentration__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 1 * (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * (mParameters[15] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr1_gate__xr1 + mParameters[16] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr2_gate__xr2) / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // nanoA + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr / mParameters[10]; // uA_per_cm2 + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(mParameters[8] / var_chaste_interface__intracellular_sodium_concentration__Na_i) / var_membrane__F; // millivolt + const double var_persistent_sodium_current__i_p_Na = 1 * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_persistent_sodium_current__g_pna / (1 + exp(-6.5 - 0.125 * var_chaste_interface__membrane__V)); // nanoA + const double var_reversal_potentials__E_mh = var_membrane__R * var_membrane__T * log((1 * mParameters[8] + 0.12 * mParameters[7]) / (1 * var_chaste_interface__intracellular_sodium_concentration__Na_i + 0.12 * var_chaste_interface__intracellular_potassium_concentration__K_i)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_reversal_potentials__E_mh + var_chaste_interface__membrane__V) * mParameters[11] * var_chaste_interface__fast_sodium_current_h_gate__h; // nanoA + const double var_fast_sodium_current__i_Na_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / mParameters[10]; // uA_per_cm2 + const double var_reversal_potentials__P_kna = 0.029999999999999999; // dimensionless + const double var_reversal_potentials__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[8] * var_reversal_potentials__P_kna + mParameters[7]) / (var_chaste_interface__intracellular_sodium_concentration__Na_i * var_reversal_potentials__P_kna + var_chaste_interface__intracellular_potassium_concentration__K_i)) / var_membrane__F; // millivolt + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current_xs_gate__xs, 2) * (-var_reversal_potentials__E_Ks + var_chaste_interface__membrane__V) * mParameters[17]; // nanoA + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks / mParameters[10]; // uA_per_cm2 + const double var_sodium_background_current__g_bna = 0.00059999999999999995; // microS + const double var_sodium_background_current__i_b_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_bna; // nanoA + const double var_sodium_calcium_exchanger__FRiNaCa = 0.001; // dimensionless + const double var_sodium_calcium_exchanger__d_NaCa = 0; // dimensionless + const double var_sodium_calcium_exchanger__gamma = 0.5; // dimensionless + const double var_sodium_calcium_exchanger__n_NaCa = 3; // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa_cyt = (1 - var_sodium_calcium_exchanger__FRiNaCa) * (pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6] * exp((-2 + var_sodium_calcium_exchanger__n_NaCa) * var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchanger__gamma / (var_membrane__R * var_membrane__T)) - pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp((-1 + var_sodium_calcium_exchanger__gamma) * (-2 + var_sodium_calcium_exchanger__n_NaCa) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[18] / ((1 + 144.92753623188406 * var_chaste_interface__intracellular_calcium_concentration__Ca_i) * (1 + (pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i + pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6]) * var_sodium_calcium_exchanger__d_NaCa)); // nanoA + const double var_sodium_calcium_exchanger__i_NaCa_ds = (pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6] * exp((-2 + var_sodium_calcium_exchanger__n_NaCa) * var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchanger__gamma / (var_membrane__R * var_membrane__T)) - pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds * exp((-1 + var_sodium_calcium_exchanger__gamma) * (-2 + var_sodium_calcium_exchanger__n_NaCa) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_sodium_calcium_exchanger__FRiNaCa * mParameters[18] / ((1 + 144.92753623188406 * var_chaste_interface__intracellular_calcium_concentration__Ca_ds) * (1 + (pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds + pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6]) * var_sodium_calcium_exchanger__d_NaCa)); // nanoA + const double var_sodium_potassium_pump__K_mK = 1; // millimolar + const double var_sodium_potassium_pump__K_mNa = 40; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.69999999999999996; // nanoA + const double var_sodium_potassium_pump__i_NaK = mParameters[7] * var_chaste_interface__intracellular_sodium_concentration__Na_i * var_sodium_potassium_pump__i_NaK_max / ((mParameters[7] + var_sodium_potassium_pump__K_mK) * (var_chaste_interface__intracellular_sodium_concentration__Na_i + var_sodium_potassium_pump__K_mNa)); // nanoA + const double var_time_independent_potassium_current__K_mk1 = 10; // millimolar + const double var_time_independent_potassium_current__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[7] * mParameters[14] / ((1 + exp(1.25 * (-10 - var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * (mParameters[7] + var_time_independent_potassium_current__K_mk1)); // nanoA + const double var_time_independent_potassium_current__i_K1_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / mParameters[10]; // uA_per_cm2 + const double var_transient_outward_current__g_tos = 0; // dimensionless + const double var_transient_outward_current__i_to = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * ((1 - var_transient_outward_current__g_tos) * var_chaste_interface__transient_outward_current_s_gate__s + var_transient_outward_current__g_tos) * mParameters[19] * var_chaste_interface__transient_outward_current_r_gate__r; // nanoA + const double var_transient_outward_current__i_to_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to / mParameters[10]; // uA_per_cm2 + const double var_chaste_interface__i_ionic = ((var_fast_sodium_current__i_Na_converted + var_rapid_delayed_rectifier_potassium_current__i_Kr_converted + var_slow_delayed_rectifier_potassium_current__i_Ks_converted + var_time_independent_potassium_current__i_K1_converted + var_transient_outward_current__i_to_converted) * mParameters[10] + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L_Ca_cyt + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L_Ca_ds + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L_K_cyt + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L_K_ds + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L_Na_cyt + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L_Na_ds + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_b_Ca + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_persistent_sodium_current__i_p_Na + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_b_Na + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchanger__i_NaCa_cyt + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchanger__i_NaCa_ds + 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump__i_NaK) / mParameters[10]; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Chaste_CG::EvaluateYDerivatives(double var_chaste_interface__environment__time_converted, const std::vector& rY, std::vector& rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -92.849333 + double var_chaste_interface__intracellular_calcium_concentration__Ca_i = rY[1]; + // Units: millimolar; Initial value: 1.4e-05 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr1_gate__xr1 = rY[2]; + // Units: dimensionless; Initial value: 1.03e-05 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr2_gate__xr2 = rY[3]; + // Units: dimensionless; Initial value: 2e-07 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs_gate__xs = rY[4]; + // Units: dimensionless; Initial value: 0.001302 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[5]; + // Units: dimensionless; Initial value: 0.0016203 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[6]; + // Units: dimensionless; Initial value: 0.9944036 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[7]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[8]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__L_type_Ca_channel_f2_gate__f2 = rY[9]; + // Units: dimensionless; Initial value: 0.9349197 + double var_chaste_interface__L_type_Ca_channel_f2ds_gate__f2ds = rY[10]; + // Units: dimensionless; Initial value: 0.9651958 + double var_chaste_interface__transient_outward_current_s_gate__s = rY[11]; + // Units: dimensionless; Initial value: 0.9948645 + double var_chaste_interface__transient_outward_current_r_gate__r = rY[12]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_release__ActFrac = rY[13]; + // Units: dimensionless; Initial value: 0.0042614 + double var_chaste_interface__calcium_release__ProdFrac = rY[14]; + // Units: dimensionless; Initial value: 0.4068154 + double var_chaste_interface__intracellular_sodium_concentration__Na_i = rY[15]; + // Units: millimolar; Initial value: 7.3321223 + double var_chaste_interface__intracellular_potassium_concentration__K_i = rY[16]; + // Units: millimolar; Initial value: 136.5644281 + double var_chaste_interface__intracellular_calcium_concentration__Ca_ds = rY[17]; + // Units: millimolar; Initial value: 1.88e-05 + double var_chaste_interface__intracellular_calcium_concentration__Ca_up = rY[18]; + // Units: millimolar; Initial value: 0.4531889 + double var_chaste_interface__intracellular_calcium_concentration__Ca_rel = rY[19]; + // Units: millimolar; Initial value: 0.4481927 + double var_chaste_interface__intracellular_calcium_concentration__Ca_Calmod = rY[20]; + // Units: millimolar; Initial value: 0.0005555 + double var_chaste_interface__intracellular_calcium_concentration__Ca_Trop = rY[21]; + // Units: millimolar; Initial value: 0.0003542 + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_L_type_Ca_channel__FrICa = 1; // dimensionless + const double var_L_type_Ca_channel__Km_f2 = 100000; // millimolar + const double var_L_type_Ca_channel__Km_f2ds = 0.001; // millimolar + const double var_L_type_Ca_channel__P_CaK = 0.002; // dimensionless + const double var_L_type_Ca_channel__P_CaNa = 0.01; // dimensionless + const double var_L_type_Ca_channel__R_decay = 20; // per_second + const double var_L_type_Ca_channel_d_gate__speed_d = 3; // dimensionless + const double var_L_type_Ca_channel_f_gate__delta_f = 0.0001; // millivolt + const double var_L_type_Ca_channel_f_gate__speed_f = 0.29999999999999999; // dimensionless + const double var_calcium_background_current__g_bca = 0.00025000000000000001; // microS + const double var_calcium_release__PrecFrac = 1 - var_chaste_interface__calcium_release__ActFrac - var_chaste_interface__calcium_release__ProdFrac; // dimensionless + const double var_fast_sodium_current_m_gate__delta_m = 1.0000000000000001e-5; // millivolt + const double var_L_type_Ca_channel_f2ds_gate__f2ds_orig_deriv = (1 - var_chaste_interface__L_type_Ca_channel_f2ds_gate__f2ds - var_chaste_interface__intracellular_calcium_concentration__Ca_ds / (var_L_type_Ca_channel__Km_f2ds + var_chaste_interface__intracellular_calcium_concentration__Ca_ds)) * var_L_type_Ca_channel__R_decay; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f2ds_gate__f2ds = 0.001 * var_L_type_Ca_channel_f2ds_gate__f2ds_orig_deriv; // 1 / millisecond + const double var_calcium_release__CadsReg = var_chaste_interface__intracellular_calcium_concentration__Ca_ds / (mParameters[3] + var_chaste_interface__intracellular_calcium_concentration__Ca_ds); // dimensionless + const double var_L_type_Ca_channel_f2_gate__f2_orig_deriv = 1 - 1 * var_chaste_interface__L_type_Ca_channel_f2_gate__f2 - 1 * var_chaste_interface__intracellular_calcium_concentration__Ca_i / (var_L_type_Ca_channel__Km_f2 + var_chaste_interface__intracellular_calcium_concentration__Ca_i); // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f2_gate__f2 = 0.001 * var_L_type_Ca_channel_f2_gate__f2_orig_deriv; // 1 / millisecond + const double var_calcium_release__CaiReg = var_chaste_interface__intracellular_calcium_concentration__Ca_i / (mParameters[2] + var_chaste_interface__intracellular_calcium_concentration__Ca_i); // dimensionless + const double var_calcium_release__RegBindSite = (1 - var_calcium_release__CaiReg) * var_calcium_release__CadsReg + var_calcium_release__CaiReg; // dimensionless + const double var_calcium_release__ActRate = 500 * pow(var_calcium_release__RegBindSite, 2); // per_second + const double var_calcium_release__InactRate = 60 + 500 * pow(var_calcium_release__RegBindSite, 2); // per_second + const double var_calcium_release__i_rel = (pow(var_chaste_interface__calcium_release__ActFrac, 2) * mParameters[1] / pow((0.25 + var_chaste_interface__calcium_release__ActFrac), 2) + mParameters[0]) * var_chaste_interface__intracellular_calcium_concentration__Ca_rel; // millimolar_per_second + const double var_calcium_translocation__i_trans = 50 * var_chaste_interface__intracellular_calcium_concentration__Ca_up - 50 * var_chaste_interface__intracellular_calcium_concentration__Ca_rel; // millimolar_per_second + const double var_intracellular_calcium_concentration__Calmod = 0.02; // millimolar + const double var_intracellular_calcium_concentration__Kdecay = 10; // per_second + const double var_intracellular_calcium_concentration__Trop = 0.050000000000000003; // millimolar + const double var_intracellular_calcium_concentration__V_ds_ratio = 0.10000000000000001; // dimensionless + const double var_intracellular_calcium_concentration__V_e_ratio = 0.40000000000000002; // dimensionless + const double var_intracellular_calcium_concentration__V_rel_ratio = 0.10000000000000001; // dimensionless + const double var_intracellular_calcium_concentration__V_up_ratio = 0.01; // dimensionless + const double var_intracellular_calcium_concentration__Ca_rel_orig_deriv = -var_calcium_release__i_rel + var_calcium_translocation__i_trans * var_intracellular_calcium_concentration__V_up_ratio / var_intracellular_calcium_concentration__V_rel_ratio; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_rel = 0.001 * var_intracellular_calcium_concentration__Ca_rel_orig_deriv; // millimolar / millisecond + const double var_intracellular_calcium_concentration__V_i_ratio = 1 - var_intracellular_calcium_concentration__V_e_ratio - var_intracellular_calcium_concentration__V_rel_ratio - var_intracellular_calcium_concentration__V_up_ratio; // dimensionless + const double var_intracellular_calcium_concentration__alpha_Calmod = 100000; // per_millimolar_second + const double var_intracellular_calcium_concentration__alpha_Trop = 100000; // per_millimolar_second + const double var_intracellular_calcium_concentration__beta_Calmod = 50; // per_second + const double var_intracellular_calcium_concentration__Ca_Calmod_orig_deriv = -var_chaste_interface__intracellular_calcium_concentration__Ca_Calmod * var_intracellular_calcium_concentration__beta_Calmod + (-var_chaste_interface__intracellular_calcium_concentration__Ca_Calmod + var_intracellular_calcium_concentration__Calmod) * var_chaste_interface__intracellular_calcium_concentration__Ca_i * var_intracellular_calcium_concentration__alpha_Calmod; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_Calmod = 0.001 * var_intracellular_calcium_concentration__Ca_Calmod_orig_deriv; // millimolar / millisecond + const double var_intracellular_calcium_concentration__beta_Trop = 200; // per_second + const double var_intracellular_calcium_concentration__Ca_Trop_orig_deriv = -var_chaste_interface__intracellular_calcium_concentration__Ca_Trop * var_intracellular_calcium_concentration__beta_Trop + (-var_chaste_interface__intracellular_calcium_concentration__Ca_Trop + var_intracellular_calcium_concentration__Trop) * var_chaste_interface__intracellular_calcium_concentration__Ca_i * var_intracellular_calcium_concentration__alpha_Trop; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_Trop = 0.001 * var_intracellular_calcium_concentration__Ca_Trop_orig_deriv; // millimolar / millisecond + const double var_intracellular_calcium_concentration__length = 0.073999999999999996; // micrometre + const double var_intracellular_calcium_concentration__radius = 0.012; // micrometre + const double var_intracellular_calcium_concentration__V_Cell = 3.1415926540000001 * pow(var_intracellular_calcium_concentration__radius, 2) * var_intracellular_calcium_concentration__length; // micrometre3 + const double var_intracellular_calcium_concentration__V_i = var_intracellular_calcium_concentration__V_Cell * var_intracellular_calcium_concentration__V_i_ratio; // micrometre3 + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L_Ca_cyt = 4 * (1 - var_L_type_Ca_channel__FrICa) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(100 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[6] * exp(2 * (50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2_gate__f2 * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp(2 * (50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_Ca_ds = 4 * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(100 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[6] * exp(2 * (50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__FrICa * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2ds_gate__f2ds * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp(2 * (50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_K_cyt = (1 - var_L_type_Ca_channel__FrICa) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[7] * exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_CaK * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2_gate__f2 * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_K_ds = (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[7] * exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__FrICa * var_L_type_Ca_channel__P_CaK * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2ds_gate__f2ds * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_Na_cyt = (1 - var_L_type_Ca_channel__FrICa) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[8] * exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_CaNa * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2_gate__f2 * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_Na_ds = (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[8] * exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__FrICa * var_L_type_Ca_channel__P_CaNa * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2ds_gate__f2ds * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel_d_gate__E0_d = 19 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_channel_d_gate__alpha_d = ((fabs(var_L_type_Ca_channel_d_gate__E0_d) < 0.0001) ? (120) : (30 * var_L_type_Ca_channel_d_gate__E0_d / (1 - exp(-0.25 * var_L_type_Ca_channel_d_gate__E0_d)))); // per_second + const double var_L_type_Ca_channel_d_gate__beta_d = ((fabs(var_L_type_Ca_channel_d_gate__E0_d) < 0.0001) ? (120) : (12 * var_L_type_Ca_channel_d_gate__E0_d / (-1 + exp(0.10000000000000001 * var_L_type_Ca_channel_d_gate__E0_d)))); // per_second + const double var_L_type_Ca_channel_d_gate__d_orig_deriv = ((1 - var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__alpha_d - var_L_type_Ca_channel_d_gate__beta_d * var_chaste_interface__L_type_Ca_channel_d_gate__d) * var_L_type_Ca_channel_d_gate__speed_d; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d = 0.001 * var_L_type_Ca_channel_d_gate__d_orig_deriv; // 1 / millisecond + const double var_L_type_Ca_channel_f_gate__E0_f = 34 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_channel_f_gate__alpha_f = ((var_L_type_Ca_channel_f_gate__delta_f > fabs(var_L_type_Ca_channel_f_gate__E0_f)) ? (25) : (6.25 * var_L_type_Ca_channel_f_gate__E0_f / (-1 + exp(0.25 * var_L_type_Ca_channel_f_gate__E0_f)))); // per_second + const double var_L_type_Ca_channel_f_gate__beta_f = 12 / (1 + exp(-8.5 - 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__f_orig_deriv = ((1 - var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__alpha_f - var_L_type_Ca_channel_f_gate__beta_f * var_chaste_interface__L_type_Ca_channel_f_gate__f) * var_L_type_Ca_channel_f_gate__speed_f; // 1 / second + const double d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f = 0.001 * var_L_type_Ca_channel_f_gate__f_orig_deriv; // 1 / millisecond + const double var_calcium_release__SpeedRel = ((var_chaste_interface__membrane__V < -50) ? (5) : (1)); // dimensionless + const double var_calcium_release__ActFrac_orig_deriv = var_calcium_release__ActRate * var_calcium_release__PrecFrac * var_calcium_release__SpeedRel - var_chaste_interface__calcium_release__ActFrac * var_calcium_release__InactRate * var_calcium_release__SpeedRel; // 1 / second + const double d_dt_chaste_interface_var_calcium_release__ActFrac = 0.001 * var_calcium_release__ActFrac_orig_deriv; // 1 / millisecond + const double var_calcium_release__ProdFrac_orig_deriv = -1 * var_chaste_interface__calcium_release__ProdFrac * var_calcium_release__SpeedRel + var_chaste_interface__calcium_release__ActFrac * var_calcium_release__InactRate * var_calcium_release__SpeedRel; // 1 / second + const double d_dt_chaste_interface_var_calcium_release__ProdFrac = 0.001 * var_calcium_release__ProdFrac_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_h_gate__alpha_h = 20 * exp(-9.375 + 0.125 * mParameters[13] - 0.125 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 2000 / (1 + 320 * exp(-7.5 + 0.10000000000000001 * mParameters[13] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_fast_sodium_current_h_gate__h_inf = 0.01 * mParameters[12] + (1 - 0.01 * mParameters[12]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // dimensionless + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_fast_sodium_current_h_gate__h_orig_deriv = (-var_chaste_interface__fast_sodium_current_h_gate__h + var_fast_sodium_current_h_gate__h_inf) / var_fast_sodium_current_h_gate__tau_h; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = 0.001 * var_fast_sodium_current_h_gate__h_orig_deriv; // 1 / millisecond + const double var_fast_sodium_current_m_gate__E0_m = 41 + var_chaste_interface__membrane__V; // millivolt + const double var_fast_sodium_current_m_gate__alpha_m = ((var_fast_sodium_current_m_gate__delta_m > fabs(var_fast_sodium_current_m_gate__E0_m)) ? (2000) : (200 * var_fast_sodium_current_m_gate__E0_m / (1 - exp(-0.10000000000000001 * var_fast_sodium_current_m_gate__E0_m)))); // per_second + const double var_fast_sodium_current_m_gate__beta_m = 8000 * exp(-3.6960000000000002 - 0.056000000000000001 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_m_gate__m_orig_deriv = (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * var_fast_sodium_current_m_gate__alpha_m - var_fast_sodium_current_m_gate__beta_m * var_chaste_interface__fast_sodium_current_m_gate__m; // 1 / second + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = 0.001 * var_fast_sodium_current_m_gate__m_orig_deriv; // 1 / millisecond + const double var_intracellular_calcium_concentration__Ca_ds_orig_deriv = -var_chaste_interface__intracellular_calcium_concentration__Ca_ds * var_intracellular_calcium_concentration__Kdecay - 0.5 * var_L_type_Ca_channel__i_Ca_L_Ca_ds / (var_intracellular_calcium_concentration__V_ds_ratio * var_intracellular_calcium_concentration__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_ds = 0.001 * var_intracellular_calcium_concentration__Ca_ds_orig_deriv; // millimolar / millisecond + const double var_persistent_sodium_current__g_pna = 0.0040000000000000001; // microS + const double var_rapid_delayed_rectifier_potassium_current_xr1_gate__alpha_xr1 = 50 / (1 + exp(0.55555555555555558 - 0.1111111111111111 * var_chaste_interface__membrane__V)); // per_second + const double var_rapid_delayed_rectifier_potassium_current_xr1_gate__beta_xr1 = 0.050000000000000003 * exp(1.3333333333333333 - 0.066666666666666666 * var_chaste_interface__membrane__V); // per_second + const double var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1_orig_deriv = (1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr1_gate__xr1) * var_rapid_delayed_rectifier_potassium_current_xr1_gate__alpha_xr1 - var_rapid_delayed_rectifier_potassium_current_xr1_gate__beta_xr1 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr1_gate__xr1; // 1 / second + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1 = 0.001 * var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1_orig_deriv; // 1 / millisecond + const double var_rapid_delayed_rectifier_potassium_current_xr2_gate__alpha_xr2 = 50 / (1 + exp(0.55555555555555558 - 0.1111111111111111 * var_chaste_interface__membrane__V)); // per_second + const double var_rapid_delayed_rectifier_potassium_current_xr2_gate__beta_xr2 = 0.40000000000000002 * exp(-pow((1 + 0.033333333333333333 * var_chaste_interface__membrane__V), 3)); // per_second + const double var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2_orig_deriv = (1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr2_gate__xr2) * var_rapid_delayed_rectifier_potassium_current_xr2_gate__alpha_xr2 - var_rapid_delayed_rectifier_potassium_current_xr2_gate__beta_xr2 * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr2_gate__xr2; // 1 / second + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2 = 0.001 * var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2_orig_deriv; // 1 / millisecond + const double var_reversal_potentials__E_Ca = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[6] / var_chaste_interface__intracellular_calcium_concentration__Ca_i) / var_membrane__F; // millivolt + const double var_calcium_background_current__i_b_Ca = (-var_reversal_potentials__E_Ca + var_chaste_interface__membrane__V) * var_calcium_background_current__g_bca; // nanoA + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(mParameters[7] / var_chaste_interface__intracellular_potassium_concentration__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 1 * (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * (mParameters[15] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr1_gate__xr1 + mParameters[16] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr2_gate__xr2) / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // nanoA + const double var_reversal_potentials__E_Na = var_membrane__R * var_membrane__T * log(mParameters[8] / var_chaste_interface__intracellular_sodium_concentration__Na_i) / var_membrane__F; // millivolt + const double var_persistent_sodium_current__i_p_Na = 1 * (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_persistent_sodium_current__g_pna / (1 + exp(-6.5 - 0.125 * var_chaste_interface__membrane__V)); // nanoA + const double var_reversal_potentials__E_mh = var_membrane__R * var_membrane__T * log((1 * mParameters[8] + 0.12 * mParameters[7]) / (1 * var_chaste_interface__intracellular_sodium_concentration__Na_i + 0.12 * var_chaste_interface__intracellular_potassium_concentration__K_i)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_reversal_potentials__E_mh + var_chaste_interface__membrane__V) * mParameters[11] * var_chaste_interface__fast_sodium_current_h_gate__h; // nanoA + const double var_reversal_potentials__P_kna = 0.029999999999999999; // dimensionless + const double var_reversal_potentials__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[8] * var_reversal_potentials__P_kna + mParameters[7]) / (var_chaste_interface__intracellular_sodium_concentration__Na_i * var_reversal_potentials__P_kna + var_chaste_interface__intracellular_potassium_concentration__K_i)) / var_membrane__F; // millivolt + const double var_sarcoplasmic_reticulum_calcium_pump__K_cyca = 0.00029999999999999997; // millimolar + const double var_sarcoplasmic_reticulum_calcium_pump__K_srca = 0.5; // millimolar + const double var_sarcoplasmic_reticulum_calcium_pump__K_xcs = 0.40000000000000002; // dimensionless + const double var_sarcoplasmic_reticulum_calcium_pump__K_1 = var_sarcoplasmic_reticulum_calcium_pump__K_cyca * var_sarcoplasmic_reticulum_calcium_pump__K_xcs / var_sarcoplasmic_reticulum_calcium_pump__K_srca; // dimensionless + const double var_sarcoplasmic_reticulum_calcium_pump__K_2 = var_chaste_interface__intracellular_calcium_concentration__Ca_up * var_sarcoplasmic_reticulum_calcium_pump__K_1 + var_sarcoplasmic_reticulum_calcium_pump__K_cyca * var_sarcoplasmic_reticulum_calcium_pump__K_xcs + var_chaste_interface__intracellular_calcium_concentration__Ca_i + var_sarcoplasmic_reticulum_calcium_pump__K_cyca; // millimolar + const double var_sarcoplasmic_reticulum_calcium_pump__alpha_up = 0.40000000000000002; // millimolar_per_second + const double var_sarcoplasmic_reticulum_calcium_pump__beta_up = 0.029999999999999999; // millimolar_per_second + const double var_sarcoplasmic_reticulum_calcium_pump__i_up = (var_chaste_interface__intracellular_calcium_concentration__Ca_i * var_sarcoplasmic_reticulum_calcium_pump__alpha_up / var_sarcoplasmic_reticulum_calcium_pump__K_2 - var_chaste_interface__intracellular_calcium_concentration__Ca_up * var_sarcoplasmic_reticulum_calcium_pump__K_1 * var_sarcoplasmic_reticulum_calcium_pump__beta_up / var_sarcoplasmic_reticulum_calcium_pump__K_2) * mParameters[4]; // millimolar_per_second + const double var_intracellular_calcium_concentration__Ca_up_orig_deriv = -var_calcium_translocation__i_trans + var_intracellular_calcium_concentration__V_i_ratio * var_sarcoplasmic_reticulum_calcium_pump__i_up / var_intracellular_calcium_concentration__V_up_ratio; // millimolar / second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_up = 0.001 * var_intracellular_calcium_concentration__Ca_up_orig_deriv; // millimolar / millisecond + const double var_slow_delayed_rectifier_potassium_current_xs_gate__alpha_xs = 14 / (1 + exp(4.4444444444444446 - 0.1111111111111111 * var_chaste_interface__membrane__V)); // per_second + const double var_slow_delayed_rectifier_potassium_current_xs_gate__beta_xs = 1 * exp(-0.022222222222222223 * var_chaste_interface__membrane__V); // per_second + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current_xs_gate__xs, 2) * (-var_reversal_potentials__E_Ks + var_chaste_interface__membrane__V) * mParameters[17]; // nanoA + const double var_slow_delayed_rectifier_potassium_current_xs_gate__xs_orig_deriv = (1 - var_chaste_interface__slow_delayed_rectifier_potassium_current_xs_gate__xs) * var_slow_delayed_rectifier_potassium_current_xs_gate__alpha_xs - var_slow_delayed_rectifier_potassium_current_xs_gate__beta_xs * var_chaste_interface__slow_delayed_rectifier_potassium_current_xs_gate__xs; // 1 / second + const double d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs_gate__xs = 0.001 * var_slow_delayed_rectifier_potassium_current_xs_gate__xs_orig_deriv; // 1 / millisecond + const double var_sodium_background_current__g_bna = 0.00059999999999999995; // microS + const double var_sodium_background_current__i_b_Na = (-var_reversal_potentials__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_bna; // nanoA + const double var_sodium_calcium_exchanger__FRiNaCa = 0.001; // dimensionless + const double var_sodium_calcium_exchanger__d_NaCa = 0; // dimensionless + const double var_sodium_calcium_exchanger__gamma = 0.5; // dimensionless + const double var_sodium_calcium_exchanger__n_NaCa = 3; // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa_cyt = (1 - var_sodium_calcium_exchanger__FRiNaCa) * (pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6] * exp((-2 + var_sodium_calcium_exchanger__n_NaCa) * var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchanger__gamma / (var_membrane__R * var_membrane__T)) - pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp((-1 + var_sodium_calcium_exchanger__gamma) * (-2 + var_sodium_calcium_exchanger__n_NaCa) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[18] / ((1 + 144.92753623188406 * var_chaste_interface__intracellular_calcium_concentration__Ca_i) * (1 + (pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i + pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6]) * var_sodium_calcium_exchanger__d_NaCa)); // nanoA + const double var_sodium_calcium_exchanger__i_NaCa_ds = (pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6] * exp((-2 + var_sodium_calcium_exchanger__n_NaCa) * var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchanger__gamma / (var_membrane__R * var_membrane__T)) - pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds * exp((-1 + var_sodium_calcium_exchanger__gamma) * (-2 + var_sodium_calcium_exchanger__n_NaCa) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_sodium_calcium_exchanger__FRiNaCa * mParameters[18] / ((1 + 144.92753623188406 * var_chaste_interface__intracellular_calcium_concentration__Ca_ds) * (1 + (pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds + pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6]) * var_sodium_calcium_exchanger__d_NaCa)); // nanoA + const double var_intracellular_calcium_concentration__Ca_i_orig_deriv = -var_intracellular_calcium_concentration__Ca_Calmod_orig_deriv - var_intracellular_calcium_concentration__Ca_Trop_orig_deriv - var_sarcoplasmic_reticulum_calcium_pump__i_up + var_calcium_release__i_rel * var_intracellular_calcium_concentration__V_rel_ratio / var_intracellular_calcium_concentration__V_i_ratio + var_chaste_interface__intracellular_calcium_concentration__Ca_ds * var_intracellular_calcium_concentration__Kdecay * var_intracellular_calcium_concentration__V_ds_ratio - 0.5 * (-2 * var_sodium_calcium_exchanger__i_NaCa_cyt - 2 * var_sodium_calcium_exchanger__i_NaCa_ds + var_L_type_Ca_channel__i_Ca_L_Ca_cyt + var_calcium_background_current__i_b_Ca) / (var_intracellular_calcium_concentration__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_i = 0.001 * var_intracellular_calcium_concentration__Ca_i_orig_deriv; // millimolar / millisecond + const double var_sodium_potassium_pump__K_mK = 1; // millimolar + const double var_sodium_potassium_pump__K_mNa = 40; // millimolar + const double var_sodium_potassium_pump__i_NaK_max = 0.69999999999999996; // nanoA + const double var_sodium_potassium_pump__i_NaK = mParameters[7] * var_chaste_interface__intracellular_sodium_concentration__Na_i * var_sodium_potassium_pump__i_NaK_max / ((mParameters[7] + var_sodium_potassium_pump__K_mK) * (var_chaste_interface__intracellular_sodium_concentration__Na_i + var_sodium_potassium_pump__K_mNa)); // nanoA + const double var_intracellular_sodium_concentration__Na_i_orig_deriv = -1 * (3 * var_sodium_calcium_exchanger__i_NaCa_cyt + 3 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_Ca_L_Na_cyt + var_L_type_Ca_channel__i_Ca_L_Na_ds + var_fast_sodium_current__i_Na + var_persistent_sodium_current__i_p_Na + var_sodium_background_current__i_b_Na) * mParameters[5] / (var_intracellular_calcium_concentration__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_sodium_concentration__Na_i = 0.001 * var_intracellular_sodium_concentration__Na_i_orig_deriv; // millimolar / millisecond + const double var_time_independent_potassium_current__K_mk1 = 10; // millimolar + const double var_time_independent_potassium_current__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[7] * mParameters[14] / ((1 + exp(1.25 * (-10 - var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * (mParameters[7] + var_time_independent_potassium_current__K_mk1)); // nanoA + const double var_transient_outward_current__g_tos = 0; // dimensionless + const double var_transient_outward_current_r_gate__r_orig_deriv = 333 / (1 + exp(-0.80000000000000004 - 0.20000000000000001 * var_chaste_interface__membrane__V)) - 333 * var_chaste_interface__transient_outward_current_r_gate__r; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_current_r_gate__r = 0.001 * var_transient_outward_current_r_gate__r_orig_deriv; // 1 / millisecond + const double var_transient_outward_current_s_gate__alpha_s = 0.033000000000000002 * exp(-0.058823529411764705 * var_chaste_interface__membrane__V); // per_second + const double var_transient_outward_current_s_gate__beta_s = 33 / (1 + exp(-1.25 - 0.125 * var_chaste_interface__membrane__V)); // per_second + const double var_transient_outward_current__i_to = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * ((1 - var_transient_outward_current__g_tos) * var_chaste_interface__transient_outward_current_s_gate__s + var_transient_outward_current__g_tos) * mParameters[19] * var_chaste_interface__transient_outward_current_r_gate__r; // nanoA + const double var_intracellular_potassium_concentration__K_i_orig_deriv = -1 * (-2 * var_sodium_potassium_pump__i_NaK + var_L_type_Ca_channel__i_Ca_L_K_cyt + var_L_type_Ca_channel__i_Ca_L_K_ds + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_slow_delayed_rectifier_potassium_current__i_Ks + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) * mParameters[5] / (var_intracellular_calcium_concentration__V_i * var_membrane__F); // millimolar / second + const double d_dt_chaste_interface_var_intracellular_potassium_concentration__K_i = 0.001 * var_intracellular_potassium_concentration__K_i_orig_deriv; // millimolar / millisecond + const double var_transient_outward_current_s_gate__s_orig_deriv = (1 - var_chaste_interface__transient_outward_current_s_gate__s) * var_transient_outward_current_s_gate__alpha_s - var_transient_outward_current_s_gate__beta_s * var_chaste_interface__transient_outward_current_s_gate__s; // 1 / second + const double d_dt_chaste_interface_var_transient_outward_current_s_gate__s = 0.001 * var_transient_outward_current_s_gate__s_orig_deriv; // 1 / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_membrane__i_Stim = 1000 * mParameters[10] * var_membrane__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // nanoA + const double var_membrane__V_orig_deriv = -1 * (var_L_type_Ca_channel__i_Ca_L_Ca_cyt + var_L_type_Ca_channel__i_Ca_L_Ca_ds + var_L_type_Ca_channel__i_Ca_L_K_cyt + var_L_type_Ca_channel__i_Ca_L_K_ds + var_L_type_Ca_channel__i_Ca_L_Na_cyt + var_L_type_Ca_channel__i_Ca_L_Na_ds + var_calcium_background_current__i_b_Ca + var_fast_sodium_current__i_Na + var_membrane__i_Stim + var_persistent_sodium_current__i_p_Na + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_slow_delayed_rectifier_potassium_current__i_Ks + var_sodium_background_current__i_b_Na + var_sodium_calcium_exchanger__i_NaCa_cyt + var_sodium_calcium_exchanger__i_NaCa_ds + var_sodium_potassium_pump__i_NaK + var_time_independent_potassium_current__i_K1 + var_transient_outward_current__i_to) / mParameters[10]; // millivolt / second + d_dt_chaste_interface_var_membrane__V = 0.001 * var_membrane__V_orig_deriv; // millivolt / millisecond + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_i; + rDY[2] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr1_gate__xr1; + rDY[3] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current_xr2_gate__xr2; + rDY[4] = d_dt_chaste_interface_var_slow_delayed_rectifier_potassium_current_xs_gate__xs; + rDY[5] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + rDY[6] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + rDY[7] = d_dt_chaste_interface_var_L_type_Ca_channel_d_gate__d; + rDY[8] = d_dt_chaste_interface_var_L_type_Ca_channel_f_gate__f; + rDY[9] = d_dt_chaste_interface_var_L_type_Ca_channel_f2_gate__f2; + rDY[10] = d_dt_chaste_interface_var_L_type_Ca_channel_f2ds_gate__f2ds; + rDY[11] = d_dt_chaste_interface_var_transient_outward_current_s_gate__s; + rDY[12] = d_dt_chaste_interface_var_transient_outward_current_r_gate__r; + rDY[13] = d_dt_chaste_interface_var_calcium_release__ActFrac; + rDY[14] = d_dt_chaste_interface_var_calcium_release__ProdFrac; + rDY[15] = d_dt_chaste_interface_var_intracellular_sodium_concentration__Na_i; + rDY[16] = d_dt_chaste_interface_var_intracellular_potassium_concentration__K_i; + rDY[17] = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_ds; + rDY[18] = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_up; + rDY[19] = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_rel; + rDY[20] = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_Calmod; + rDY[21] = d_dt_chaste_interface_var_intracellular_calcium_concentration__Ca_Trop; + } + + std::vector Chaste_CG::ComputeDerivedQuantities(double var_chaste_interface__environment__time_converted, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -92.849333 + double var_chaste_interface__intracellular_calcium_concentration__Ca_i = rY[1]; + // Units: millimolar; Initial value: 1.4e-05 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr1_gate__xr1 = rY[2]; + // Units: dimensionless; Initial value: 1.03e-05 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr2_gate__xr2 = rY[3]; + // Units: dimensionless; Initial value: 2e-07 + double var_chaste_interface__slow_delayed_rectifier_potassium_current_xs_gate__xs = rY[4]; + // Units: dimensionless; Initial value: 0.001302 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[5]; + // Units: dimensionless; Initial value: 0.0016203 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[6]; + // Units: dimensionless; Initial value: 0.9944036 + double var_chaste_interface__L_type_Ca_channel_d_gate__d = rY[7]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__L_type_Ca_channel_f_gate__f = rY[8]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__L_type_Ca_channel_f2_gate__f2 = rY[9]; + // Units: dimensionless; Initial value: 0.9349197 + double var_chaste_interface__L_type_Ca_channel_f2ds_gate__f2ds = rY[10]; + // Units: dimensionless; Initial value: 0.9651958 + double var_chaste_interface__transient_outward_current_s_gate__s = rY[11]; + // Units: dimensionless; Initial value: 0.9948645 + double var_chaste_interface__transient_outward_current_r_gate__r = rY[12]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_release__ActFrac = rY[13]; + // Units: dimensionless; Initial value: 0.0042614 + double var_chaste_interface__intracellular_sodium_concentration__Na_i = rY[15]; + // Units: millimolar; Initial value: 7.3321223 + double var_chaste_interface__intracellular_potassium_concentration__K_i = rY[16]; + // Units: millimolar; Initial value: 136.5644281 + double var_chaste_interface__intracellular_calcium_concentration__Ca_ds = rY[17]; + // Units: millimolar; Initial value: 1.88e-05 + double var_chaste_interface__intracellular_calcium_concentration__Ca_rel = rY[19]; + // Units: millimolar; Initial value: 0.4481927 + + // Mathematics + const double var_L_type_Ca_channel__FrICa = 1; // dimensionless + const double var_L_type_Ca_channel__P_CaK = 0.002; // dimensionless + const double var_L_type_Ca_channel__P_CaNa = 0.01; // dimensionless + const double var_L_type_Ca_channel_f_gate__delta_f = 0.0001; // millivolt + const double var_calcium_release__i_rel = (pow(var_chaste_interface__calcium_release__ActFrac, 2) * mParameters[1] / pow((0.25 + var_chaste_interface__calcium_release__ActFrac), 2) + mParameters[0]) * var_chaste_interface__intracellular_calcium_concentration__Ca_rel; // millimolar_per_second + const double var_membrane__F = 96485.341499999995; // coulomb_per_mole + const double var_membrane__R = 8314.4719999999998; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_L_type_Ca_channel__i_Ca_L_Ca_cyt = 4 * (1 - var_L_type_Ca_channel__FrICa) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(100 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[6] * exp(2 * (50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2_gate__f2 * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp(2 * (50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_Ca_ds = 4 * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp(100 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[6] * exp(2 * (50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__FrICa * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2ds_gate__f2ds * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp(2 * (50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_K_cyt = (1 - var_L_type_Ca_channel__FrICa) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[7] * exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_CaK * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2_gate__f2 * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_K_ds = (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_potassium_concentration__K_i * exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[7] * exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__FrICa * var_L_type_Ca_channel__P_CaK * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2ds_gate__f2ds * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_Na_cyt = (1 - var_L_type_Ca_channel__FrICa) * (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[8] * exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__P_CaNa * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2_gate__f2 * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L_Na_ds = (-50 + var_chaste_interface__membrane__V) * (var_chaste_interface__intracellular_sodium_concentration__Na_i * exp(50 * var_membrane__F / (var_membrane__R * var_membrane__T)) - mParameters[8] * exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_L_type_Ca_channel__FrICa * var_L_type_Ca_channel__P_CaNa * mParameters[9] * var_chaste_interface__L_type_Ca_channel_d_gate__d * var_chaste_interface__L_type_Ca_channel_f2ds_gate__f2ds * var_chaste_interface__L_type_Ca_channel_f_gate__f * var_membrane__F / ((1 - exp((50 - var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * var_membrane__R * var_membrane__T); // nanoA + const double var_L_type_Ca_channel__i_Ca_L = var_L_type_Ca_channel__i_Ca_L_Ca_cyt + var_L_type_Ca_channel__i_Ca_L_Ca_ds + var_L_type_Ca_channel__i_Ca_L_K_cyt + var_L_type_Ca_channel__i_Ca_L_K_ds + var_L_type_Ca_channel__i_Ca_L_Na_cyt + var_L_type_Ca_channel__i_Ca_L_Na_ds; // nanoA + const double var_L_type_Ca_channel__i_Ca_L_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_L_type_Ca_channel__i_Ca_L / mParameters[10]; // uA_per_cm2 + const double var_L_type_Ca_channel_f_gate__E0_f = 34 + var_chaste_interface__membrane__V; // millivolt + const double var_L_type_Ca_channel_f_gate__alpha_f = ((var_L_type_Ca_channel_f_gate__delta_f > fabs(var_L_type_Ca_channel_f_gate__E0_f)) ? (25) : (6.25 * var_L_type_Ca_channel_f_gate__E0_f / (-1 + exp(0.25 * var_L_type_Ca_channel_f_gate__E0_f)))); // per_second + const double var_L_type_Ca_channel_f_gate__beta_f = 12 / (1 + exp(-8.5 - 0.25 * var_chaste_interface__membrane__V)); // per_second + const double var_L_type_Ca_channel_f_gate__tau_f = 1 / (var_L_type_Ca_channel_f_gate__alpha_f + var_L_type_Ca_channel_f_gate__beta_f); // second + const double var_fast_sodium_current_h_gate__alpha_h = 20 * exp(-9.375 + 0.125 * mParameters[13] - 0.125 * var_chaste_interface__membrane__V); // per_second + const double var_fast_sodium_current_h_gate__beta_h = 2000 / (1 + 320 * exp(-7.5 + 0.10000000000000001 * mParameters[13] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_second + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // second + const double var_membrane__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time_converted); // uA_per_cm2 + const double var_reversal_potentials__E_K = var_membrane__R * var_membrane__T * log(mParameters[7] / var_chaste_interface__intracellular_potassium_concentration__K_i) / var_membrane__F; // millivolt + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = 1 * (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * (mParameters[15] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr1_gate__xr1 + mParameters[16] * var_chaste_interface__rapid_delayed_rectifier_potassium_current_xr2_gate__xr2) / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__membrane__V)); // nanoA + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr / mParameters[10]; // uA_per_cm2 + const double var_reversal_potentials__E_mh = var_membrane__R * var_membrane__T * log((1 * mParameters[8] + 0.12 * mParameters[7]) / (1 * var_chaste_interface__intracellular_sodium_concentration__Na_i + 0.12 * var_chaste_interface__intracellular_potassium_concentration__K_i)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_reversal_potentials__E_mh + var_chaste_interface__membrane__V) * mParameters[11] * var_chaste_interface__fast_sodium_current_h_gate__h; // nanoA + const double var_fast_sodium_current__i_Na_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na / mParameters[10]; // uA_per_cm2 + const double var_reversal_potentials__P_kna = 0.029999999999999999; // dimensionless + const double var_reversal_potentials__E_Ks = var_membrane__R * var_membrane__T * log((mParameters[8] * var_reversal_potentials__P_kna + mParameters[7]) / (var_chaste_interface__intracellular_sodium_concentration__Na_i * var_reversal_potentials__P_kna + var_chaste_interface__intracellular_potassium_concentration__K_i)) / var_membrane__F; // millivolt + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current_xs_gate__xs, 2) * (-var_reversal_potentials__E_Ks + var_chaste_interface__membrane__V) * mParameters[17]; // nanoA + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks / mParameters[10]; // uA_per_cm2 + const double var_sodium_calcium_exchanger__FRiNaCa = 0.001; // dimensionless + const double var_sodium_calcium_exchanger__d_NaCa = 0; // dimensionless + const double var_sodium_calcium_exchanger__gamma = 0.5; // dimensionless + const double var_sodium_calcium_exchanger__n_NaCa = 3; // dimensionless + const double var_sodium_calcium_exchanger__i_NaCa_cyt = (1 - var_sodium_calcium_exchanger__FRiNaCa) * (pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6] * exp((-2 + var_sodium_calcium_exchanger__n_NaCa) * var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchanger__gamma / (var_membrane__R * var_membrane__T)) - pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i * exp((-1 + var_sodium_calcium_exchanger__gamma) * (-2 + var_sodium_calcium_exchanger__n_NaCa) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[18] / ((1 + 144.92753623188406 * var_chaste_interface__intracellular_calcium_concentration__Ca_i) * (1 + (pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_i + pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6]) * var_sodium_calcium_exchanger__d_NaCa)); // nanoA + const double var_sodium_calcium_exchanger__i_NaCa_ds = (pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6] * exp((-2 + var_sodium_calcium_exchanger__n_NaCa) * var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchanger__gamma / (var_membrane__R * var_membrane__T)) - pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds * exp((-1 + var_sodium_calcium_exchanger__gamma) * (-2 + var_sodium_calcium_exchanger__n_NaCa) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * var_sodium_calcium_exchanger__FRiNaCa * mParameters[18] / ((1 + 144.92753623188406 * var_chaste_interface__intracellular_calcium_concentration__Ca_ds) * (1 + (pow(mParameters[8], var_sodium_calcium_exchanger__n_NaCa) * var_chaste_interface__intracellular_calcium_concentration__Ca_ds + pow(var_chaste_interface__intracellular_sodium_concentration__Na_i, var_sodium_calcium_exchanger__n_NaCa) * mParameters[6]) * var_sodium_calcium_exchanger__d_NaCa)); // nanoA + const double var_sodium_calcium_exchanger__i_NaCa = var_sodium_calcium_exchanger__i_NaCa_cyt + var_sodium_calcium_exchanger__i_NaCa_ds; // nanoA + const double var_sodium_calcium_exchanger__i_NaCa_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchanger__i_NaCa / mParameters[10]; // uA_per_cm2 + const double var_time_independent_potassium_current__K_mk1 = 10; // millimolar + const double var_time_independent_potassium_current__i_K1 = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[7] * mParameters[14] / ((1 + exp(1.25 * (-10 - var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * var_membrane__F / (var_membrane__R * var_membrane__T))) * (mParameters[7] + var_time_independent_potassium_current__K_mk1)); // nanoA + const double var_time_independent_potassium_current__i_K1_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1 / mParameters[10]; // uA_per_cm2 + const double var_transient_outward_current__g_tos = 0; // dimensionless + const double var_transient_outward_current__i_to = (-var_reversal_potentials__E_K + var_chaste_interface__membrane__V) * ((1 - var_transient_outward_current__g_tos) * var_chaste_interface__transient_outward_current_s_gate__s + var_transient_outward_current__g_tos) * mParameters[19] * var_chaste_interface__transient_outward_current_r_gate__r; // nanoA + const double var_transient_outward_current__i_to_converted = 0.001 * HeartConfig::Instance()->GetCapacitance() * var_transient_outward_current__i_to / mParameters[10]; // uA_per_cm2 + + std::vector dqs(12); + dqs[0] = var_calcium_release__i_rel; + dqs[1] = var_L_type_Ca_channel__i_Ca_L_converted; + dqs[2] = var_L_type_Ca_channel_f_gate__tau_f; + dqs[3] = var_fast_sodium_current__i_Na_converted; + dqs[4] = var_fast_sodium_current_h_gate__tau_h; + dqs[5] = var_time_independent_potassium_current__i_K1_converted; + dqs[6] = var_rapid_delayed_rectifier_potassium_current__i_Kr_converted; + dqs[7] = var_slow_delayed_rectifier_potassium_current__i_Ks_converted; + dqs[8] = var_sodium_calcium_exchanger__i_NaCa_converted; + dqs[9] = var_membrane__i_Stim_converted; + dqs[10] = var_transient_outward_current__i_to_converted; + dqs[11] = var_chaste_interface__environment__time_converted; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "noble_model_1998"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-92.849333); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.4e-05); + + // rY[2]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current_xr1_gate__xr1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.03e-05); + + // rY[3]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current_xr2_gate__xr2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2e-07); + + // rY[4]: + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current_xs_gate__xs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001302); + + // rY[5]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0016203); + + // rY[6]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9944036); + + // rY[7]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[8]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9349197); + + // rY[10]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9651958); + + // rY[11]: + this->mVariableNames.push_back("transient_outward_current_s_gate__s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9948645); + + // rY[12]: + this->mVariableNames.push_back("transient_outward_current_r_gate__r"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[13]: + this->mVariableNames.push_back("calcium_release__ActFrac"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0042614); + + // rY[14]: + this->mVariableNames.push_back("calcium_release__ProdFrac"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.4068154); + + // rY[15]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(7.3321223); + + // rY[16]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(136.5644281); + + // rY[17]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.88e-05); + + // rY[18]: + this->mVariableNames.push_back("intracellular_calcium_concentration__Ca_up"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.4531889); + + // rY[19]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.4481927); + + // rY[20]: + this->mVariableNames.push_back("intracellular_calcium_concentration__Ca_Calmod"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0005555); + + // rY[21]: + this->mVariableNames.push_back("intracellular_calcium_concentration__Ca_Trop"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.0003542); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_second"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_second"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_release_kmcacyt"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("SR_release_kmcads"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[4]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[5]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[8]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("nanoA_per_millimolar"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance1"); + this->mParameterUnits.push_back("microS"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance2"); + this->mParameterUnits.push_back("microS"); + + // mParameters[17]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // mParameters[18]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("nanoA"); + + // mParameters[19]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("microS"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_second"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("second"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Chaste_CG) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Chaste_CG(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables--sympy_1_13.cpp new file mode 100644 index 00000000..c3d03bd7 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/beeler_reuter_model_1977_lookup_tables--sympy_1_13.cpp @@ -0,0 +1,842 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: beeler_reuter_model_1977 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NormalOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "beeler_reuter_model_1977_lookup_tables.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + +class Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + if (_lookup_table_1) + { + delete[] _lookup_table_1; + _lookup_table_1 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<17; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + double* _lookup_1_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<1; j++) + { + const double y1 = _lookup_table_1[i][j]; + const double y2 = _lookup_table_1[i+1][j]; + _lookup_table_1_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_1_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + const double * IndexTable1(double var_chaste_interface__slow_inward_current__Cai) + { + const double _offset_1 = var_chaste_interface__slow_inward_current__Cai - mTableMins[1]; + const double _offset_1_over_table_step = _offset_1 * mTableStepInverses[1]; + const unsigned _table_index_1 = (unsigned)(_offset_1_over_table_step); + const double _factor_1 = _offset_1_over_table_step - _table_index_1; + const double* const _lt_1_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->_lookup_1_row(_table_index_1, _factor_1); + return _lt_1_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__VmTableMaxs[1] || var_chaste_interface__slow_inward_current__Cai= -9.9999999999999995e-8) && (0.92000000000000004 + 0.040000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (7.3000000000000007 + 0.10000000000000001 * var_chaste_interface__membrane__V) : (-5 * (0.92000000000000004 + 0.040000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-0.92000000000000004 - 0.040000000000000001 * var_chaste_interface__membrane__V)))); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][2] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return 1 / (1 + exp(0.35997120230381568 - 0.071994240460763137 * var_chaste_interface__membrane__V)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][3] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return exp(0.050000000000000003 - 0.01 * var_chaste_interface__membrane__V); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][4] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return 1 / (1 + exp(2.2000000000000002 + 0.050000000000000003 * var_chaste_interface__membrane__V)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][5] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return exp(-0.74576271186440679 - 0.016949152542372881 * var_chaste_interface__membrane__V); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][6] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return 1 / (1 + exp(4.197901049475262 + 0.14992503748125938 * var_chaste_interface__membrane__V)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][7] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return exp(-0.224 - 0.0080000000000000002 * var_chaste_interface__membrane__V); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][8] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return 1 / (1 + exp(-6 - 0.20000000000000001 * var_chaste_interface__membrane__V)); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][9] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return exp(-0.59999999999999998 - 0.02 * var_chaste_interface__membrane__V); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + + _lookup_table_0[i][10] = val; + } + + for (unsigned i=0 ; i<_table_size_0; i++) + { + auto f = [](double var_chaste_interface__membrane__V) { + return (((4.7000000000000002 + 0.10000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (4.7000000000000002 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (33.5 + 0.5 * var_chaste_interface__membrane__V) : (-10 * (4.7000000000000002 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-4.7000000000000002 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[11] < 2){ + double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[11] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[11] >= 2){ + EXCEPTION("Lookup table 11 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[17]; + + // Row lookup methods memory + double _lookup_table_1_row[1]; + + // Lookup tables + double (*_lookup_table_0)[17]; + int _lookup_table_0_num_misshit_piecewise[17] = {0}; + + // Lookup tables + double (*_lookup_table_1)[1]; + int _lookup_table_1_num_misshit_piecewise[1] = {0}; + +}; + +std::shared_ptr Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::mpInstance; + + + boost::shared_ptr Cellbeeler_reuter_model_1977FromCellMLOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__stimulus_protocol__IstimAmplitude_converted = 50.000000000000007; // uA_per_cm2 + const double var_chaste_interface__stimulus_protocol__IstimPeriod = 1000; // ms + const double var_chaste_interface__stimulus_protocol__IstimPulseDuration = 1; // ms + const double var_chaste_interface__stimulus_protocol__IstimStart = 10; // ms + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__stimulus_protocol__IstimAmplitude_converted), + var_chaste_interface__stimulus_protocol__IstimPulseDuration, + var_chaste_interface__stimulus_protocol__IstimPeriod, + var_chaste_interface__stimulus_protocol__IstimStart + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellbeeler_reuter_model_1977FromCellMLOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellbeeler_reuter_model_1977FromCellMLOpt::Cellbeeler_reuter_model_1977FromCellMLOpt(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCell( + pSolver, + 8, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 0.00089999999999999998; // (var_slow_inward_current__g_s) [mS_per_mm2] + this->mParameters[1] = 0.01; // (var_membrane__C) [uF_per_mm2] + this->mParameters[2] = 0.040000000000000001; // (var_sodium_current__g_Na) [mS_per_mm2] + this->mParameters[3] = 0; // (var_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[4] = 0; // (var_sodium_current__shift_INa_inact) [mV] + this->mParameters[5] = 0.0035000000000000001; // (var_time_independent_outward_current__G_K1) [uA_per_mm2] + this->mParameters[6] = 0.0080000000000000002; // (var_time_dependent_outward_current__G_Kr) [uA_per_mm2] + this->mParameters[7] = 50; // (var_sodium_current__E_Na) [mV] + } + + Cellbeeler_reuter_model_1977FromCellMLOpt::~Cellbeeler_reuter_model_1977FromCellMLOpt() + { + } + + AbstractLookupTableCollection* Cellbeeler_reuter_model_1977FromCellMLOpt::GetLookupTableCollection() + { + return Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance(); + } + + void Cellbeeler_reuter_model_1977FromCellMLOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 8; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellbeeler_reuter_model_1977FromCellMLOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Lookup table indexing + const bool _oob_1 = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->CheckIndex1(var_chaste_interface__slow_inward_current__Cai); +// LCOV_EXCL_START + if (_oob_1) + EXCEPTION(DumpState("cytosolic_calcium_concentration outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_1_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->IndexTable1(var_chaste_interface__slow_inward_current__Cai); + + const double var_slow_inward_current__i_s_converted = 100.00000000000001 * (-7.6990712032745758 + _lt_1_row[0] + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_cm2 + const double var_sodium_current__i_Na_converted = 100.00000000000001 * (3.0000000000000001e-5 + pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j) * (-mParameters[7] + var_chaste_interface__membrane__V); // uA_per_cm2 + const double var_time_dependent_outward_current__i_x1_converted = 100.00000000000001 * _lt_0_row[0] * (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1; // uA_per_cm2 + const double var_time_independent_outward_current__i_K1_converted = 100.00000000000001 * (_lt_0_row[2]) * mParameters[5]; // uA_per_cm2 + const double var_chaste_interface__i_ionic = var_slow_inward_current__i_s_converted + var_sodium_current__i_Na_converted + var_time_dependent_outward_current__i_x1_converted + var_time_independent_outward_current__i_K1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellbeeler_reuter_model_1977FromCellMLOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Lookup table indexing + const bool _oob_1 = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->CheckIndex1(var_chaste_interface__slow_inward_current__Cai); +// LCOV_EXCL_START + if (_oob_1) + EXCEPTION(DumpState("cytosolic_calcium_concentration outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_1_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->IndexTable1(var_chaste_interface__slow_inward_current__Cai); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double d_dt_chaste_interface_var_slow_inward_current_d_gate__d = 0.095000000000000001 * _lt_0_row[3] * (1 - var_chaste_interface__slow_inward_current_d_gate__d) * _lt_0_row[4] - 0.070000000000000007 * _lt_0_row[5] * var_chaste_interface__slow_inward_current_d_gate__d * _lt_0_row[6]; // 1 / ms + const double d_dt_chaste_interface_var_slow_inward_current_f_gate__f = 0.012 * _lt_0_row[7] * (1 - var_chaste_interface__slow_inward_current_f_gate__f) * _lt_0_row[8] - 0.0064999999999999997 * _lt_0_row[9] * var_chaste_interface__slow_inward_current_f_gate__f * _lt_0_row[10]; // 1 / ms + const double var_slow_inward_current__i_s = (-7.6990712032745758 + _lt_1_row[0] + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 + const double d_dt_chaste_interface_var_slow_inward_current__Cai = 7.0000000000000007e-6 - 0.070000000000000007 * var_chaste_interface__slow_inward_current__Cai - 0.01 * var_slow_inward_current__i_s; // concentration_units / ms + const double var_sodium_current_h_gate__alpha_h = 0.126 * exp(-19.25 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V); // per_ms + const double var_sodium_current_h_gate__beta_h = 1.7 / (1 + exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V)); // per_ms + const double d_dt_chaste_interface_var_sodium_current_h_gate__h = (1 * var_sodium_current_h_gate__alpha_h + 1 * var_sodium_current_h_gate__beta_h) * (-var_chaste_interface__sodium_current_h_gate__h + 0.01 * mParameters[3] + (1 - 0.01 * mParameters[3]) * var_sodium_current_h_gate__alpha_h / (var_sodium_current_h_gate__alpha_h + var_sodium_current_h_gate__beta_h)); // 1 / ms + const double var_sodium_current_j_gate__alpha_j = 0.055 * exp(-19.5 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V) / (1 + exp(-15.600000000000001 + 0.20000000000000001 * mParameters[4] - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__beta_j = 0.29999999999999999 / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[4] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double d_dt_chaste_interface_var_sodium_current_j_gate__j = (1 * var_sodium_current_j_gate__alpha_j + 1 * var_sodium_current_j_gate__beta_j) * (-var_chaste_interface__sodium_current_j_gate__j + 0.01 * mParameters[3] + (1 - 0.01 * mParameters[3]) * var_sodium_current_j_gate__alpha_j / (var_sodium_current_j_gate__alpha_j + var_sodium_current_j_gate__beta_j)); // 1 / ms + const double d_dt_chaste_interface_var_sodium_current_m_gate__m = (1 - var_chaste_interface__sodium_current_m_gate__m) * _lt_0_row[11] - 40 * var_chaste_interface__sodium_current_m_gate__m * _lt_0_row[12]; // 1 / ms + const double d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1 = 0.00050000000000000001 * _lt_0_row[13] * (1 - var_chaste_interface__time_dependent_outward_current_x1_gate__x1) * _lt_0_row[14] - 0.0012999999999999999 * _lt_0_row[15] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1 * _lt_0_row[16]; // 1 / ms + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + d_dt_chaste_interface_var_membrane__V = (-var_slow_inward_current__i_s - 0.0099999999999999985 * GetIntracellularAreaStimulus(var_chaste_interface__environment__time) - (3.0000000000000001e-5 + pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j) * (-mParameters[7] + var_chaste_interface__membrane__V) - (_lt_0_row[2]) * mParameters[5] - _lt_0_row[0] * (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1) / mParameters[1]; // mV / ms + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_slow_inward_current__Cai; + rDY[2] = d_dt_chaste_interface_var_sodium_current_m_gate__m; + rDY[3] = d_dt_chaste_interface_var_sodium_current_h_gate__h; + rDY[4] = d_dt_chaste_interface_var_sodium_current_j_gate__j; + rDY[5] = d_dt_chaste_interface_var_slow_inward_current_d_gate__d; + rDY[6] = d_dt_chaste_interface_var_slow_inward_current_f_gate__f; + rDY[7] = d_dt_chaste_interface_var_time_dependent_outward_current_x1_gate__x1; + } + + std::vector Cellbeeler_reuter_model_1977FromCellMLOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -84.624 + double var_chaste_interface__slow_inward_current__Cai = rY[1]; + // Units: concentration_units; Initial value: 0.0001 + double var_chaste_interface__sodium_current_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.011 + double var_chaste_interface__sodium_current_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.988 + double var_chaste_interface__sodium_current_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.975 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[5]; + // Units: dimensionless; Initial value: 0.003 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[6]; + // Units: dimensionless; Initial value: 0.994 + double var_chaste_interface__time_dependent_outward_current_x1_gate__x1 = rY[7]; + // Units: dimensionless; Initial value: 0.0001 + + // Lookup table indexing + const bool _oob_0 = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellbeeler_reuter_model_1977FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + + // Mathematics + const double var_slow_inward_current__E_s = 7.6990712032745758 - 13.028700000000001 * log(var_chaste_interface__slow_inward_current__Cai); // mV + const double var_slow_inward_current__i_s = (-var_slow_inward_current__E_s + var_chaste_interface__membrane__V) * mParameters[0] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // uA_per_mm2 + const double var_slow_inward_current__i_s_converted = 100.00000000000001 * var_slow_inward_current__i_s; // uA_per_cm2 + const double var_sodium_current__g_Nac = 3.0000000000000001e-5; // mS_per_mm2 + const double var_sodium_current_h_gate__alpha_h = 0.126 * exp(-19.25 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V); // per_ms + const double var_sodium_current_h_gate__beta_h = 1.7 / (1 + exp(-1.845 + 0.082000000000000003 * mParameters[4] - 0.082000000000000003 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_h_gate__tau_h = 1 / (var_sodium_current_h_gate__alpha_h + var_sodium_current_h_gate__beta_h); // ms + const double var_sodium_current_j_gate__alpha_j = 0.055 * exp(-19.5 + 0.25 * mParameters[4] - 0.25 * var_chaste_interface__membrane__V) / (1 + exp(-15.600000000000001 + 0.20000000000000001 * mParameters[4] - 0.20000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__beta_j = 0.29999999999999999 / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[4] - 0.10000000000000001 * var_chaste_interface__membrane__V)); // per_ms + const double var_sodium_current_j_gate__tau_j = 1 / (var_sodium_current_j_gate__alpha_j + var_sodium_current_j_gate__beta_j); // ms + const double var_sodium_current__i_Na = (-mParameters[7] + var_chaste_interface__membrane__V) * (pow(var_chaste_interface__sodium_current_m_gate__m, 3) * mParameters[2] * var_chaste_interface__sodium_current_h_gate__h * var_chaste_interface__sodium_current_j_gate__j + var_sodium_current__g_Nac); // uA_per_mm2 + const double var_sodium_current__i_Na_converted = 100.00000000000001 * var_sodium_current__i_Na; // uA_per_cm2 + const double var_stimulus_protocol__Istim_converted = -GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_time_dependent_outward_current__i_x1 = _lt_0_row[0] * (_lt_0_row[1]) * mParameters[6] * var_chaste_interface__time_dependent_outward_current_x1_gate__x1; // uA_per_mm2 + const double var_time_dependent_outward_current__i_x1_converted = 100.00000000000001 * var_time_dependent_outward_current__i_x1; // uA_per_cm2 + const double var_time_independent_outward_current__B = -0.040000000000000001; // per_mV + const double var_time_independent_outward_current__A = -0.20000000000000001 / var_time_independent_outward_current__B; // dimensionless + const double var_time_independent_outward_current__v0 = -23; // mV + const double var_time_independent_outward_current__U = (-var_time_independent_outward_current__v0 + var_chaste_interface__membrane__V) * var_time_independent_outward_current__B; // dimensionless + const double var_time_independent_outward_current__temp_current = (((var_time_independent_outward_current__U >= -9.9999999999999995e-8) && (var_time_independent_outward_current__U <= 9.9999999999999995e-8)) ? ((1 - 0.5 * var_time_independent_outward_current__U) * var_time_independent_outward_current__A) : (var_time_independent_outward_current__A * var_time_independent_outward_current__U / (-1 + exp(var_time_independent_outward_current__U)))); // dimensionless + const double var_time_independent_outward_current__i_K1 = (4 * (-1 + exp(3.3999999999999999 + 0.040000000000000001 * var_chaste_interface__membrane__V)) / (exp(2.1200000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V) + exp(4.2400000000000002 + 0.080000000000000002 * var_chaste_interface__membrane__V)) + var_time_independent_outward_current__temp_current) * mParameters[5]; // uA_per_mm2 + const double var_time_independent_outward_current__i_K1_converted = 100.00000000000001 * var_time_independent_outward_current__i_K1; // uA_per_cm2 + + std::vector dqs(8); + dqs[0] = var_slow_inward_current__i_s_converted; + dqs[1] = var_sodium_current__i_Na_converted; + dqs[2] = var_sodium_current_h_gate__tau_h; + dqs[3] = var_sodium_current_j_gate__tau_j; + dqs[4] = var_time_independent_outward_current__i_K1_converted; + dqs[5] = var_time_dependent_outward_current__i_x1_converted; + dqs[6] = var_stimulus_protocol__Istim_converted; + dqs[7] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "beeler_reuter_model_1977"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "ms"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-84.624); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("concentration_units"); + this->mInitialConditions.push_back(0.0001); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.011); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.988); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.975); + + // rY[5]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.003); + + // rY[6]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.994); + + // rY[7]: + this->mVariableNames.push_back("time_dependent_outward_current_x1_gate__x1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0001); + + // mParameters[0]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("mS_per_mm2"); + + // mParameters[1]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("uF_per_mm2"); + + // mParameters[2]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_mm2"); + + // mParameters[3]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("mV"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("uA_per_mm2"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("uA_per_mm2"); + + // mParameters[7]: + this->mParameterNames.push_back("sodium_reversal_potential"); + this->mParameterUnits.push_back("mV"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("ms"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellbeeler_reuter_model_1977FromCellMLOpt) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp new file mode 100644 index 00000000..27859cb0 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp @@ -0,0 +1,1443 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: aslanidi_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NormalOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "aslanidi_Purkinje_model_2009Opt.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractCardiacCellWithModifiers* Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt(p_solver, p_stimulus); +} + +bool Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::registered = ModelFactory::Register("aslanidi_Purkinje_model_2009", "NormalOpt", (ModelFactory::TCreateMethod)Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::CreateMethod); + +class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<35; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[35]; + + // Lookup tables + double (*_lookup_table_0)[35]; + int _lookup_table_0_num_misshit_piecewise[35] = {0}; + +}; + +std::shared_ptr Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 1; // millisecond + const double var_chaste_interface__membrane__stim_period = 800; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCellWithModifiers( + pSolver, + 30, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + // These will get initialised to DummyModifiers in the base class method. + this->AddModifier("JSR_calcium_concentration", + mp_JSR_calcium_concentration_modifier); + this->AddModifier("SR_leak_current_max", + mp_SR_leak_current_max_modifier); + this->AddModifier("SR_release_current", + mp_SR_release_current_modifier); + this->AddModifier("SR_release_current_max", + mp_SR_release_current_max_modifier); + this->AddModifier("SR_uptake_current_max", + mp_SR_uptake_current_max_modifier); + this->AddModifier("concentration_clamp_onoff", + mp_concentration_clamp_onoff_modifier); + this->AddModifier("cytosolic_calcium_concentration", + mp_cytosolic_calcium_concentration_modifier); + this->AddModifier("cytosolic_potassium_concentration", + mp_cytosolic_potassium_concentration_modifier); + this->AddModifier("cytosolic_sodium_concentration", + mp_cytosolic_sodium_concentration_modifier); + this->AddModifier("dyadic_space_calcium_concentration", + mp_dyadic_space_calcium_concentration_modifier); + this->AddModifier("extracellular_calcium_concentration", + mp_extracellular_calcium_concentration_modifier); + this->AddModifier("extracellular_potassium_concentration", + mp_extracellular_potassium_concentration_modifier); + this->AddModifier("extracellular_sodium_concentration", + mp_extracellular_sodium_concentration_modifier); + this->AddModifier("membrane_L_type_calcium_current", + mp_i_Ca_L__i_Ca_L_modifier); + this->AddModifier("membrane_L_type_calcium_current_conductance", + mp_membrane_L_type_calcium_current_conductance_modifier); + this->AddModifier("membrane_L_type_calcium_current_d_gate", + mp_membrane_L_type_calcium_current_d_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate", + mp_membrane_L_type_calcium_current_f2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate_tau", + mp_membrane_L_type_calcium_current_f2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate", + mp_membrane_L_type_calcium_current_fCa2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate_tau", + mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate", + mp_membrane_L_type_calcium_current_fCa_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate_tau", + mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate", + mp_membrane_L_type_calcium_current_f_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate_tau", + mp_membrane_L_type_calcium_current_f_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current", + mp_i_Na__i_Na_modifier); + this->AddModifier("membrane_fast_sodium_current_conductance", + mp_membrane_fast_sodium_current_conductance_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate", + mp_membrane_fast_sodium_current_h_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate_tau", + mp_membrane_fast_sodium_current_h_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate", + mp_membrane_fast_sodium_current_j_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate_tau", + mp_membrane_fast_sodium_current_j_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_m_gate", + mp_membrane_fast_sodium_current_m_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_reduced_inactivation", + mp_membrane_fast_sodium_current_reduced_inactivation_modifier); + this->AddModifier("membrane_fast_sodium_current_shift_inactivation", + mp_membrane_fast_sodium_current_shift_inactivation_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current", + mp_i_K1__i_K1_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current_conductance", + mp_membrane_inward_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current", + mp_i_Kr__i_Kr_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current_conductance", + mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current", + mp_i_Ks__i_Ks_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current_conductance", + mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current", + mp_i_NaCa__i_NaCa_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current_conductance", + mp_membrane_sodium_calcium_exchanger_current_conductance_modifier); + this->AddModifier("membrane_transient_outward_current", + mp_i_to_1__i_to_1_modifier); + this->AddModifier("membrane_transient_outward_current_conductance", + mp_membrane_transient_outward_current_conductance_modifier); + this->AddModifier("membrane_voltage", + mp_membrane_voltage_modifier); + this->mParameters[0] = 0.0043750000000000004; // (var_q_leak__q_leak_max) [millimolar_per_millisecond] + this->mParameters[1] = 3000; // (var_q_rel__g_rel_max) [per_millisecond] + this->mParameters[2] = 0.0043750000000000004; // (var_q_up__q_up_max) [millimolar_per_millisecond] + this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_model_parameters__Ca_o) [millimolar] + this->mParameters[5] = 5.4000000000000004; // (var_model_parameters__K_o) [millimolar] + this->mParameters[6] = 140; // (var_model_parameters__Na_o) [millimolar] + this->mParameters[7] = 0.3392328; // (var_i_Ca_L__g_Ca_L) [dimensionless] + this->mParameters[8] = 8; // (var_i_Na__g_Na) [milliS_per_microF] + this->mParameters[9] = 0; // (var_i_Na__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[10] = 0; // (var_i_Na__shift_INa_inact) [millivolt] + this->mParameters[11] = 0.25; // (var_i_K1__g_K1_max) [milliS_per_microF] + this->mParameters[12] = 0.040008488000000002; // (var_i_Kr__g_Kr_max) [milliS_per_microF] + this->mParameters[13] = 0.052581329000000003; // (var_i_Ks__g_Ks_max) [milliS_per_microF] + this->mParameters[14] = 4.5; // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + this->mParameters[15] = 0.14135944; // (var_i_to_1__g_to_1) [milliS_per_microF] + } + + Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::~Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt() + { + } + + AbstractLookupTableCollection* Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::GetLookupTableCollection() + { + return Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance(); + } + + void Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 30; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = rY[5]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = rY[6]; + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = rY[7]; + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = rY[8]; + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = rY[9]; + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = rY[11]; + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = rY[12]; + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = rY[13]; + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = rY[20]; + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[21]; + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = rY[22]; + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[23]; + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_r__Ca_r = rY[27]; + // Units: millimolar; Initial value: 0.00022418117117903934 + + // Lookup table indexing + const bool _oob_0 = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_equilibrium_potentials__E_K = 26.712338705498265 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_equilibrium_potentials__E_Na = 26.712338705498265 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_membrane__i_tot = 0.0077250000000000001 * var_chaste_interface__membrane__V + 0.0060102762087371094 * log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i) - 0.0025000000000000001 * var_equilibrium_potentials__E_Na - 0.0050000000000000001 * var_equilibrium_potentials__E_K + (0.0040000000000000001 + 0.4389381125701739 * sqrt(mParameters[5]) * mParameters[11] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + 0.0027599999999999999 * _lt_0_row[0] * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + 0.057500000000000002 * var_chaste_interface__Ca_i__Ca_i / (0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i) + 0.13 * (-50 + var_chaste_interface__membrane__V) * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g + 0.037374999999999999 * pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__i_Na_L_h_L_gate__h_L + 0.0028824983370007683 * _lt_0_row[2] * (-0.34100000000000003 * mParameters[4] + 1 * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V + _lt_0_row[5] * (-1.5 * pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + 0.40000000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[14] * mParameters[4] * _lt_0_row[4]) / ((1 + 6.9444444444444451e-9 / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (1004882.8125 * var_chaste_interface__Ca_i__Ca_i + 1.3 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] + 1.5 * pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i + 0.0035999999999999999 * pow(mParameters[6], 3) * (1 + 0.081300813008130079 * var_chaste_interface__intracellular_ion_concentrations__Na_i) + 1860.8670000000004 * (1 + 416.66666666666669 * var_chaste_interface__Ca_i__Ca_i) * mParameters[4])) + pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mParameters[8] + (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mParameters[15] * var_chaste_interface__i_to_1_a_gate__a + 0.61875000000000002 * mParameters[5] / ((1 + 100 / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[6])) + 0.028896009762002683 * _lt_0_row[9] * (_lt_0_row[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V + (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[6] + mParameters[5]) / (0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) + var_chaste_interface__membrane__V) * mParameters[13] * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2 + 0.43033148291193518 * _lt_0_row[10] * sqrt(mParameters[5]) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[12] * var_chaste_interface__i_Kr_xr_gate__xr + 3.510865186083326 * _lt_0_row[12] * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mParameters[4] + 1 * var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) * mParameters[7] * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f; // microA_per_microF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(rY[0], var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(rY[1], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(rY[2], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(rY[3], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(rY[4], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = rY[5]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = rY[6]; + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(rY[7], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(rY[8], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(rY[9], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(rY[10], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(rY[11], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = rY[12]; + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = rY[13]; + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = rY[20]; + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(rY[21], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = rY[22]; + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(rY[23], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = rY[24]; + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_NSR__Ca_NSR = rY[25]; + // Units: millimolar; Initial value: 1.2132524695849454 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(rY[26], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(rY[27], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = rY[28]; + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = rY[29]; + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Lookup table indexing + const bool _oob_0 = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_Ca_MK_act__Ca_MK_bound = 0.050000000000000003 * (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) / (1 + 0.14999999999999999 / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_Ca_r__q_diff = 5 * var_chaste_interface__Ca_r__Ca_r - 5 * var_chaste_interface__Ca_i__Ca_i; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap = -0.00068000000000000005 * var_chaste_interface__Ca_MK_act__Ca_MK_trap + 0.050000000000000003 * (var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_bound; // 1 / millisecond + const double var_i_Ca_p__i_Ca_p = 0.057500000000000002 * var_chaste_interface__Ca_i__Ca_i / (0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i); // microA_per_microF + const double d_dt_chaste_interface_var_i_to_2_a_gate__a = 1 / (1 + 0.1502 / var_chaste_interface__Ca_r__Ca_r) - 1 * var_chaste_interface__i_to_2_a_gate__a; // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_d_gate__d = _lt_0_row[14] * (-var_chaste_interface__i_Ca_L_d_gate__d + _lt_0_row[13]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2 = (-var_chaste_interface__i_Ca_L_f2_gate__f2 + _lt_0_row[15]) / (38 + 24.217200000000005 * pow((-1 + 0.053763440860215048 * var_chaste_interface__membrane__V), 2)); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_gate__f = (-var_chaste_interface__i_Ca_L_f_gate__f + _lt_0_row[15]) / (4 + 0.03125 * pow((-1 + 0.40000000000000002 * var_chaste_interface__membrane__V), 2)); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_T_b_gate__b = (-var_chaste_interface__i_Ca_T_b_gate__b + _lt_0_row[16]) * (_lt_0_row[17]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_T_g_gate__g = (-var_chaste_interface__i_Ca_T_g_gate__g + _lt_0_row[18]) * (_lt_0_row[19]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Kr_xr_gate__xr = _lt_0_row[21] * (-var_chaste_interface__i_Kr_xr_gate__xr + _lt_0_row[20]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1 = (-var_chaste_interface__i_Ks_xs1_gate__xs1 + _lt_0_row[22]) * (_lt_0_row[23]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2 = (-var_chaste_interface__i_Ks_xs2_gate__xs2 + _lt_0_row[22]) * (_lt_0_row[24]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L = _lt_0_row[26] * (-var_chaste_interface__i_Na_L_h_L_gate__h_L + _lt_0_row[25]); // 1 / millisecond + const double var_i_Na_L_m_L_gate__alpha_m_L = _lt_0_row[27]; // per_millisecond + const double var_i_Na_L_m_L_gate__beta_m_L = _lt_0_row[28]; // per_millisecond + const double d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L = (-var_chaste_interface__i_Na_L_m_L_gate__m_L + var_i_Na_L_m_L_gate__alpha_m_L / (var_i_Na_L_m_L_gate__alpha_m_L + var_i_Na_L_m_L_gate__beta_m_L)) * (1 * var_i_Na_L_m_L_gate__alpha_m_L + 1 * var_i_Na_L_m_L_gate__beta_m_L); // 1 / millisecond + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_h_gate__h = (1 * var_i_Na_h_gate__alpha_h + 1 * var_i_Na_h_gate__beta_h) * (-var_chaste_interface__i_Na_h_gate__h + 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time)) * var_i_Na_h_gate__alpha_h / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h)); // 1 / millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_j_gate__j = (1 * var_i_Na_j_gate__alpha_j + 1 * var_i_Na_j_gate__beta_j) * (-var_chaste_interface__i_Na_j_gate__j + 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time)) * var_i_Na_j_gate__alpha_j / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j)); // 1 / millisecond + const double var_i_Na_m_gate__alpha_m = _lt_0_row[27]; // per_millisecond + const double var_i_Na_m_gate__beta_m = _lt_0_row[28]; // per_millisecond + const double d_dt_chaste_interface_var_i_Na_m_gate__m = (-var_chaste_interface__i_Na_m_gate__m + var_i_Na_m_gate__alpha_m / (var_i_Na_m_gate__alpha_m + var_i_Na_m_gate__beta_m)) * (1 * var_i_Na_m_gate__alpha_m + 1 * var_i_Na_m_gate__beta_m); // 1 / millisecond + const double var_i_to_1_a_gate__alpha_a = _lt_0_row[29]; // per_millisecond + const double var_i_to_1_a_gate__beta_a = _lt_0_row[30]; // per_millisecond + const double d_dt_chaste_interface_var_i_to_1_a_gate__a = (-var_chaste_interface__i_to_1_a_gate__a + var_i_to_1_a_gate__alpha_a / (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a)) * (1 * var_i_to_1_a_gate__alpha_a + 1 * var_i_to_1_a_gate__beta_a); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i2_gate__i2 = _lt_0_row[32] * (-var_chaste_interface__i_to_1_i2_gate__i2 + _lt_0_row[31]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i_gate__i = _lt_0_row[34] * (-var_chaste_interface__i_to_1_i_gate__i + _lt_0_row[33]); // 1 / millisecond + const double var_equilibrium_potentials__E_Cl = -26.712338705498265 * log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i); // millivolt + const double var_background_currents__i_Cl_b = 0.00022499999999999999 * var_chaste_interface__membrane__V - 0.00022499999999999999 * var_equilibrium_potentials__E_Cl; // microA_per_microF + const double var_equilibrium_potentials__E_K = 26.712338705498265 * log(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_CT_K_Cl__CT_K_Cl = 7.0755999999999996e-6 * (-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K) / (87.825100000000006 - var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K); // millimolar_per_millisecond + const double var_background_currents__i_K_b = 0.0050000000000000001 * var_chaste_interface__membrane__V - 0.0050000000000000001 * var_equilibrium_potentials__E_K; // microA_per_microF + const double var_equilibrium_potentials__E_Na = 26.712338705498265 * log(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_CT_Na_Cl__CT_Na_Cl = 9.8442999999999999e-6 * pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) / (59494197.640692554 + pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4)); // millimolar_per_millisecond + const double var_background_currents__i_Na_b = 0.0025000000000000001 * var_chaste_interface__membrane__V - 0.0025000000000000001 * var_equilibrium_potentials__E_Na; // microA_per_microF + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + 0.4389381125701739 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(mParameters[11], var_chaste_interface__environment__time) / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K_p__i_K_p = 0.0027599999999999999 * _lt_0_row[0] * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(0.43033148291193518 * _lt_0_row[10] * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[12], var_chaste_interface__environment__time) * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) / (0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) + var_chaste_interface__membrane__V) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[13], var_chaste_interface__environment__time) * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(mParameters[8], var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc(_lt_0_row[5] * (-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + 0.40000000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(mParameters[14], var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * _lt_0_row[4]) / ((1 + 6.9444444444444451e-9 / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (1004882.8125 * var_chaste_interface__Ca_i__Ca_i + 1.3 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + 0.0035999999999999999 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + 0.081300813008130079 * var_chaste_interface__intracellular_ion_concentrations__Na_i) + 1860.8670000000004 * (1 + 416.66666666666669 * var_chaste_interface__Ca_i__Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time))), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaK__i_NaK = 0.61875000000000002 * mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / ((1 + 100 / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (1.5 + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time))) * _lt_0_row[6])); // microA_per_microF + const double var_i_Na_L__i_Na_L = 0.037374999999999999 * pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__i_Na_L_h_L_gate__h_L; // microA_per_microF + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(mParameters[15], var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_2__i_to_2 = 0.028896009762002683 * _lt_0_row[9] * (_lt_0_row[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V; // microA_per_microF + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i = (-6.767281717060562e-9 * var_background_currents__i_Cl_b - 6.767281717060562e-9 * var_i_to_2__i_to_2 + var_CT_K_Cl__CT_K_Cl + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = (1.3534563434121124e-8 * var_i_NaK__i_NaK - 6.767281717060562e-9 * var_background_currents__i_K_b - 6.767281717060562e-9 * var_i_K1__i_K1 - 6.767281717060562e-9 * var_i_K_p__i_K_p - 6.767281717060562e-9 * var_i_Kr__i_Kr - 6.767281717060562e-9 * var_i_Ks__i_Ks - 6.767281717060562e-9 * var_i_to_1__i_to_1 + var_CT_K_Cl__CT_K_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = (-2.0301845151181685e-8 * var_i_NaCa__i_NaCa - 2.0301845151181685e-8 * var_i_NaK__i_NaK - 6.767281717060562e-9 * var_background_currents__i_Na_b - 6.767281717060562e-9 * var_i_Na__i_Na - 6.767281717060562e-9 * var_i_Na_L__i_Na_L + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double var_background_currents__i_Ca_b = 0.0028824983370007683 * _lt_0_row[2] * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1 * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V; // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = 3.510865186083326 * _lt_0_row[12] * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1 * var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2 = (-var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 + 1 / (1 - 100 * var_i_Ca_L__i_Ca_L)) / (125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L))); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca = (0.14999999999999999 - var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca + 0.55000000000000004 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 0.29999999999999999 / (1 - 20 * var_i_Ca_L__i_Ca_L)) / (0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_leak__q_leak = 0.066666666666666666 * var_chaste_interface__Ca_NSR__Ca_NSR * mp_SR_leak_current_max_modifier->Calc(mParameters[0], var_chaste_interface__environment__time); // millimolar_per_millisecond + const double var_q_rel_ri_gate__Ca_fac = 1 / (1 + exp(3.3333333333333335 + 66.666666666666671 * var_i_Ca_L__i_Ca_L)); // millimolar + const double d_dt_chaste_interface_var_q_rel_ri_gate__ri = (-var_chaste_interface__q_rel_ri_gate__ri + 1 / (1 + exp(-16 + 80 * var_q_rel_ri_gate__Ca_fac + 40000 * var_chaste_interface__Ca_r__Ca_r))) / (3 + (350 - 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)) / (1 + exp(-15 + 5000 * var_chaste_interface__Ca_r__Ca_r + 15 * var_q_rel_ri_gate__Ca_fac)) + 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc(1 * (-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * mp_SR_release_current_max_modifier->Calc(mParameters[1], var_chaste_interface__environment__time) * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_r__Ca_r = 1 * (-var_Ca_r__q_diff + 0.23999999999999996 * var_q_rel__q_rel - 1.1504378919002956e-7 * var_i_Ca_L__i_Ca_L) / (1 + 2.2480000000000002 * var_chaste_interface__Ca_r__Ca_r / pow((0.0086999999999999994 + var_chaste_interface__Ca_r__Ca_r), 2) + 0.094 * var_chaste_interface__Ca_r__Ca_r / pow((0.00087000000000000001 + var_chaste_interface__Ca_r__Ca_r), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_q_rel_ro_gate__ro = -0.33333333333333331 * var_chaste_interface__q_rel_ro_gate__ro + 0.33333333333333331 * pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) * pow(var_i_Ca_L__i_Ca_L, 2) / ((1 + pow(var_i_Ca_L__i_Ca_L, 2)) * (pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) + 1644.6531773416521 * pow((var_chaste_interface__Ca_r__Ca_r / (0.0028 + var_chaste_interface__Ca_r__Ca_r)), 1.8999999999999999))); // 1 / millisecond + const double var_q_tr__q_tr = 0.0083333333333333332 * var_chaste_interface__Ca_NSR__Ca_NSR - 0.0083333333333333332 * var_chaste_interface__Ca_JSR__Ca_JSR; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_JSR__Ca_JSR = (-var_q_rel__q_rel + var_q_tr__q_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__Ca_JSR__Ca_JSR), 2)); // millimolar / millisecond + const double var_q_up__q_up = 0.5 * (1 + 0.75 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)) * var_chaste_interface__Ca_i__Ca_i * mp_SR_uptake_current_max_modifier->Calc(mParameters[2], var_chaste_interface__environment__time) / (0.00092000000000000003 - 0.00017000000000000001 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act) + var_chaste_interface__Ca_i__Ca_i); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_NSR__Ca_NSR = -var_q_leak__q_leak - 0.086956521739130432 * var_q_tr__q_tr + var_q_up__q_up; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_i__Ca_i = -1 * (3.383640858530281e-9 * var_background_currents__i_Ca_b + 3.383640858530281e-9 * var_i_Ca_p__i_Ca_p + 0.081176470588235281 * var_q_up__q_up - 0.029411764705882353 * var_Ca_r__q_diff - 6.767281717060562e-9 * var_i_NaCa__i_NaCa - 0.081176470588235281 * var_q_leak__q_leak) / (1 + 0.14000000000000001 * var_chaste_interface__Ca_i__Ca_i / pow((0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i), 2) + 0.10000000000000001 * var_chaste_interface__Ca_i__Ca_i / pow((0.0023800000000000002 + var_chaste_interface__Ca_i__Ca_i), 2)); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + d_dt_chaste_interface_var_membrane__V = -var_background_currents__i_Ca_b - var_background_currents__i_Cl_b - var_background_currents__i_K_b - var_background_currents__i_Na_b - var_i_Ca_L__i_Ca_L - var_i_Ca_p__i_Ca_p - var_i_K1__i_K1 - var_i_K_p__i_K_p - var_i_Kr__i_Kr - var_i_Ks__i_Ks - var_i_Na__i_Na - var_i_NaCa__i_NaCa - var_i_NaK__i_NaK - var_i_Na_L__i_Na_L - var_i_to_1__i_to_1 - var_i_to_2__i_to_2 - GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance() - 0.13 * (-50 + var_chaste_interface__membrane__V) * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g; // millivolt / millisecond + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_Ca_i__Ca_i; + rDY[2] = d_dt_chaste_interface_var_i_Na_m_gate__m; + rDY[3] = d_dt_chaste_interface_var_i_Na_h_gate__h; + rDY[4] = d_dt_chaste_interface_var_i_Na_j_gate__j; + rDY[5] = d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L; + rDY[6] = d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L; + rDY[7] = d_dt_chaste_interface_var_i_Ca_L_d_gate__d; + rDY[8] = d_dt_chaste_interface_var_i_Ca_L_f_gate__f; + rDY[9] = d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2; + rDY[10] = d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca; + rDY[11] = d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2; + rDY[12] = d_dt_chaste_interface_var_i_Ca_T_b_gate__b; + rDY[13] = d_dt_chaste_interface_var_i_Ca_T_g_gate__g; + rDY[14] = d_dt_chaste_interface_var_i_to_1_a_gate__a; + rDY[15] = d_dt_chaste_interface_var_i_to_1_i_gate__i; + rDY[16] = d_dt_chaste_interface_var_i_to_1_i2_gate__i2; + rDY[17] = d_dt_chaste_interface_var_i_Kr_xr_gate__xr; + rDY[18] = d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1; + rDY[19] = d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2; + rDY[20] = d_dt_chaste_interface_var_i_to_2_a_gate__a; + rDY[21] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rDY[22] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i; + rDY[23] = d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rDY[24] = d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap; + rDY[25] = d_dt_chaste_interface_var_Ca_NSR__Ca_NSR; + rDY[26] = d_dt_chaste_interface_var_Ca_JSR__Ca_JSR; + rDY[27] = d_dt_chaste_interface_var_Ca_r__Ca_r; + rDY[28] = d_dt_chaste_interface_var_q_rel_ri_gate__ri; + rDY[29] = d_dt_chaste_interface_var_q_rel_ro_gate__ro; + } + + std::vector Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(rY[0], var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(rY[1], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(rY[2], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(rY[3], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(rY[4], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(rY[7], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(rY[8], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(rY[9], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(rY[10], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(rY[11], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(rY[21], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(rY[23], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = rY[24]; + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(rY[26], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(rY[27], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = rY[28]; + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = rY[29]; + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Lookup table indexing + const bool _oob_0 = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_Ca_MK_act__Ca_MK_0 = 0.050000000000000003; // dimensionless + const double var_Ca_MK_act__km_Ca_MK = 0.14999999999999999; // millimolar + const double var_Ca_MK_act__Ca_MK_bound = (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_0 / (1 + var_Ca_MK_act__km_Ca_MK / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_equilibrium_potentials__r_NaK = 0.018329999999999999; // dimensionless + const double var_i_Ca_L__p_Ca = 0.000243; // cm_per_second + const double var_i_Ca_L_f_Ca_gate__tau_f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier->Calc(0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK), var_chaste_interface__environment__time); // millisecond + const double var_i_Ks__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[13], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__X_NaCa = 0.40000000000000002; // dimensionless + const double var_i_NaCa__k_sat = 0.27000000000000002; // dimensionless + const double var_i_NaCa__km_Ca_act = 0.000125; // millimolar + const double var_i_NaCa__km_Ca_i = 0.0035999999999999999; // millimolar + const double var_i_NaCa__km_Ca_o = 1.3; // millimolar + const double var_i_NaCa__km_Na_i_1 = 12.300000000000001; // millimolar + const double var_i_NaCa__km_Na_o = 87.5; // millimolar + const double var_i_Ca_L_f2_gate__tau_f2 = mp_membrane_L_type_calcium_current_f2_gate_tau_modifier->Calc(38 + 24.217200000000005 * pow((-1 + 0.053763440860215048 * var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Ca_L_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(4 + 0.03125 * pow((-1 + 0.40000000000000002 * var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Kr__rr_infinity = 1 * _lt_0_row[10]; // dimensionless + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + 1.5 * pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + pow(var_i_NaCa__km_Na_i_1, 3) * (1 + 1.5 * var_chaste_interface__Ca_i__Ca_i / var_i_NaCa__km_Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time); // millimolar4 + const double var_model_parameters__Cm = 1; // microF_per_cm2 + const double var_model_parameters__F = 96485; // coulomb_per_mole + const double var_i_K1__g_K1 = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(mParameters[11], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_Kr__g_Kr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[12], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__dNaCa_2 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + var_chaste_interface__intracellular_ion_concentrations__Na_i / var_i_NaCa__km_Na_i_1) * var_i_NaCa__km_Ca_i; // millimolar4 + const double var_model_parameters__R = 8314; // joule_per_kilomole_kelvin + const double var_model_parameters__T = 310; // kelvin + const double var_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * log((var_equilibrium_potentials__r_NaK * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) / (var_equilibrium_potentials__r_NaK * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Na = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_model_parameters__F; // millivolt + const double var_i_K1_xK1_gate__alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_K1_xK1_gate__xK1 = var_i_K1_xK1_gate__alpha_xK1 / (var_i_K1_xK1_gate__alpha_xK1 + var_i_K1_xK1_gate__beta_xK1); // dimensionless + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + var_i_K1__g_K1 * var_i_K1_xK1_gate__xK1) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_K1__i_K1; // uA_per_cm2 + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_Kr__g_Kr * var_i_Kr__rr_infinity * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Kr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Kr__i_Kr; // uA_per_cm2 + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((-var_equilibrium_potentials__E_Ks + var_chaste_interface__membrane__V) * var_i_Ks__g_Ks * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(mParameters[8], var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__X_NaCa * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(mParameters[14], var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * exp(0.34999999999999998 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) / ((1 + var_i_NaCa__k_sat * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + 0.44444444444444442 * pow(var_i_NaCa__km_Ca_act, 2) / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (var_i_NaCa__dNaCa_1 + var_i_NaCa__dNaCa_2)), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaCa__i_NaCa; // uA_per_cm2 + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(mParameters[15], var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_1__i_to_1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_to_1__i_to_1; // uA_per_cm2 + const double var_model_parameters__gamma_Cai = 1; // dimensionless + const double var_model_parameters__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_i_Ca_L__i_Ca_L_max = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-15 + var_chaste_interface__membrane__V) * (-mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_r__Ca_r * var_model_parameters__gamma_Cai * exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_i_Ca_L__p_Ca / ((-1 + exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ca_L__i_Ca_L; // uA_per_cm2 + const double var_i_Ca_L_f_Ca2_gate__tau_f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier->Calc(125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)); // dimensionless + const double var_q_rel__g_rel = mp_SR_release_current_max_modifier->Calc(mParameters[1], var_chaste_interface__environment__time) * var_q_rel__vg; // per_millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * var_q_rel__g_rel * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro, var_chaste_interface__environment__time); // millimolar_per_millisecond + + std::vector dqs(16); + dqs[0] = var_q_rel__q_rel; + dqs[1] = var_i_Ca_L__i_Ca_L_converted; + dqs[2] = var_i_Ca_L_f2_gate__tau_f2; + dqs[3] = var_i_Ca_L_f_Ca2_gate__tau_f_Ca2; + dqs[4] = var_i_Ca_L_f_Ca_gate__tau_f_Ca; + dqs[5] = var_i_Ca_L_f_gate__tau_f; + dqs[6] = var_i_Na__i_Na_converted; + dqs[7] = var_i_Na_h_gate__tau_h; + dqs[8] = var_i_Na_j_gate__tau_j; + dqs[9] = var_i_K1__i_K1_converted; + dqs[10] = var_i_Kr__i_Kr_converted; + dqs[11] = var_i_Ks__i_Ks_converted; + dqs[12] = var_i_NaCa__i_NaCa_converted; + dqs[13] = var_membrane__i_stim_converted; + dqs[14] = var_i_to_1__i_to_1_converted; + dqs[15] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "aslanidi_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-83.43812846286808); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022355433459434943); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9786390933308567); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09866447258167589); + + // rY[5]: + this->mVariableNames.push_back("i_Na_L_m_L_gate__m_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // rY[6]: + this->mVariableNames.push_back("i_Na_L_h_L_gate__h_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8946968372659203); + + // rY[7]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.322223865147363e-06); + + // rY[8]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9985607329462358); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8173435436674658); + + // rY[10]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9610551285529658); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.868690796671854); + + // rY[12]: + this->mVariableNames.push_back("i_Ca_T_b_gate__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0002563937630984438); + + // rY[13]: + this->mVariableNames.push_back("i_Ca_T_g_gate__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9720432601848331); + + // rY[14]: + this->mVariableNames.push_back("i_to_1_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0004238729429342389); + + // rY[15]: + this->mVariableNames.push_back("i_to_1_i_gate__i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9990935802459496); + + // rY[16]: + this->mVariableNames.push_back("i_to_1_i2_gate__i2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9777368439681764); + + // rY[17]: + this->mVariableNames.push_back("i_Kr_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.07084939408222911); + + // rY[18]: + this->mVariableNames.push_back("i_Ks_xs1_gate__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0011737654433043125); + + // rY[19]: + this->mVariableNames.push_back("i_Ks_xs2_gate__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001179442867470093); + + // rY[20]: + this->mVariableNames.push_back("i_to_2_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0014909437525000811); + + // rY[21]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.927155552932733); + + // rY[22]: + this->mVariableNames.push_back("intracellular_ion_concentrations__Cl_i"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(18.904682470140408); + + // rY[23]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(141.9670801746057); + + // rY[24]: + this->mVariableNames.push_back("Ca_MK_act__Ca_MK_trap"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.789168284782809e-06); + + // rY[25]: + this->mVariableNames.push_back("Ca_NSR__Ca_NSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.2132524695849454); + + // rY[26]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.1433050636518596); + + // rY[27]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022418117117903934); + + // rY[28]: + this->mVariableNames.push_back("q_rel_ri_gate__ri"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7802870066567904); + + // rY[29]: + this->mVariableNames.push_back("q_rel_ro_gate__ro"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.2785734760674763e-09); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp new file mode 100644 index 00000000..fbbea6bc --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp @@ -0,0 +1,1443 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: aslanidi_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NormalOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "aslanidi_Purkinje_model_2009Opt.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractCardiacCellWithModifiers* Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt(p_solver, p_stimulus); +} + +bool Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::registered = ModelFactory::Register("aslanidi_Purkinje_model_2009", "NormalOpt", (ModelFactory::TCreateMethod)Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::CreateMethod); + +class Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<35; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[35]; + + // Lookup tables + double (*_lookup_table_0)[35]; + int _lookup_table_0_num_misshit_piecewise[35] = {0}; + +}; + +std::shared_ptr Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 1; // millisecond + const double var_chaste_interface__membrane__stim_period = 800; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCellWithModifiers( + pSolver, + 30, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + // These will get initialised to DummyModifiers in the base class method. + this->AddModifier("JSR_calcium_concentration", + mp_JSR_calcium_concentration_modifier); + this->AddModifier("SR_leak_current_max", + mp_SR_leak_current_max_modifier); + this->AddModifier("SR_release_current", + mp_SR_release_current_modifier); + this->AddModifier("SR_release_current_max", + mp_SR_release_current_max_modifier); + this->AddModifier("SR_uptake_current_max", + mp_SR_uptake_current_max_modifier); + this->AddModifier("concentration_clamp_onoff", + mp_concentration_clamp_onoff_modifier); + this->AddModifier("cytosolic_calcium_concentration", + mp_cytosolic_calcium_concentration_modifier); + this->AddModifier("cytosolic_potassium_concentration", + mp_cytosolic_potassium_concentration_modifier); + this->AddModifier("cytosolic_sodium_concentration", + mp_cytosolic_sodium_concentration_modifier); + this->AddModifier("dyadic_space_calcium_concentration", + mp_dyadic_space_calcium_concentration_modifier); + this->AddModifier("extracellular_calcium_concentration", + mp_extracellular_calcium_concentration_modifier); + this->AddModifier("extracellular_potassium_concentration", + mp_extracellular_potassium_concentration_modifier); + this->AddModifier("extracellular_sodium_concentration", + mp_extracellular_sodium_concentration_modifier); + this->AddModifier("membrane_L_type_calcium_current", + mp_i_Ca_L__i_Ca_L_modifier); + this->AddModifier("membrane_L_type_calcium_current_conductance", + mp_membrane_L_type_calcium_current_conductance_modifier); + this->AddModifier("membrane_L_type_calcium_current_d_gate", + mp_membrane_L_type_calcium_current_d_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate", + mp_membrane_L_type_calcium_current_f2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate_tau", + mp_membrane_L_type_calcium_current_f2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate", + mp_membrane_L_type_calcium_current_fCa2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate_tau", + mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate", + mp_membrane_L_type_calcium_current_fCa_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate_tau", + mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate", + mp_membrane_L_type_calcium_current_f_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate_tau", + mp_membrane_L_type_calcium_current_f_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current", + mp_i_Na__i_Na_modifier); + this->AddModifier("membrane_fast_sodium_current_conductance", + mp_membrane_fast_sodium_current_conductance_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate", + mp_membrane_fast_sodium_current_h_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate_tau", + mp_membrane_fast_sodium_current_h_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate", + mp_membrane_fast_sodium_current_j_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate_tau", + mp_membrane_fast_sodium_current_j_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_m_gate", + mp_membrane_fast_sodium_current_m_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_reduced_inactivation", + mp_membrane_fast_sodium_current_reduced_inactivation_modifier); + this->AddModifier("membrane_fast_sodium_current_shift_inactivation", + mp_membrane_fast_sodium_current_shift_inactivation_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current", + mp_i_K1__i_K1_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current_conductance", + mp_membrane_inward_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current", + mp_i_Kr__i_Kr_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current_conductance", + mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current", + mp_i_Ks__i_Ks_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current_conductance", + mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current", + mp_i_NaCa__i_NaCa_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current_conductance", + mp_membrane_sodium_calcium_exchanger_current_conductance_modifier); + this->AddModifier("membrane_transient_outward_current", + mp_i_to_1__i_to_1_modifier); + this->AddModifier("membrane_transient_outward_current_conductance", + mp_membrane_transient_outward_current_conductance_modifier); + this->AddModifier("membrane_voltage", + mp_membrane_voltage_modifier); + this->mParameters[0] = 0.0043750000000000004; // (var_q_leak__q_leak_max) [millimolar_per_millisecond] + this->mParameters[1] = 3000; // (var_q_rel__g_rel_max) [per_millisecond] + this->mParameters[2] = 0.0043750000000000004; // (var_q_up__q_up_max) [millimolar_per_millisecond] + this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_model_parameters__Ca_o) [millimolar] + this->mParameters[5] = 5.4000000000000004; // (var_model_parameters__K_o) [millimolar] + this->mParameters[6] = 140; // (var_model_parameters__Na_o) [millimolar] + this->mParameters[7] = 0.3392328; // (var_i_Ca_L__g_Ca_L) [dimensionless] + this->mParameters[8] = 8; // (var_i_Na__g_Na) [milliS_per_microF] + this->mParameters[9] = 0; // (var_i_Na__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[10] = 0; // (var_i_Na__shift_INa_inact) [millivolt] + this->mParameters[11] = 0.25; // (var_i_K1__g_K1_max) [milliS_per_microF] + this->mParameters[12] = 0.040008488000000002; // (var_i_Kr__g_Kr_max) [milliS_per_microF] + this->mParameters[13] = 0.052581329000000003; // (var_i_Ks__g_Ks_max) [milliS_per_microF] + this->mParameters[14] = 4.5; // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + this->mParameters[15] = 0.14135944; // (var_i_to_1__g_to_1) [milliS_per_microF] + } + + Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::~Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt() + { + } + + AbstractLookupTableCollection* Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::GetLookupTableCollection() + { + return Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance(); + } + + void Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 30; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = rY[5]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = rY[6]; + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = rY[7]; + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = rY[8]; + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = rY[9]; + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = rY[11]; + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = rY[12]; + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = rY[13]; + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = rY[20]; + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[21]; + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = rY[22]; + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[23]; + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_r__Ca_r = rY[27]; + // Units: millimolar; Initial value: 0.00022418117117903934 + + // Lookup table indexing + const bool _oob_0 = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_equilibrium_potentials__E_K = 26.712338705498265 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_equilibrium_potentials__E_Na = 26.712338705498265 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_membrane__i_tot = 0.0077250000000000001 * var_chaste_interface__membrane__V + 0.0060102762087371094 * log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i) - 0.0025000000000000001 * var_equilibrium_potentials__E_Na - 0.0050000000000000001 * var_equilibrium_potentials__E_K + (0.0040000000000000001 + 0.4389381125701739 * sqrt(mParameters[5]) * mParameters[11] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + 0.0027599999999999999 * _lt_0_row[0] * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + 0.057500000000000002 * var_chaste_interface__Ca_i__Ca_i / (0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i) + 0.13 * (-50 + var_chaste_interface__membrane__V) * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g + 0.037374999999999999 * pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__i_Na_L_h_L_gate__h_L + 0.0028824983370007683 * _lt_0_row[2] * (-0.34100000000000003 * mParameters[4] + 1 * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V + _lt_0_row[5] * (-1.5 * pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + 0.40000000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[14] * mParameters[4] * _lt_0_row[4]) / ((1 + 6.9444444444444451e-9 / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (1004882.8125 * var_chaste_interface__Ca_i__Ca_i + 1.3 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] + 1.5 * pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i + 0.0035999999999999999 * pow(mParameters[6], 3) * (1 + 0.081300813008130079 * var_chaste_interface__intracellular_ion_concentrations__Na_i) + 1860.8670000000004 * (1 + 416.66666666666669 * var_chaste_interface__Ca_i__Ca_i) * mParameters[4])) + pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mParameters[8] + (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mParameters[15] * var_chaste_interface__i_to_1_a_gate__a + 0.61875000000000002 * mParameters[5] / ((1 + 100 / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[6])) + 0.028896009762002683 * _lt_0_row[9] * (_lt_0_row[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V + (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[6] + mParameters[5]) / (0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) + var_chaste_interface__membrane__V) * mParameters[13] * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2 + 0.43033148291193518 * _lt_0_row[10] * sqrt(mParameters[5]) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[12] * var_chaste_interface__i_Kr_xr_gate__xr + 3.510865186083326 * _lt_0_row[12] * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mParameters[4] + 1 * var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) * mParameters[7] * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f; // microA_per_microF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(rY[0], var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(rY[1], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(rY[2], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(rY[3], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(rY[4], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = rY[5]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = rY[6]; + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(rY[7], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(rY[8], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(rY[9], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(rY[10], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(rY[11], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = rY[12]; + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = rY[13]; + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = rY[20]; + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(rY[21], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = rY[22]; + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(rY[23], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = rY[24]; + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_NSR__Ca_NSR = rY[25]; + // Units: millimolar; Initial value: 1.2132524695849454 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(rY[26], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(rY[27], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = rY[28]; + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = rY[29]; + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Lookup table indexing + const bool _oob_0 = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_Ca_MK_act__Ca_MK_bound = 0.050000000000000003 * (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) / (1 + 0.14999999999999999 / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_Ca_r__q_diff = 5 * var_chaste_interface__Ca_r__Ca_r - 5 * var_chaste_interface__Ca_i__Ca_i; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap = -0.00068000000000000005 * var_chaste_interface__Ca_MK_act__Ca_MK_trap + 0.050000000000000003 * (var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_bound; // 1 / millisecond + const double var_i_Ca_p__i_Ca_p = 0.057500000000000002 * var_chaste_interface__Ca_i__Ca_i / (0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i); // microA_per_microF + const double d_dt_chaste_interface_var_i_to_2_a_gate__a = 1 / (1 + 0.1502 / var_chaste_interface__Ca_r__Ca_r) - 1 * var_chaste_interface__i_to_2_a_gate__a; // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_d_gate__d = _lt_0_row[14] * (-var_chaste_interface__i_Ca_L_d_gate__d + _lt_0_row[13]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2 = (-var_chaste_interface__i_Ca_L_f2_gate__f2 + _lt_0_row[15]) / (38 + 0.070000000000000007 * pow((-18.600000000000001 + var_chaste_interface__membrane__V), 2)); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_gate__f = (-var_chaste_interface__i_Ca_L_f_gate__f + _lt_0_row[15]) / (4 + 0.0050000000000000001 * pow((-2.5 + var_chaste_interface__membrane__V), 2)); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_T_b_gate__b = (-var_chaste_interface__i_Ca_T_b_gate__b + _lt_0_row[16]) * (_lt_0_row[17]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_T_g_gate__g = (-var_chaste_interface__i_Ca_T_g_gate__g + _lt_0_row[18]) * (_lt_0_row[19]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Kr_xr_gate__xr = _lt_0_row[21] * (-var_chaste_interface__i_Kr_xr_gate__xr + _lt_0_row[20]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1 = (-var_chaste_interface__i_Ks_xs1_gate__xs1 + _lt_0_row[22]) * (_lt_0_row[23]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2 = (-var_chaste_interface__i_Ks_xs2_gate__xs2 + _lt_0_row[22]) * (_lt_0_row[24]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L = _lt_0_row[26] * (-var_chaste_interface__i_Na_L_h_L_gate__h_L + _lt_0_row[25]); // 1 / millisecond + const double var_i_Na_L_m_L_gate__alpha_m_L = _lt_0_row[27]; // per_millisecond + const double var_i_Na_L_m_L_gate__beta_m_L = _lt_0_row[28]; // per_millisecond + const double d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L = (-var_chaste_interface__i_Na_L_m_L_gate__m_L + var_i_Na_L_m_L_gate__alpha_m_L / (var_i_Na_L_m_L_gate__alpha_m_L + var_i_Na_L_m_L_gate__beta_m_L)) * (1 * var_i_Na_L_m_L_gate__alpha_m_L + 1 * var_i_Na_L_m_L_gate__beta_m_L); // 1 / millisecond + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_h_gate__h = (1 * var_i_Na_h_gate__alpha_h + 1 * var_i_Na_h_gate__beta_h) * (-var_chaste_interface__i_Na_h_gate__h + 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time)) * var_i_Na_h_gate__alpha_h / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h)); // 1 / millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_j_gate__j = (1 * var_i_Na_j_gate__alpha_j + 1 * var_i_Na_j_gate__beta_j) * (-var_chaste_interface__i_Na_j_gate__j + 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time)) * var_i_Na_j_gate__alpha_j / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j)); // 1 / millisecond + const double var_i_Na_m_gate__alpha_m = _lt_0_row[27]; // per_millisecond + const double var_i_Na_m_gate__beta_m = _lt_0_row[28]; // per_millisecond + const double d_dt_chaste_interface_var_i_Na_m_gate__m = (-var_chaste_interface__i_Na_m_gate__m + var_i_Na_m_gate__alpha_m / (var_i_Na_m_gate__alpha_m + var_i_Na_m_gate__beta_m)) * (1 * var_i_Na_m_gate__alpha_m + 1 * var_i_Na_m_gate__beta_m); // 1 / millisecond + const double var_i_to_1_a_gate__alpha_a = _lt_0_row[29]; // per_millisecond + const double var_i_to_1_a_gate__beta_a = _lt_0_row[30]; // per_millisecond + const double d_dt_chaste_interface_var_i_to_1_a_gate__a = (-var_chaste_interface__i_to_1_a_gate__a + var_i_to_1_a_gate__alpha_a / (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a)) * (1 * var_i_to_1_a_gate__alpha_a + 1 * var_i_to_1_a_gate__beta_a); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i2_gate__i2 = _lt_0_row[32] * (-var_chaste_interface__i_to_1_i2_gate__i2 + _lt_0_row[31]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i_gate__i = _lt_0_row[34] * (-var_chaste_interface__i_to_1_i_gate__i + _lt_0_row[33]); // 1 / millisecond + const double var_equilibrium_potentials__E_Cl = -26.712338705498265 * log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i); // millivolt + const double var_background_currents__i_Cl_b = 0.00022499999999999999 * var_chaste_interface__membrane__V - 0.00022499999999999999 * var_equilibrium_potentials__E_Cl; // microA_per_microF + const double var_equilibrium_potentials__E_K = 26.712338705498265 * log(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_CT_K_Cl__CT_K_Cl = 7.0755999999999996e-6 * (-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K) / (87.825100000000006 - var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K); // millimolar_per_millisecond + const double var_background_currents__i_K_b = 0.0050000000000000001 * var_chaste_interface__membrane__V - 0.0050000000000000001 * var_equilibrium_potentials__E_K; // microA_per_microF + const double var_equilibrium_potentials__E_Na = 26.712338705498265 * log(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_CT_Na_Cl__CT_Na_Cl = 9.8442999999999999e-6 * pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) / (59494197.640692554 + pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4)); // millimolar_per_millisecond + const double var_background_currents__i_Na_b = 0.0025000000000000001 * var_chaste_interface__membrane__V - 0.0025000000000000001 * var_equilibrium_potentials__E_Na; // microA_per_microF + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + 0.4389381125701739 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(mParameters[11], var_chaste_interface__environment__time) / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K_p__i_K_p = 0.0027599999999999999 * _lt_0_row[0] * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(0.43033148291193518 * _lt_0_row[10] * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[12], var_chaste_interface__environment__time) * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) / (0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) + var_chaste_interface__membrane__V) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[13], var_chaste_interface__environment__time) * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(mParameters[8], var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc(_lt_0_row[5] * (-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + 0.40000000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(mParameters[14], var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * _lt_0_row[4]) / ((1 + 6.9444444444444451e-9 / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (1004882.8125 * var_chaste_interface__Ca_i__Ca_i + 1.3 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + 0.0035999999999999999 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + 0.081300813008130079 * var_chaste_interface__intracellular_ion_concentrations__Na_i) + 1860.8670000000004 * (1 + 416.66666666666669 * var_chaste_interface__Ca_i__Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time))), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaK__i_NaK = 0.61875000000000002 * mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / ((1 + 100 / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (1.5 + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time))) * _lt_0_row[6])); // microA_per_microF + const double var_i_Na_L__i_Na_L = 0.037374999999999999 * pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__i_Na_L_h_L_gate__h_L; // microA_per_microF + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(mParameters[15], var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_2__i_to_2 = 0.028896009762002683 * _lt_0_row[9] * (_lt_0_row[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V; // microA_per_microF + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i = (-6.767281717060562e-9 * var_background_currents__i_Cl_b - 6.767281717060562e-9 * var_i_to_2__i_to_2 + var_CT_K_Cl__CT_K_Cl + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = (1.3534563434121124e-8 * var_i_NaK__i_NaK - 6.767281717060562e-9 * var_background_currents__i_K_b - 6.767281717060562e-9 * var_i_K1__i_K1 - 6.767281717060562e-9 * var_i_K_p__i_K_p - 6.767281717060562e-9 * var_i_Kr__i_Kr - 6.767281717060562e-9 * var_i_Ks__i_Ks - 6.767281717060562e-9 * var_i_to_1__i_to_1 + var_CT_K_Cl__CT_K_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = (-2.0301845151181685e-8 * var_i_NaCa__i_NaCa - 2.0301845151181685e-8 * var_i_NaK__i_NaK - 6.767281717060562e-9 * var_background_currents__i_Na_b - 6.767281717060562e-9 * var_i_Na__i_Na - 6.767281717060562e-9 * var_i_Na_L__i_Na_L + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double var_background_currents__i_Ca_b = 0.0028824983370007683 * _lt_0_row[2] * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1 * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V; // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = 3.510865186083326 * _lt_0_row[12] * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1 * var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2 = (-var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 + 1 / (1 - 100 * var_i_Ca_L__i_Ca_L)) / (125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L))); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca = (0.14999999999999999 - var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca + 0.55000000000000004 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 0.29999999999999999 / (1 - 20 * var_i_Ca_L__i_Ca_L)) / (0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_leak__q_leak = 0.066666666666666666 * var_chaste_interface__Ca_NSR__Ca_NSR * mp_SR_leak_current_max_modifier->Calc(mParameters[0], var_chaste_interface__environment__time); // millimolar_per_millisecond + const double var_q_rel_ri_gate__Ca_fac = 1 / (1 + exp(3.3333333333333335 + 66.666666666666671 * var_i_Ca_L__i_Ca_L)); // millimolar + const double d_dt_chaste_interface_var_q_rel_ri_gate__ri = (-var_chaste_interface__q_rel_ri_gate__ri + 1 / (1 + exp(-16 + 80 * var_q_rel_ri_gate__Ca_fac + 40000 * var_chaste_interface__Ca_r__Ca_r))) / (3 + (350 - 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)) / (1 + exp(-15 + 5000 * var_chaste_interface__Ca_r__Ca_r + 15 * var_q_rel_ri_gate__Ca_fac)) + 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc(1 * (-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * mp_SR_release_current_max_modifier->Calc(mParameters[1], var_chaste_interface__environment__time) * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_r__Ca_r = 1 * (-var_Ca_r__q_diff + 0.23999999999999996 * var_q_rel__q_rel - 1.1504378919002956e-7 * var_i_Ca_L__i_Ca_L) / (1 + 2.2480000000000002 * var_chaste_interface__Ca_r__Ca_r / pow((0.0086999999999999994 + var_chaste_interface__Ca_r__Ca_r), 2) + 0.094 * var_chaste_interface__Ca_r__Ca_r / pow((0.00087000000000000001 + var_chaste_interface__Ca_r__Ca_r), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_q_rel_ro_gate__ro = -0.33333333333333331 * var_chaste_interface__q_rel_ro_gate__ro + 0.33333333333333331 * pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) * pow(var_i_Ca_L__i_Ca_L, 2) / ((1 + pow(var_i_Ca_L__i_Ca_L, 2)) * (pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) + 1644.6531773416521 * pow((var_chaste_interface__Ca_r__Ca_r / (0.0028 + var_chaste_interface__Ca_r__Ca_r)), 1.8999999999999999))); // 1 / millisecond + const double var_q_tr__q_tr = 0.0083333333333333332 * var_chaste_interface__Ca_NSR__Ca_NSR - 0.0083333333333333332 * var_chaste_interface__Ca_JSR__Ca_JSR; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_JSR__Ca_JSR = (-var_q_rel__q_rel + var_q_tr__q_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__Ca_JSR__Ca_JSR), 2)); // millimolar / millisecond + const double var_q_up__q_up = 0.5 * (1 + 0.75 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)) * var_chaste_interface__Ca_i__Ca_i * mp_SR_uptake_current_max_modifier->Calc(mParameters[2], var_chaste_interface__environment__time) / (0.00092000000000000003 - 0.00017000000000000001 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act) + var_chaste_interface__Ca_i__Ca_i); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_NSR__Ca_NSR = -var_q_leak__q_leak - 0.086956521739130432 * var_q_tr__q_tr + var_q_up__q_up; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_i__Ca_i = -1 * (3.383640858530281e-9 * var_background_currents__i_Ca_b + 3.383640858530281e-9 * var_i_Ca_p__i_Ca_p + 0.081176470588235281 * var_q_up__q_up - 0.029411764705882353 * var_Ca_r__q_diff - 6.767281717060562e-9 * var_i_NaCa__i_NaCa - 0.081176470588235281 * var_q_leak__q_leak) / (1 + 0.14000000000000001 * var_chaste_interface__Ca_i__Ca_i / pow((0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i), 2) + 0.10000000000000001 * var_chaste_interface__Ca_i__Ca_i / pow((0.0023800000000000002 + var_chaste_interface__Ca_i__Ca_i), 2)); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + d_dt_chaste_interface_var_membrane__V = -var_background_currents__i_Ca_b - var_background_currents__i_Cl_b - var_background_currents__i_K_b - var_background_currents__i_Na_b - var_i_Ca_L__i_Ca_L - var_i_Ca_p__i_Ca_p - var_i_K1__i_K1 - var_i_K_p__i_K_p - var_i_Kr__i_Kr - var_i_Ks__i_Ks - var_i_Na__i_Na - var_i_NaCa__i_NaCa - var_i_NaK__i_NaK - var_i_Na_L__i_Na_L - var_i_to_1__i_to_1 - var_i_to_2__i_to_2 - GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance() - 0.13 * (-50 + var_chaste_interface__membrane__V) * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g; // millivolt / millisecond + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_Ca_i__Ca_i; + rDY[2] = d_dt_chaste_interface_var_i_Na_m_gate__m; + rDY[3] = d_dt_chaste_interface_var_i_Na_h_gate__h; + rDY[4] = d_dt_chaste_interface_var_i_Na_j_gate__j; + rDY[5] = d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L; + rDY[6] = d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L; + rDY[7] = d_dt_chaste_interface_var_i_Ca_L_d_gate__d; + rDY[8] = d_dt_chaste_interface_var_i_Ca_L_f_gate__f; + rDY[9] = d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2; + rDY[10] = d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca; + rDY[11] = d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2; + rDY[12] = d_dt_chaste_interface_var_i_Ca_T_b_gate__b; + rDY[13] = d_dt_chaste_interface_var_i_Ca_T_g_gate__g; + rDY[14] = d_dt_chaste_interface_var_i_to_1_a_gate__a; + rDY[15] = d_dt_chaste_interface_var_i_to_1_i_gate__i; + rDY[16] = d_dt_chaste_interface_var_i_to_1_i2_gate__i2; + rDY[17] = d_dt_chaste_interface_var_i_Kr_xr_gate__xr; + rDY[18] = d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1; + rDY[19] = d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2; + rDY[20] = d_dt_chaste_interface_var_i_to_2_a_gate__a; + rDY[21] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rDY[22] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i; + rDY[23] = d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rDY[24] = d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap; + rDY[25] = d_dt_chaste_interface_var_Ca_NSR__Ca_NSR; + rDY[26] = d_dt_chaste_interface_var_Ca_JSR__Ca_JSR; + rDY[27] = d_dt_chaste_interface_var_Ca_r__Ca_r; + rDY[28] = d_dt_chaste_interface_var_q_rel_ri_gate__ri; + rDY[29] = d_dt_chaste_interface_var_q_rel_ro_gate__ro; + } + + std::vector Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(rY[0], var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(rY[1], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(rY[2], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(rY[3], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(rY[4], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(rY[7], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(rY[8], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(rY[9], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(rY[10], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(rY[11], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(rY[21], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(rY[23], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = rY[24]; + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(rY[26], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(rY[27], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = rY[28]; + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = rY[29]; + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Lookup table indexing + const bool _oob_0 = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_Ca_MK_act__Ca_MK_0 = 0.050000000000000003; // dimensionless + const double var_Ca_MK_act__km_Ca_MK = 0.14999999999999999; // millimolar + const double var_Ca_MK_act__Ca_MK_bound = (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_0 / (1 + var_Ca_MK_act__km_Ca_MK / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_equilibrium_potentials__r_NaK = 0.018329999999999999; // dimensionless + const double var_i_Ca_L__p_Ca = 0.000243; // cm_per_second + const double var_i_Ca_L_f_Ca_gate__tau_f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier->Calc(0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK), var_chaste_interface__environment__time); // millisecond + const double var_i_Ks__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[13], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__X_NaCa = 0.40000000000000002; // dimensionless + const double var_i_NaCa__k_sat = 0.27000000000000002; // dimensionless + const double var_i_NaCa__km_Ca_act = 0.000125; // millimolar + const double var_i_NaCa__km_Ca_i = 0.0035999999999999999; // millimolar + const double var_i_NaCa__km_Ca_o = 1.3; // millimolar + const double var_i_NaCa__km_Na_i_1 = 12.300000000000001; // millimolar + const double var_i_NaCa__km_Na_o = 87.5; // millimolar + const double var_i_Ca_L_f2_gate__tau_f2 = mp_membrane_L_type_calcium_current_f2_gate_tau_modifier->Calc(38 + 0.070000000000000007 * pow((-18.600000000000001 + var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Ca_L_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(4 + 0.0050000000000000001 * pow((-2.5 + var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Kr__rr_infinity = 1 * _lt_0_row[10]; // dimensionless + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + 1.5 * pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + pow(var_i_NaCa__km_Na_i_1, 3) * (1 + 1.5 * var_chaste_interface__Ca_i__Ca_i / var_i_NaCa__km_Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time); // millimolar4 + const double var_model_parameters__Cm = 1; // microF_per_cm2 + const double var_model_parameters__F = 96485; // coulomb_per_mole + const double var_i_K1__g_K1 = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(mParameters[11], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_Kr__g_Kr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[12], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__dNaCa_2 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + var_chaste_interface__intracellular_ion_concentrations__Na_i / var_i_NaCa__km_Na_i_1) * var_i_NaCa__km_Ca_i; // millimolar4 + const double var_model_parameters__R = 8314; // joule_per_kilomole_kelvin + const double var_model_parameters__T = 310; // kelvin + const double var_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * log((var_equilibrium_potentials__r_NaK * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) / (var_equilibrium_potentials__r_NaK * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Na = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_model_parameters__F; // millivolt + const double var_i_K1_xK1_gate__alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_K1_xK1_gate__xK1 = var_i_K1_xK1_gate__alpha_xK1 / (var_i_K1_xK1_gate__alpha_xK1 + var_i_K1_xK1_gate__beta_xK1); // dimensionless + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + var_i_K1__g_K1 * var_i_K1_xK1_gate__xK1) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_K1__i_K1; // uA_per_cm2 + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_Kr__g_Kr * var_i_Kr__rr_infinity * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Kr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Kr__i_Kr; // uA_per_cm2 + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((-var_equilibrium_potentials__E_Ks + var_chaste_interface__membrane__V) * var_i_Ks__g_Ks * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(mParameters[8], var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__X_NaCa * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(mParameters[14], var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * exp(0.34999999999999998 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) / ((1 + var_i_NaCa__k_sat * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + 0.44444444444444442 * pow(var_i_NaCa__km_Ca_act, 2) / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (var_i_NaCa__dNaCa_1 + var_i_NaCa__dNaCa_2)), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaCa__i_NaCa; // uA_per_cm2 + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(mParameters[15], var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_1__i_to_1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_to_1__i_to_1; // uA_per_cm2 + const double var_model_parameters__gamma_Cai = 1; // dimensionless + const double var_model_parameters__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_i_Ca_L__i_Ca_L_max = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-15 + var_chaste_interface__membrane__V) * (-mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_r__Ca_r * var_model_parameters__gamma_Cai * exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_i_Ca_L__p_Ca / ((-1 + exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ca_L__i_Ca_L; // uA_per_cm2 + const double var_i_Ca_L_f_Ca2_gate__tau_f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier->Calc(125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)); // dimensionless + const double var_q_rel__g_rel = mp_SR_release_current_max_modifier->Calc(mParameters[1], var_chaste_interface__environment__time) * var_q_rel__vg; // per_millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * var_q_rel__g_rel * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro, var_chaste_interface__environment__time); // millimolar_per_millisecond + + std::vector dqs(16); + dqs[0] = var_q_rel__q_rel; + dqs[1] = var_i_Ca_L__i_Ca_L_converted; + dqs[2] = var_i_Ca_L_f2_gate__tau_f2; + dqs[3] = var_i_Ca_L_f_Ca2_gate__tau_f_Ca2; + dqs[4] = var_i_Ca_L_f_Ca_gate__tau_f_Ca; + dqs[5] = var_i_Ca_L_f_gate__tau_f; + dqs[6] = var_i_Na__i_Na_converted; + dqs[7] = var_i_Na_h_gate__tau_h; + dqs[8] = var_i_Na_j_gate__tau_j; + dqs[9] = var_i_K1__i_K1_converted; + dqs[10] = var_i_Kr__i_Kr_converted; + dqs[11] = var_i_Ks__i_Ks_converted; + dqs[12] = var_i_NaCa__i_NaCa_converted; + dqs[13] = var_membrane__i_stim_converted; + dqs[14] = var_i_to_1__i_to_1_converted; + dqs[15] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "aslanidi_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-83.43812846286808); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022355433459434943); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9786390933308567); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09866447258167589); + + // rY[5]: + this->mVariableNames.push_back("i_Na_L_m_L_gate__m_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // rY[6]: + this->mVariableNames.push_back("i_Na_L_h_L_gate__h_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8946968372659203); + + // rY[7]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.322223865147363e-06); + + // rY[8]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9985607329462358); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8173435436674658); + + // rY[10]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9610551285529658); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.868690796671854); + + // rY[12]: + this->mVariableNames.push_back("i_Ca_T_b_gate__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0002563937630984438); + + // rY[13]: + this->mVariableNames.push_back("i_Ca_T_g_gate__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9720432601848331); + + // rY[14]: + this->mVariableNames.push_back("i_to_1_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0004238729429342389); + + // rY[15]: + this->mVariableNames.push_back("i_to_1_i_gate__i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9990935802459496); + + // rY[16]: + this->mVariableNames.push_back("i_to_1_i2_gate__i2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9777368439681764); + + // rY[17]: + this->mVariableNames.push_back("i_Kr_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.07084939408222911); + + // rY[18]: + this->mVariableNames.push_back("i_Ks_xs1_gate__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0011737654433043125); + + // rY[19]: + this->mVariableNames.push_back("i_Ks_xs2_gate__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001179442867470093); + + // rY[20]: + this->mVariableNames.push_back("i_to_2_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0014909437525000811); + + // rY[21]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.927155552932733); + + // rY[22]: + this->mVariableNames.push_back("intracellular_ion_concentrations__Cl_i"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(18.904682470140408); + + // rY[23]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(141.9670801746057); + + // rY[24]: + this->mVariableNames.push_back("Ca_MK_act__Ca_MK_trap"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.789168284782809e-06); + + // rY[25]: + this->mVariableNames.push_back("Ca_NSR__Ca_NSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.2132524695849454); + + // rY[26]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.1433050636518596); + + // rY[27]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022418117117903934); + + // rY[28]: + this->mVariableNames.push_back("q_rel_ri_gate__ri"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7802870066567904); + + // rY[29]: + this->mVariableNames.push_back("q_rel_ro_gate__ro"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.2785734760674763e-09); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicaslanidi_Purkinje_model_2009FromCellMLOpt(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp new file mode 100644 index 00000000..7cb68a6d --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_13.cpp @@ -0,0 +1,1428 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: aslanidi_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NormalOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "aslanidi_Purkinje_model_2009Opt.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + +class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<35; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[35]; + + // Lookup tables + double (*_lookup_table_0)[35]; + int _lookup_table_0_num_misshit_piecewise[35] = {0}; + +}; + +std::shared_ptr Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::mpInstance; + + + boost::shared_ptr Cellaslanidi_Purkinje_model_2009FromCellMLOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 1; // millisecond + const double var_chaste_interface__membrane__stim_period = 800; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellaslanidi_Purkinje_model_2009FromCellMLOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellaslanidi_Purkinje_model_2009FromCellMLOpt::Cellaslanidi_Purkinje_model_2009FromCellMLOpt(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCellWithModifiers( + pSolver, + 30, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + // These will get initialised to DummyModifiers in the base class method. + this->AddModifier("JSR_calcium_concentration", + mp_JSR_calcium_concentration_modifier); + this->AddModifier("SR_leak_current_max", + mp_SR_leak_current_max_modifier); + this->AddModifier("SR_release_current", + mp_SR_release_current_modifier); + this->AddModifier("SR_release_current_max", + mp_SR_release_current_max_modifier); + this->AddModifier("SR_uptake_current_max", + mp_SR_uptake_current_max_modifier); + this->AddModifier("concentration_clamp_onoff", + mp_concentration_clamp_onoff_modifier); + this->AddModifier("cytosolic_calcium_concentration", + mp_cytosolic_calcium_concentration_modifier); + this->AddModifier("cytosolic_potassium_concentration", + mp_cytosolic_potassium_concentration_modifier); + this->AddModifier("cytosolic_sodium_concentration", + mp_cytosolic_sodium_concentration_modifier); + this->AddModifier("dyadic_space_calcium_concentration", + mp_dyadic_space_calcium_concentration_modifier); + this->AddModifier("extracellular_calcium_concentration", + mp_extracellular_calcium_concentration_modifier); + this->AddModifier("extracellular_potassium_concentration", + mp_extracellular_potassium_concentration_modifier); + this->AddModifier("extracellular_sodium_concentration", + mp_extracellular_sodium_concentration_modifier); + this->AddModifier("membrane_L_type_calcium_current", + mp_i_Ca_L__i_Ca_L_modifier); + this->AddModifier("membrane_L_type_calcium_current_conductance", + mp_membrane_L_type_calcium_current_conductance_modifier); + this->AddModifier("membrane_L_type_calcium_current_d_gate", + mp_membrane_L_type_calcium_current_d_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate", + mp_membrane_L_type_calcium_current_f2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate_tau", + mp_membrane_L_type_calcium_current_f2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate", + mp_membrane_L_type_calcium_current_fCa2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate_tau", + mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate", + mp_membrane_L_type_calcium_current_fCa_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate_tau", + mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate", + mp_membrane_L_type_calcium_current_f_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate_tau", + mp_membrane_L_type_calcium_current_f_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current", + mp_i_Na__i_Na_modifier); + this->AddModifier("membrane_fast_sodium_current_conductance", + mp_membrane_fast_sodium_current_conductance_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate", + mp_membrane_fast_sodium_current_h_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate_tau", + mp_membrane_fast_sodium_current_h_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate", + mp_membrane_fast_sodium_current_j_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate_tau", + mp_membrane_fast_sodium_current_j_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_m_gate", + mp_membrane_fast_sodium_current_m_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_reduced_inactivation", + mp_membrane_fast_sodium_current_reduced_inactivation_modifier); + this->AddModifier("membrane_fast_sodium_current_shift_inactivation", + mp_membrane_fast_sodium_current_shift_inactivation_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current", + mp_i_K1__i_K1_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current_conductance", + mp_membrane_inward_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current", + mp_i_Kr__i_Kr_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current_conductance", + mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current", + mp_i_Ks__i_Ks_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current_conductance", + mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current", + mp_i_NaCa__i_NaCa_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current_conductance", + mp_membrane_sodium_calcium_exchanger_current_conductance_modifier); + this->AddModifier("membrane_transient_outward_current", + mp_i_to_1__i_to_1_modifier); + this->AddModifier("membrane_transient_outward_current_conductance", + mp_membrane_transient_outward_current_conductance_modifier); + this->AddModifier("membrane_voltage", + mp_membrane_voltage_modifier); + this->mParameters[0] = 0.0043750000000000004; // (var_q_leak__q_leak_max) [millimolar_per_millisecond] + this->mParameters[1] = 3000; // (var_q_rel__g_rel_max) [per_millisecond] + this->mParameters[2] = 0.0043750000000000004; // (var_q_up__q_up_max) [millimolar_per_millisecond] + this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_model_parameters__Ca_o) [millimolar] + this->mParameters[5] = 5.4000000000000004; // (var_model_parameters__K_o) [millimolar] + this->mParameters[6] = 140; // (var_model_parameters__Na_o) [millimolar] + this->mParameters[7] = 0.3392328; // (var_i_Ca_L__g_Ca_L) [dimensionless] + this->mParameters[8] = 8; // (var_i_Na__g_Na) [milliS_per_microF] + this->mParameters[9] = 0; // (var_i_Na__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[10] = 0; // (var_i_Na__shift_INa_inact) [millivolt] + this->mParameters[11] = 0.25; // (var_i_K1__g_K1_max) [milliS_per_microF] + this->mParameters[12] = 0.040008488000000002; // (var_i_Kr__g_Kr_max) [milliS_per_microF] + this->mParameters[13] = 0.052581329000000003; // (var_i_Ks__g_Ks_max) [milliS_per_microF] + this->mParameters[14] = 4.5; // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + this->mParameters[15] = 0.14135944; // (var_i_to_1__g_to_1) [milliS_per_microF] + } + + Cellaslanidi_Purkinje_model_2009FromCellMLOpt::~Cellaslanidi_Purkinje_model_2009FromCellMLOpt() + { + } + + AbstractLookupTableCollection* Cellaslanidi_Purkinje_model_2009FromCellMLOpt::GetLookupTableCollection() + { + return Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance(); + } + + void Cellaslanidi_Purkinje_model_2009FromCellMLOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 30; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellaslanidi_Purkinje_model_2009FromCellMLOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = rY[5]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = rY[6]; + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = rY[7]; + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = rY[8]; + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = rY[9]; + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = rY[11]; + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = rY[12]; + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = rY[13]; + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = rY[20]; + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[21]; + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = rY[22]; + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[23]; + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_r__Ca_r = rY[27]; + // Units: millimolar; Initial value: 0.00022418117117903934 + + // Lookup table indexing + const bool _oob_0 = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_equilibrium_potentials__E_K = 26.712338705498265 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_equilibrium_potentials__E_Na = 26.712338705498265 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_membrane__i_tot = 0.0077250000000000001 * var_chaste_interface__membrane__V + 0.0060102762087371094 * log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i) - 0.0025000000000000001 * var_equilibrium_potentials__E_Na - 0.0050000000000000001 * var_equilibrium_potentials__E_K + (0.0040000000000000001 + 0.4389381125701739 * sqrt(mParameters[5]) * mParameters[11] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + 0.0027599999999999999 * _lt_0_row[0] * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + 0.057500000000000002 * var_chaste_interface__Ca_i__Ca_i / (0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i) + 0.13 * (-50 + var_chaste_interface__membrane__V) * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g + 0.037374999999999999 * pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__i_Na_L_h_L_gate__h_L + 0.0028824983370007683 * _lt_0_row[2] * (-0.34100000000000003 * mParameters[4] + 1 * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V + _lt_0_row[5] * (-1.5 * pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + 0.40000000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[14] * mParameters[4] * _lt_0_row[4]) / ((1 + 6.9444444444444451e-9 / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (1004882.8125 * var_chaste_interface__Ca_i__Ca_i + 1.3 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] + 1.5 * pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i + 0.0035999999999999999 * pow(mParameters[6], 3) * (1 + 0.081300813008130079 * var_chaste_interface__intracellular_ion_concentrations__Na_i) + 1860.8670000000004 * (1 + 416.66666666666669 * var_chaste_interface__Ca_i__Ca_i) * mParameters[4])) + pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mParameters[8] + (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mParameters[15] * var_chaste_interface__i_to_1_a_gate__a + 0.61875000000000002 * mParameters[5] / ((1 + 100 / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[6])) + 0.028896009762002683 * _lt_0_row[9] * (_lt_0_row[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V + (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[6] + mParameters[5]) / (0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) + var_chaste_interface__membrane__V) * mParameters[13] * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2 + 0.43033148291193518 * _lt_0_row[10] * sqrt(mParameters[5]) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[12] * var_chaste_interface__i_Kr_xr_gate__xr + 3.510865186083326 * _lt_0_row[12] * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mParameters[4] + 1 * var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) * mParameters[7] * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f; // microA_per_microF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellaslanidi_Purkinje_model_2009FromCellMLOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(rY[0], var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(rY[1], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(rY[2], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(rY[3], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(rY[4], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = rY[5]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = rY[6]; + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(rY[7], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(rY[8], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(rY[9], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(rY[10], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(rY[11], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = rY[12]; + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = rY[13]; + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = rY[20]; + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(rY[21], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = rY[22]; + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(rY[23], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = rY[24]; + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_NSR__Ca_NSR = rY[25]; + // Units: millimolar; Initial value: 1.2132524695849454 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(rY[26], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(rY[27], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = rY[28]; + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = rY[29]; + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Lookup table indexing + const bool _oob_0 = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_Ca_MK_act__Ca_MK_bound = 0.050000000000000003 * (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) / (1 + 0.14999999999999999 / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_Ca_r__q_diff = 5 * var_chaste_interface__Ca_r__Ca_r - 5 * var_chaste_interface__Ca_i__Ca_i; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap = -0.00068000000000000005 * var_chaste_interface__Ca_MK_act__Ca_MK_trap + 0.050000000000000003 * (var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_bound; // 1 / millisecond + const double var_i_Ca_p__i_Ca_p = 0.057500000000000002 * var_chaste_interface__Ca_i__Ca_i / (0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i); // microA_per_microF + const double d_dt_chaste_interface_var_i_to_2_a_gate__a = 1 / (1 + 0.1502 / var_chaste_interface__Ca_r__Ca_r) - 1 * var_chaste_interface__i_to_2_a_gate__a; // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_d_gate__d = _lt_0_row[14] * (-var_chaste_interface__i_Ca_L_d_gate__d + _lt_0_row[13]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2 = (-var_chaste_interface__i_Ca_L_f2_gate__f2 + _lt_0_row[15]) / (38 + 24.217200000000005 * pow((-1 + 0.053763440860215048 * var_chaste_interface__membrane__V), 2)); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_gate__f = (-var_chaste_interface__i_Ca_L_f_gate__f + _lt_0_row[15]) / (4 + 0.03125 * pow((-1 + 0.40000000000000002 * var_chaste_interface__membrane__V), 2)); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_T_b_gate__b = (-var_chaste_interface__i_Ca_T_b_gate__b + _lt_0_row[16]) * (_lt_0_row[17]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_T_g_gate__g = (-var_chaste_interface__i_Ca_T_g_gate__g + _lt_0_row[18]) * (_lt_0_row[19]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Kr_xr_gate__xr = _lt_0_row[21] * (-var_chaste_interface__i_Kr_xr_gate__xr + _lt_0_row[20]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1 = (-var_chaste_interface__i_Ks_xs1_gate__xs1 + _lt_0_row[22]) * (_lt_0_row[23]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2 = (-var_chaste_interface__i_Ks_xs2_gate__xs2 + _lt_0_row[22]) * (_lt_0_row[24]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L = _lt_0_row[26] * (-var_chaste_interface__i_Na_L_h_L_gate__h_L + _lt_0_row[25]); // 1 / millisecond + const double var_i_Na_L_m_L_gate__alpha_m_L = _lt_0_row[27]; // per_millisecond + const double var_i_Na_L_m_L_gate__beta_m_L = _lt_0_row[28]; // per_millisecond + const double d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L = (-var_chaste_interface__i_Na_L_m_L_gate__m_L + var_i_Na_L_m_L_gate__alpha_m_L / (var_i_Na_L_m_L_gate__alpha_m_L + var_i_Na_L_m_L_gate__beta_m_L)) * (1 * var_i_Na_L_m_L_gate__alpha_m_L + 1 * var_i_Na_L_m_L_gate__beta_m_L); // 1 / millisecond + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_h_gate__h = (1 * var_i_Na_h_gate__alpha_h + 1 * var_i_Na_h_gate__beta_h) * (-var_chaste_interface__i_Na_h_gate__h + 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time)) * var_i_Na_h_gate__alpha_h / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h)); // 1 / millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_j_gate__j = (1 * var_i_Na_j_gate__alpha_j + 1 * var_i_Na_j_gate__beta_j) * (-var_chaste_interface__i_Na_j_gate__j + 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time)) * var_i_Na_j_gate__alpha_j / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j)); // 1 / millisecond + const double var_i_Na_m_gate__alpha_m = _lt_0_row[27]; // per_millisecond + const double var_i_Na_m_gate__beta_m = _lt_0_row[28]; // per_millisecond + const double d_dt_chaste_interface_var_i_Na_m_gate__m = (-var_chaste_interface__i_Na_m_gate__m + var_i_Na_m_gate__alpha_m / (var_i_Na_m_gate__alpha_m + var_i_Na_m_gate__beta_m)) * (1 * var_i_Na_m_gate__alpha_m + 1 * var_i_Na_m_gate__beta_m); // 1 / millisecond + const double var_i_to_1_a_gate__alpha_a = _lt_0_row[29]; // per_millisecond + const double var_i_to_1_a_gate__beta_a = _lt_0_row[30]; // per_millisecond + const double d_dt_chaste_interface_var_i_to_1_a_gate__a = (-var_chaste_interface__i_to_1_a_gate__a + var_i_to_1_a_gate__alpha_a / (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a)) * (1 * var_i_to_1_a_gate__alpha_a + 1 * var_i_to_1_a_gate__beta_a); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i2_gate__i2 = _lt_0_row[32] * (-var_chaste_interface__i_to_1_i2_gate__i2 + _lt_0_row[31]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i_gate__i = _lt_0_row[34] * (-var_chaste_interface__i_to_1_i_gate__i + _lt_0_row[33]); // 1 / millisecond + const double var_equilibrium_potentials__E_Cl = -26.712338705498265 * log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i); // millivolt + const double var_background_currents__i_Cl_b = 0.00022499999999999999 * var_chaste_interface__membrane__V - 0.00022499999999999999 * var_equilibrium_potentials__E_Cl; // microA_per_microF + const double var_equilibrium_potentials__E_K = 26.712338705498265 * log(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_CT_K_Cl__CT_K_Cl = 7.0755999999999996e-6 * (-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K) / (87.825100000000006 - var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K); // millimolar_per_millisecond + const double var_background_currents__i_K_b = 0.0050000000000000001 * var_chaste_interface__membrane__V - 0.0050000000000000001 * var_equilibrium_potentials__E_K; // microA_per_microF + const double var_equilibrium_potentials__E_Na = 26.712338705498265 * log(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_CT_Na_Cl__CT_Na_Cl = 9.8442999999999999e-6 * pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) / (59494197.640692554 + pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4)); // millimolar_per_millisecond + const double var_background_currents__i_Na_b = 0.0025000000000000001 * var_chaste_interface__membrane__V - 0.0025000000000000001 * var_equilibrium_potentials__E_Na; // microA_per_microF + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + 0.4389381125701739 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(mParameters[11], var_chaste_interface__environment__time) / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K_p__i_K_p = 0.0027599999999999999 * _lt_0_row[0] * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(0.43033148291193518 * _lt_0_row[10] * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[12], var_chaste_interface__environment__time) * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) / (0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) + var_chaste_interface__membrane__V) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[13], var_chaste_interface__environment__time) * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(mParameters[8], var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc(_lt_0_row[5] * (-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + 0.40000000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(mParameters[14], var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * _lt_0_row[4]) / ((1 + 6.9444444444444451e-9 / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (1004882.8125 * var_chaste_interface__Ca_i__Ca_i + 1.3 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + 0.0035999999999999999 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + 0.081300813008130079 * var_chaste_interface__intracellular_ion_concentrations__Na_i) + 1860.8670000000004 * (1 + 416.66666666666669 * var_chaste_interface__Ca_i__Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time))), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaK__i_NaK = 0.61875000000000002 * mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / ((1 + 100 / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (1.5 + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time))) * _lt_0_row[6])); // microA_per_microF + const double var_i_Na_L__i_Na_L = 0.037374999999999999 * pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__i_Na_L_h_L_gate__h_L; // microA_per_microF + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(mParameters[15], var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_2__i_to_2 = 0.028896009762002683 * _lt_0_row[9] * (_lt_0_row[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V; // microA_per_microF + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i = (-6.767281717060562e-9 * var_background_currents__i_Cl_b - 6.767281717060562e-9 * var_i_to_2__i_to_2 + var_CT_K_Cl__CT_K_Cl + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = (1.3534563434121124e-8 * var_i_NaK__i_NaK - 6.767281717060562e-9 * var_background_currents__i_K_b - 6.767281717060562e-9 * var_i_K1__i_K1 - 6.767281717060562e-9 * var_i_K_p__i_K_p - 6.767281717060562e-9 * var_i_Kr__i_Kr - 6.767281717060562e-9 * var_i_Ks__i_Ks - 6.767281717060562e-9 * var_i_to_1__i_to_1 + var_CT_K_Cl__CT_K_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = (-2.0301845151181685e-8 * var_i_NaCa__i_NaCa - 2.0301845151181685e-8 * var_i_NaK__i_NaK - 6.767281717060562e-9 * var_background_currents__i_Na_b - 6.767281717060562e-9 * var_i_Na__i_Na - 6.767281717060562e-9 * var_i_Na_L__i_Na_L + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double var_background_currents__i_Ca_b = 0.0028824983370007683 * _lt_0_row[2] * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1 * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V; // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = 3.510865186083326 * _lt_0_row[12] * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1 * var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2 = (-var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 + 1 / (1 - 100 * var_i_Ca_L__i_Ca_L)) / (125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L))); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca = (0.14999999999999999 - var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca + 0.55000000000000004 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 0.29999999999999999 / (1 - 20 * var_i_Ca_L__i_Ca_L)) / (0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_leak__q_leak = 0.066666666666666666 * var_chaste_interface__Ca_NSR__Ca_NSR * mp_SR_leak_current_max_modifier->Calc(mParameters[0], var_chaste_interface__environment__time); // millimolar_per_millisecond + const double var_q_rel_ri_gate__Ca_fac = 1 / (1 + exp(3.3333333333333335 + 66.666666666666671 * var_i_Ca_L__i_Ca_L)); // millimolar + const double d_dt_chaste_interface_var_q_rel_ri_gate__ri = (-var_chaste_interface__q_rel_ri_gate__ri + 1 / (1 + exp(-16 + 80 * var_q_rel_ri_gate__Ca_fac + 40000 * var_chaste_interface__Ca_r__Ca_r))) / (3 + (350 - 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)) / (1 + exp(-15 + 5000 * var_chaste_interface__Ca_r__Ca_r + 15 * var_q_rel_ri_gate__Ca_fac)) + 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc(1 * (-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * mp_SR_release_current_max_modifier->Calc(mParameters[1], var_chaste_interface__environment__time) * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_r__Ca_r = 1 * (-var_Ca_r__q_diff + 0.23999999999999996 * var_q_rel__q_rel - 1.1504378919002956e-7 * var_i_Ca_L__i_Ca_L) / (1 + 2.2480000000000002 * var_chaste_interface__Ca_r__Ca_r / pow((0.0086999999999999994 + var_chaste_interface__Ca_r__Ca_r), 2) + 0.094 * var_chaste_interface__Ca_r__Ca_r / pow((0.00087000000000000001 + var_chaste_interface__Ca_r__Ca_r), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_q_rel_ro_gate__ro = -0.33333333333333331 * var_chaste_interface__q_rel_ro_gate__ro + 0.33333333333333331 * pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) * pow(var_i_Ca_L__i_Ca_L, 2) / ((1 + pow(var_i_Ca_L__i_Ca_L, 2)) * (pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) + 1644.6531773416521 * pow((var_chaste_interface__Ca_r__Ca_r / (0.0028 + var_chaste_interface__Ca_r__Ca_r)), 1.8999999999999999))); // 1 / millisecond + const double var_q_tr__q_tr = 0.0083333333333333332 * var_chaste_interface__Ca_NSR__Ca_NSR - 0.0083333333333333332 * var_chaste_interface__Ca_JSR__Ca_JSR; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_JSR__Ca_JSR = (-var_q_rel__q_rel + var_q_tr__q_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__Ca_JSR__Ca_JSR), 2)); // millimolar / millisecond + const double var_q_up__q_up = 0.5 * (1 + 0.75 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)) * var_chaste_interface__Ca_i__Ca_i * mp_SR_uptake_current_max_modifier->Calc(mParameters[2], var_chaste_interface__environment__time) / (0.00092000000000000003 - 0.00017000000000000001 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act) + var_chaste_interface__Ca_i__Ca_i); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_NSR__Ca_NSR = -var_q_leak__q_leak - 0.086956521739130432 * var_q_tr__q_tr + var_q_up__q_up; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_i__Ca_i = -1 * (3.383640858530281e-9 * var_background_currents__i_Ca_b + 3.383640858530281e-9 * var_i_Ca_p__i_Ca_p + 0.081176470588235281 * var_q_up__q_up - 0.029411764705882353 * var_Ca_r__q_diff - 6.767281717060562e-9 * var_i_NaCa__i_NaCa - 0.081176470588235281 * var_q_leak__q_leak) / (1 + 0.14000000000000001 * var_chaste_interface__Ca_i__Ca_i / pow((0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i), 2) + 0.10000000000000001 * var_chaste_interface__Ca_i__Ca_i / pow((0.0023800000000000002 + var_chaste_interface__Ca_i__Ca_i), 2)); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + d_dt_chaste_interface_var_membrane__V = -var_background_currents__i_Ca_b - var_background_currents__i_Cl_b - var_background_currents__i_K_b - var_background_currents__i_Na_b - var_i_Ca_L__i_Ca_L - var_i_Ca_p__i_Ca_p - var_i_K1__i_K1 - var_i_K_p__i_K_p - var_i_Kr__i_Kr - var_i_Ks__i_Ks - var_i_Na__i_Na - var_i_NaCa__i_NaCa - var_i_NaK__i_NaK - var_i_Na_L__i_Na_L - var_i_to_1__i_to_1 - var_i_to_2__i_to_2 - GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance() - 0.13 * (-50 + var_chaste_interface__membrane__V) * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g; // millivolt / millisecond + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_Ca_i__Ca_i; + rDY[2] = d_dt_chaste_interface_var_i_Na_m_gate__m; + rDY[3] = d_dt_chaste_interface_var_i_Na_h_gate__h; + rDY[4] = d_dt_chaste_interface_var_i_Na_j_gate__j; + rDY[5] = d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L; + rDY[6] = d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L; + rDY[7] = d_dt_chaste_interface_var_i_Ca_L_d_gate__d; + rDY[8] = d_dt_chaste_interface_var_i_Ca_L_f_gate__f; + rDY[9] = d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2; + rDY[10] = d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca; + rDY[11] = d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2; + rDY[12] = d_dt_chaste_interface_var_i_Ca_T_b_gate__b; + rDY[13] = d_dt_chaste_interface_var_i_Ca_T_g_gate__g; + rDY[14] = d_dt_chaste_interface_var_i_to_1_a_gate__a; + rDY[15] = d_dt_chaste_interface_var_i_to_1_i_gate__i; + rDY[16] = d_dt_chaste_interface_var_i_to_1_i2_gate__i2; + rDY[17] = d_dt_chaste_interface_var_i_Kr_xr_gate__xr; + rDY[18] = d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1; + rDY[19] = d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2; + rDY[20] = d_dt_chaste_interface_var_i_to_2_a_gate__a; + rDY[21] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rDY[22] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i; + rDY[23] = d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rDY[24] = d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap; + rDY[25] = d_dt_chaste_interface_var_Ca_NSR__Ca_NSR; + rDY[26] = d_dt_chaste_interface_var_Ca_JSR__Ca_JSR; + rDY[27] = d_dt_chaste_interface_var_Ca_r__Ca_r; + rDY[28] = d_dt_chaste_interface_var_q_rel_ri_gate__ri; + rDY[29] = d_dt_chaste_interface_var_q_rel_ro_gate__ro; + } + + std::vector Cellaslanidi_Purkinje_model_2009FromCellMLOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(rY[0], var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(rY[1], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(rY[2], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(rY[3], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(rY[4], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(rY[7], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(rY[8], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(rY[9], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(rY[10], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(rY[11], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(rY[21], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(rY[23], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = rY[24]; + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(rY[26], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(rY[27], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = rY[28]; + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = rY[29]; + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Lookup table indexing + const bool _oob_0 = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_Ca_MK_act__Ca_MK_0 = 0.050000000000000003; // dimensionless + const double var_Ca_MK_act__km_Ca_MK = 0.14999999999999999; // millimolar + const double var_Ca_MK_act__Ca_MK_bound = (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_0 / (1 + var_Ca_MK_act__km_Ca_MK / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_equilibrium_potentials__r_NaK = 0.018329999999999999; // dimensionless + const double var_i_Ca_L__p_Ca = 0.000243; // cm_per_second + const double var_i_Ca_L_f_Ca_gate__tau_f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier->Calc(0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK), var_chaste_interface__environment__time); // millisecond + const double var_i_Ks__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[13], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__X_NaCa = 0.40000000000000002; // dimensionless + const double var_i_NaCa__k_sat = 0.27000000000000002; // dimensionless + const double var_i_NaCa__km_Ca_act = 0.000125; // millimolar + const double var_i_NaCa__km_Ca_i = 0.0035999999999999999; // millimolar + const double var_i_NaCa__km_Ca_o = 1.3; // millimolar + const double var_i_NaCa__km_Na_i_1 = 12.300000000000001; // millimolar + const double var_i_NaCa__km_Na_o = 87.5; // millimolar + const double var_i_Ca_L_f2_gate__tau_f2 = mp_membrane_L_type_calcium_current_f2_gate_tau_modifier->Calc(38 + 24.217200000000005 * pow((-1 + 0.053763440860215048 * var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Ca_L_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(4 + 0.03125 * pow((-1 + 0.40000000000000002 * var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Kr__rr_infinity = 1 * _lt_0_row[10]; // dimensionless + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + 1.5 * pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + pow(var_i_NaCa__km_Na_i_1, 3) * (1 + 1.5 * var_chaste_interface__Ca_i__Ca_i / var_i_NaCa__km_Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time); // millimolar4 + const double var_model_parameters__Cm = 1; // microF_per_cm2 + const double var_model_parameters__F = 96485; // coulomb_per_mole + const double var_i_K1__g_K1 = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(mParameters[11], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_Kr__g_Kr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[12], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__dNaCa_2 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + var_chaste_interface__intracellular_ion_concentrations__Na_i / var_i_NaCa__km_Na_i_1) * var_i_NaCa__km_Ca_i; // millimolar4 + const double var_model_parameters__R = 8314; // joule_per_kilomole_kelvin + const double var_model_parameters__T = 310; // kelvin + const double var_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * log((var_equilibrium_potentials__r_NaK * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) / (var_equilibrium_potentials__r_NaK * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Na = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_model_parameters__F; // millivolt + const double var_i_K1_xK1_gate__alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_K1_xK1_gate__xK1 = var_i_K1_xK1_gate__alpha_xK1 / (var_i_K1_xK1_gate__alpha_xK1 + var_i_K1_xK1_gate__beta_xK1); // dimensionless + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + var_i_K1__g_K1 * var_i_K1_xK1_gate__xK1) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_K1__i_K1; // uA_per_cm2 + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_Kr__g_Kr * var_i_Kr__rr_infinity * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Kr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Kr__i_Kr; // uA_per_cm2 + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((-var_equilibrium_potentials__E_Ks + var_chaste_interface__membrane__V) * var_i_Ks__g_Ks * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(mParameters[8], var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__X_NaCa * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(mParameters[14], var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * exp(0.34999999999999998 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) / ((1 + var_i_NaCa__k_sat * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + 0.44444444444444442 * pow(var_i_NaCa__km_Ca_act, 2) / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (var_i_NaCa__dNaCa_1 + var_i_NaCa__dNaCa_2)), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaCa__i_NaCa; // uA_per_cm2 + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(mParameters[15], var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_1__i_to_1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_to_1__i_to_1; // uA_per_cm2 + const double var_model_parameters__gamma_Cai = 1; // dimensionless + const double var_model_parameters__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_i_Ca_L__i_Ca_L_max = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-15 + var_chaste_interface__membrane__V) * (-mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_r__Ca_r * var_model_parameters__gamma_Cai * exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_i_Ca_L__p_Ca / ((-1 + exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ca_L__i_Ca_L; // uA_per_cm2 + const double var_i_Ca_L_f_Ca2_gate__tau_f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier->Calc(125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)); // dimensionless + const double var_q_rel__g_rel = mp_SR_release_current_max_modifier->Calc(mParameters[1], var_chaste_interface__environment__time) * var_q_rel__vg; // per_millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * var_q_rel__g_rel * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro, var_chaste_interface__environment__time); // millimolar_per_millisecond + + std::vector dqs(16); + dqs[0] = var_q_rel__q_rel; + dqs[1] = var_i_Ca_L__i_Ca_L_converted; + dqs[2] = var_i_Ca_L_f2_gate__tau_f2; + dqs[3] = var_i_Ca_L_f_Ca2_gate__tau_f_Ca2; + dqs[4] = var_i_Ca_L_f_Ca_gate__tau_f_Ca; + dqs[5] = var_i_Ca_L_f_gate__tau_f; + dqs[6] = var_i_Na__i_Na_converted; + dqs[7] = var_i_Na_h_gate__tau_h; + dqs[8] = var_i_Na_j_gate__tau_j; + dqs[9] = var_i_K1__i_K1_converted; + dqs[10] = var_i_Kr__i_Kr_converted; + dqs[11] = var_i_Ks__i_Ks_converted; + dqs[12] = var_i_NaCa__i_NaCa_converted; + dqs[13] = var_membrane__i_stim_converted; + dqs[14] = var_i_to_1__i_to_1_converted; + dqs[15] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "aslanidi_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-83.43812846286808); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022355433459434943); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9786390933308567); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09866447258167589); + + // rY[5]: + this->mVariableNames.push_back("i_Na_L_m_L_gate__m_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // rY[6]: + this->mVariableNames.push_back("i_Na_L_h_L_gate__h_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8946968372659203); + + // rY[7]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.322223865147363e-06); + + // rY[8]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9985607329462358); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8173435436674658); + + // rY[10]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9610551285529658); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.868690796671854); + + // rY[12]: + this->mVariableNames.push_back("i_Ca_T_b_gate__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0002563937630984438); + + // rY[13]: + this->mVariableNames.push_back("i_Ca_T_g_gate__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9720432601848331); + + // rY[14]: + this->mVariableNames.push_back("i_to_1_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0004238729429342389); + + // rY[15]: + this->mVariableNames.push_back("i_to_1_i_gate__i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9990935802459496); + + // rY[16]: + this->mVariableNames.push_back("i_to_1_i2_gate__i2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9777368439681764); + + // rY[17]: + this->mVariableNames.push_back("i_Kr_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.07084939408222911); + + // rY[18]: + this->mVariableNames.push_back("i_Ks_xs1_gate__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0011737654433043125); + + // rY[19]: + this->mVariableNames.push_back("i_Ks_xs2_gate__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001179442867470093); + + // rY[20]: + this->mVariableNames.push_back("i_to_2_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0014909437525000811); + + // rY[21]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.927155552932733); + + // rY[22]: + this->mVariableNames.push_back("intracellular_ion_concentrations__Cl_i"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(18.904682470140408); + + // rY[23]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(141.9670801746057); + + // rY[24]: + this->mVariableNames.push_back("Ca_MK_act__Ca_MK_trap"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.789168284782809e-06); + + // rY[25]: + this->mVariableNames.push_back("Ca_NSR__Ca_NSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.2132524695849454); + + // rY[26]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.1433050636518596); + + // rY[27]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022418117117903934); + + // rY[28]: + this->mVariableNames.push_back("q_rel_ri_gate__ri"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7802870066567904); + + // rY[29]: + this->mVariableNames.push_back("q_rel_ro_gate__ro"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.2785734760674763e-09); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellaslanidi_Purkinje_model_2009FromCellMLOpt) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp new file mode 100644 index 00000000..f6d691c7 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/non_dynamic_aslanidi_Purkinje_model_2009--sympy_1_14.cpp @@ -0,0 +1,1428 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: aslanidi_2009 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NormalOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "aslanidi_Purkinje_model_2009Opt.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + +class Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<35; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[35]; + + // Lookup tables + double (*_lookup_table_0)[35]; + int _lookup_table_0_num_misshit_piecewise[35] = {0}; + +}; + +std::shared_ptr Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::mpInstance; + + + boost::shared_ptr Cellaslanidi_Purkinje_model_2009FromCellMLOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 1; // millisecond + const double var_chaste_interface__membrane__stim_period = 800; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Cellaslanidi_Purkinje_model_2009FromCellMLOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Cellaslanidi_Purkinje_model_2009FromCellMLOpt::Cellaslanidi_Purkinje_model_2009FromCellMLOpt(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCellWithModifiers( + pSolver, + 30, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + // These will get initialised to DummyModifiers in the base class method. + this->AddModifier("JSR_calcium_concentration", + mp_JSR_calcium_concentration_modifier); + this->AddModifier("SR_leak_current_max", + mp_SR_leak_current_max_modifier); + this->AddModifier("SR_release_current", + mp_SR_release_current_modifier); + this->AddModifier("SR_release_current_max", + mp_SR_release_current_max_modifier); + this->AddModifier("SR_uptake_current_max", + mp_SR_uptake_current_max_modifier); + this->AddModifier("concentration_clamp_onoff", + mp_concentration_clamp_onoff_modifier); + this->AddModifier("cytosolic_calcium_concentration", + mp_cytosolic_calcium_concentration_modifier); + this->AddModifier("cytosolic_potassium_concentration", + mp_cytosolic_potassium_concentration_modifier); + this->AddModifier("cytosolic_sodium_concentration", + mp_cytosolic_sodium_concentration_modifier); + this->AddModifier("dyadic_space_calcium_concentration", + mp_dyadic_space_calcium_concentration_modifier); + this->AddModifier("extracellular_calcium_concentration", + mp_extracellular_calcium_concentration_modifier); + this->AddModifier("extracellular_potassium_concentration", + mp_extracellular_potassium_concentration_modifier); + this->AddModifier("extracellular_sodium_concentration", + mp_extracellular_sodium_concentration_modifier); + this->AddModifier("membrane_L_type_calcium_current", + mp_i_Ca_L__i_Ca_L_modifier); + this->AddModifier("membrane_L_type_calcium_current_conductance", + mp_membrane_L_type_calcium_current_conductance_modifier); + this->AddModifier("membrane_L_type_calcium_current_d_gate", + mp_membrane_L_type_calcium_current_d_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate", + mp_membrane_L_type_calcium_current_f2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f2_gate_tau", + mp_membrane_L_type_calcium_current_f2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate", + mp_membrane_L_type_calcium_current_fCa2_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa2_gate_tau", + mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate", + mp_membrane_L_type_calcium_current_fCa_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_fCa_gate_tau", + mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate", + mp_membrane_L_type_calcium_current_f_gate_modifier); + this->AddModifier("membrane_L_type_calcium_current_f_gate_tau", + mp_membrane_L_type_calcium_current_f_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current", + mp_i_Na__i_Na_modifier); + this->AddModifier("membrane_fast_sodium_current_conductance", + mp_membrane_fast_sodium_current_conductance_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate", + mp_membrane_fast_sodium_current_h_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_h_gate_tau", + mp_membrane_fast_sodium_current_h_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate", + mp_membrane_fast_sodium_current_j_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_j_gate_tau", + mp_membrane_fast_sodium_current_j_gate_tau_modifier); + this->AddModifier("membrane_fast_sodium_current_m_gate", + mp_membrane_fast_sodium_current_m_gate_modifier); + this->AddModifier("membrane_fast_sodium_current_reduced_inactivation", + mp_membrane_fast_sodium_current_reduced_inactivation_modifier); + this->AddModifier("membrane_fast_sodium_current_shift_inactivation", + mp_membrane_fast_sodium_current_shift_inactivation_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current", + mp_i_K1__i_K1_modifier); + this->AddModifier("membrane_inward_rectifier_potassium_current_conductance", + mp_membrane_inward_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current", + mp_i_Kr__i_Kr_modifier); + this->AddModifier("membrane_rapid_delayed_rectifier_potassium_current_conductance", + mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current", + mp_i_Ks__i_Ks_modifier); + this->AddModifier("membrane_slow_delayed_rectifier_potassium_current_conductance", + mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current", + mp_i_NaCa__i_NaCa_modifier); + this->AddModifier("membrane_sodium_calcium_exchanger_current_conductance", + mp_membrane_sodium_calcium_exchanger_current_conductance_modifier); + this->AddModifier("membrane_transient_outward_current", + mp_i_to_1__i_to_1_modifier); + this->AddModifier("membrane_transient_outward_current_conductance", + mp_membrane_transient_outward_current_conductance_modifier); + this->AddModifier("membrane_voltage", + mp_membrane_voltage_modifier); + this->mParameters[0] = 0.0043750000000000004; // (var_q_leak__q_leak_max) [millimolar_per_millisecond] + this->mParameters[1] = 3000; // (var_q_rel__g_rel_max) [per_millisecond] + this->mParameters[2] = 0.0043750000000000004; // (var_q_up__q_up_max) [millimolar_per_millisecond] + this->mParameters[3] = 1; // (var_intracellular_ion_concentrations__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_model_parameters__Ca_o) [millimolar] + this->mParameters[5] = 5.4000000000000004; // (var_model_parameters__K_o) [millimolar] + this->mParameters[6] = 140; // (var_model_parameters__Na_o) [millimolar] + this->mParameters[7] = 0.3392328; // (var_i_Ca_L__g_Ca_L) [dimensionless] + this->mParameters[8] = 8; // (var_i_Na__g_Na) [milliS_per_microF] + this->mParameters[9] = 0; // (var_i_Na__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[10] = 0; // (var_i_Na__shift_INa_inact) [millivolt] + this->mParameters[11] = 0.25; // (var_i_K1__g_K1_max) [milliS_per_microF] + this->mParameters[12] = 0.040008488000000002; // (var_i_Kr__g_Kr_max) [milliS_per_microF] + this->mParameters[13] = 0.052581329000000003; // (var_i_Ks__g_Ks_max) [milliS_per_microF] + this->mParameters[14] = 4.5; // (var_i_NaCa__i_NaCa_max) [microA_per_microF] + this->mParameters[15] = 0.14135944; // (var_i_to_1__g_to_1) [milliS_per_microF] + } + + Cellaslanidi_Purkinje_model_2009FromCellMLOpt::~Cellaslanidi_Purkinje_model_2009FromCellMLOpt() + { + } + + AbstractLookupTableCollection* Cellaslanidi_Purkinje_model_2009FromCellMLOpt::GetLookupTableCollection() + { + return Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance(); + } + + void Cellaslanidi_Purkinje_model_2009FromCellMLOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 30; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Cellaslanidi_Purkinje_model_2009FromCellMLOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = rY[1]; + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = rY[2]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = rY[3]; + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = rY[4]; + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = rY[5]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = rY[6]; + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = rY[7]; + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = rY[8]; + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = rY[9]; + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = rY[10]; + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = rY[11]; + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = rY[12]; + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = rY[13]; + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = rY[20]; + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = rY[21]; + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = rY[22]; + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = rY[23]; + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_r__Ca_r = rY[27]; + // Units: millimolar; Initial value: 0.00022418117117903934 + + // Lookup table indexing + const bool _oob_0 = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_equilibrium_potentials__E_K = 26.712338705498265 * log(mParameters[5] / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_equilibrium_potentials__E_Na = 26.712338705498265 * log(mParameters[6] / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_membrane__i_tot = 0.0077250000000000001 * var_chaste_interface__membrane__V + 0.0060102762087371094 * log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i) - 0.0025000000000000001 * var_equilibrium_potentials__E_Na - 0.0050000000000000001 * var_equilibrium_potentials__E_K + (0.0040000000000000001 + 0.4389381125701739 * sqrt(mParameters[5]) * mParameters[11] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + 0.0027599999999999999 * _lt_0_row[0] * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) + 0.057500000000000002 * var_chaste_interface__Ca_i__Ca_i / (0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i) + 0.13 * (-50 + var_chaste_interface__membrane__V) * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g + 0.037374999999999999 * pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__i_Na_L_h_L_gate__h_L + 0.0028824983370007683 * _lt_0_row[2] * (-0.34100000000000003 * mParameters[4] + 1 * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V + _lt_0_row[5] * (-1.5 * pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + 0.40000000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[14] * mParameters[4] * _lt_0_row[4]) / ((1 + 6.9444444444444451e-9 / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (1004882.8125 * var_chaste_interface__Ca_i__Ca_i + 1.3 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mParameters[4] + 1.5 * pow(mParameters[6], 3) * var_chaste_interface__Ca_i__Ca_i + 0.0035999999999999999 * pow(mParameters[6], 3) * (1 + 0.081300813008130079 * var_chaste_interface__intracellular_ion_concentrations__Na_i) + 1860.8670000000004 * (1 + 416.66666666666669 * var_chaste_interface__Ca_i__Ca_i) * mParameters[4])) + pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mParameters[8] + (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mParameters[15] * var_chaste_interface__i_to_1_a_gate__a + 0.61875000000000002 * mParameters[5] / ((1 + 100 / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (1.5 + mParameters[5]) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6])) * _lt_0_row[6])) + 0.028896009762002683 * _lt_0_row[9] * (_lt_0_row[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V + (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mParameters[6] + mParameters[5]) / (0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) + var_chaste_interface__membrane__V) * mParameters[13] * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2 + 0.43033148291193518 * _lt_0_row[10] * sqrt(mParameters[5]) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mParameters[12] * var_chaste_interface__i_Kr_xr_gate__xr + 3.510865186083326 * _lt_0_row[12] * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mParameters[4] + 1 * var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]) * mParameters[7] * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f; // microA_per_microF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_membrane__i_tot; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Cellaslanidi_Purkinje_model_2009FromCellMLOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(rY[0], var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(rY[1], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(rY[2], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(rY[3], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(rY[4], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Na_L_m_L_gate__m_L = rY[5]; + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_L_h_L_gate__h_L = rY[6]; + // Units: dimensionless; Initial value: 0.8946968372659203 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(rY[7], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(rY[8], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(rY[9], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(rY[10], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(rY[11], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_Ca_T_b_gate__b = rY[12]; + // Units: dimensionless; Initial value: 0.0002563937630984438 + double var_chaste_interface__i_Ca_T_g_gate__g = rY[13]; + // Units: dimensionless; Initial value: 0.9720432601848331 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__i_to_2_a_gate__a = rY[20]; + // Units: dimensionless; Initial value: 0.0014909437525000811 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(rY[21], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__Cl_i = rY[22]; + // Units: millimolar; Initial value: 18.904682470140408 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(rY[23], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = rY[24]; + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_NSR__Ca_NSR = rY[25]; + // Units: millimolar; Initial value: 1.2132524695849454 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(rY[26], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(rY[27], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = rY[28]; + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = rY[29]; + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Lookup table indexing + const bool _oob_0 = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_Ca_MK_act__Ca_MK_bound = 0.050000000000000003 * (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) / (1 + 0.14999999999999999 / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_Ca_r__q_diff = 5 * var_chaste_interface__Ca_r__Ca_r - 5 * var_chaste_interface__Ca_i__Ca_i; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap = -0.00068000000000000005 * var_chaste_interface__Ca_MK_act__Ca_MK_trap + 0.050000000000000003 * (var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_bound; // 1 / millisecond + const double var_i_Ca_p__i_Ca_p = 0.057500000000000002 * var_chaste_interface__Ca_i__Ca_i / (0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i); // microA_per_microF + const double d_dt_chaste_interface_var_i_to_2_a_gate__a = 1 / (1 + 0.1502 / var_chaste_interface__Ca_r__Ca_r) - 1 * var_chaste_interface__i_to_2_a_gate__a; // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_d_gate__d = _lt_0_row[14] * (-var_chaste_interface__i_Ca_L_d_gate__d + _lt_0_row[13]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2 = (-var_chaste_interface__i_Ca_L_f2_gate__f2 + _lt_0_row[15]) / (38 + 0.070000000000000007 * pow((-18.600000000000001 + var_chaste_interface__membrane__V), 2)); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_gate__f = (-var_chaste_interface__i_Ca_L_f_gate__f + _lt_0_row[15]) / (4 + 0.0050000000000000001 * pow((-2.5 + var_chaste_interface__membrane__V), 2)); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_T_b_gate__b = (-var_chaste_interface__i_Ca_T_b_gate__b + _lt_0_row[16]) * (_lt_0_row[17]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_T_g_gate__g = (-var_chaste_interface__i_Ca_T_g_gate__g + _lt_0_row[18]) * (_lt_0_row[19]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Kr_xr_gate__xr = _lt_0_row[21] * (-var_chaste_interface__i_Kr_xr_gate__xr + _lt_0_row[20]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1 = (-var_chaste_interface__i_Ks_xs1_gate__xs1 + _lt_0_row[22]) * (_lt_0_row[23]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2 = (-var_chaste_interface__i_Ks_xs2_gate__xs2 + _lt_0_row[22]) * (_lt_0_row[24]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L = _lt_0_row[26] * (-var_chaste_interface__i_Na_L_h_L_gate__h_L + _lt_0_row[25]); // 1 / millisecond + const double var_i_Na_L_m_L_gate__alpha_m_L = _lt_0_row[27]; // per_millisecond + const double var_i_Na_L_m_L_gate__beta_m_L = _lt_0_row[28]; // per_millisecond + const double d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L = (-var_chaste_interface__i_Na_L_m_L_gate__m_L + var_i_Na_L_m_L_gate__alpha_m_L / (var_i_Na_L_m_L_gate__alpha_m_L + var_i_Na_L_m_L_gate__beta_m_L)) * (1 * var_i_Na_L_m_L_gate__alpha_m_L + 1 * var_i_Na_L_m_L_gate__beta_m_L); // 1 / millisecond + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_h_gate__h = (1 * var_i_Na_h_gate__alpha_h + 1 * var_i_Na_h_gate__beta_h) * (-var_chaste_interface__i_Na_h_gate__h + 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time)) * var_i_Na_h_gate__alpha_h / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h)); // 1 / millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_i_Na_j_gate__j = (1 * var_i_Na_j_gate__alpha_j + 1 * var_i_Na_j_gate__beta_j) * (-var_chaste_interface__i_Na_j_gate__j + 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time) + (1 - 0.01 * mp_membrane_fast_sodium_current_reduced_inactivation_modifier->Calc(mParameters[9], var_chaste_interface__environment__time)) * var_i_Na_j_gate__alpha_j / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j)); // 1 / millisecond + const double var_i_Na_m_gate__alpha_m = _lt_0_row[27]; // per_millisecond + const double var_i_Na_m_gate__beta_m = _lt_0_row[28]; // per_millisecond + const double d_dt_chaste_interface_var_i_Na_m_gate__m = (-var_chaste_interface__i_Na_m_gate__m + var_i_Na_m_gate__alpha_m / (var_i_Na_m_gate__alpha_m + var_i_Na_m_gate__beta_m)) * (1 * var_i_Na_m_gate__alpha_m + 1 * var_i_Na_m_gate__beta_m); // 1 / millisecond + const double var_i_to_1_a_gate__alpha_a = _lt_0_row[29]; // per_millisecond + const double var_i_to_1_a_gate__beta_a = _lt_0_row[30]; // per_millisecond + const double d_dt_chaste_interface_var_i_to_1_a_gate__a = (-var_chaste_interface__i_to_1_a_gate__a + var_i_to_1_a_gate__alpha_a / (var_i_to_1_a_gate__alpha_a + var_i_to_1_a_gate__beta_a)) * (1 * var_i_to_1_a_gate__alpha_a + 1 * var_i_to_1_a_gate__beta_a); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i2_gate__i2 = _lt_0_row[32] * (-var_chaste_interface__i_to_1_i2_gate__i2 + _lt_0_row[31]); // 1 / millisecond + const double d_dt_chaste_interface_var_i_to_1_i_gate__i = _lt_0_row[34] * (-var_chaste_interface__i_to_1_i_gate__i + _lt_0_row[33]); // 1 / millisecond + const double var_equilibrium_potentials__E_Cl = -26.712338705498265 * log(100 / var_chaste_interface__intracellular_ion_concentrations__Cl_i); // millivolt + const double var_background_currents__i_Cl_b = 0.00022499999999999999 * var_chaste_interface__membrane__V - 0.00022499999999999999 * var_equilibrium_potentials__E_Cl; // microA_per_microF + const double var_equilibrium_potentials__E_K = 26.712338705498265 * log(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i); // millivolt + const double var_CT_K_Cl__CT_K_Cl = 7.0755999999999996e-6 * (-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K) / (87.825100000000006 - var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_K); // millimolar_per_millisecond + const double var_background_currents__i_K_b = 0.0050000000000000001 * var_chaste_interface__membrane__V - 0.0050000000000000001 * var_equilibrium_potentials__E_K; // microA_per_microF + const double var_equilibrium_potentials__E_Na = 26.712338705498265 * log(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i); // millivolt + const double var_CT_Na_Cl__CT_Na_Cl = 9.8442999999999999e-6 * pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4) / (59494197.640692554 + pow((-var_equilibrium_potentials__E_Cl + var_equilibrium_potentials__E_Na), 4)); // millimolar_per_millisecond + const double var_background_currents__i_Na_b = 0.0025000000000000001 * var_chaste_interface__membrane__V - 0.0025000000000000001 * var_equilibrium_potentials__E_Na; // microA_per_microF + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + 0.4389381125701739 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(mParameters[11], var_chaste_interface__environment__time) / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)) + (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V))))) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K_p__i_K_p = 0.0027599999999999999 * _lt_0_row[0] * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V); // microA_per_microF + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc(0.43033148291193518 * _lt_0_row[10] * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[12], var_chaste_interface__environment__time) * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * (-26.712338705498265 * log((0.018329999999999999 * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) / (0.018329999999999999 * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) + var_chaste_interface__membrane__V) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[13], var_chaste_interface__environment__time) * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(mParameters[8], var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc(_lt_0_row[5] * (-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[3] + 0.40000000000000002 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(mParameters[14], var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * _lt_0_row[4]) / ((1 + 6.9444444444444451e-9 / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (1004882.8125 * var_chaste_interface__Ca_i__Ca_i + 1.3 * pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + 0.0035999999999999999 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + 0.081300813008130079 * var_chaste_interface__intracellular_ion_concentrations__Na_i) + 1860.8670000000004 * (1 + 416.66666666666669 * var_chaste_interface__Ca_i__Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time))), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaK__i_NaK = 0.61875000000000002 * mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / ((1 + 100 / pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 2)) * (1.5 + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * (1 + _lt_0_row[7] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time))) * _lt_0_row[6])); // microA_per_microF + const double var_i_Na_L__i_Na_L = 0.037374999999999999 * pow(var_chaste_interface__i_Na_L_m_L_gate__m_L, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__i_Na_L_h_L_gate__h_L; // microA_per_microF + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(mParameters[15], var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_2__i_to_2 = 0.028896009762002683 * _lt_0_row[9] * (_lt_0_row[8] + var_chaste_interface__intracellular_ion_concentrations__Cl_i) * var_chaste_interface__i_to_2_a_gate__a * var_chaste_interface__membrane__V; // microA_per_microF + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i = (-6.767281717060562e-9 * var_background_currents__i_Cl_b - 6.767281717060562e-9 * var_i_to_2__i_to_2 + var_CT_K_Cl__CT_K_Cl + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i = (1.3534563434121124e-8 * var_i_NaK__i_NaK - 6.767281717060562e-9 * var_background_currents__i_K_b - 6.767281717060562e-9 * var_i_K1__i_K1 - 6.767281717060562e-9 * var_i_K_p__i_K_p - 6.767281717060562e-9 * var_i_Kr__i_Kr - 6.767281717060562e-9 * var_i_Ks__i_Ks - 6.767281717060562e-9 * var_i_to_1__i_to_1 + var_CT_K_Cl__CT_K_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i = (-2.0301845151181685e-8 * var_i_NaCa__i_NaCa - 2.0301845151181685e-8 * var_i_NaK__i_NaK - 6.767281717060562e-9 * var_background_currents__i_Na_b - 6.767281717060562e-9 * var_i_Na__i_Na - 6.767281717060562e-9 * var_i_Na_L__i_Na_L + var_CT_Na_Cl__CT_Na_Cl) * mp_concentration_clamp_onoff_modifier->Calc(mParameters[3], var_chaste_interface__environment__time); // millimolar / millisecond + const double var_background_currents__i_Ca_b = 0.0028824983370007683 * _lt_0_row[2] * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1 * var_chaste_interface__Ca_i__Ca_i * _lt_0_row[1]) * var_chaste_interface__membrane__V; // microA_per_microF + const double var_i_Ca_L__i_Ca_L_max = 3.510865186083326 * _lt_0_row[12] * (-15 + var_chaste_interface__membrane__V) * (-0.34100000000000003 * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1 * var_chaste_interface__Ca_r__Ca_r * _lt_0_row[11]); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2 = (-var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 + 1 / (1 - 100 * var_i_Ca_L__i_Ca_L)) / (125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L))); // 1 / millisecond + const double d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca = (0.14999999999999999 - var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca + 0.55000000000000004 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 0.29999999999999999 / (1 - 20 * var_i_Ca_L__i_Ca_L)) / (0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_leak__q_leak = 0.066666666666666666 * var_chaste_interface__Ca_NSR__Ca_NSR * mp_SR_leak_current_max_modifier->Calc(mParameters[0], var_chaste_interface__environment__time); // millimolar_per_millisecond + const double var_q_rel_ri_gate__Ca_fac = 1 / (1 + exp(3.3333333333333335 + 66.666666666666671 * var_i_Ca_L__i_Ca_L)); // millimolar + const double d_dt_chaste_interface_var_q_rel_ri_gate__ri = (-var_chaste_interface__q_rel_ri_gate__ri + 1 / (1 + exp(-16 + 80 * var_q_rel_ri_gate__Ca_fac + 40000 * var_chaste_interface__Ca_r__Ca_r))) / (3 + (350 - 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)) / (1 + exp(-15 + 5000 * var_chaste_interface__Ca_r__Ca_r + 15 * var_q_rel_ri_gate__Ca_fac)) + 10 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)); // 1 / millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc(1 * (-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * mp_SR_release_current_max_modifier->Calc(mParameters[1], var_chaste_interface__environment__time) * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)), var_chaste_interface__environment__time); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_r__Ca_r = 1 * (-var_Ca_r__q_diff + 0.23999999999999996 * var_q_rel__q_rel - 1.1504378919002956e-7 * var_i_Ca_L__i_Ca_L) / (1 + 2.2480000000000002 * var_chaste_interface__Ca_r__Ca_r / pow((0.0086999999999999994 + var_chaste_interface__Ca_r__Ca_r), 2) + 0.094 * var_chaste_interface__Ca_r__Ca_r / pow((0.00087000000000000001 + var_chaste_interface__Ca_r__Ca_r), 2)); // millimolar / millisecond + const double d_dt_chaste_interface_var_q_rel_ro_gate__ro = -0.33333333333333331 * var_chaste_interface__q_rel_ro_gate__ro + 0.33333333333333331 * pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) * pow(var_i_Ca_L__i_Ca_L, 2) / ((1 + pow(var_i_Ca_L__i_Ca_L, 2)) * (pow(var_chaste_interface__Ca_JSR__Ca_JSR, 1.8999999999999999) + 1644.6531773416521 * pow((var_chaste_interface__Ca_r__Ca_r / (0.0028 + var_chaste_interface__Ca_r__Ca_r)), 1.8999999999999999))); // 1 / millisecond + const double var_q_tr__q_tr = 0.0083333333333333332 * var_chaste_interface__Ca_NSR__Ca_NSR - 0.0083333333333333332 * var_chaste_interface__Ca_JSR__Ca_JSR; // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_JSR__Ca_JSR = (-var_q_rel__q_rel + var_q_tr__q_tr) / (1 + 8 / pow((0.80000000000000004 + var_chaste_interface__Ca_JSR__Ca_JSR), 2)); // millimolar / millisecond + const double var_q_up__q_up = 0.5 * (1 + 0.75 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act)) * var_chaste_interface__Ca_i__Ca_i * mp_SR_uptake_current_max_modifier->Calc(mParameters[2], var_chaste_interface__environment__time) / (0.00092000000000000003 - 0.00017000000000000001 * var_Ca_MK_act__Ca_MK_act / (0.14999999999999999 + 1 * var_Ca_MK_act__Ca_MK_act) + var_chaste_interface__Ca_i__Ca_i); // millimolar_per_millisecond + const double d_dt_chaste_interface_var_Ca_NSR__Ca_NSR = -var_q_leak__q_leak - 0.086956521739130432 * var_q_tr__q_tr + var_q_up__q_up; // millimolar / millisecond + const double d_dt_chaste_interface_var_Ca_i__Ca_i = -1 * (3.383640858530281e-9 * var_background_currents__i_Ca_b + 3.383640858530281e-9 * var_i_Ca_p__i_Ca_p + 0.081176470588235281 * var_q_up__q_up - 0.029411764705882353 * var_Ca_r__q_diff - 6.767281717060562e-9 * var_i_NaCa__i_NaCa - 0.081176470588235281 * var_q_leak__q_leak) / (1 + 0.14000000000000001 * var_chaste_interface__Ca_i__Ca_i / pow((0.00050000000000000001 + var_chaste_interface__Ca_i__Ca_i), 2) + 0.10000000000000001 * var_chaste_interface__Ca_i__Ca_i / pow((0.0023800000000000002 + var_chaste_interface__Ca_i__Ca_i), 2)); // millimolar / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + d_dt_chaste_interface_var_membrane__V = -var_background_currents__i_Ca_b - var_background_currents__i_Cl_b - var_background_currents__i_K_b - var_background_currents__i_Na_b - var_i_Ca_L__i_Ca_L - var_i_Ca_p__i_Ca_p - var_i_K1__i_K1 - var_i_K_p__i_K_p - var_i_Kr__i_Kr - var_i_Ks__i_Ks - var_i_Na__i_Na - var_i_NaCa__i_NaCa - var_i_NaK__i_NaK - var_i_Na_L__i_Na_L - var_i_to_1__i_to_1 - var_i_to_2__i_to_2 - GetIntracellularAreaStimulus(var_chaste_interface__environment__time) / HeartConfig::Instance()->GetCapacitance() - 0.13 * (-50 + var_chaste_interface__membrane__V) * var_chaste_interface__i_Ca_T_b_gate__b * var_chaste_interface__i_Ca_T_g_gate__g; // millivolt / millisecond + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_Ca_i__Ca_i; + rDY[2] = d_dt_chaste_interface_var_i_Na_m_gate__m; + rDY[3] = d_dt_chaste_interface_var_i_Na_h_gate__h; + rDY[4] = d_dt_chaste_interface_var_i_Na_j_gate__j; + rDY[5] = d_dt_chaste_interface_var_i_Na_L_m_L_gate__m_L; + rDY[6] = d_dt_chaste_interface_var_i_Na_L_h_L_gate__h_L; + rDY[7] = d_dt_chaste_interface_var_i_Ca_L_d_gate__d; + rDY[8] = d_dt_chaste_interface_var_i_Ca_L_f_gate__f; + rDY[9] = d_dt_chaste_interface_var_i_Ca_L_f2_gate__f2; + rDY[10] = d_dt_chaste_interface_var_i_Ca_L_f_Ca_gate__f_Ca; + rDY[11] = d_dt_chaste_interface_var_i_Ca_L_f_Ca2_gate__f_Ca2; + rDY[12] = d_dt_chaste_interface_var_i_Ca_T_b_gate__b; + rDY[13] = d_dt_chaste_interface_var_i_Ca_T_g_gate__g; + rDY[14] = d_dt_chaste_interface_var_i_to_1_a_gate__a; + rDY[15] = d_dt_chaste_interface_var_i_to_1_i_gate__i; + rDY[16] = d_dt_chaste_interface_var_i_to_1_i2_gate__i2; + rDY[17] = d_dt_chaste_interface_var_i_Kr_xr_gate__xr; + rDY[18] = d_dt_chaste_interface_var_i_Ks_xs1_gate__xs1; + rDY[19] = d_dt_chaste_interface_var_i_Ks_xs2_gate__xs2; + rDY[20] = d_dt_chaste_interface_var_i_to_2_a_gate__a; + rDY[21] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Na_i; + rDY[22] = d_dt_chaste_interface_var_intracellular_ion_concentrations__Cl_i; + rDY[23] = d_dt_chaste_interface_var_intracellular_ion_concentrations__K_i; + rDY[24] = d_dt_chaste_interface_var_Ca_MK_act__Ca_MK_trap; + rDY[25] = d_dt_chaste_interface_var_Ca_NSR__Ca_NSR; + rDY[26] = d_dt_chaste_interface_var_Ca_JSR__Ca_JSR; + rDY[27] = d_dt_chaste_interface_var_Ca_r__Ca_r; + rDY[28] = d_dt_chaste_interface_var_q_rel_ri_gate__ri; + rDY[29] = d_dt_chaste_interface_var_q_rel_ro_gate__ro; + } + + std::vector Cellaslanidi_Purkinje_model_2009FromCellMLOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : mp_membrane_voltage_modifier->Calc(rY[0], var_chaste_interface__environment__time)); + // Units: millivolt; Initial value: -83.43812846286808 + double var_chaste_interface__Ca_i__Ca_i = mp_cytosolic_calcium_concentration_modifier->Calc(rY[1], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022355433459434943 + double var_chaste_interface__i_Na_m_gate__m = mp_membrane_fast_sodium_current_m_gate_modifier->Calc(rY[2], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.002003390432234504 + double var_chaste_interface__i_Na_h_gate__h = mp_membrane_fast_sodium_current_h_gate_modifier->Calc(rY[3], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9786390933308567 + double var_chaste_interface__i_Na_j_gate__j = mp_membrane_fast_sodium_current_j_gate_modifier->Calc(rY[4], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.09866447258167589 + double var_chaste_interface__i_Ca_L_d_gate__d = mp_membrane_L_type_calcium_current_d_gate_modifier->Calc(rY[7], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 2.322223865147363e-06 + double var_chaste_interface__i_Ca_L_f_gate__f = mp_membrane_L_type_calcium_current_f_gate_modifier->Calc(rY[8], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9985607329462358 + double var_chaste_interface__i_Ca_L_f2_gate__f2 = mp_membrane_L_type_calcium_current_f2_gate_modifier->Calc(rY[9], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.8173435436674658 + double var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_modifier->Calc(rY[10], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.9610551285529658 + double var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_modifier->Calc(rY[11], var_chaste_interface__environment__time); + // Units: dimensionless; Initial value: 0.868690796671854 + double var_chaste_interface__i_to_1_a_gate__a = rY[14]; + // Units: dimensionless; Initial value: 0.0004238729429342389 + double var_chaste_interface__i_to_1_i_gate__i = rY[15]; + // Units: dimensionless; Initial value: 0.9990935802459496 + double var_chaste_interface__i_to_1_i2_gate__i2 = rY[16]; + // Units: dimensionless; Initial value: 0.9777368439681764 + double var_chaste_interface__i_Kr_xr_gate__xr = rY[17]; + // Units: dimensionless; Initial value: 0.07084939408222911 + double var_chaste_interface__i_Ks_xs1_gate__xs1 = rY[18]; + // Units: dimensionless; Initial value: 0.0011737654433043125 + double var_chaste_interface__i_Ks_xs2_gate__xs2 = rY[19]; + // Units: dimensionless; Initial value: 0.001179442867470093 + double var_chaste_interface__intracellular_ion_concentrations__Na_i = mp_cytosolic_sodium_concentration_modifier->Calc(rY[21], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 9.927155552932733 + double var_chaste_interface__intracellular_ion_concentrations__K_i = mp_cytosolic_potassium_concentration_modifier->Calc(rY[23], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 141.9670801746057 + double var_chaste_interface__Ca_MK_act__Ca_MK_trap = rY[24]; + // Units: dimensionless; Initial value: 8.789168284782809e-06 + double var_chaste_interface__Ca_JSR__Ca_JSR = mp_JSR_calcium_concentration_modifier->Calc(rY[26], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 1.1433050636518596 + double var_chaste_interface__Ca_r__Ca_r = mp_dyadic_space_calcium_concentration_modifier->Calc(rY[27], var_chaste_interface__environment__time); + // Units: millimolar; Initial value: 0.00022418117117903934 + double var_chaste_interface__q_rel_ri_gate__ri = rY[28]; + // Units: dimensionless; Initial value: 0.7802870066567904 + double var_chaste_interface__q_rel_ro_gate__ro = rY[29]; + // Units: dimensionless; Initial value: 1.2785734760674763e-09 + + // Lookup table indexing + const bool _oob_0 = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Cellaslanidi_Purkinje_model_2009FromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_Ca_MK_act__Ca_MK_0 = 0.050000000000000003; // dimensionless + const double var_Ca_MK_act__km_Ca_MK = 0.14999999999999999; // millimolar + const double var_Ca_MK_act__Ca_MK_bound = (1 - var_chaste_interface__Ca_MK_act__Ca_MK_trap) * var_Ca_MK_act__Ca_MK_0 / (1 + var_Ca_MK_act__km_Ca_MK / var_chaste_interface__Ca_r__Ca_r); // dimensionless + const double var_Ca_MK_act__Ca_MK_act = var_Ca_MK_act__Ca_MK_bound + var_chaste_interface__Ca_MK_act__Ca_MK_trap; // dimensionless + const double var_equilibrium_potentials__r_NaK = 0.018329999999999999; // dimensionless + const double var_i_Ca_L__p_Ca = 0.000243; // cm_per_second + const double var_i_Ca_L_f_Ca_gate__tau_f_Ca = mp_membrane_L_type_calcium_current_fCa_gate_tau_modifier->Calc(0.5 + 1 / (1 + 333.33333333333331 * var_chaste_interface__Ca_r__Ca_r) + 10 * var_Ca_MK_act__Ca_MK_act / (1 * var_Ca_MK_act__Ca_MK_act + var_Ca_MK_act__km_Ca_MK), var_chaste_interface__environment__time); // millisecond + const double var_i_Ks__g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_chaste_interface__Ca_i__Ca_i), 1.3999999999999999))) * mp_membrane_slow_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[13], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__X_NaCa = 0.40000000000000002; // dimensionless + const double var_i_NaCa__k_sat = 0.27000000000000002; // dimensionless + const double var_i_NaCa__km_Ca_act = 0.000125; // millimolar + const double var_i_NaCa__km_Ca_i = 0.0035999999999999999; // millimolar + const double var_i_NaCa__km_Ca_o = 1.3; // millimolar + const double var_i_NaCa__km_Na_i_1 = 12.300000000000001; // millimolar + const double var_i_NaCa__km_Na_o = 87.5; // millimolar + const double var_i_Ca_L_f2_gate__tau_f2 = mp_membrane_L_type_calcium_current_f2_gate_tau_modifier->Calc(38 + 0.070000000000000007 * pow((-18.600000000000001 + var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Ca_L_f_gate__tau_f = mp_membrane_L_type_calcium_current_f_gate_tau_modifier->Calc(4 + 0.0050000000000000001 * pow((-2.5 + var_chaste_interface__membrane__V), 2), var_chaste_interface__environment__time); // millisecond + const double var_i_Kr__rr_infinity = 1 * _lt_0_row[10]; // dimensionless + const double var_i_Na_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_i_Na_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time))) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_h_gate__tau_h = mp_membrane_fast_sodium_current_h_gate_tau_modifier->Calc(1 / (var_i_Na_h_gate__alpha_h + var_i_Na_h_gate__beta_h), var_chaste_interface__environment__time); // millisecond + const double var_i_Na_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time)))) : (0)); // per_millisecond + const double var_i_Na_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mp_membrane_fast_sodium_current_shift_inactivation_modifier->Calc(mParameters[10], var_chaste_interface__environment__time) - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_i_Na_j_gate__tau_j = mp_membrane_fast_sodium_current_j_gate_tau_modifier->Calc(1 / (var_i_Na_j_gate__alpha_j + var_i_Na_j_gate__beta_j), var_chaste_interface__environment__time); // millisecond + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_i_NaCa__dNaCa_1 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__km_Ca_o + 1.5 * pow(var_i_NaCa__km_Na_o, 3) * var_chaste_interface__Ca_i__Ca_i + pow(var_i_NaCa__km_Na_i_1, 3) * (1 + 1.5 * var_chaste_interface__Ca_i__Ca_i / var_i_NaCa__km_Ca_i) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time); // millimolar4 + const double var_model_parameters__Cm = 1; // microF_per_cm2 + const double var_model_parameters__F = 96485; // coulomb_per_mole + const double var_i_K1__g_K1 = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_inward_rectifier_potassium_current_conductance_modifier->Calc(mParameters[11], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_Kr__g_Kr = 0.43033148291193518 * sqrt(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) * mp_membrane_rapid_delayed_rectifier_potassium_current_conductance_modifier->Calc(mParameters[12], var_chaste_interface__environment__time); // milliS_per_microF + const double var_i_NaCa__dNaCa_2 = pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) + 1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i + pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * (1 + var_chaste_interface__intracellular_ion_concentrations__Na_i / var_i_NaCa__km_Na_i_1) * var_i_NaCa__km_Ca_i; // millimolar4 + const double var_model_parameters__R = 8314; // joule_per_kilomole_kelvin + const double var_model_parameters__T = 310; // kelvin + const double var_equilibrium_potentials__E_K = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__K_i) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Ks = var_model_parameters__R * var_model_parameters__T * log((var_equilibrium_potentials__r_NaK * mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) + mp_extracellular_potassium_concentration_modifier->Calc(mParameters[5], var_chaste_interface__environment__time)) / (var_equilibrium_potentials__r_NaK * var_chaste_interface__intracellular_ion_concentrations__Na_i + var_chaste_interface__intracellular_ion_concentrations__K_i)) / var_model_parameters__F; // millivolt + const double var_equilibrium_potentials__E_Na = var_model_parameters__R * var_model_parameters__T * log(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time) / var_chaste_interface__intracellular_ion_concentrations__Na_i) / var_model_parameters__F; // millivolt + const double var_i_K1_xK1_gate__alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_equilibrium_potentials__E_K)); // dimensionless + const double var_i_K1_xK1_gate__beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_equilibrium_potentials__E_K) + exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_equilibrium_potentials__E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_equilibrium_potentials__E_K - 0.51429999999999998 * var_chaste_interface__membrane__V)); // dimensionless + const double var_i_K1_xK1_gate__xK1 = var_i_K1_xK1_gate__alpha_xK1 / (var_i_K1_xK1_gate__alpha_xK1 + var_i_K1_xK1_gate__beta_xK1); // dimensionless + const double var_i_K1__i_K1 = mp_i_K1__i_K1_modifier->Calc((0.0040000000000000001 + var_i_K1__g_K1 * var_i_K1_xK1_gate__xK1) * (-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_K1__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_K1__i_K1; // uA_per_cm2 + const double var_i_Kr__i_Kr = mp_i_Kr__i_Kr_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * var_i_Kr__g_Kr * var_i_Kr__rr_infinity * var_chaste_interface__i_Kr_xr_gate__xr, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Kr__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Kr__i_Kr; // uA_per_cm2 + const double var_i_Ks__i_Ks = mp_i_Ks__i_Ks_modifier->Calc((-var_equilibrium_potentials__E_Ks + var_chaste_interface__membrane__V) * var_i_Ks__g_Ks * var_chaste_interface__i_Ks_xs1_gate__xs1 * var_chaste_interface__i_Ks_xs2_gate__xs2, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ks__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ks__i_Ks; // uA_per_cm2 + const double var_i_Na__i_Na = mp_i_Na__i_Na_modifier->Calc(pow(var_chaste_interface__i_Na_m_gate__m, 3) * (-var_equilibrium_potentials__E_Na + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_Na_j_gate__j + 0.80000000000000004 * var_chaste_interface__i_Na_h_gate__h) * mp_membrane_fast_sodium_current_conductance_modifier->Calc(mParameters[8], var_chaste_interface__environment__time), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Na__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Na__i_Na; // uA_per_cm2 + const double var_i_NaCa__i_NaCa = mp_i_NaCa__i_NaCa_modifier->Calc((-1.5 * pow(mp_extracellular_sodium_concentration_modifier->Calc(mParameters[6], var_chaste_interface__environment__time), 3) * var_chaste_interface__Ca_i__Ca_i * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T)) + pow(var_chaste_interface__intracellular_ion_concentrations__Na_i, 3) * var_i_NaCa__X_NaCa * mp_membrane_sodium_calcium_exchanger_current_conductance_modifier->Calc(mParameters[14], var_chaste_interface__environment__time) * mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * exp(0.34999999999999998 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) / ((1 + var_i_NaCa__k_sat * exp(-0.65000000000000002 * var_chaste_interface__membrane__V * var_model_parameters__F / (var_model_parameters__R * var_model_parameters__T))) * (1 + 0.44444444444444442 * pow(var_i_NaCa__km_Ca_act, 2) / pow(var_chaste_interface__Ca_i__Ca_i, 2)) * (var_i_NaCa__dNaCa_1 + var_i_NaCa__dNaCa_2)), var_chaste_interface__environment__time); // microA_per_microF + const double var_i_NaCa__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_i_NaCa__i_NaCa; // uA_per_cm2 + const double var_i_to_1__i_to_1 = mp_i_to_1__i_to_1_modifier->Calc((-var_equilibrium_potentials__E_K + var_chaste_interface__membrane__V) * (0.20000000000000001 * var_chaste_interface__i_to_1_i2_gate__i2 + 0.80000000000000004 * var_chaste_interface__i_to_1_i_gate__i) * mp_membrane_transient_outward_current_conductance_modifier->Calc(mParameters[15], var_chaste_interface__environment__time) * var_chaste_interface__i_to_1_a_gate__a, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_to_1__i_to_1_converted = HeartConfig::Instance()->GetCapacitance() * var_i_to_1__i_to_1; // uA_per_cm2 + const double var_model_parameters__gamma_Cai = 1; // dimensionless + const double var_model_parameters__gamma_Cao = 0.34100000000000003; // dimensionless + const double var_model_parameters__z_Ca = 2; // dimensionless + const double var_i_Ca_L__i_Ca_L_max = 1 * pow(var_model_parameters__F, 2) * pow(var_model_parameters__z_Ca, 2) * (-15 + var_chaste_interface__membrane__V) * (-mp_extracellular_calcium_concentration_modifier->Calc(mParameters[4], var_chaste_interface__environment__time) * var_model_parameters__gamma_Cao + var_chaste_interface__Ca_r__Ca_r * var_model_parameters__gamma_Cai * exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_i_Ca_L__p_Ca / ((-1 + exp((-15 + var_chaste_interface__membrane__V) * var_model_parameters__F * var_model_parameters__z_Ca / (var_model_parameters__R * var_model_parameters__T))) * var_model_parameters__Cm * var_model_parameters__R * var_model_parameters__T); // microA_per_microF + const double var_i_Ca_L__i_Ca_L = mp_i_Ca_L__i_Ca_L_modifier->Calc(mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max * var_chaste_interface__i_Ca_L_d_gate__d * var_chaste_interface__i_Ca_L_f2_gate__f2 * var_chaste_interface__i_Ca_L_f_Ca2_gate__f_Ca2 * var_chaste_interface__i_Ca_L_f_Ca_gate__f_Ca * var_chaste_interface__i_Ca_L_f_gate__f, var_chaste_interface__environment__time); // microA_per_microF + const double var_i_Ca_L__i_Ca_L_converted = HeartConfig::Instance()->GetCapacitance() * var_i_Ca_L__i_Ca_L; // uA_per_cm2 + const double var_i_Ca_L_f_Ca2_gate__tau_f_Ca2 = mp_membrane_L_type_calcium_current_fCa2_gate_tau_modifier->Calc(125 + 300 / (1 + exp(-4.375 - 25 * var_i_Ca_L__i_Ca_L)), var_chaste_interface__environment__time); // millisecond + const double var_q_rel__vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * mp_membrane_L_type_calcium_current_conductance_modifier->Calc(mParameters[7], var_chaste_interface__environment__time) * var_i_Ca_L__i_Ca_L_max)); // dimensionless + const double var_q_rel__g_rel = mp_SR_release_current_max_modifier->Calc(mParameters[1], var_chaste_interface__environment__time) * var_q_rel__vg; // per_millisecond + const double var_q_rel__q_rel = mp_SR_release_current_modifier->Calc((-var_chaste_interface__Ca_r__Ca_r + var_chaste_interface__Ca_JSR__Ca_JSR) * var_q_rel__g_rel * var_chaste_interface__q_rel_ri_gate__ri * var_chaste_interface__q_rel_ro_gate__ro, var_chaste_interface__environment__time); // millimolar_per_millisecond + + std::vector dqs(16); + dqs[0] = var_q_rel__q_rel; + dqs[1] = var_i_Ca_L__i_Ca_L_converted; + dqs[2] = var_i_Ca_L_f2_gate__tau_f2; + dqs[3] = var_i_Ca_L_f_Ca2_gate__tau_f_Ca2; + dqs[4] = var_i_Ca_L_f_Ca_gate__tau_f_Ca; + dqs[5] = var_i_Ca_L_f_gate__tau_f; + dqs[6] = var_i_Na__i_Na_converted; + dqs[7] = var_i_Na_h_gate__tau_h; + dqs[8] = var_i_Na_j_gate__tau_j; + dqs[9] = var_i_K1__i_K1_converted; + dqs[10] = var_i_Kr__i_Kr_converted; + dqs[11] = var_i_Ks__i_Ks_converted; + dqs[12] = var_i_NaCa__i_NaCa_converted; + dqs[13] = var_membrane__i_stim_converted; + dqs[14] = var_i_to_1__i_to_1_converted; + dqs[15] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "aslanidi_2009"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-83.43812846286808); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022355433459434943); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9786390933308567); + + // rY[4]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.09866447258167589); + + // rY[5]: + this->mVariableNames.push_back("i_Na_L_m_L_gate__m_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.002003390432234504); + + // rY[6]: + this->mVariableNames.push_back("i_Na_L_h_L_gate__h_L"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8946968372659203); + + // rY[7]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(2.322223865147363e-06); + + // rY[8]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9985607329462358); + + // rY[9]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.8173435436674658); + + // rY[10]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9610551285529658); + + // rY[11]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_fCa2_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.868690796671854); + + // rY[12]: + this->mVariableNames.push_back("i_Ca_T_b_gate__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0002563937630984438); + + // rY[13]: + this->mVariableNames.push_back("i_Ca_T_g_gate__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9720432601848331); + + // rY[14]: + this->mVariableNames.push_back("i_to_1_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0004238729429342389); + + // rY[15]: + this->mVariableNames.push_back("i_to_1_i_gate__i"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9990935802459496); + + // rY[16]: + this->mVariableNames.push_back("i_to_1_i2_gate__i2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9777368439681764); + + // rY[17]: + this->mVariableNames.push_back("i_Kr_xr_gate__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.07084939408222911); + + // rY[18]: + this->mVariableNames.push_back("i_Ks_xs1_gate__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0011737654433043125); + + // rY[19]: + this->mVariableNames.push_back("i_Ks_xs2_gate__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.001179442867470093); + + // rY[20]: + this->mVariableNames.push_back("i_to_2_a_gate__a"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0014909437525000811); + + // rY[21]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(9.927155552932733); + + // rY[22]: + this->mVariableNames.push_back("intracellular_ion_concentrations__Cl_i"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(18.904682470140408); + + // rY[23]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(141.9670801746057); + + // rY[24]: + this->mVariableNames.push_back("Ca_MK_act__Ca_MK_trap"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(8.789168284782809e-06); + + // rY[25]: + this->mVariableNames.push_back("Ca_NSR__Ca_NSR"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.2132524695849454); + + // rY[26]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(1.1433050636518596); + + // rY[27]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.00022418117117903934); + + // rY[28]: + this->mVariableNames.push_back("q_rel_ri_gate__ri"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.7802870066567904); + + // rY[29]: + this->mVariableNames.push_back("q_rel_ro_gate__ro"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.2785734760674763e-09); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("millimolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("microA_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("millimolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa2_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_fCa_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Cellaslanidi_Purkinje_model_2009FromCellMLOpt) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/Opt/test_luo_rudy_1991_with_range_cap_dimensionless--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/Opt/test_luo_rudy_1991_with_range_cap_dimensionless--sympy_1_13.cpp new file mode 100644 index 00000000..529a3f5a --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/Opt/test_luo_rudy_1991_with_range_cap_dimensionless--sympy_1_13.cpp @@ -0,0 +1,805 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: luo_rudy_1991 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: NormalOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "test_luo_rudy_1991_with_range_cap_dimensionless.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + +class Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<16; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V -100) && (3.0800000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V >= -9.9999999999999995e-8) && (3.0800000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? ((0.28823920000000003 + 0.0022696000000000001 * var_chaste_interface__membrane__V) / exp(1.4000000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V)) : ((var_chaste_interface__membrane__V > -100) ? (0.11348000000000001 * (-1 + exp(3.0800000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V)) / ((3.0800000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V) * exp(1.4000000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V))) : (1))); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[0] < 2){ + double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[0] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[0] >= 2){ + EXCEPTION("Lookup table 0 at ["<= -9.9999999999999995e-8) && (4.7130000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V <= 9.9999999999999995e-8)) ? (10.7408 + 0.16 * var_chaste_interface__membrane__V) : (-3.1999999999999997 * (4.7130000000000001 + 0.10000000000000001 * var_chaste_interface__membrane__V) / (-1 + exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__membrane__V)))); + }; + const double var_chaste_interface__membrane__V = mTableMins[0] + i*mTableSteps[0]; + double val = f(var_chaste_interface__membrane__V); + //Expressions which are part of a piecewise could be inf / nan, this is generally accptable, due to the piecewise, however occasionally interpolation of the lookup table from a nan/inf version can give problems. + //To avoid this values stored in the table are intrpolated. Occurances of this to at most 2 per expression. + if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[2] < 2){ + double left = f(var_chaste_interface__membrane__V - mTableSteps[0]); + double right = f(var_chaste_interface__membrane__V + mTableSteps[0]); + val = (left + right) / 2.0; + // count and limit number of misshits + _lookup_table_0_num_misshit_piecewise[2] +=1; + } + else if (!std::isfinite(val) && _lookup_table_0_num_misshit_piecewise[2] >= 2){ + EXCEPTION("Lookup table 2 at ["< mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[16]; + + // Lookup tables + double (*_lookup_table_0)[16]; + int _lookup_table_0_num_misshit_piecewise[16] = {0}; + +}; + +std::shared_ptr Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::mpInstance; + + + boost::shared_ptr Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude = -25.5; // microA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 2; // millisecond + const double var_chaste_interface__membrane__stim_end = 100000000000.0; // millisecond + const double var_chaste_interface__membrane__stim_period = 1000; // millisecond + const double var_chaste_interface__membrane__stim_start = 100; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start, var_chaste_interface__membrane__stim_end + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[7]; + } + Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt(boost::shared_ptr pSolver, boost::shared_ptr pIntracellularStimulus) + : AbstractCardiacCell( + pSolver, + 8, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 145; // (var_ionic_concentrations__Ki) [millimolar] + this->mParameters[1] = 18; // (var_ionic_concentrations__Nai) [millimolar] + this->mParameters[2] = 5.4000000000000004; // (var_ionic_concentrations__Ko) [millimolar] + this->mParameters[3] = 140; // (var_ionic_concentrations__Nao) [millimolar] + this->mParameters[4] = 0.089999999999999997; // (var_slow_inward_current__P_si) [milliS_per_cm2] + this->mParameters[5] = 1; // (var_membrane__C) [dimensionless] + this->mParameters[6] = 0.28199999999999997; // (var_time_dependent_potassium_current__g_K_max) [milliS_per_cm2] + this->mParameters[7] = 23; // (var_fast_sodium_current__g_Na) [milliS_per_cm2] + this->mParameters[8] = 0; // (var_fast_sodium_current__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[9] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[10] = 0.60470000000000002; // (var_time_independent_potassium_current__g_K1_max) [milliS_per_cm2] + this->mParameters[11] = 0.039210000000000002; // (var_background_current__g_b) [milliS_per_cm2] + this->mParameters[12] = 0.0183; // (var_plateau_potassium_current__g_Kp) [milliS_per_cm2] + } + + Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::~Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt() + { + } + + AbstractLookupTableCollection* Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::GetLookupTableCollection() + { + return Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance(); + } + + void Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables();double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; + // Units: dimensionless; Initial value: 0.00187018 + + if (var_chaste_interface__fast_sodium_current_m_gate__m < 0.0 || var_chaste_interface__fast_sodium_current_m_gate__m > 1.0) + { + EXCEPTION(DumpState("State variable membrane_fast_sodium_current_m_gate has gone out of range. Check numerical parameters, for example time and space stepsizes, and/or solver tolerances")); + } + + std::string error_message = ""; + + for (unsigned i=0; i < 8; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -83.853 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; + // Units: dimensionless; Initial value: 0.00187018 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[2]; + // Units: dimensionless; Initial value: 0.9804713 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[3]; + // Units: dimensionless; Initial value: 0.98767124 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[4]; + // Units: dimensionless; Initial value: 0.00316354 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[5]; + // Units: dimensionless; Initial value: 0.99427859 + double var_chaste_interface__time_dependent_potassium_current_X_gate__X = rY[6]; + // Units: dimensionless; Initial value: 0.16647703 + double var_chaste_interface__intracellular_calcium_concentration__Cai = rY[7]; + // Units: dimensionless; Initial value: 0.0002 + + // Lookup table indexing + const bool _oob_0 = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_background_current__i_b = (59.869999999999997 + var_chaste_interface__membrane__V) * mParameters[11]; // microA_per_cm2 + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-26.712449447891164 * log(mParameters[3] / mParameters[1]) + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_cm2 + const double var_slow_inward_current__i_si = (-7.7000000000000002 + 13.028700000000001 * log(var_chaste_interface__intracellular_calcium_concentration__Cai) + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // microA_per_cm2 + const double var_time_dependent_potassium_current__i_K = 0.43033148291193518 * sqrt(mParameters[2]) * (-26.712449447891164 * log((0.018329999999999999 * mParameters[3] + mParameters[2]) / (0.018329999999999999 * mParameters[1] + mParameters[0])) + var_chaste_interface__membrane__V) * _lt_0_row[0] * mParameters[6] * var_chaste_interface__time_dependent_potassium_current_X_gate__X; // microA_per_cm2 + const double var_time_independent_potassium_current__E_K1 = 26.712449447891164 * log(mParameters[2] / mParameters[0]); // millivolt + const double var_plateau_potassium_current__i_Kp = 1 * _lt_0_row[1] * (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * mParameters[12]; // microA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = 0.4389381125701739 * sqrt(mParameters[2]) * (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * mParameters[10] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)) + (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K1) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K1)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K1 - 0.51429999999999998 * var_chaste_interface__membrane__V)))); // microA_per_cm2 + const double var_chaste_interface__i_ionic = var_background_current__i_b + var_fast_sodium_current__i_Na + var_plateau_potassium_current__i_Kp + var_slow_inward_current__i_si + var_time_dependent_potassium_current__i_K + var_time_independent_potassium_current__i_K1; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::EvaluateYDerivatives(double var_chaste_interface__environment__time, const std::vector& rY, std::vector& rDY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -83.853 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; + // Units: dimensionless; Initial value: 0.00187018 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[2]; + // Units: dimensionless; Initial value: 0.9804713 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[3]; + // Units: dimensionless; Initial value: 0.98767124 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[4]; + // Units: dimensionless; Initial value: 0.00316354 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[5]; + // Units: dimensionless; Initial value: 0.99427859 + double var_chaste_interface__time_dependent_potassium_current_X_gate__X = rY[6]; + // Units: dimensionless; Initial value: 0.16647703 + double var_chaste_interface__intracellular_calcium_concentration__Cai = rY[7]; + // Units: dimensionless; Initial value: 0.0002 + + // Lookup table indexing + const bool _oob_0 = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[9] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[9]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[9])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[9] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_h_gate__h = (1 * var_fast_sodium_current_h_gate__alpha_h + 1 * var_fast_sodium_current_h_gate__beta_h) * (-var_chaste_interface__fast_sodium_current_h_gate__h + 0.01 * mParameters[8] + (1 - 0.01 * mParameters[8]) * var_fast_sodium_current_h_gate__alpha_h / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h)); // 1 / millisecond + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[9]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[9] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[9]))) : (0)); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[9] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[9] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[9] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[9] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_j_gate__j = (1 * var_fast_sodium_current_j_gate__alpha_j + 1 * var_fast_sodium_current_j_gate__beta_j) * (-var_chaste_interface__fast_sodium_current_j_gate__j + 0.01 * mParameters[8] + (1 - 0.01 * mParameters[8]) * var_fast_sodium_current_j_gate__alpha_j / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j)); // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current_m_gate__m = (1 - var_chaste_interface__fast_sodium_current_m_gate__m) * _lt_0_row[2] - 0.080000000000000002 * var_chaste_interface__fast_sodium_current_m_gate__m * _lt_0_row[3]; // 1 / millisecond + const double d_dt_chaste_interface_var_slow_inward_current_d_gate__d = 0.095000000000000001 * _lt_0_row[4] * (1 - var_chaste_interface__slow_inward_current_d_gate__d) * _lt_0_row[5] - 0.070000000000000007 * _lt_0_row[6] * var_chaste_interface__slow_inward_current_d_gate__d * _lt_0_row[7]; // 1 / millisecond + const double d_dt_chaste_interface_var_slow_inward_current_f_gate__f = 0.012 * _lt_0_row[8] * (1 - var_chaste_interface__slow_inward_current_f_gate__f) * _lt_0_row[9] - 0.0064999999999999997 * _lt_0_row[10] * var_chaste_interface__slow_inward_current_f_gate__f * _lt_0_row[11]; // 1 / millisecond + const double var_slow_inward_current__i_si = (-7.7000000000000002 + 13.028700000000001 * log(var_chaste_interface__intracellular_calcium_concentration__Cai) + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // microA_per_cm2 + const double d_dt_chaste_interface_var_intracellular_calcium_concentration__Cai = 7.0000000000000007e-6 - 0.070000000000000007 * var_chaste_interface__intracellular_calcium_concentration__Cai - 0.0001 * var_slow_inward_current__i_si; // 1 / millisecond + const double d_dt_chaste_interface_var_time_dependent_potassium_current_X_gate__X = 0.00050000000000000001 * _lt_0_row[12] * (1 - var_chaste_interface__time_dependent_potassium_current_X_gate__X) * _lt_0_row[13] - 0.0012999999999999999 * _lt_0_row[14] * var_chaste_interface__time_dependent_potassium_current_X_gate__X * _lt_0_row[15]; // 1 / millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_time_independent_potassium_current__E_K1 = 26.712449447891164 * log(mParameters[2] / mParameters[0]); // millivolt + d_dt_chaste_interface_var_membrane__V = -1 * ((59.869999999999997 + var_chaste_interface__membrane__V) * mParameters[11] + 1 * _lt_0_row[1] * (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * mParameters[12] + pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-26.712449447891164 * log(mParameters[3] / mParameters[1]) + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j + 0.43033148291193518 * sqrt(mParameters[2]) * (-26.712449447891164 * log((0.018329999999999999 * mParameters[3] + mParameters[2]) / (0.018329999999999999 * mParameters[1] + mParameters[0])) + var_chaste_interface__membrane__V) * _lt_0_row[0] * mParameters[6] * var_chaste_interface__time_dependent_potassium_current_X_gate__X + 0.4389381125701739 * sqrt(mParameters[2]) * (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * mParameters[10] / ((1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)) * (1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)) + (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K1) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K1)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K1 - 0.51429999999999998 * var_chaste_interface__membrane__V)))) + GetIntracellularAreaStimulus(var_chaste_interface__environment__time) + var_slow_inward_current__i_si) / mParameters[5]; // millivolt / millisecond + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_fast_sodium_current_m_gate__m; + rDY[2] = d_dt_chaste_interface_var_fast_sodium_current_h_gate__h; + rDY[3] = d_dt_chaste_interface_var_fast_sodium_current_j_gate__j; + rDY[4] = d_dt_chaste_interface_var_slow_inward_current_d_gate__d; + rDY[5] = d_dt_chaste_interface_var_slow_inward_current_f_gate__f; + rDY[6] = d_dt_chaste_interface_var_time_dependent_potassium_current_X_gate__X; + rDY[7] = d_dt_chaste_interface_var_intracellular_calcium_concentration__Cai; + } + + std::vector Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -83.853 + double var_chaste_interface__fast_sodium_current_m_gate__m = rY[1]; + // Units: dimensionless; Initial value: 0.00187018 + double var_chaste_interface__fast_sodium_current_h_gate__h = rY[2]; + // Units: dimensionless; Initial value: 0.9804713 + double var_chaste_interface__fast_sodium_current_j_gate__j = rY[3]; + // Units: dimensionless; Initial value: 0.98767124 + double var_chaste_interface__slow_inward_current_d_gate__d = rY[4]; + // Units: dimensionless; Initial value: 0.00316354 + double var_chaste_interface__slow_inward_current_f_gate__f = rY[5]; + // Units: dimensionless; Initial value: 0.99427859 + double var_chaste_interface__time_dependent_potassium_current_X_gate__X = rY[6]; + // Units: dimensionless; Initial value: 0.16647703 + double var_chaste_interface__intracellular_calcium_concentration__Cai = rY[7]; + // Units: dimensionless; Initial value: 0.0002 + + // Lookup table indexing + const bool _oob_0 = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + const double var_background_current__E_b = -59.869999999999997; // millivolt + const double var_membrane__F = 96484.600000000006; // coulomb_per_mole + const double var_membrane__I_stim = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // microA_per_cm2 + const double var_membrane__R = 8314; // joule_per_kilomole_kelvin + const double var_membrane__T = 310; // kelvin + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log(mParameters[3] / mParameters[1]) / var_membrane__F; // millivolt + const double var_background_current__i_b = (-var_background_current__E_b + var_chaste_interface__membrane__V) * mParameters[11]; // microA_per_cm2 + const double var_fast_sodium_current__i_Na = pow(var_chaste_interface__fast_sodium_current_m_gate__m, 3) * (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * mParameters[7] * var_chaste_interface__fast_sodium_current_h_gate__h * var_chaste_interface__fast_sodium_current_j_gate__j; // microA_per_cm2 + const double var_fast_sodium_current_h_gate__alpha_h = ((var_chaste_interface__membrane__V < -40) ? (0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[9] - 0.14705882352941177 * var_chaste_interface__membrane__V)) : (0)); // per_millisecond + const double var_fast_sodium_current_h_gate__beta_h = ((var_chaste_interface__membrane__V < -40) ? (310000 * exp(0.34999999999999998 * var_chaste_interface__membrane__V - 0.34999999999999998 * mParameters[9]) + 3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__membrane__V - 0.079000000000000001 * mParameters[9])) : (7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * mParameters[9] - 0.0900900900900901 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_h_gate__tau_h = 1 / (var_fast_sodium_current_h_gate__alpha_h + var_fast_sodium_current_h_gate__beta_h); // millisecond + const double var_fast_sodium_current_j_gate__alpha_j = ((var_chaste_interface__membrane__V < -40) ? ((37.780000000000001 + var_chaste_interface__membrane__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__membrane__V - 0.24440000000000001 * mParameters[9]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[9] - 0.043909999999999998 * var_chaste_interface__membrane__V)) / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__membrane__V - 0.311 * mParameters[9]))) : (0)); // per_millisecond + const double var_fast_sodium_current_j_gate__beta_j = ((var_chaste_interface__membrane__V < -40) ? (0.1212 * exp(0.01052 * mParameters[9] - 0.01052 * var_chaste_interface__membrane__V) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * mParameters[9] - 0.13780000000000001 * var_chaste_interface__membrane__V))) : (0.29999999999999999 * exp(2.5349999999999999e-7 * mParameters[9] - 2.5349999999999999e-7 * var_chaste_interface__membrane__V) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * mParameters[9] - 0.10000000000000001 * var_chaste_interface__membrane__V)))); // per_millisecond + const double var_fast_sodium_current_j_gate__tau_j = 1 / (var_fast_sodium_current_j_gate__alpha_j + var_fast_sodium_current_j_gate__beta_j); // millisecond + const double var_plateau_potassium_current__Kp = 1 * _lt_0_row[1]; // dimensionless + const double var_slow_inward_current__E_si = 7.7000000000000002 - 13.028700000000001 * log(var_chaste_interface__intracellular_calcium_concentration__Cai); // millivolt + const double var_slow_inward_current_f_gate__alpha_f = 0.012 * _lt_0_row[8] * _lt_0_row[9]; // per_millisecond + const double var_slow_inward_current_f_gate__beta_f = 0.0064999999999999997 * _lt_0_row[10] * _lt_0_row[11]; // per_millisecond + const double var_slow_inward_current__i_si = (-var_slow_inward_current__E_si + var_chaste_interface__membrane__V) * mParameters[4] * var_chaste_interface__slow_inward_current_d_gate__d * var_chaste_interface__slow_inward_current_f_gate__f; // microA_per_cm2 + const double var_slow_inward_current_f_gate__tau_f = 1 / (var_slow_inward_current_f_gate__alpha_f + var_slow_inward_current_f_gate__beta_f); // millisecond + const double var_time_dependent_potassium_current__PR_NaK = 0.018329999999999999; // dimensionless + const double var_time_dependent_potassium_current__E_K = var_membrane__R * var_membrane__T * log((mParameters[3] * var_time_dependent_potassium_current__PR_NaK + mParameters[2]) / (mParameters[1] * var_time_dependent_potassium_current__PR_NaK + mParameters[0])) / var_membrane__F; // millivolt + const double var_time_dependent_potassium_current__g_K = 0.43033148291193518 * sqrt(mParameters[2]) * mParameters[6]; // milliS_per_cm2 + const double var_time_dependent_potassium_current_Xi_gate__B = 0.040000000000000001; // per_millivolt + const double var_time_dependent_potassium_current_Xi_gate__A = 2.8370000000000002 * var_time_dependent_potassium_current_Xi_gate__B; // dimensionless + const double var_time_dependent_potassium_current_Xi_gate__v0 = -77; // millivolt + const double var_time_dependent_potassium_current_Xi_gate__U = (-var_time_dependent_potassium_current_Xi_gate__v0 + var_chaste_interface__membrane__V) * var_time_dependent_potassium_current_Xi_gate__B; // dimensionless + const double var_time_dependent_potassium_current_Xi_gate__temp_Xi = (((var_time_dependent_potassium_current_Xi_gate__U >= -9.9999999999999995e-8) && (var_time_dependent_potassium_current_Xi_gate__U <= 9.9999999999999995e-8)) ? ((1 + 0.5 * var_time_dependent_potassium_current_Xi_gate__U) * var_time_dependent_potassium_current_Xi_gate__A) : ((-1 + exp(var_time_dependent_potassium_current_Xi_gate__U)) * var_time_dependent_potassium_current_Xi_gate__A / var_time_dependent_potassium_current_Xi_gate__U)); // dimensionless + const double var_time_dependent_potassium_current_Xi_gate__Xi = ((var_chaste_interface__membrane__V > -100) ? (var_time_dependent_potassium_current_Xi_gate__temp_Xi / exp(1.4000000000000001 + 0.040000000000000001 * var_chaste_interface__membrane__V)) : (1)); // dimensionless + const double var_time_dependent_potassium_current__i_K = (-var_time_dependent_potassium_current__E_K + var_chaste_interface__membrane__V) * var_time_dependent_potassium_current__g_K * var_chaste_interface__time_dependent_potassium_current_X_gate__X * var_time_dependent_potassium_current_Xi_gate__Xi; // microA_per_cm2 + const double var_time_independent_potassium_current__E_K1 = var_membrane__R * var_membrane__T * log(mParameters[2] / mParameters[0]) / var_membrane__F; // millivolt + const double var_plateau_potassium_current__E_Kp = var_time_independent_potassium_current__E_K1; // millivolt + const double var_plateau_potassium_current__i_Kp = (-var_plateau_potassium_current__E_Kp + var_chaste_interface__membrane__V) * var_plateau_potassium_current__Kp * mParameters[12]; // microA_per_cm2 + const double var_time_independent_potassium_current__g_K1 = 0.43033148291193518 * sqrt(mParameters[2]) * mParameters[10]; // milliS_per_cm2 + const double var_time_independent_potassium_current_K1_gate__alpha_K1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__membrane__V - 0.23849999999999999 * var_time_independent_potassium_current__E_K1)); // per_millisecond + const double var_time_independent_potassium_current_K1_gate__beta_K1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__membrane__V - 0.061749999999999999 * var_time_independent_potassium_current__E_K1) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__membrane__V - 0.080320000000000003 * var_time_independent_potassium_current__E_K1)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_time_independent_potassium_current__E_K1 - 0.51429999999999998 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_time_independent_potassium_current_K1_gate__K1_infinity = var_time_independent_potassium_current_K1_gate__alpha_K1 / (var_time_independent_potassium_current_K1_gate__alpha_K1 + var_time_independent_potassium_current_K1_gate__beta_K1); // dimensionless + const double var_time_independent_potassium_current__i_K1 = (-var_time_independent_potassium_current__E_K1 + var_chaste_interface__membrane__V) * var_time_independent_potassium_current__g_K1 * var_time_independent_potassium_current_K1_gate__K1_infinity; // microA_per_cm2 + + std::vector dqs(11); + dqs[0] = var_slow_inward_current__i_si; + dqs[1] = var_slow_inward_current_f_gate__tau_f; + dqs[2] = var_time_dependent_potassium_current__i_K; + dqs[3] = var_fast_sodium_current__i_Na; + dqs[4] = var_fast_sodium_current_h_gate__tau_h; + dqs[5] = var_fast_sodium_current_j_gate__tau_j; + dqs[6] = var_time_independent_potassium_current__i_K1; + dqs[7] = var_background_current__i_b; + dqs[8] = var_plateau_potassium_current__i_Kp; + dqs[9] = var_membrane__I_stim; + dqs[10] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "luo_rudy_1991"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-83.853); + + // rY[1]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00187018); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.9804713); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.98767124); + + // rY[4]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00316354); + + // rY[5]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.99427859); + + // rY[6]: + this->mVariableNames.push_back("time_dependent_potassium_current_X_gate__X"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.16647703); + + // rY[7]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0002); + + // mParameters[0]: + this->mParameterNames.push_back("cytosolic_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[1]: + this->mParameterNames.push_back("cytosolic_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[2]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[3]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("millimolar"); + + // mParameters[4]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[5]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[6]: + this->mParameterNames.push_back("membrane_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_leakage_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_plateau_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_cm2"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_leakage_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_plateau_potassium_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("microA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Celltest_luo_rudy_1991_with_range_cap_dimensionlessFromCellMLOpt) + diff --git a/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007--sympy_1_13.cpp new file mode 100644 index 00000000..fbda0aa2 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007--sympy_1_13.cpp @@ -0,0 +1,796 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: LivshitzRudy2007 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: RushLarsen) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_livshitz_rudy_2007.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -15 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 3; // ms + const double var_chaste_interface__cell__stim_offset = 100; // ms + const double var_chaste_interface__cell__stim_period = 400; // ms + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_offset + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::Dynamiclivshitz_rudy_2007FromCellMLRushLarsen(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractRushLarsenCardiacCell( + 18, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1; // (var_Iup_Ileak__leak_factor) [dimensionless] + this->mParameters[1] = 0.125; // (var_Irel__kappa) [mM_per_mV_ms] + this->mParameters[2] = 0.0087500000000000008; // (var_Iup_Ileak__iupbar) [mM_per_ms] + this->mParameters[3] = 1; // (var_Na__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_Environment__Ca_o) [mM] + this->mParameters[5] = 4.5; // (var_Environment__K_o) [mM] + this->mParameters[6] = 140; // (var_Environment__Na_o) [mM] + this->mParameters[7] = 0.00054000000000000001; // (var_ICaL__pca) [L_per_F_ms] + this->mParameters[8] = 16; // (var_INa__GNa) [mS_per_uF] + this->mParameters[9] = 0; // (var_INa__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[10] = 0; // (var_INa__shift_h) [mV] + this->mParameters[11] = 0.02614; // (var_IKr__gkrmax) [mS_per_uF] + this->mParameters[12] = 0.433; // (var_IKs__GKsmax) [mS_per_uF] + this->mParameters[13] = 0.00025000000000000001; // (var_INaCa__c1) [uA_per_uF] + } + + Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::~Dynamiclivshitz_rudy_2007FromCellMLRushLarsen() + { + } + + + void Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 18; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -89.4356034692784 + double var_chaste_interface__INa__H = rY[1]; + // Units: dimensionless; Initial value: 0.994401369032678 + double var_chaste_interface__INa__m = rY[2]; + // Units: dimensionless; Initial value: 0.000734780346592185 + double var_chaste_interface__INa__J = rY[3]; + // Units: dimensionless; Initial value: 0.996100688673679 + double var_chaste_interface__ICaL__d = rY[4]; + // Units: dimensionless; Initial value: 3.2514786721066e-27 + double var_chaste_interface__ICaL__f = rY[5]; + // Units: dimensionless; Initial value: 0.997404948824816 + double var_chaste_interface__IKr__xr = rY[6]; + // Units: dimensionless; Initial value: 0.000162194715543637 + double var_chaste_interface__IKs__xs1 = rY[7]; + // Units: dimensionless; Initial value: 0.0285147332973946 + double var_chaste_interface__IKs__xs2 = rY[8]; + // Units: dimensionless; Initial value: 0.0764114040188678 + double var_chaste_interface__ICaT__b = rY[9]; + // Units: dimensionless; Initial value: 0.000927461915392873 + double var_chaste_interface__ICaT__g = rY[10]; + // Units: dimensionless; Initial value: 0.952834331760863 + double var_chaste_interface__Na__Na_i = rY[12]; + // Units: mM; Initial value: 16.612739313555 + double var_chaste_interface__K__K_i = rY[13]; + // Units: mM; Initial value: 139.730914103161 + double var_chaste_interface__Ca__Ca_T = rY[14]; + // Units: mM; Initial value: 0.0257059808595638 + + const double var_Ca__cmdnbar = 0.050000000000000003; // mM + const double var_Ca__kmcmdn = 0.0023800000000000002; // mM + const double var_Ca__kmtrpn = 0.00050000000000000001; // mM + const double var_Ca__dmyo = -var_chaste_interface__Ca__Ca_T * var_Ca__kmcmdn * var_Ca__kmtrpn; // mM3 + const double var_Ca__trpnbar = 0.070000000000000007; // mM + const double var_Ca__bmyo = -var_chaste_interface__Ca__Ca_T + var_Ca__cmdnbar + var_Ca__kmcmdn + var_Ca__kmtrpn + var_Ca__trpnbar; // mM + const double var_Ca__cmyo = var_Ca__cmdnbar * var_Ca__kmtrpn + var_Ca__kmcmdn * var_Ca__kmtrpn + var_Ca__kmcmdn * var_Ca__trpnbar - (var_Ca__kmcmdn + var_Ca__kmtrpn) * var_chaste_interface__Ca__Ca_T; // mM2 + const double var_Ca__Ca_i = -0.33333333333333331 * var_Ca__bmyo + 1.1547005383792515 * sqrt(-var_Ca__cmyo + 0.33333333333333331 * pow(var_Ca__bmyo, 2)) * cos(0.33333333333333331 * acos(0.096225044864937631 * pow((-var_Ca__cmyo + 0.33333333333333331 * pow(var_Ca__bmyo, 2)), (-1.5)) * (-2 * pow(var_Ca__bmyo, 3) - 27 * var_Ca__dmyo + 9 * var_Ca__bmyo * var_Ca__cmyo))); // mM + const double var_Environment__F = 96485; // C_per_mole + const double var_Environment__R = 8314; // mJ_per_mole_K + const double var_Environment__Temp = 310; // kelvin + const double var_Environment__FonRT = var_Environment__F / (var_Environment__R * var_Environment__Temp); // per_mV + const double var_ICaL__gacai = 1; // dimensionless + const double var_ICaL__gacao = 0.34100000000000003; // dimensionless + const double var_ICaL__gaki = 0.75; // dimensionless + const double var_ICaL__gako = 0.75; // dimensionless + const double var_ICaL__ganai = 0.75; // dimensionless + const double var_ICaL__ganao = 0.75; // dimensionless + const double var_ICaL__kmca = 0.00059999999999999995; // mM + const double var_ICaL__fca = 1 / (1 + var_Ca__Ca_i / var_ICaL__kmca); // dimensionless + const double var_ICaL__pk = 1.9299999999999999e-7; // L_per_F_ms + const double var_ICaL__pna = 6.75e-7; // L_per_F_ms + const double var_ICaT__gcat = 0.050000000000000003; // mS_per_uF + const double var_ICab__gcab = 0.003016; // mS_per_uF + const double var_IK1__GK1max = 0.75; // mS_per_uF + const double var_IK1__GK1_ = 0.43033148291193518 * sqrt(mParameters[5]) * var_IK1__GK1max; // mS_per_uF + const double var_IKp__GKpmax = 0.0055199999999999997; // mS_per_uF + const double var_IKr__gkr = 0.43033148291193518 * sqrt(mParameters[5]) * mParameters[11]; // mS_per_uF + const double var_IKs__gks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_Ca__Ca_i), 1.3999999999999999))) * mParameters[12]; // mS_per_uF + const double var_INaCa__c2 = 0.0001; // dimensionless + const double var_INaCa__gammas = 0.14999999999999999; // dimensionless + const double var_INaK__ibarnak = 2.25; // uA_per_uF + const double var_INaK__kmko = 1.5; // mM + const double var_INaK__kmnai = 10; // mM + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_INab__GNab = 0.0040000000000000001; // mS_per_uF + const double var_IpCa__ibarpca = 1.1499999999999999; // uA_per_uF + const double var_IpCa__kmpca = 0.00050000000000000001; // mM + const double var_IpCa__ipca = var_Ca__Ca_i * var_IpCa__ibarpca / (var_Ca__Ca_i + var_IpCa__kmpca); // uA_per_uF + const double var_ICaL__ibarca = 4 * (-mParameters[4] * var_ICaL__gacao + var_Ca__Ca_i * var_ICaL__gacai * exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * mParameters[7] * var_chaste_interface__cell__V / (-1 + exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ibark = (-mParameters[5] * var_ICaL__gako + var_ICaL__gaki * var_chaste_interface__K__K_i * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * var_ICaL__pk * var_chaste_interface__cell__V / (-1 + exp(var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ibarna = (-mParameters[6] * var_ICaL__ganao + var_ICaL__ganai * var_chaste_interface__Na__Na_i * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * var_ICaL__pna * var_chaste_interface__cell__V / (-1 + exp(var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ilca = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibarca; // uA_per_uF + const double var_ICaL__ilcak = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibark; // uA_per_uF + const double var_ICaL__ilcana = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibarna; // uA_per_uF + const double var_ICab__icab = (-0.5 * log(mParameters[4] / var_Ca__Ca_i) / var_Environment__FonRT + var_chaste_interface__cell__V) * var_ICab__gcab; // uA_per_uF + const double var_IKr__r = 1 / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_INaCa__inaca = (-pow(mParameters[6], 3) * var_Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * mParameters[13] * exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V) / (1 + (pow(mParameters[6], 3) * var_Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_INaCa__c2 * exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_INaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_Environment__FonRT * var_chaste_interface__cell__V) + 0.036499999999999998 * var_INaK__sigma * exp(-var_Environment__FonRT * var_chaste_interface__cell__V)); // dimensionless + const double var_INaK__inak = var_INaK__fnak * var_INaK__ibarnak / ((1 + var_INaK__kmko / mParameters[5]) * (1 + pow(var_INaK__kmnai, 2) / pow(var_chaste_interface__Na__Na_i, 2))); // uA_per_uF + const double var_cell__i_Stim = 0; // uA_per_uF + const double var_reversal_potentials__ECa = 0.5 * log(mParameters[4] / var_Ca__Ca_i) / var_Environment__FonRT; // mV + const double var_ICaT__icat = pow(var_chaste_interface__ICaT__b, 2) * (-var_reversal_potentials__ECa + var_chaste_interface__cell__V) * var_chaste_interface__ICaT__g * var_ICaT__gcat; // uA_per_uF + const double var_cell__caiont = -2 * var_INaCa__inaca + var_ICaL__ilca + var_ICaT__icat + var_ICab__icab + var_IpCa__ipca; // uA_per_uF + const double var_reversal_potentials__EK = log(mParameters[5] / var_chaste_interface__K__K_i) / var_Environment__FonRT; // mV + const double var_IK1__ak1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__EK)); // per_ms + const double var_IK1__bk1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__EK) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_IK1__gK1 = var_IK1__GK1_ * var_IK1__ak1 / (var_IK1__ak1 + var_IK1__bk1); // mS_per_uF + const double var_IK1__IK1 = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IK1__gK1; // uA_per_uF + const double var_IKp__ikp = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IKp__GKpmax / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__cell__V)); // uA_per_uF + const double var_IKr__ikr = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IKr__gkr * var_IKr__r * var_chaste_interface__IKr__xr; // uA_per_uF + const double var_reversal_potentials__ENa = log(mParameters[6] / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__ina = pow(var_chaste_interface__INa__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__cell__V) * mParameters[8] * var_chaste_interface__INa__H * var_chaste_interface__INa__J; // uA_per_uF + const double var_INab__inab = (-var_reversal_potentials__ENa + var_chaste_interface__cell__V) * var_INab__GNab; // uA_per_uF + const double var_cell__naiont = 3 * var_INaCa__inaca + 3 * var_INaK__inak + var_ICaL__ilcana + var_INa__ina + var_INab__inab; // uA_per_uF + const double var_reversal_potentials__prnak = 0.018329999999999999; // dimensionless + const double var_reversal_potentials__EKs = log((mParameters[6] * var_reversal_potentials__prnak + mParameters[5]) / (var_chaste_interface__Na__Na_i * var_reversal_potentials__prnak + var_chaste_interface__K__K_i)) / var_Environment__FonRT; // mV + const double var_IKs__iks = (-var_reversal_potentials__EKs + var_chaste_interface__cell__V) * var_IKs__gks * var_chaste_interface__IKs__xs1 * var_chaste_interface__IKs__xs2; // uA_per_uF + const double var_cell__kiont = -2 * var_INaK__inak + var_ICaL__ilcak + var_IK1__IK1 + var_IKp__ikp + var_IKr__ikr + var_IKs__iks + var_cell__i_Stim; // uA_per_uF + const double var_chaste_interface__i_ionic = (var_cell__caiont + var_cell__kiont + var_cell__naiont) * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::EvaluateEquations(double var_chaste_interface__Environment__time, std::vector &rDY, std::vector &rAlphaOrTau, std::vector &rBetaOrInf) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -89.4356034692784 + double var_chaste_interface__INa__H = rY[1]; + // Units: dimensionless; Initial value: 0.994401369032678 + double var_chaste_interface__INa__m = rY[2]; + // Units: dimensionless; Initial value: 0.000734780346592185 + double var_chaste_interface__INa__J = rY[3]; + // Units: dimensionless; Initial value: 0.996100688673679 + double var_chaste_interface__ICaL__d = rY[4]; + // Units: dimensionless; Initial value: 3.2514786721066e-27 + double var_chaste_interface__ICaL__f = rY[5]; + // Units: dimensionless; Initial value: 0.997404948824816 + double var_chaste_interface__IKr__xr = rY[6]; + // Units: dimensionless; Initial value: 0.000162194715543637 + double var_chaste_interface__IKs__xs1 = rY[7]; + // Units: dimensionless; Initial value: 0.0285147332973946 + double var_chaste_interface__IKs__xs2 = rY[8]; + // Units: dimensionless; Initial value: 0.0764114040188678 + double var_chaste_interface__ICaT__b = rY[9]; + // Units: dimensionless; Initial value: 0.000927461915392873 + double var_chaste_interface__ICaT__g = rY[10]; + // Units: dimensionless; Initial value: 0.952834331760863 + double var_chaste_interface__Irel__Rel = rY[11]; + // Units: mM_per_ms; Initial value: 1.06874246141923e-23 + double var_chaste_interface__Na__Na_i = rY[12]; + // Units: mM; Initial value: 16.612739313555 + double var_chaste_interface__K__K_i = rY[13]; + // Units: mM; Initial value: 139.730914103161 + double var_chaste_interface__Ca__Ca_T = rY[14]; + // Units: mM; Initial value: 0.0257059808595638 + double var_chaste_interface__Ca__Ca_JSR_T = rY[15]; + // Units: mM; Initial value: 7.87371650296567 + double var_chaste_interface__Ca__Ca_NSR = rY[16]; + // Units: mM; Initial value: 2.71518235696672 + + + // Mathematics + double d_dt_chaste_interface_var_cell__V; + const double var_Ca__cmdnbar = 0.050000000000000003; // mM + const double var_Ca__kmcmdn = 0.0023800000000000002; // mM + const double var_Ca__kmtrpn = 0.00050000000000000001; // mM + const double var_Ca__dmyo = -var_chaste_interface__Ca__Ca_T * var_Ca__kmcmdn * var_Ca__kmtrpn; // mM3 + const double var_Ca__trpnbar = 0.070000000000000007; // mM + const double var_Ca__bmyo = -var_chaste_interface__Ca__Ca_T + var_Ca__cmdnbar + var_Ca__kmcmdn + var_Ca__kmtrpn + var_Ca__trpnbar; // mM + const double var_Ca__cmyo = var_Ca__cmdnbar * var_Ca__kmtrpn + var_Ca__kmcmdn * var_Ca__kmtrpn + var_Ca__kmcmdn * var_Ca__trpnbar - (var_Ca__kmcmdn + var_Ca__kmtrpn) * var_chaste_interface__Ca__Ca_T; // mM2 + const double var_Ca__Ca_i = -0.33333333333333331 * var_Ca__bmyo + 1.1547005383792515 * sqrt(-var_Ca__cmyo + 0.33333333333333331 * pow(var_Ca__bmyo, 2)) * cos(0.33333333333333331 * acos(0.096225044864937631 * pow((-var_Ca__cmyo + 0.33333333333333331 * pow(var_Ca__bmyo, 2)), (-1.5)) * (-2 * pow(var_Ca__bmyo, 3) - 27 * var_Ca__dmyo + 9 * var_Ca__bmyo * var_Ca__cmyo))); // mM + const double d_dt_chaste_interface_var_Ca__Over = 0; // 1 / ms + const double var_Environment__F = 96485; // C_per_mole + const double var_Environment__R = 8314; // mJ_per_mole_K + const double var_Environment__Temp = 310; // kelvin + const double var_Environment__FonRT = var_Environment__F / (var_Environment__R * var_Environment__Temp); // per_mV + const double var_ICaL__gacai = 1; // dimensionless + const double var_ICaL__gacao = 0.34100000000000003; // dimensionless + const double var_ICaL__gaki = 0.75; // dimensionless + const double var_ICaL__gako = 0.75; // dimensionless + const double var_ICaL__ganai = 0.75; // dimensionless + const double var_ICaL__ganao = 0.75; // dimensionless + const double var_ICaL__kmca = 0.00059999999999999995; // mM + const double var_ICaL__fca = 1 / (1 + var_Ca__Ca_i / var_ICaL__kmca); // dimensionless + const double var_ICaL__pk = 1.9299999999999999e-7; // L_per_F_ms + const double var_ICaL__pna = 6.75e-7; // L_per_F_ms + const double var_ICaT__gcat = 0.050000000000000003; // mS_per_uF + const double var_ICab__gcab = 0.003016; // mS_per_uF + const double var_IK1__GK1max = 0.75; // mS_per_uF + const double var_IK1__GK1_ = 0.43033148291193518 * sqrt(mParameters[5]) * var_IK1__GK1max; // mS_per_uF + const double var_IKp__GKpmax = 0.0055199999999999997; // mS_per_uF + const double var_IKr__gkr = 0.43033148291193518 * sqrt(mParameters[5]) * mParameters[11]; // mS_per_uF + const double var_IKs__gks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_Ca__Ca_i), 1.3999999999999999))) * mParameters[12]; // mS_per_uF + const double var_INaCa__c2 = 0.0001; // dimensionless + const double var_INaCa__gammas = 0.14999999999999999; // dimensionless + const double var_INaK__ibarnak = 2.25; // uA_per_uF + const double var_INaK__kmko = 1.5; // mM + const double var_INaK__kmnai = 10; // mM + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_INab__GNab = 0.0040000000000000001; // mS_per_uF + const double var_IpCa__ibarpca = 1.1499999999999999; // uA_per_uF + const double var_IpCa__kmpca = 0.00050000000000000001; // mM + const double var_IpCa__ipca = var_Ca__Ca_i * var_IpCa__ibarpca / (var_Ca__Ca_i + var_IpCa__kmpca); // uA_per_uF + const double var_Irel__K_Relss = 1; // mM + const double var_Irel__csqnbar = 10; // mM + const double var_Irel__kmcsqn = 0.80000000000000004; // mM + const double var_Irel__bbb = -var_chaste_interface__Ca__Ca_JSR_T + var_Irel__csqnbar + var_Irel__kmcsqn; // mM + const double var_Irel__c = var_chaste_interface__Ca__Ca_JSR_T * var_Irel__kmcsqn; // mM2 + const double var_Irel__Ca_JSR_free = 1 * sqrt(0.25 * pow(var_Irel__bbb, 2) + var_Irel__c) - 0.5 * var_Irel__bbb; // mM + const double var_Irel__qn = 9; // dimensionless + const double var_Irel__tau = 4.75; // ms + const double var_Irel__alpha_Rel = mParameters[1] * var_Irel__tau; // mM_per_mV + const double var_Irel__tau_Rel = var_Irel__tau / (1 + 0.0123 / var_Irel__Ca_JSR_free); // ms + const double var_Itr__tautr = 120; // ms + const double var_Itr__itr = (-var_Irel__Ca_JSR_free + var_chaste_interface__Ca__Ca_NSR) / var_Itr__tautr; // mM_per_ms + const double d_dt_chaste_interface_var_Ca__Ca_JSR_T = -var_chaste_interface__Irel__Rel + var_Itr__itr; // mM / ms + const double var_Iup_Ileak__kmup = 0.00092000000000000003; // mM + const double var_Iup_Ileak__iup = var_Ca__Ca_i * mParameters[2] / (var_Ca__Ca_i + var_Iup_Ileak__kmup); // mM_per_ms + const double var_Iup_Ileak__nsrbar = 15; // mM + const double var_Iup_Ileak__ileak = var_chaste_interface__Ca__Ca_NSR * mParameters[2] * mParameters[0] / var_Iup_Ileak__nsrbar; // mM_per_ms + const double var_ICaL__dss0 = 1 / (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL__dss1 = 1 / (1 + exp(-2500 - 41.666666666666664 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL__dss = var_ICaL__dss0 * var_ICaL__dss1; // dimensionless + const double var_ICaL__fss = 1 / (1 + exp(4 + 0.125 * var_chaste_interface__cell__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL__ibarca = 4 * (-mParameters[4] * var_ICaL__gacao + var_Ca__Ca_i * var_ICaL__gacai * exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * mParameters[7] * var_chaste_interface__cell__V / (-1 + exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ibark = (-mParameters[5] * var_ICaL__gako + var_ICaL__gaki * var_chaste_interface__K__K_i * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * var_ICaL__pk * var_chaste_interface__cell__V / (-1 + exp(var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ibarna = (-mParameters[6] * var_ICaL__ganao + var_ICaL__ganai * var_chaste_interface__Na__Na_i * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * var_ICaL__pna * var_chaste_interface__cell__V / (-1 + exp(var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ilca = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibarca; // uA_per_uF + const double var_ICaL__ilcak = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibark; // uA_per_uF + const double var_ICaL__ilcana = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibarna; // uA_per_uF + const double var_ICaL__taud = 28.571428571428569 * (1 - exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__cell__V)) * var_ICaL__dss0 / (10 + var_chaste_interface__cell__V); // ms + const double var_ICaL__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__cell__V), 2))); // ms + const double var_ICaT__aa = 1 - 1 / (1 + exp(-416.66666666666669 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaT__bss = 1 / (1 + exp(-1.2962962962962963 - 0.092592592592592587 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaT__gss = 1 / (1 + exp(10.714285714285715 + 0.17857142857142858 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaT__taub = 3.7000000000000002 + 6.0999999999999996 / (1 + exp(5.5555555555555554 + 0.22222222222222221 * var_chaste_interface__cell__V)); // ms + const double var_ICaT__taug = 12 - 12 * var_ICaT__aa + 1 * (12 - 0.875 * var_chaste_interface__cell__V) * var_ICaT__aa; // ms + const double var_ICab__icab = (-0.5 * log(mParameters[4] / var_Ca__Ca_i) / var_Environment__FonRT + var_chaste_interface__cell__V) * var_ICab__gcab; // uA_per_uF + const double var_IKr__r = 1 / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr__tauxr = 1 / (0.00060999999999999997 * (38.899999999999999 + var_chaste_interface__cell__V) / (-1 + exp(5.6404999999999994 + 0.14499999999999999 * var_chaste_interface__cell__V)) + 0.0013799999999999999 * (14.199999999999999 + var_chaste_interface__cell__V) / (1 - exp(-1.7465999999999999 - 0.123 * var_chaste_interface__cell__V))); // ms + const double var_IKr__xrss = 1 / (1 + exp(-2.3729411764705883 - 0.23529411764705882 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKs__tauxs = 1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))); // ms + const double var_IKs__xss = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double var_INa__a = 1 - 1 / (1 + exp(-1666.6666666666667 - 41.666666666666664 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__aH = 0.13500000000000001 * var_INa__a * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__cell__V); // per_ms + const double var_INa__aj = 1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__cell__V)) * var_INa__a / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__am = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__cell__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__bH = (3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * mParameters[10])) * var_INa__a + 7.6923076923076916 * (1 - var_INa__a) / (1 + exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__H_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_INa__aH / (var_INa__aH + var_INa__bH); // dimensionless + const double var_INa__bj = 0.1212 * var_INa__a * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__cell__V)) + 0.29999999999999999 * (1 - var_INa__a) * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__bm = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__cell__V); // per_ms + const double var_INa__j_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_INa__aj / (var_INa__aj + var_INa__bj); // dimensionless + const double var_INa__tau_H = 1 / (var_INa__aH + var_INa__bH); // ms + const double var_INa__tau_j = 1 / (var_INa__aj + var_INa__bj); // ms + const double var_INaCa__inaca = (-pow(mParameters[6], 3) * var_Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * mParameters[13] * exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V) / (1 + (pow(mParameters[6], 3) * var_Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_INaCa__c2 * exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_INaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_Environment__FonRT * var_chaste_interface__cell__V) + 0.036499999999999998 * var_INaK__sigma * exp(-var_Environment__FonRT * var_chaste_interface__cell__V)); // dimensionless + const double var_INaK__inak = var_INaK__fnak * var_INaK__ibarnak / ((1 + var_INaK__kmko / mParameters[5]) * (1 + pow(var_INaK__kmnai, 2) / pow(var_chaste_interface__Na__Na_i, 2))); // uA_per_uF + const double var_Irel__Rel_ss = var_ICaL__ilca * var_Irel__alpha_Rel / (1 + pow((var_Irel__K_Relss / var_Irel__Ca_JSR_free), var_Irel__qn)); // mM_per_ms + const double d_dt_chaste_interface_var_Irel__Rel = (-var_chaste_interface__Irel__Rel - var_Irel__Rel_ss) / var_Irel__tau_Rel; // mM_per_ms / ms + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__Environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF + const double var_cell__l = 0.01; // cm + const double var_cell__ra = 0.0011000000000000001; // cm + const double var_cell__ageo = 2 * M_PI * pow(var_cell__ra, 2) + 2 * M_PI * var_cell__l * var_cell__ra; // cm2 + const double var_cell__Acap = 2 * var_cell__ageo; // uF + const double var_cell__AF = var_cell__Acap / var_Environment__F; // uF_mole_per_C + const double var_cell__vcell = 1000 * M_PI * pow(var_cell__ra, 2) * var_cell__l; // uL + const double var_cell__vjsr = 0.0047999999999999996 * var_cell__vcell; // uL + const double var_cell__vmyo = 0.68000000000000005 * var_cell__vcell; // uL + const double var_cell__vnsr = 0.055199999999999999 * var_cell__vcell; // uL + const double d_dt_chaste_interface_var_Ca__Ca_NSR = -var_Iup_Ileak__ileak - var_Itr__itr * var_cell__vjsr / var_cell__vnsr + var_Iup_Ileak__iup; // mM / ms + const double var_reversal_potentials__ECa = 0.5 * log(mParameters[4] / var_Ca__Ca_i) / var_Environment__FonRT; // mV + const double var_ICaT__icat = pow(var_chaste_interface__ICaT__b, 2) * (-var_reversal_potentials__ECa + var_chaste_interface__cell__V) * var_chaste_interface__ICaT__g * var_ICaT__gcat; // uA_per_uF + const double var_cell__caiont = -2 * var_INaCa__inaca + var_ICaL__ilca + var_ICaT__icat + var_ICab__icab + var_IpCa__ipca; // uA_per_uF + const double d_dt_chaste_interface_var_Ca__Ca_T = (-var_Iup_Ileak__iup + var_Iup_Ileak__ileak) * var_cell__vnsr / var_cell__vmyo + var_chaste_interface__Irel__Rel * var_cell__vjsr / var_cell__vmyo - 0.5 * var_cell__AF * var_cell__caiont / var_cell__vmyo; // mM / ms + const double var_reversal_potentials__EK = log(mParameters[5] / var_chaste_interface__K__K_i) / var_Environment__FonRT; // mV + const double var_IK1__ak1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__EK)); // per_ms + const double var_IK1__bk1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__EK) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_IK1__gK1 = var_IK1__GK1_ * var_IK1__ak1 / (var_IK1__ak1 + var_IK1__bk1); // mS_per_uF + const double var_IK1__IK1 = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IK1__gK1; // uA_per_uF + const double var_IKp__ikp = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IKp__GKpmax / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__cell__V)); // uA_per_uF + const double var_IKr__ikr = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IKr__gkr * var_IKr__r * var_chaste_interface__IKr__xr; // uA_per_uF + const double var_reversal_potentials__ENa = log(mParameters[6] / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__ina = pow(var_chaste_interface__INa__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__cell__V) * mParameters[8] * var_chaste_interface__INa__H * var_chaste_interface__INa__J; // uA_per_uF + const double var_INab__inab = (-var_reversal_potentials__ENa + var_chaste_interface__cell__V) * var_INab__GNab; // uA_per_uF + const double var_cell__naiont = 3 * var_INaCa__inaca + 3 * var_INaK__inak + var_ICaL__ilcana + var_INa__ina + var_INab__inab; // uA_per_uF + const double d_dt_chaste_interface_var_Na__Na_i = -mParameters[3] * var_cell__AF * var_cell__naiont / var_cell__vmyo; // mM / ms + const double var_reversal_potentials__prnak = 0.018329999999999999; // dimensionless + const double var_reversal_potentials__EKs = log((mParameters[6] * var_reversal_potentials__prnak + mParameters[5]) / (var_chaste_interface__Na__Na_i * var_reversal_potentials__prnak + var_chaste_interface__K__K_i)) / var_Environment__FonRT; // mV + const double var_IKs__iks = (-var_reversal_potentials__EKs + var_chaste_interface__cell__V) * var_IKs__gks * var_chaste_interface__IKs__xs1 * var_chaste_interface__IKs__xs2; // uA_per_uF + const double var_cell__kiont = -2 * var_INaK__inak + var_ICaL__ilcak + var_IK1__IK1 + var_IKp__ikp + var_IKr__ikr + var_IKs__iks + var_cell__i_Stim; // uA_per_uF + const double d_dt_chaste_interface_var_K__K_i = -mParameters[3] * var_cell__AF * var_cell__kiont / var_cell__vmyo; // mM / ms + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_cell__V = 0.0; + } + else + { + d_dt_chaste_interface_var_cell__V = -var_cell__caiont - var_cell__kiont - var_cell__naiont; // mV / ms + } + + rDY[0] = d_dt_chaste_interface_var_cell__V; + rAlphaOrTau[1] = var_INa__tau_H; + rBetaOrInf[1] = var_INa__H_inf; + rAlphaOrTau[2] = 1 * var_INa__am; + rBetaOrInf[2] = var_INa__bm; + rAlphaOrTau[3] = var_INa__tau_j; + rBetaOrInf[3] = var_INa__j_inf; + rAlphaOrTau[4] = var_ICaL__taud; + rBetaOrInf[4] = var_ICaL__dss; + rAlphaOrTau[5] = var_ICaL__tauf; + rBetaOrInf[5] = var_ICaL__fss; + rAlphaOrTau[6] = var_IKr__tauxr; + rBetaOrInf[6] = var_IKr__xrss; + rAlphaOrTau[7] = var_IKs__tauxs; + rBetaOrInf[7] = var_IKs__xss; + rAlphaOrTau[8] = 4 * var_IKs__tauxs; + rBetaOrInf[8] = var_IKs__xss; + rAlphaOrTau[9] = var_ICaT__taub; + rBetaOrInf[9] = var_ICaT__bss; + rAlphaOrTau[10] = var_ICaT__taug; + rBetaOrInf[10] = var_ICaT__gss; + rDY[11] = d_dt_chaste_interface_var_Irel__Rel; + rDY[12] = d_dt_chaste_interface_var_Na__Na_i; + rDY[13] = d_dt_chaste_interface_var_K__K_i; + rDY[14] = d_dt_chaste_interface_var_Ca__Ca_T; + rDY[15] = d_dt_chaste_interface_var_Ca__Ca_JSR_T; + rDY[16] = d_dt_chaste_interface_var_Ca__Ca_NSR; + rDY[17] = d_dt_chaste_interface_var_Ca__Over; + } + void Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::ComputeOneStepExceptVoltage(const std::vector &rDY, const std::vector &rAlphaOrTau, const std::vector &rBetaOrInf) + { + std::vector& rY = rGetStateVariables(); + + rY[1] = rBetaOrInf[1] + (rY[1] - rBetaOrInf[1])*exp(-mDt/rAlphaOrTau[1]); + { + const double tau_inv = rAlphaOrTau[2] + rBetaOrInf[2]; + const double y_inf = rAlphaOrTau[2] / tau_inv; + rY[2] = y_inf + (rY[2] - y_inf)*exp(-mDt*tau_inv); + } + rY[3] = rBetaOrInf[3] + (rY[3] - rBetaOrInf[3])*exp(-mDt/rAlphaOrTau[3]); + rY[4] = rBetaOrInf[4] + (rY[4] - rBetaOrInf[4])*exp(-mDt/rAlphaOrTau[4]); + rY[5] = rBetaOrInf[5] + (rY[5] - rBetaOrInf[5])*exp(-mDt/rAlphaOrTau[5]); + rY[6] = rBetaOrInf[6] + (rY[6] - rBetaOrInf[6])*exp(-mDt/rAlphaOrTau[6]); + rY[7] = rBetaOrInf[7] + (rY[7] - rBetaOrInf[7])*exp(-mDt/rAlphaOrTau[7]); + rY[8] = rBetaOrInf[8] + (rY[8] - rBetaOrInf[8])*exp(-mDt/rAlphaOrTau[8]); + rY[9] = rBetaOrInf[9] + (rY[9] - rBetaOrInf[9])*exp(-mDt/rAlphaOrTau[9]); + rY[10] = rBetaOrInf[10] + (rY[10] - rBetaOrInf[10])*exp(-mDt/rAlphaOrTau[10]); + rY[11] += mDt * rDY[11]; + rY[12] += mDt * rDY[12]; + rY[13] += mDt * rDY[13]; + rY[14] += mDt * rDY[14]; + rY[15] += mDt * rDY[15]; + rY[16] += mDt * rDY[16]; + rY[17] += mDt * rDY[17]; + } + + std::vector Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::ComputeDerivedQuantities(double var_chaste_interface__Environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -89.4356034692784 + double var_chaste_interface__INa__H = rY[1]; + // Units: dimensionless; Initial value: 0.994401369032678 + double var_chaste_interface__INa__m = rY[2]; + // Units: dimensionless; Initial value: 0.000734780346592185 + double var_chaste_interface__INa__J = rY[3]; + // Units: dimensionless; Initial value: 0.996100688673679 + double var_chaste_interface__ICaL__d = rY[4]; + // Units: dimensionless; Initial value: 3.2514786721066e-27 + double var_chaste_interface__ICaL__f = rY[5]; + // Units: dimensionless; Initial value: 0.997404948824816 + double var_chaste_interface__IKr__xr = rY[6]; + // Units: dimensionless; Initial value: 0.000162194715543637 + double var_chaste_interface__IKs__xs1 = rY[7]; + // Units: dimensionless; Initial value: 0.0285147332973946 + double var_chaste_interface__IKs__xs2 = rY[8]; + // Units: dimensionless; Initial value: 0.0764114040188678 + double var_chaste_interface__Na__Na_i = rY[12]; + // Units: mM; Initial value: 16.612739313555 + double var_chaste_interface__K__K_i = rY[13]; + // Units: mM; Initial value: 139.730914103161 + double var_chaste_interface__Ca__Ca_T = rY[14]; + // Units: mM; Initial value: 0.0257059808595638 + + // Mathematics + const double var_Ca__cmdnbar = 0.050000000000000003; // mM + const double var_Ca__kmcmdn = 0.0023800000000000002; // mM + const double var_Ca__kmtrpn = 0.00050000000000000001; // mM + const double var_Ca__dmyo = -var_chaste_interface__Ca__Ca_T * var_Ca__kmcmdn * var_Ca__kmtrpn; // mM3 + const double var_Ca__trpnbar = 0.070000000000000007; // mM + const double var_Ca__bmyo = -var_chaste_interface__Ca__Ca_T + var_Ca__cmdnbar + var_Ca__kmcmdn + var_Ca__kmtrpn + var_Ca__trpnbar; // mM + const double var_Ca__cmyo = var_Ca__cmdnbar * var_Ca__kmtrpn + var_Ca__kmcmdn * var_Ca__kmtrpn + var_Ca__kmcmdn * var_Ca__trpnbar - (var_Ca__kmcmdn + var_Ca__kmtrpn) * var_chaste_interface__Ca__Ca_T; // mM2 + const double var_Ca__Ca_i = -0.33333333333333331 * var_Ca__bmyo + 1.1547005383792515 * sqrt(-var_Ca__cmyo + 0.33333333333333331 * pow(var_Ca__bmyo, 2)) * cos(0.33333333333333331 * acos(0.096225044864937631 * pow((-var_Ca__cmyo + 0.33333333333333331 * pow(var_Ca__bmyo, 2)), (-1.5)) * (-2 * pow(var_Ca__bmyo, 3) - 27 * var_Ca__dmyo + 9 * var_Ca__bmyo * var_Ca__cmyo))); // mM + const double var_Environment__F = 96485; // C_per_mole + const double var_Environment__R = 8314; // mJ_per_mole_K + const double var_Environment__Temp = 310; // kelvin + const double var_Environment__FonRT = var_Environment__F / (var_Environment__R * var_Environment__Temp); // per_mV + const double var_ICaL__gacai = 1; // dimensionless + const double var_ICaL__gacao = 0.34100000000000003; // dimensionless + const double var_ICaL__kmca = 0.00059999999999999995; // mM + const double var_ICaL__fca = 1 / (1 + var_Ca__Ca_i / var_ICaL__kmca); // dimensionless + const double var_IK1__GK1max = 0.75; // mS_per_uF + const double var_IK1__GK1_ = 0.43033148291193518 * sqrt(mParameters[5]) * var_IK1__GK1max; // mS_per_uF + const double var_IKr__gkr = 0.43033148291193518 * sqrt(mParameters[5]) * mParameters[11]; // mS_per_uF + const double var_IKs__gks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_Ca__Ca_i), 1.3999999999999999))) * mParameters[12]; // mS_per_uF + const double var_INaCa__c2 = 0.0001; // dimensionless + const double var_INaCa__gammas = 0.14999999999999999; // dimensionless + const double var_ICaL__ibarca = 4 * (-mParameters[4] * var_ICaL__gacao + var_Ca__Ca_i * var_ICaL__gacai * exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * mParameters[7] * var_chaste_interface__cell__V / (-1 + exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ilca = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibarca; // uA_per_uF + const double var_ICaL__ilca_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__ilca; // uA_per_cm2 + const double var_ICaL__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-0.113569 * pow((1 + 0.10000000000000001 * var_chaste_interface__cell__V), 2))); // ms + const double var_IKr__r = 1 / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_INa__a = 1 - 1 / (1 + exp(-1666.6666666666667 - 41.666666666666664 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__aH = 0.13500000000000001 * var_INa__a * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__cell__V); // per_ms + const double var_INa__aj = 1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__cell__V)) * var_INa__a / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__bH = (3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * mParameters[10])) * var_INa__a + 7.6923076923076916 * (1 - var_INa__a) / (1 + exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__bj = 0.1212 * var_INa__a * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__cell__V)) + 0.29999999999999999 * (1 - var_INa__a) * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__tau_H = 1 / (var_INa__aH + var_INa__bH); // ms + const double var_INa__tau_j = 1 / (var_INa__aj + var_INa__bj); // ms + const double var_INaCa__inaca = (-pow(mParameters[6], 3) * var_Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * mParameters[13] * exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V) / (1 + (pow(mParameters[6], 3) * var_Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_INaCa__c2 * exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_INaCa__inaca_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__inaca; // uA_per_cm2 + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__Environment__time); // uA_per_cm2 + const double var_reversal_potentials__EK = log(mParameters[5] / var_chaste_interface__K__K_i) / var_Environment__FonRT; // mV + const double var_IK1__ak1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__EK)); // per_ms + const double var_IK1__bk1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__EK) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_IK1__gK1 = var_IK1__GK1_ * var_IK1__ak1 / (var_IK1__ak1 + var_IK1__bk1); // mS_per_uF + const double var_IK1__IK1 = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IK1__gK1; // uA_per_uF + const double var_IK1__IK1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__IK1; // uA_per_cm2 + const double var_IKr__ikr = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IKr__gkr * var_IKr__r * var_chaste_interface__IKr__xr; // uA_per_uF + const double var_IKr__ikr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__ikr; // uA_per_cm2 + const double var_reversal_potentials__ENa = log(mParameters[6] / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__ina = pow(var_chaste_interface__INa__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__cell__V) * mParameters[8] * var_chaste_interface__INa__H * var_chaste_interface__INa__J; // uA_per_uF + const double var_INa__ina_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__ina; // uA_per_cm2 + const double var_reversal_potentials__prnak = 0.018329999999999999; // dimensionless + const double var_reversal_potentials__EKs = log((mParameters[6] * var_reversal_potentials__prnak + mParameters[5]) / (var_chaste_interface__Na__Na_i * var_reversal_potentials__prnak + var_chaste_interface__K__K_i)) / var_Environment__FonRT; // mV + const double var_IKs__iks = (-var_reversal_potentials__EKs + var_chaste_interface__cell__V) * var_IKs__gks * var_chaste_interface__IKs__xs1 * var_chaste_interface__IKs__xs2; // uA_per_uF + const double var_IKs__iks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__iks; // uA_per_cm2 + + std::vector dqs(16); + dqs[0] = var_Ca__Ca_i; + dqs[1] = var_ICaL__ilca_converted; + dqs[2] = var_ICaL__tauf; + dqs[3] = var_INa__ina_converted; + dqs[4] = var_INa__tau_H; + dqs[5] = var_INa__tau_j; + dqs[6] = var_IK1__IK1_converted; + dqs[7] = var_IK1__GK1_; + dqs[8] = var_IK1__gK1; + dqs[9] = var_IKr__ikr_converted; + dqs[10] = var_IKr__gkr; + dqs[11] = var_IKs__iks_converted; + dqs[12] = var_IKs__gks; + dqs[13] = var_INaCa__inaca_converted; + dqs[14] = var_cell__i_Stim_converted; + dqs[15] = var_chaste_interface__Environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "LivshitzRudy2007"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "ms"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-89.4356034692784); + + // rY[1]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.994401369032678); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000734780346592185); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.996100688673679); + + // rY[4]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.2514786721066e-27); + + // rY[5]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.997404948824816); + + // rY[6]: + this->mVariableNames.push_back("IKr__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000162194715543637); + + // rY[7]: + this->mVariableNames.push_back("IKs__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0285147332973946); + + // rY[8]: + this->mVariableNames.push_back("IKs__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0764114040188678); + + // rY[9]: + this->mVariableNames.push_back("ICaT__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000927461915392873); + + // rY[10]: + this->mVariableNames.push_back("ICaT__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.952834331760863); + + // rY[11]: + this->mVariableNames.push_back("SR_release_current"); + this->mVariableUnits.push_back("mM_per_ms"); + this->mInitialConditions.push_back(1.06874246141923e-23); + + // rY[12]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(16.612739313555); + + // rY[13]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(139.730914103161); + + // rY[14]: + this->mVariableNames.push_back("Ca__Ca_T"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0257059808595638); + + // rY[15]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(7.87371650296567); + + // rY[16]: + this->mVariableNames.push_back("Ca__Ca_NSR"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(2.71518235696672); + + // rY[17]: + this->mVariableNames.push_back("Ca__Over"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1e-12); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("mM_per_mV_ms"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("mM_per_ms"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("L_per_F_ms"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("mV"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("uA_per_uF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("mM"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("ms"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamiclivshitz_rudy_2007FromCellMLRushLarsen) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamiclivshitz_rudy_2007FromCellMLRushLarsen(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007--sympy_1_14.cpp new file mode 100644 index 00000000..1205f472 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/RL/dynamic_livshitz_rudy_2007--sympy_1_14.cpp @@ -0,0 +1,796 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: LivshitzRudy2007 +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: RushLarsen) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_livshitz_rudy_2007.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + + + + + + boost::shared_ptr Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__cell__stim_amplitude_converted = -15 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__cell__stim_duration = 3; // ms + const double var_chaste_interface__cell__stim_offset = 100; // ms + const double var_chaste_interface__cell__stim_period = 400; // ms + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__cell__stim_amplitude_converted), + var_chaste_interface__cell__stim_duration, + var_chaste_interface__cell__stim_period, + var_chaste_interface__cell__stim_offset + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + + Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::Dynamiclivshitz_rudy_2007FromCellMLRushLarsen(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractRushLarsenCardiacCell( + 18, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1; // (var_Iup_Ileak__leak_factor) [dimensionless] + this->mParameters[1] = 0.125; // (var_Irel__kappa) [mM_per_mV_ms] + this->mParameters[2] = 0.0087500000000000008; // (var_Iup_Ileak__iupbar) [mM_per_ms] + this->mParameters[3] = 1; // (var_Na__conc_clamp) [dimensionless] + this->mParameters[4] = 1.8; // (var_Environment__Ca_o) [mM] + this->mParameters[5] = 4.5; // (var_Environment__K_o) [mM] + this->mParameters[6] = 140; // (var_Environment__Na_o) [mM] + this->mParameters[7] = 0.00054000000000000001; // (var_ICaL__pca) [L_per_F_ms] + this->mParameters[8] = 16; // (var_INa__GNa) [mS_per_uF] + this->mParameters[9] = 0; // (var_INa__perc_reduced_inact_for_IpNa) [dimensionless] + this->mParameters[10] = 0; // (var_INa__shift_h) [mV] + this->mParameters[11] = 0.02614; // (var_IKr__gkrmax) [mS_per_uF] + this->mParameters[12] = 0.433; // (var_IKs__GKsmax) [mS_per_uF] + this->mParameters[13] = 0.00025000000000000001; // (var_INaCa__c1) [uA_per_uF] + } + + Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::~Dynamiclivshitz_rudy_2007FromCellMLRushLarsen() + { + } + + + void Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 18; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -89.4356034692784 + double var_chaste_interface__INa__H = rY[1]; + // Units: dimensionless; Initial value: 0.994401369032678 + double var_chaste_interface__INa__m = rY[2]; + // Units: dimensionless; Initial value: 0.000734780346592185 + double var_chaste_interface__INa__J = rY[3]; + // Units: dimensionless; Initial value: 0.996100688673679 + double var_chaste_interface__ICaL__d = rY[4]; + // Units: dimensionless; Initial value: 3.2514786721066e-27 + double var_chaste_interface__ICaL__f = rY[5]; + // Units: dimensionless; Initial value: 0.997404948824816 + double var_chaste_interface__IKr__xr = rY[6]; + // Units: dimensionless; Initial value: 0.000162194715543637 + double var_chaste_interface__IKs__xs1 = rY[7]; + // Units: dimensionless; Initial value: 0.0285147332973946 + double var_chaste_interface__IKs__xs2 = rY[8]; + // Units: dimensionless; Initial value: 0.0764114040188678 + double var_chaste_interface__ICaT__b = rY[9]; + // Units: dimensionless; Initial value: 0.000927461915392873 + double var_chaste_interface__ICaT__g = rY[10]; + // Units: dimensionless; Initial value: 0.952834331760863 + double var_chaste_interface__Na__Na_i = rY[12]; + // Units: mM; Initial value: 16.612739313555 + double var_chaste_interface__K__K_i = rY[13]; + // Units: mM; Initial value: 139.730914103161 + double var_chaste_interface__Ca__Ca_T = rY[14]; + // Units: mM; Initial value: 0.0257059808595638 + + const double var_Ca__cmdnbar = 0.050000000000000003; // mM + const double var_Ca__kmcmdn = 0.0023800000000000002; // mM + const double var_Ca__kmtrpn = 0.00050000000000000001; // mM + const double var_Ca__dmyo = -var_chaste_interface__Ca__Ca_T * var_Ca__kmcmdn * var_Ca__kmtrpn; // mM3 + const double var_Ca__trpnbar = 0.070000000000000007; // mM + const double var_Ca__bmyo = -var_chaste_interface__Ca__Ca_T + var_Ca__cmdnbar + var_Ca__kmcmdn + var_Ca__kmtrpn + var_Ca__trpnbar; // mM + const double var_Ca__cmyo = var_Ca__cmdnbar * var_Ca__kmtrpn + var_Ca__kmcmdn * var_Ca__kmtrpn + var_Ca__kmcmdn * var_Ca__trpnbar - (var_Ca__kmcmdn + var_Ca__kmtrpn) * var_chaste_interface__Ca__Ca_T; // mM2 + const double var_Ca__Ca_i = -0.33333333333333331 * var_Ca__bmyo + 0.66666666666666663 * sqrt(pow(var_Ca__bmyo, 2) - 3 * var_Ca__cmyo) * cos(0.33333333333333331 * acos(0.5 * pow((pow(var_Ca__bmyo, 2) - 3 * var_Ca__cmyo), (-1.5)) * (-2 * pow(var_Ca__bmyo, 3) - 27 * var_Ca__dmyo + 9 * var_Ca__bmyo * var_Ca__cmyo))); // mM + const double var_Environment__F = 96485; // C_per_mole + const double var_Environment__R = 8314; // mJ_per_mole_K + const double var_Environment__Temp = 310; // kelvin + const double var_Environment__FonRT = var_Environment__F / (var_Environment__R * var_Environment__Temp); // per_mV + const double var_ICaL__gacai = 1; // dimensionless + const double var_ICaL__gacao = 0.34100000000000003; // dimensionless + const double var_ICaL__gaki = 0.75; // dimensionless + const double var_ICaL__gako = 0.75; // dimensionless + const double var_ICaL__ganai = 0.75; // dimensionless + const double var_ICaL__ganao = 0.75; // dimensionless + const double var_ICaL__kmca = 0.00059999999999999995; // mM + const double var_ICaL__fca = 1 / (1 + var_Ca__Ca_i / var_ICaL__kmca); // dimensionless + const double var_ICaL__pk = 1.9299999999999999e-7; // L_per_F_ms + const double var_ICaL__pna = 6.75e-7; // L_per_F_ms + const double var_ICaT__gcat = 0.050000000000000003; // mS_per_uF + const double var_ICab__gcab = 0.003016; // mS_per_uF + const double var_IK1__GK1max = 0.75; // mS_per_uF + const double var_IK1__GK1_ = 0.43033148291193518 * sqrt(mParameters[5]) * var_IK1__GK1max; // mS_per_uF + const double var_IKp__GKpmax = 0.0055199999999999997; // mS_per_uF + const double var_IKr__gkr = 0.43033148291193518 * sqrt(mParameters[5]) * mParameters[11]; // mS_per_uF + const double var_IKs__gks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_Ca__Ca_i), 1.3999999999999999))) * mParameters[12]; // mS_per_uF + const double var_INaCa__c2 = 0.0001; // dimensionless + const double var_INaCa__gammas = 0.14999999999999999; // dimensionless + const double var_INaK__ibarnak = 2.25; // uA_per_uF + const double var_INaK__kmko = 1.5; // mM + const double var_INaK__kmnai = 10; // mM + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_INab__GNab = 0.0040000000000000001; // mS_per_uF + const double var_IpCa__ibarpca = 1.1499999999999999; // uA_per_uF + const double var_IpCa__kmpca = 0.00050000000000000001; // mM + const double var_IpCa__ipca = var_Ca__Ca_i * var_IpCa__ibarpca / (var_Ca__Ca_i + var_IpCa__kmpca); // uA_per_uF + const double var_ICaL__ibarca = 4 * (-mParameters[4] * var_ICaL__gacao + var_Ca__Ca_i * var_ICaL__gacai * exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * mParameters[7] * var_chaste_interface__cell__V / (-1 + exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ibark = (-mParameters[5] * var_ICaL__gako + var_ICaL__gaki * var_chaste_interface__K__K_i * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * var_ICaL__pk * var_chaste_interface__cell__V / (-1 + exp(var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ibarna = (-mParameters[6] * var_ICaL__ganao + var_ICaL__ganai * var_chaste_interface__Na__Na_i * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * var_ICaL__pna * var_chaste_interface__cell__V / (-1 + exp(var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ilca = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibarca; // uA_per_uF + const double var_ICaL__ilcak = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibark; // uA_per_uF + const double var_ICaL__ilcana = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibarna; // uA_per_uF + const double var_ICab__icab = (-0.5 * log(mParameters[4] / var_Ca__Ca_i) / var_Environment__FonRT + var_chaste_interface__cell__V) * var_ICab__gcab; // uA_per_uF + const double var_IKr__r = 1 / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_INaCa__inaca = (-pow(mParameters[6], 3) * var_Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * mParameters[13] * exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V) / (1 + (pow(mParameters[6], 3) * var_Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_INaCa__c2 * exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_INaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_Environment__FonRT * var_chaste_interface__cell__V) + 0.036499999999999998 * var_INaK__sigma * exp(-var_Environment__FonRT * var_chaste_interface__cell__V)); // dimensionless + const double var_INaK__inak = var_INaK__fnak * var_INaK__ibarnak / ((1 + var_INaK__kmko / mParameters[5]) * (1 + pow(var_INaK__kmnai, 2) / pow(var_chaste_interface__Na__Na_i, 2))); // uA_per_uF + const double var_cell__i_Stim = 0; // uA_per_uF + const double var_reversal_potentials__ECa = 0.5 * log(mParameters[4] / var_Ca__Ca_i) / var_Environment__FonRT; // mV + const double var_ICaT__icat = pow(var_chaste_interface__ICaT__b, 2) * (-var_reversal_potentials__ECa + var_chaste_interface__cell__V) * var_chaste_interface__ICaT__g * var_ICaT__gcat; // uA_per_uF + const double var_cell__caiont = -2 * var_INaCa__inaca + var_ICaL__ilca + var_ICaT__icat + var_ICab__icab + var_IpCa__ipca; // uA_per_uF + const double var_reversal_potentials__EK = log(mParameters[5] / var_chaste_interface__K__K_i) / var_Environment__FonRT; // mV + const double var_IK1__ak1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__EK)); // per_ms + const double var_IK1__bk1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__EK) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_IK1__gK1 = var_IK1__GK1_ * var_IK1__ak1 / (var_IK1__ak1 + var_IK1__bk1); // mS_per_uF + const double var_IK1__IK1 = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IK1__gK1; // uA_per_uF + const double var_IKp__ikp = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IKp__GKpmax / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__cell__V)); // uA_per_uF + const double var_IKr__ikr = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IKr__gkr * var_IKr__r * var_chaste_interface__IKr__xr; // uA_per_uF + const double var_reversal_potentials__ENa = log(mParameters[6] / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__ina = pow(var_chaste_interface__INa__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__cell__V) * mParameters[8] * var_chaste_interface__INa__H * var_chaste_interface__INa__J; // uA_per_uF + const double var_INab__inab = (-var_reversal_potentials__ENa + var_chaste_interface__cell__V) * var_INab__GNab; // uA_per_uF + const double var_cell__naiont = 3 * var_INaCa__inaca + 3 * var_INaK__inak + var_ICaL__ilcana + var_INa__ina + var_INab__inab; // uA_per_uF + const double var_reversal_potentials__prnak = 0.018329999999999999; // dimensionless + const double var_reversal_potentials__EKs = log((mParameters[6] * var_reversal_potentials__prnak + mParameters[5]) / (var_chaste_interface__Na__Na_i * var_reversal_potentials__prnak + var_chaste_interface__K__K_i)) / var_Environment__FonRT; // mV + const double var_IKs__iks = (-var_reversal_potentials__EKs + var_chaste_interface__cell__V) * var_IKs__gks * var_chaste_interface__IKs__xs1 * var_chaste_interface__IKs__xs2; // uA_per_uF + const double var_cell__kiont = -2 * var_INaK__inak + var_ICaL__ilcak + var_IK1__IK1 + var_IKp__ikp + var_IKr__ikr + var_IKs__iks + var_cell__i_Stim; // uA_per_uF + const double var_chaste_interface__i_ionic = (var_cell__caiont + var_cell__kiont + var_cell__naiont) * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::EvaluateEquations(double var_chaste_interface__Environment__time, std::vector &rDY, std::vector &rAlphaOrTau, std::vector &rBetaOrInf) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -89.4356034692784 + double var_chaste_interface__INa__H = rY[1]; + // Units: dimensionless; Initial value: 0.994401369032678 + double var_chaste_interface__INa__m = rY[2]; + // Units: dimensionless; Initial value: 0.000734780346592185 + double var_chaste_interface__INa__J = rY[3]; + // Units: dimensionless; Initial value: 0.996100688673679 + double var_chaste_interface__ICaL__d = rY[4]; + // Units: dimensionless; Initial value: 3.2514786721066e-27 + double var_chaste_interface__ICaL__f = rY[5]; + // Units: dimensionless; Initial value: 0.997404948824816 + double var_chaste_interface__IKr__xr = rY[6]; + // Units: dimensionless; Initial value: 0.000162194715543637 + double var_chaste_interface__IKs__xs1 = rY[7]; + // Units: dimensionless; Initial value: 0.0285147332973946 + double var_chaste_interface__IKs__xs2 = rY[8]; + // Units: dimensionless; Initial value: 0.0764114040188678 + double var_chaste_interface__ICaT__b = rY[9]; + // Units: dimensionless; Initial value: 0.000927461915392873 + double var_chaste_interface__ICaT__g = rY[10]; + // Units: dimensionless; Initial value: 0.952834331760863 + double var_chaste_interface__Irel__Rel = rY[11]; + // Units: mM_per_ms; Initial value: 1.06874246141923e-23 + double var_chaste_interface__Na__Na_i = rY[12]; + // Units: mM; Initial value: 16.612739313555 + double var_chaste_interface__K__K_i = rY[13]; + // Units: mM; Initial value: 139.730914103161 + double var_chaste_interface__Ca__Ca_T = rY[14]; + // Units: mM; Initial value: 0.0257059808595638 + double var_chaste_interface__Ca__Ca_JSR_T = rY[15]; + // Units: mM; Initial value: 7.87371650296567 + double var_chaste_interface__Ca__Ca_NSR = rY[16]; + // Units: mM; Initial value: 2.71518235696672 + + + // Mathematics + double d_dt_chaste_interface_var_cell__V; + const double var_Ca__cmdnbar = 0.050000000000000003; // mM + const double var_Ca__kmcmdn = 0.0023800000000000002; // mM + const double var_Ca__kmtrpn = 0.00050000000000000001; // mM + const double var_Ca__dmyo = -var_chaste_interface__Ca__Ca_T * var_Ca__kmcmdn * var_Ca__kmtrpn; // mM3 + const double var_Ca__trpnbar = 0.070000000000000007; // mM + const double var_Ca__bmyo = -var_chaste_interface__Ca__Ca_T + var_Ca__cmdnbar + var_Ca__kmcmdn + var_Ca__kmtrpn + var_Ca__trpnbar; // mM + const double var_Ca__cmyo = var_Ca__cmdnbar * var_Ca__kmtrpn + var_Ca__kmcmdn * var_Ca__kmtrpn + var_Ca__kmcmdn * var_Ca__trpnbar - (var_Ca__kmcmdn + var_Ca__kmtrpn) * var_chaste_interface__Ca__Ca_T; // mM2 + const double var_Ca__Ca_i = -0.33333333333333331 * var_Ca__bmyo + 0.66666666666666663 * sqrt(pow(var_Ca__bmyo, 2) - 3 * var_Ca__cmyo) * cos(0.33333333333333331 * acos(0.5 * pow((pow(var_Ca__bmyo, 2) - 3 * var_Ca__cmyo), (-1.5)) * (-2 * pow(var_Ca__bmyo, 3) - 27 * var_Ca__dmyo + 9 * var_Ca__bmyo * var_Ca__cmyo))); // mM + const double d_dt_chaste_interface_var_Ca__Over = 0; // 1 / ms + const double var_Environment__F = 96485; // C_per_mole + const double var_Environment__R = 8314; // mJ_per_mole_K + const double var_Environment__Temp = 310; // kelvin + const double var_Environment__FonRT = var_Environment__F / (var_Environment__R * var_Environment__Temp); // per_mV + const double var_ICaL__gacai = 1; // dimensionless + const double var_ICaL__gacao = 0.34100000000000003; // dimensionless + const double var_ICaL__gaki = 0.75; // dimensionless + const double var_ICaL__gako = 0.75; // dimensionless + const double var_ICaL__ganai = 0.75; // dimensionless + const double var_ICaL__ganao = 0.75; // dimensionless + const double var_ICaL__kmca = 0.00059999999999999995; // mM + const double var_ICaL__fca = 1 / (1 + var_Ca__Ca_i / var_ICaL__kmca); // dimensionless + const double var_ICaL__pk = 1.9299999999999999e-7; // L_per_F_ms + const double var_ICaL__pna = 6.75e-7; // L_per_F_ms + const double var_ICaT__gcat = 0.050000000000000003; // mS_per_uF + const double var_ICab__gcab = 0.003016; // mS_per_uF + const double var_IK1__GK1max = 0.75; // mS_per_uF + const double var_IK1__GK1_ = 0.43033148291193518 * sqrt(mParameters[5]) * var_IK1__GK1max; // mS_per_uF + const double var_IKp__GKpmax = 0.0055199999999999997; // mS_per_uF + const double var_IKr__gkr = 0.43033148291193518 * sqrt(mParameters[5]) * mParameters[11]; // mS_per_uF + const double var_IKs__gks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_Ca__Ca_i), 1.3999999999999999))) * mParameters[12]; // mS_per_uF + const double var_INaCa__c2 = 0.0001; // dimensionless + const double var_INaCa__gammas = 0.14999999999999999; // dimensionless + const double var_INaK__ibarnak = 2.25; // uA_per_uF + const double var_INaK__kmko = 1.5; // mM + const double var_INaK__kmnai = 10; // mM + const double var_INaK__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * mParameters[6]); // dimensionless + const double var_INab__GNab = 0.0040000000000000001; // mS_per_uF + const double var_IpCa__ibarpca = 1.1499999999999999; // uA_per_uF + const double var_IpCa__kmpca = 0.00050000000000000001; // mM + const double var_IpCa__ipca = var_Ca__Ca_i * var_IpCa__ibarpca / (var_Ca__Ca_i + var_IpCa__kmpca); // uA_per_uF + const double var_Irel__K_Relss = 1; // mM + const double var_Irel__csqnbar = 10; // mM + const double var_Irel__kmcsqn = 0.80000000000000004; // mM + const double var_Irel__bbb = -var_chaste_interface__Ca__Ca_JSR_T + var_Irel__csqnbar + var_Irel__kmcsqn; // mM + const double var_Irel__c = var_chaste_interface__Ca__Ca_JSR_T * var_Irel__kmcsqn; // mM2 + const double var_Irel__Ca_JSR_free = 0.5 * sqrt(pow(var_Irel__bbb, 2) + 4 * var_Irel__c) - 0.5 * var_Irel__bbb; // mM + const double var_Irel__qn = 9; // dimensionless + const double var_Irel__tau = 4.75; // ms + const double var_Irel__alpha_Rel = mParameters[1] * var_Irel__tau; // mM_per_mV + const double var_Irel__tau_Rel = var_Irel__tau / (1 + 0.0123 / var_Irel__Ca_JSR_free); // ms + const double var_Itr__tautr = 120; // ms + const double var_Itr__itr = (-var_Irel__Ca_JSR_free + var_chaste_interface__Ca__Ca_NSR) / var_Itr__tautr; // mM_per_ms + const double d_dt_chaste_interface_var_Ca__Ca_JSR_T = -var_chaste_interface__Irel__Rel + var_Itr__itr; // mM / ms + const double var_Iup_Ileak__kmup = 0.00092000000000000003; // mM + const double var_Iup_Ileak__iup = var_Ca__Ca_i * mParameters[2] / (var_Ca__Ca_i + var_Iup_Ileak__kmup); // mM_per_ms + const double var_Iup_Ileak__nsrbar = 15; // mM + const double var_Iup_Ileak__ileak = var_chaste_interface__Ca__Ca_NSR * mParameters[2] * mParameters[0] / var_Iup_Ileak__nsrbar; // mM_per_ms + const double var_ICaL__dss0 = 1 / (1 + exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL__dss1 = 1 / (1 + exp(-2500 - 41.666666666666664 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL__dss = var_ICaL__dss0 * var_ICaL__dss1; // dimensionless + const double var_ICaL__fss = 1 / (1 + exp(4 + 0.125 * var_chaste_interface__cell__V)) + 0.59999999999999998 / (1 + exp(2.5 - 0.050000000000000003 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaL__ibarca = 4 * (-mParameters[4] * var_ICaL__gacao + var_Ca__Ca_i * var_ICaL__gacai * exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * mParameters[7] * var_chaste_interface__cell__V / (-1 + exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ibark = (-mParameters[5] * var_ICaL__gako + var_ICaL__gaki * var_chaste_interface__K__K_i * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * var_ICaL__pk * var_chaste_interface__cell__V / (-1 + exp(var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ibarna = (-mParameters[6] * var_ICaL__ganao + var_ICaL__ganai * var_chaste_interface__Na__Na_i * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * var_ICaL__pna * var_chaste_interface__cell__V / (-1 + exp(var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ilca = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibarca; // uA_per_uF + const double var_ICaL__ilcak = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibark; // uA_per_uF + const double var_ICaL__ilcana = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibarna; // uA_per_uF + const double var_ICaL__taud = 28.571428571428569 * (1 - exp(-1.6025641025641024 - 0.16025641025641024 * var_chaste_interface__cell__V)) * var_ICaL__dss0 / (10 + var_chaste_interface__cell__V); // ms + const double var_ICaL__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-pow((0.33700000000000002 + 0.033700000000000001 * var_chaste_interface__cell__V), 2))); // ms + const double var_ICaT__aa = 1 - 1 / (1 + exp(-416.66666666666669 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaT__bss = 1 / (1 + exp(-1.2962962962962963 - 0.092592592592592587 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaT__gss = 1 / (1 + exp(10.714285714285715 + 0.17857142857142858 * var_chaste_interface__cell__V)); // dimensionless + const double var_ICaT__taub = 3.7000000000000002 + 6.0999999999999996 / (1 + exp(5.5555555555555554 + 0.22222222222222221 * var_chaste_interface__cell__V)); // ms + const double var_ICaT__taug = 12 - 12 * var_ICaT__aa + 1 * (12 - 0.875 * var_chaste_interface__cell__V) * var_ICaT__aa; // ms + const double var_ICab__icab = (-0.5 * log(mParameters[4] / var_Ca__Ca_i) / var_Environment__FonRT + var_chaste_interface__cell__V) * var_ICab__gcab; // uA_per_uF + const double var_IKr__r = 1 / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKr__tauxr = 1 / (0.00060999999999999997 * (38.899999999999999 + var_chaste_interface__cell__V) / (-1 + exp(5.6404999999999994 + 0.14499999999999999 * var_chaste_interface__cell__V)) + 0.0013799999999999999 * (14.199999999999999 + var_chaste_interface__cell__V) / (1 - exp(-1.7465999999999999 - 0.123 * var_chaste_interface__cell__V))); // ms + const double var_IKr__xrss = 1 / (1 + exp(-2.3729411764705883 - 0.23529411764705882 * var_chaste_interface__cell__V)); // dimensionless + const double var_IKs__tauxs = 1 / (0.00013100000000000001 * (30 + var_chaste_interface__cell__V) / (-1 + exp(2.0609999999999999 + 0.068699999999999997 * var_chaste_interface__cell__V)) + 7.1899999999999999e-5 * (30 + var_chaste_interface__cell__V) / (1 - exp(-4.4399999999999995 - 0.14799999999999999 * var_chaste_interface__cell__V))); // ms + const double var_IKs__xss = 1 / (1 + exp(0.089820359281437126 - 0.059880239520958084 * var_chaste_interface__cell__V)); // dimensionless + const double var_INa__a = 1 - 1 / (1 + exp(-1666.6666666666667 - 41.666666666666664 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__aH = 0.13500000000000001 * var_INa__a * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__cell__V); // per_ms + const double var_INa__aj = 1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__cell__V)) * var_INa__a / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__am = 0.32000000000000001 * (47.130000000000003 + var_chaste_interface__cell__V) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__bH = (3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * mParameters[10])) * var_INa__a + 7.6923076923076916 * (1 - var_INa__a) / (1 + exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__H_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_INa__aH / (var_INa__aH + var_INa__bH); // dimensionless + const double var_INa__bj = 0.1212 * var_INa__a * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__cell__V)) + 0.29999999999999999 * (1 - var_INa__a) * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__bm = 0.080000000000000002 * exp(-0.090909090909090912 * var_chaste_interface__cell__V); // per_ms + const double var_INa__j_inf = 0.01 * mParameters[9] + (1 - 0.01 * mParameters[9]) * var_INa__aj / (var_INa__aj + var_INa__bj); // dimensionless + const double var_INa__tau_H = 1 / (var_INa__aH + var_INa__bH); // ms + const double var_INa__tau_j = 1 / (var_INa__aj + var_INa__bj); // ms + const double var_INaCa__inaca = (-pow(mParameters[6], 3) * var_Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * mParameters[13] * exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V) / (1 + (pow(mParameters[6], 3) * var_Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_INaCa__c2 * exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_INaK__fnak = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_Environment__FonRT * var_chaste_interface__cell__V) + 0.036499999999999998 * var_INaK__sigma * exp(-var_Environment__FonRT * var_chaste_interface__cell__V)); // dimensionless + const double var_INaK__inak = var_INaK__fnak * var_INaK__ibarnak / ((1 + var_INaK__kmko / mParameters[5]) * (1 + pow(var_INaK__kmnai, 2) / pow(var_chaste_interface__Na__Na_i, 2))); // uA_per_uF + const double var_Irel__Rel_ss = var_ICaL__ilca * var_Irel__alpha_Rel / (1 + pow((var_Irel__K_Relss / var_Irel__Ca_JSR_free), var_Irel__qn)); // mM_per_ms + const double d_dt_chaste_interface_var_Irel__Rel = (-var_chaste_interface__Irel__Rel - var_Irel__Rel_ss) / var_Irel__tau_Rel; // mM_per_ms / ms + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__Environment__time); // uA_per_cm2 + const double var_cell__i_Stim = var_cell__i_Stim_converted / HeartConfig::Instance()->GetCapacitance(); // uA_per_uF + const double var_cell__l = 0.01; // cm + const double var_cell__ra = 0.0011000000000000001; // cm + const double var_cell__ageo = 2 * M_PI * pow(var_cell__ra, 2) + 2 * M_PI * var_cell__l * var_cell__ra; // cm2 + const double var_cell__Acap = 2 * var_cell__ageo; // uF + const double var_cell__AF = var_cell__Acap / var_Environment__F; // uF_mole_per_C + const double var_cell__vcell = 1000 * M_PI * pow(var_cell__ra, 2) * var_cell__l; // uL + const double var_cell__vjsr = 0.0047999999999999996 * var_cell__vcell; // uL + const double var_cell__vmyo = 0.68000000000000005 * var_cell__vcell; // uL + const double var_cell__vnsr = 0.055199999999999999 * var_cell__vcell; // uL + const double d_dt_chaste_interface_var_Ca__Ca_NSR = -var_Iup_Ileak__ileak - var_Itr__itr * var_cell__vjsr / var_cell__vnsr + var_Iup_Ileak__iup; // mM / ms + const double var_reversal_potentials__ECa = 0.5 * log(mParameters[4] / var_Ca__Ca_i) / var_Environment__FonRT; // mV + const double var_ICaT__icat = pow(var_chaste_interface__ICaT__b, 2) * (-var_reversal_potentials__ECa + var_chaste_interface__cell__V) * var_chaste_interface__ICaT__g * var_ICaT__gcat; // uA_per_uF + const double var_cell__caiont = -2 * var_INaCa__inaca + var_ICaL__ilca + var_ICaT__icat + var_ICab__icab + var_IpCa__ipca; // uA_per_uF + const double d_dt_chaste_interface_var_Ca__Ca_T = (-var_Iup_Ileak__iup + var_Iup_Ileak__ileak) * var_cell__vnsr / var_cell__vmyo + var_chaste_interface__Irel__Rel * var_cell__vjsr / var_cell__vmyo - 0.5 * var_cell__AF * var_cell__caiont / var_cell__vmyo; // mM / ms + const double var_reversal_potentials__EK = log(mParameters[5] / var_chaste_interface__K__K_i) / var_Environment__FonRT; // mV + const double var_IK1__ak1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__EK)); // per_ms + const double var_IK1__bk1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__EK) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_IK1__gK1 = var_IK1__GK1_ * var_IK1__ak1 / (var_IK1__ak1 + var_IK1__bk1); // mS_per_uF + const double var_IK1__IK1 = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IK1__gK1; // uA_per_uF + const double var_IKp__ikp = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IKp__GKpmax / (1 + exp(1.2521739130434781 - 0.16722408026755853 * var_chaste_interface__cell__V)); // uA_per_uF + const double var_IKr__ikr = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IKr__gkr * var_IKr__r * var_chaste_interface__IKr__xr; // uA_per_uF + const double var_reversal_potentials__ENa = log(mParameters[6] / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__ina = pow(var_chaste_interface__INa__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__cell__V) * mParameters[8] * var_chaste_interface__INa__H * var_chaste_interface__INa__J; // uA_per_uF + const double var_INab__inab = (-var_reversal_potentials__ENa + var_chaste_interface__cell__V) * var_INab__GNab; // uA_per_uF + const double var_cell__naiont = 3 * var_INaCa__inaca + 3 * var_INaK__inak + var_ICaL__ilcana + var_INa__ina + var_INab__inab; // uA_per_uF + const double d_dt_chaste_interface_var_Na__Na_i = -mParameters[3] * var_cell__AF * var_cell__naiont / var_cell__vmyo; // mM / ms + const double var_reversal_potentials__prnak = 0.018329999999999999; // dimensionless + const double var_reversal_potentials__EKs = log((mParameters[6] * var_reversal_potentials__prnak + mParameters[5]) / (var_chaste_interface__Na__Na_i * var_reversal_potentials__prnak + var_chaste_interface__K__K_i)) / var_Environment__FonRT; // mV + const double var_IKs__iks = (-var_reversal_potentials__EKs + var_chaste_interface__cell__V) * var_IKs__gks * var_chaste_interface__IKs__xs1 * var_chaste_interface__IKs__xs2; // uA_per_uF + const double var_cell__kiont = -2 * var_INaK__inak + var_ICaL__ilcak + var_IK1__IK1 + var_IKp__ikp + var_IKr__ikr + var_IKs__iks + var_cell__i_Stim; // uA_per_uF + const double d_dt_chaste_interface_var_K__K_i = -mParameters[3] * var_cell__AF * var_cell__kiont / var_cell__vmyo; // mM / ms + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_cell__V = 0.0; + } + else + { + d_dt_chaste_interface_var_cell__V = -var_cell__caiont - var_cell__kiont - var_cell__naiont; // mV / ms + } + + rDY[0] = d_dt_chaste_interface_var_cell__V; + rAlphaOrTau[1] = var_INa__tau_H; + rBetaOrInf[1] = var_INa__H_inf; + rAlphaOrTau[2] = 1 * var_INa__am; + rBetaOrInf[2] = var_INa__bm; + rAlphaOrTau[3] = var_INa__tau_j; + rBetaOrInf[3] = var_INa__j_inf; + rAlphaOrTau[4] = var_ICaL__taud; + rBetaOrInf[4] = var_ICaL__dss; + rAlphaOrTau[5] = var_ICaL__tauf; + rBetaOrInf[5] = var_ICaL__fss; + rAlphaOrTau[6] = var_IKr__tauxr; + rBetaOrInf[6] = var_IKr__xrss; + rAlphaOrTau[7] = var_IKs__tauxs; + rBetaOrInf[7] = var_IKs__xss; + rAlphaOrTau[8] = 4 * var_IKs__tauxs; + rBetaOrInf[8] = var_IKs__xss; + rAlphaOrTau[9] = var_ICaT__taub; + rBetaOrInf[9] = var_ICaT__bss; + rAlphaOrTau[10] = var_ICaT__taug; + rBetaOrInf[10] = var_ICaT__gss; + rDY[11] = d_dt_chaste_interface_var_Irel__Rel; + rDY[12] = d_dt_chaste_interface_var_Na__Na_i; + rDY[13] = d_dt_chaste_interface_var_K__K_i; + rDY[14] = d_dt_chaste_interface_var_Ca__Ca_T; + rDY[15] = d_dt_chaste_interface_var_Ca__Ca_JSR_T; + rDY[16] = d_dt_chaste_interface_var_Ca__Ca_NSR; + rDY[17] = d_dt_chaste_interface_var_Ca__Over; + } + void Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::ComputeOneStepExceptVoltage(const std::vector &rDY, const std::vector &rAlphaOrTau, const std::vector &rBetaOrInf) + { + std::vector& rY = rGetStateVariables(); + + rY[1] = rBetaOrInf[1] + (rY[1] - rBetaOrInf[1])*exp(-mDt/rAlphaOrTau[1]); + { + const double tau_inv = rAlphaOrTau[2] + rBetaOrInf[2]; + const double y_inf = rAlphaOrTau[2] / tau_inv; + rY[2] = y_inf + (rY[2] - y_inf)*exp(-mDt*tau_inv); + } + rY[3] = rBetaOrInf[3] + (rY[3] - rBetaOrInf[3])*exp(-mDt/rAlphaOrTau[3]); + rY[4] = rBetaOrInf[4] + (rY[4] - rBetaOrInf[4])*exp(-mDt/rAlphaOrTau[4]); + rY[5] = rBetaOrInf[5] + (rY[5] - rBetaOrInf[5])*exp(-mDt/rAlphaOrTau[5]); + rY[6] = rBetaOrInf[6] + (rY[6] - rBetaOrInf[6])*exp(-mDt/rAlphaOrTau[6]); + rY[7] = rBetaOrInf[7] + (rY[7] - rBetaOrInf[7])*exp(-mDt/rAlphaOrTau[7]); + rY[8] = rBetaOrInf[8] + (rY[8] - rBetaOrInf[8])*exp(-mDt/rAlphaOrTau[8]); + rY[9] = rBetaOrInf[9] + (rY[9] - rBetaOrInf[9])*exp(-mDt/rAlphaOrTau[9]); + rY[10] = rBetaOrInf[10] + (rY[10] - rBetaOrInf[10])*exp(-mDt/rAlphaOrTau[10]); + rY[11] += mDt * rDY[11]; + rY[12] += mDt * rDY[12]; + rY[13] += mDt * rDY[13]; + rY[14] += mDt * rDY[14]; + rY[15] += mDt * rDY[15]; + rY[16] += mDt * rDY[16]; + rY[17] += mDt * rDY[17]; + } + + std::vector Dynamiclivshitz_rudy_2007FromCellMLRushLarsen::ComputeDerivedQuantities(double var_chaste_interface__Environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__cell__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: mV; Initial value: -89.4356034692784 + double var_chaste_interface__INa__H = rY[1]; + // Units: dimensionless; Initial value: 0.994401369032678 + double var_chaste_interface__INa__m = rY[2]; + // Units: dimensionless; Initial value: 0.000734780346592185 + double var_chaste_interface__INa__J = rY[3]; + // Units: dimensionless; Initial value: 0.996100688673679 + double var_chaste_interface__ICaL__d = rY[4]; + // Units: dimensionless; Initial value: 3.2514786721066e-27 + double var_chaste_interface__ICaL__f = rY[5]; + // Units: dimensionless; Initial value: 0.997404948824816 + double var_chaste_interface__IKr__xr = rY[6]; + // Units: dimensionless; Initial value: 0.000162194715543637 + double var_chaste_interface__IKs__xs1 = rY[7]; + // Units: dimensionless; Initial value: 0.0285147332973946 + double var_chaste_interface__IKs__xs2 = rY[8]; + // Units: dimensionless; Initial value: 0.0764114040188678 + double var_chaste_interface__Na__Na_i = rY[12]; + // Units: mM; Initial value: 16.612739313555 + double var_chaste_interface__K__K_i = rY[13]; + // Units: mM; Initial value: 139.730914103161 + double var_chaste_interface__Ca__Ca_T = rY[14]; + // Units: mM; Initial value: 0.0257059808595638 + + // Mathematics + const double var_Ca__cmdnbar = 0.050000000000000003; // mM + const double var_Ca__kmcmdn = 0.0023800000000000002; // mM + const double var_Ca__kmtrpn = 0.00050000000000000001; // mM + const double var_Ca__dmyo = -var_chaste_interface__Ca__Ca_T * var_Ca__kmcmdn * var_Ca__kmtrpn; // mM3 + const double var_Ca__trpnbar = 0.070000000000000007; // mM + const double var_Ca__bmyo = -var_chaste_interface__Ca__Ca_T + var_Ca__cmdnbar + var_Ca__kmcmdn + var_Ca__kmtrpn + var_Ca__trpnbar; // mM + const double var_Ca__cmyo = var_Ca__cmdnbar * var_Ca__kmtrpn + var_Ca__kmcmdn * var_Ca__kmtrpn + var_Ca__kmcmdn * var_Ca__trpnbar - (var_Ca__kmcmdn + var_Ca__kmtrpn) * var_chaste_interface__Ca__Ca_T; // mM2 + const double var_Ca__Ca_i = -0.33333333333333331 * var_Ca__bmyo + 0.66666666666666663 * sqrt(pow(var_Ca__bmyo, 2) - 3 * var_Ca__cmyo) * cos(0.33333333333333331 * acos(0.5 * pow((pow(var_Ca__bmyo, 2) - 3 * var_Ca__cmyo), (-1.5)) * (-2 * pow(var_Ca__bmyo, 3) - 27 * var_Ca__dmyo + 9 * var_Ca__bmyo * var_Ca__cmyo))); // mM + const double var_Environment__F = 96485; // C_per_mole + const double var_Environment__R = 8314; // mJ_per_mole_K + const double var_Environment__Temp = 310; // kelvin + const double var_Environment__FonRT = var_Environment__F / (var_Environment__R * var_Environment__Temp); // per_mV + const double var_ICaL__gacai = 1; // dimensionless + const double var_ICaL__gacao = 0.34100000000000003; // dimensionless + const double var_ICaL__kmca = 0.00059999999999999995; // mM + const double var_ICaL__fca = 1 / (1 + var_Ca__Ca_i / var_ICaL__kmca); // dimensionless + const double var_IK1__GK1max = 0.75; // mS_per_uF + const double var_IK1__GK1_ = 0.43033148291193518 * sqrt(mParameters[5]) * var_IK1__GK1max; // mS_per_uF + const double var_IKr__gkr = 0.43033148291193518 * sqrt(mParameters[5]) * mParameters[11]; // mS_per_uF + const double var_IKs__gks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / var_Ca__Ca_i), 1.3999999999999999))) * mParameters[12]; // mS_per_uF + const double var_INaCa__c2 = 0.0001; // dimensionless + const double var_INaCa__gammas = 0.14999999999999999; // dimensionless + const double var_ICaL__ibarca = 4 * (-mParameters[4] * var_ICaL__gacao + var_Ca__Ca_i * var_ICaL__gacai * exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)) * var_Environment__F * var_Environment__FonRT * mParameters[7] * var_chaste_interface__cell__V / (-1 + exp(2 * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_ICaL__ilca = var_chaste_interface__ICaL__d * var_chaste_interface__ICaL__f * var_ICaL__fca * var_ICaL__ibarca; // uA_per_uF + const double var_ICaL__ilca_converted = HeartConfig::Instance()->GetCapacitance() * var_ICaL__ilca; // uA_per_cm2 + const double var_ICaL__tauf = 1 / (0.02 + 0.019699999999999999 * exp(-pow((0.33700000000000002 + 0.033700000000000001 * var_chaste_interface__cell__V), 2))); // ms + const double var_IKr__r = 1 / (1 + exp(0.4017857142857143 + 0.044642857142857144 * var_chaste_interface__cell__V)); // dimensionless + const double var_INa__a = 1 - 1 / (1 + exp(-1666.6666666666667 - 41.666666666666664 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__aH = 0.13500000000000001 * var_INa__a * exp(-11.764705882352942 + 0.14705882352941177 * mParameters[10] - 0.14705882352941177 * var_chaste_interface__cell__V); // per_ms + const double var_INa__aj = 1 * (37.780000000000001 + var_chaste_interface__cell__V) * (-127140 * exp(0.24440000000000001 * var_chaste_interface__cell__V - 0.24440000000000001 * mParameters[10]) - 3.4740000000000003e-5 * exp(0.043909999999999998 * mParameters[10] - 0.043909999999999998 * var_chaste_interface__cell__V)) * var_INa__a / (1 + exp(24.640530000000002 + 0.311 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__bH = (3.5600000000000001 * exp(0.079000000000000001 * var_chaste_interface__cell__V - 0.079000000000000001 * mParameters[10]) + 310000 * exp(0.34999999999999998 * var_chaste_interface__cell__V - 0.34999999999999998 * mParameters[10])) * var_INa__a + 7.6923076923076916 * (1 - var_INa__a) / (1 + exp(-0.96036036036036043 - 0.0900900900900901 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__bj = 0.1212 * var_INa__a * exp(0.01052 * mParameters[10] - 0.01052 * var_chaste_interface__cell__V) / (1 + exp(-5.5312920000000005 - 0.13780000000000001 * var_chaste_interface__cell__V)) + 0.29999999999999999 * (1 - var_INa__a) * exp(2.5349999999999999e-7 * mParameters[10] - 2.5349999999999999e-7 * var_chaste_interface__cell__V) / (1 + exp(-3.2000000000000002 - 0.10000000000000001 * var_chaste_interface__cell__V)); // per_ms + const double var_INa__tau_H = 1 / (var_INa__aH + var_INa__bH); // ms + const double var_INa__tau_j = 1 / (var_INa__aj + var_INa__bj); // ms + const double var_INaCa__inaca = (-pow(mParameters[6], 3) * var_Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * mParameters[13] * exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V) / (1 + (pow(mParameters[6], 3) * var_Ca__Ca_i + pow(var_chaste_interface__Na__Na_i, 3) * mParameters[4] * exp(var_Environment__FonRT * var_chaste_interface__cell__V)) * var_INaCa__c2 * exp((-1 + var_INaCa__gammas) * var_Environment__FonRT * var_chaste_interface__cell__V)); // uA_per_uF + const double var_INaCa__inaca_converted = HeartConfig::Instance()->GetCapacitance() * var_INaCa__inaca; // uA_per_cm2 + const double var_cell__i_Stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__Environment__time); // uA_per_cm2 + const double var_reversal_potentials__EK = log(mParameters[5] / var_chaste_interface__K__K_i) / var_Environment__FonRT; // mV + const double var_IK1__ak1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * var_chaste_interface__cell__V - 0.23849999999999999 * var_reversal_potentials__EK)); // per_ms + const double var_IK1__bk1 = (1 * exp(-36.698642499999998 + 0.061749999999999999 * var_chaste_interface__cell__V - 0.061749999999999999 * var_reversal_potentials__EK) + 0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * var_chaste_interface__cell__V - 0.080320000000000003 * var_reversal_potentials__EK)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * var_reversal_potentials__EK - 0.51429999999999998 * var_chaste_interface__cell__V)); // per_ms + const double var_IK1__gK1 = var_IK1__GK1_ * var_IK1__ak1 / (var_IK1__ak1 + var_IK1__bk1); // mS_per_uF + const double var_IK1__IK1 = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IK1__gK1; // uA_per_uF + const double var_IK1__IK1_converted = HeartConfig::Instance()->GetCapacitance() * var_IK1__IK1; // uA_per_cm2 + const double var_IKr__ikr = (-var_reversal_potentials__EK + var_chaste_interface__cell__V) * var_IKr__gkr * var_IKr__r * var_chaste_interface__IKr__xr; // uA_per_uF + const double var_IKr__ikr_converted = HeartConfig::Instance()->GetCapacitance() * var_IKr__ikr; // uA_per_cm2 + const double var_reversal_potentials__ENa = log(mParameters[6] / var_chaste_interface__Na__Na_i) / var_Environment__FonRT; // mV + const double var_INa__ina = pow(var_chaste_interface__INa__m, 3) * (-var_reversal_potentials__ENa + var_chaste_interface__cell__V) * mParameters[8] * var_chaste_interface__INa__H * var_chaste_interface__INa__J; // uA_per_uF + const double var_INa__ina_converted = HeartConfig::Instance()->GetCapacitance() * var_INa__ina; // uA_per_cm2 + const double var_reversal_potentials__prnak = 0.018329999999999999; // dimensionless + const double var_reversal_potentials__EKs = log((mParameters[6] * var_reversal_potentials__prnak + mParameters[5]) / (var_chaste_interface__Na__Na_i * var_reversal_potentials__prnak + var_chaste_interface__K__K_i)) / var_Environment__FonRT; // mV + const double var_IKs__iks = (-var_reversal_potentials__EKs + var_chaste_interface__cell__V) * var_IKs__gks * var_chaste_interface__IKs__xs1 * var_chaste_interface__IKs__xs2; // uA_per_uF + const double var_IKs__iks_converted = HeartConfig::Instance()->GetCapacitance() * var_IKs__iks; // uA_per_cm2 + + std::vector dqs(16); + dqs[0] = var_Ca__Ca_i; + dqs[1] = var_ICaL__ilca_converted; + dqs[2] = var_ICaL__tauf; + dqs[3] = var_INa__ina_converted; + dqs[4] = var_INa__tau_H; + dqs[5] = var_INa__tau_j; + dqs[6] = var_IK1__IK1_converted; + dqs[7] = var_IK1__GK1_; + dqs[8] = var_IK1__gK1; + dqs[9] = var_IKr__ikr_converted; + dqs[10] = var_IKr__gkr; + dqs[11] = var_IKs__iks_converted; + dqs[12] = var_IKs__gks; + dqs[13] = var_INaCa__inaca_converted; + dqs[14] = var_cell__i_Stim_converted; + dqs[15] = var_chaste_interface__Environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "LivshitzRudy2007"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "ms"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("mV"); + this->mInitialConditions.push_back(-89.4356034692784); + + // rY[1]: + this->mVariableNames.push_back("membrane_fast_sodium_current_h_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.994401369032678); + + // rY[2]: + this->mVariableNames.push_back("membrane_fast_sodium_current_m_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000734780346592185); + + // rY[3]: + this->mVariableNames.push_back("membrane_fast_sodium_current_j_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.996100688673679); + + // rY[4]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_d_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.2514786721066e-27); + + // rY[5]: + this->mVariableNames.push_back("membrane_L_type_calcium_current_f_gate"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.997404948824816); + + // rY[6]: + this->mVariableNames.push_back("IKr__xr"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000162194715543637); + + // rY[7]: + this->mVariableNames.push_back("IKs__xs1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0285147332973946); + + // rY[8]: + this->mVariableNames.push_back("IKs__xs2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0764114040188678); + + // rY[9]: + this->mVariableNames.push_back("ICaT__b"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000927461915392873); + + // rY[10]: + this->mVariableNames.push_back("ICaT__g"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.952834331760863); + + // rY[11]: + this->mVariableNames.push_back("SR_release_current"); + this->mVariableUnits.push_back("mM_per_ms"); + this->mInitialConditions.push_back(1.06874246141923e-23); + + // rY[12]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(16.612739313555); + + // rY[13]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(139.730914103161); + + // rY[14]: + this->mVariableNames.push_back("Ca__Ca_T"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(0.0257059808595638); + + // rY[15]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(7.87371650296567); + + // rY[16]: + this->mVariableNames.push_back("Ca__Ca_NSR"); + this->mVariableUnits.push_back("mM"); + this->mInitialConditions.push_back(2.71518235696672); + + // rY[17]: + this->mVariableNames.push_back("Ca__Over"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1e-12); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("mM_per_mV_ms"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("mM_per_ms"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("mM"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("L_per_F_ms"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_reduced_inactivation"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("mV"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance_scaling_factor"); + this->mParameterUnits.push_back("mS_per_uF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("uA_per_uF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("mM"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current_f_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_h_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current_j_gate_tau"); + this->mDerivedQuantityUnits.push_back("ms"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current_conductance_scaling_factor"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [12]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mDerivedQuantityUnits.push_back("mS_per_uF"); + + // Derived Quantity index [13]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [14]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [15]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("ms"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamiclivshitz_rudy_2007FromCellMLRushLarsen) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamiclivshitz_rudy_2007FromCellMLRushLarsen(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/RL_C/aslanidi_Purkinje_model_2009--sympy_1_13.c b/chaste_codegen/data/tests/chaste_reference_models/RL_C/aslanidi_Purkinje_model_2009--sympy_1_13.c new file mode 100644 index 00000000..e7cbf57a --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/RL_C/aslanidi_Purkinje_model_2009--sympy_1_13.c @@ -0,0 +1,816 @@ +//=========================================================================== +// This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +// +// Model: aslanidi_2009 +// +// Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +// (translator: chaste_codegen, model type: RushLarsenC) +// on (date omitted as unimportant) +// +// +//=========================================================================== + + +#include "aslanidi_Purkinje_model_2009.h" + +//------------------------------------------------------------------------------ + +#include +#include + +//------------------------------------------------------------------------------ +// State variables +//------------------------------------------------------------------------------ + +extern double Y[_NB_OF_STATE_VARIABLES_]; +double dY[_NB_OF_STATE_VARIABLES_]; +double Ynew[_NB_OF_STATE_VARIABLES_]; +// 0: V (units: millivolt, initial value: -83.43812846286808, component: membrane) +// 1: Ca_i (units: millimolar, initial value: 0.00022355433459434943, component: Ca_i) +// 2: m (units: dimensionless, initial value: 0.002003390432234504, component: i_Na_m_gate) +// 3: h (units: dimensionless, initial value: 0.9786390933308567, component: i_Na_h_gate) +// 4: j (units: dimensionless, initial value: 0.09866447258167589, component: i_Na_j_gate) +// 5: m_L (units: dimensionless, initial value: 0.002003390432234504, component: i_Na_L_m_L_gate) +// 6: h_L (units: dimensionless, initial value: 0.8946968372659203, component: i_Na_L_h_L_gate) +// 7: d (units: dimensionless, initial value: 2.322223865147363e-06, component: i_Ca_L_d_gate) +// 8: f (units: dimensionless, initial value: 0.9985607329462358, component: i_Ca_L_f_gate) +// 9: f2 (units: dimensionless, initial value: 0.8173435436674658, component: i_Ca_L_f2_gate) +// 10: f_Ca (units: dimensionless, initial value: 0.9610551285529658, component: i_Ca_L_f_Ca_gate) +// 11: f_Ca2 (units: dimensionless, initial value: 0.868690796671854, component: i_Ca_L_f_Ca2_gate) +// 12: b (units: dimensionless, initial value: 0.0002563937630984438, component: i_Ca_T_b_gate) +// 13: g (units: dimensionless, initial value: 0.9720432601848331, component: i_Ca_T_g_gate) +// 14: a (units: dimensionless, initial value: 0.0004238729429342389, component: i_to_1_a_gate) +// 15: i (units: dimensionless, initial value: 0.9990935802459496, component: i_to_1_i_gate) +// 16: i2 (units: dimensionless, initial value: 0.9777368439681764, component: i_to_1_i2_gate) +// 17: xr (units: dimensionless, initial value: 0.07084939408222911, component: i_Kr_xr_gate) +// 18: xs1 (units: dimensionless, initial value: 0.0011737654433043125, component: i_Ks_xs1_gate) +// 19: xs2 (units: dimensionless, initial value: 0.001179442867470093, component: i_Ks_xs2_gate) +// 20: a (units: dimensionless, initial value: 0.0014909437525000811, component: i_to_2_a_gate) +// 21: Na_i (units: millimolar, initial value: 9.927155552932733, component: intracellular_ion_concentrations) +// 22: Cl_i (units: millimolar, initial value: 18.904682470140408, component: intracellular_ion_concentrations) +// 23: K_i (units: millimolar, initial value: 141.9670801746057, component: intracellular_ion_concentrations) +// 24: Ca_MK_trap (units: dimensionless, initial value: 8.789168284782809e-06, component: Ca_MK_act) +// 25: Ca_NSR (units: millimolar, initial value: 1.2132524695849454, component: Ca_NSR) +// 26: Ca_JSR (units: millimolar, initial value: 1.1433050636518596, component: Ca_JSR) +// 27: Ca_r (units: millimolar, initial value: 0.00022418117117903934, component: Ca_r) +// 28: ri (units: dimensionless, initial value: 0.7802870066567904, component: q_rel_ri_gate) +// 29: ro (units: dimensionless, initial value: 1.2785734760674763e-09, component: q_rel_ro_gate) + +double Vmem; +double time; + +char YNames[_NB_OF_STATE_VARIABLES_][11]; +char YUnits[_NB_OF_STATE_VARIABLES_][14]; +char YComponents[_NB_OF_STATE_VARIABLES_][33]; + +//------------------------------------------------------------------------------ +// Constants +//------------------------------------------------------------------------------ + +double A0_bck; // dimensionless (in A0_bc) +double Ampl_gain; // dimensionless (in Ampl_gai) +double Cext; // picoF (in Cex) +double E_l; // millivolt (in E_) +double I; // dimensionless (in ) +double R_seal; // ohm (in R_sea) +double Scale_bck; // dimensionless (in Scale_bc) +double Scaling; // dimensionless (in Scalin) +double k_bck; // one_over_millivolt (in k_bc) +double leak_comp_perc; // dimensionless (in leak_comp_per) +double q_leak_max; // millimolar_per_millisecond (in q_leak) +double g_rel_max; // per_millisecond (in q_rel) +double q_up_max; // millimolar_per_millisecond (in q_up) +double conc_clamp; // dimensionless (in intracellular_ion_concentrations) +double Ca_o; // millimolar (in model_parameters) +double K_o; // millimolar (in model_parameters) +double Na_o; // millimolar (in model_parameters) +double g_Ca_L; // dimensionless (in i_Ca_L) +double g_Na; // milliS_per_microF (in i_Na) +double perc_reduced_inact_for_IpNa; // dimensionless (in i_Na) +double shift_INa_inact; // millivolt (in i_Na) +double g_K1_max; // milliS_per_microF (in i_K1) +double g_Kr_max; // milliS_per_microF (in i_Kr) +double g_Ks_max; // milliS_per_microF (in i_Ks) +double i_NaCa_max; // microA_per_microF (in i_NaCa) +double stim_amplitude; // microA_per_microF (in membrane) +double stim_duration; // millisecond (in membrane) +double stim_start; // millisecond (in membrane) +double stim_period; // millisecond (in membrane) +double g_to_1; // milliS_per_microF (in i_to_1) + +double A0_bck; // dimensionless (in A0_bc) +double Ampl_gain; // dimensionless (in Ampl_gai) +double CT_K_Cl_max; // millimolar_per_millisecond (in CT_K_Cl) +double CT_Na_Cl_max; // millimolar_per_millisecond (in CT_Na_Cl) +double CSQN_max; // millimolar (in Ca_JSR) +double km_CSQN; // millimolar (in Ca_JSR) +double Ca_MK_0; // dimensionless (in Ca_MK_act) +double alpha_Ca_MK; // per_millisecond (in Ca_MK_act) +double beta_Ca_MK; // per_millisecond (in Ca_MK_act) +double km_Ca_MK; // millimolar (in Ca_MK_act) +double CMDN_max; // millimolar (in Ca_i) +double TRPN_max; // millimolar (in Ca_i) +double km_CMDN; // millimolar (in Ca_i) +double km_TRPN; // millimolar (in Ca_i) +double b_SL_max; // millimolar (in Ca_r) +double b_SR_max; // millimolar (in Ca_r) +double km_b_SL; // millimolar (in Ca_r) +double km_b_SR; // millimolar (in Ca_r) +double tau_ss; // millisecond (in Ca_r) +double Cext; // picoF (in Cex) +double E_l; // millivolt (in E_) +double I; // dimensionless (in ) +double R_seal; // ohm (in R_sea) +double Scale_bck; // dimensionless (in Scale_bc) +double Scaling; // dimensionless (in Scalin) +double g_Cl_b; // milliS_per_microF (in background_currents) +double g_K_b; // milliS_per_microF (in background_currents) +double g_Na_b; // milliS_per_microF (in background_currents) +double r_NaK; // dimensionless (in equilibrium_potentials) +double g_Ca_T; // milliS_per_microF (in i_Ca_T) +double i_Ca_p_max; // microA_per_microF (in i_Ca_p) +double km_Ca_p; // millimolar (in i_Ca_p) +double g_K_p; // milliS_per_microF (in i_K_p) +double X_NaCa; // dimensionless (in i_NaCa) +double k_sat; // dimensionless (in i_NaCa) +double km_Ca_act; // millimolar (in i_NaCa) +double km_Ca_i; // millimolar (in i_NaCa) +double km_Ca_o; // millimolar (in i_NaCa) +double km_Na_i_1; // millimolar (in i_NaCa) +double km_Na_o; // millimolar (in i_NaCa) +double g_NaK; // microA_per_microF (in i_NaK) +double km_K_o; // millimolar (in i_NaK) +double km_Na_i_2; // millimolar (in i_NaK) +double g_Na_L; // milliS_per_microF (in i_Na_L) +double km_to_2; // millimolar (in i_to_2_a_gate) +double tau_a; // millisecond (in i_to_2_a_gate) +double k_bck; // one_over_millivolt (in k_bc) +double leak_comp_perc; // dimensionless (in leak_comp_per) +double stim_end; // millisecond (in membrane) +double Cl_o; // millimolar (in model_parameters) +double Cm; // microF_per_cm2 (in model_parameters) +double F; // coulomb_per_mole (in model_parameters) +double R; // joule_per_kilomole_kelvin (in model_parameters) +double T; // kelvin (in model_parameters) +double Vol_cell; // microlitre (in model_parameters) +double length; // cm (in model_parameters) +double radius; // cm (in model_parameters) +double rcg; // dimensionless (in model_parameters) +double z_Ca; // dimensionless (in model_parameters) +double NSR_max; // millimolar (in q_leak) +double tau_Ca_MK_max; // millisecond (in q_rel_ri_gate) +double tau_ro; // millisecond (in q_rel_ro_gate) +double tau_tr; // millisecond (in q_tr) +double X_q_up; // dimensionless (in q_up) +double dkm_plb_max; // millimolar (in q_up) +double dq_up_Ca_MK_max; // dimensionless (in q_up) +double km_up; // millimolar (in q_up) + +//------------------------------------------------------------------------------ +// Computed variables +//------------------------------------------------------------------------------ + +double CMDN; // dimensionless (in Ca_i) +double TRPN; // dimensionless (in Ca_i) +double b_myo; // dimensionless (in Ca_i) +double Ca_MK_bound; // dimensionless (in Ca_MK_act) +double Ca_MK_act; // dimensionless (in Ca_MK_act) +double b_SL; // dimensionless (in Ca_r) +double b_SR; // dimensionless (in Ca_r) +double Ca_r_tot; // dimensionless (in Ca_r) +double q_diff; // millimolar_per_millisecond (in Ca_r) +double I_ext; // dimensionless (in I_ex) +double g_leak; // one_over_ohm (in g_lea) +double tau_f_Ca; // millisecond (in i_Ca_L_f_Ca_gate) +double i_Ca_p; // microA_per_microF (in i_Ca_p) +double g_Ks; // milliS_per_microF (in i_Ks) +double a_infinity; // dimensionless (in i_to_2_a_gate) +double d_infinity; // dimensionless (in i_Ca_L_d_gate) +double tau_d; // millisecond (in i_Ca_L_d_gate) +double f2_infinity; // dimensionless (in i_Ca_L_f2_gate) +double tau_f2; // millisecond (in i_Ca_L_f2_gate) +double f_infinity; // dimensionless (in i_Ca_L_f_gate) +double tau_f; // millisecond (in i_Ca_L_f_gate) +double i_Ca_T; // microA_per_microF (in i_Ca_T) +double alpha_b; // per_millisecond (in i_Ca_T_b_gate) +double b_infinity; // dimensionless (in i_Ca_T_b_gate) +double beta_b; // per_millisecond (in i_Ca_T_b_gate) +double tau_b; // millisecond (in i_Ca_T_b_gate) +double alpha_g; // per_millisecond (in i_Ca_T_g_gate) +double beta_g; // per_millisecond (in i_Ca_T_g_gate) +double g_infinity; // dimensionless (in i_Ca_T_g_gate) +double tau_g; // millisecond (in i_Ca_T_g_gate) +double kp; // dimensionless (in i_K_p) +double rr_infinity; // dimensionless (in i_Kr) +double tau_xr; // millisecond (in i_Kr_xr_gate) +double xr_infinity; // dimensionless (in i_Kr_xr_gate) +double tau_xs1; // millisecond (in i_Ks_xs1_gate) +double xs1_infinity; // dimensionless (in i_Ks_xs1_gate) +double tau_xs2; // millisecond (in i_Ks_xs2_gate) +double xs2_infinity; // dimensionless (in i_Ks_xs2_gate) +double h_L_infinity; // dimensionless (in i_Na_L_h_L_gate) +double tau_h_L; // millisecond (in i_Na_L_h_L_gate) +double alpha_m_L; // per_millisecond (in i_Na_L_m_L_gate) +double beta_m_L; // per_millisecond (in i_Na_L_m_L_gate) +double m_L_infinity; // dimensionless (in i_Na_L_m_L_gate) +double tau_m_L; // millisecond (in i_Na_L_m_L_gate) +double alpha_h; // per_millisecond (in i_Na_h_gate) +double beta_h; // per_millisecond (in i_Na_h_gate) +double h_infinity; // dimensionless (in i_Na_h_gate) +double tau_h; // millisecond (in i_Na_h_gate) +double alpha_j; // per_millisecond (in i_Na_j_gate) +double beta_j; // per_millisecond (in i_Na_j_gate) +double j_infinity; // dimensionless (in i_Na_j_gate) +double tau_j; // millisecond (in i_Na_j_gate) +double alpha_m; // per_millisecond (in i_Na_m_gate) +double beta_m; // per_millisecond (in i_Na_m_gate) +double m_infinity; // dimensionless (in i_Na_m_gate) +double tau_m; // millisecond (in i_Na_m_gate) +double i_bck; // dimensionless (in i_bc) +double i_leak_comp; // dimensionless (in i_leak_com) +double i_inj; // dimensionless (in i_in) +double alpha_a; // per_millisecond (in i_to_1_a_gate) +double beta_a; // per_millisecond (in i_to_1_a_gate) +double a_infinity; // dimensionless (in i_to_1_a_gate) +double tau_a; // millisecond (in i_to_1_a_gate) +double alpha_i2; // per_millisecond (in i_to_1_i2_gate) +double beta_i2; // per_millisecond (in i_to_1_i2_gate) +double i2_infinity; // dimensionless (in i_to_1_i2_gate) +double tau_i2; // millisecond (in i_to_1_i2_gate) +double alpha_i; // per_millisecond (in i_to_1_i_gate) +double beta_i; // per_millisecond (in i_to_1_i_gate) +double i_infinity; // dimensionless (in i_to_1_i_gate) +double tau_i; // millisecond (in i_to_1_i_gate) +double i_to_2_max; // microA_per_microF (in i_to_2) +double i_to_2; // microA_per_microF (in i_to_2) +double i_stim; // microA_per_microF (in membrane) +double i_Ca_b; // microA_per_microF (in background_currents) +double i_Ca_L_max; // microA_per_microF (in i_Ca_L) +double i_Ca_L; // microA_per_microF (in i_Ca_L) +double f_Ca2_infinity; // dimensionless (in i_Ca_L_f_Ca2_gate) +double tau_f_Ca2; // millisecond (in i_Ca_L_f_Ca2_gate) +double f_Ca_infinity; // dimensionless (in i_Ca_L_f_Ca_gate) +double dNaCa_1; // millimolar4 (in i_NaCa) +double g_K1; // milliS_per_microF (in i_K1) +double g_Kr; // milliS_per_microF (in i_Kr) +double dNaCa_2; // millimolar4 (in i_NaCa) +double sigma; // dimensionless (in i_NaK) +double E_Cl; // millivolt (in equilibrium_potentials) +double i_Cl_b; // microA_per_microF (in background_currents) +double E_K; // millivolt (in equilibrium_potentials) +double CT_K_Cl; // millimolar_per_millisecond (in CT_K_Cl) +double i_K_b; // microA_per_microF (in background_currents) +double E_Ks; // millivolt (in equilibrium_potentials) +double E_Na; // millivolt (in equilibrium_potentials) +double CT_Na_Cl; // millimolar_per_millisecond (in CT_Na_Cl) +double i_Na_b; // microA_per_microF (in background_currents) +double alpha_xK1; // dimensionless (in i_K1_xK1_gate) +double beta_xK1; // dimensionless (in i_K1_xK1_gate) +double xK1; // dimensionless (in i_K1_xK1_gate) +double i_K1; // microA_per_microF (in i_K1) +double i_K_p; // microA_per_microF (in i_K_p) +double i_Kr; // microA_per_microF (in i_Kr) +double i_Ks; // microA_per_microF (in i_Ks) +double i_Na; // microA_per_microF (in i_Na) +double i_NaCa; // microA_per_microF (in i_NaCa) +double f_NaK; // dimensionless (in i_NaK) +double i_NaK; // microA_per_microF (in i_NaK) +double i_Na_L; // microA_per_microF (in i_Na_L) +double i_to_1; // microA_per_microF (in i_to_1) +double i_tot; // microA_per_microF (in membrane) +double Vol_jsr; // microlitre (in model_parameters) +double Vol_myo; // microlitre (in model_parameters) +double Vol_nsr; // microlitre (in model_parameters) +double Vol_ss; // microlitre (in model_parameters) +double a_geo; // cm2 (in model_parameters) +double a_cap; // cm2 (in model_parameters) +double q_leak; // millimolar_per_millisecond (in q_leak) +double vg; // dimensionless (in q_rel) +double g_rel; // per_millisecond (in q_rel) +double Ca_fac; // millimolar (in q_rel_ri_gate) +double ri_infinity; // dimensionless (in q_rel_ri_gate) +double tau_Ca_MK; // millisecond (in q_rel_ri_gate) +double tau_ri; // millisecond (in q_rel_ri_gate) +double q_rel; // millimolar_per_millisecond (in q_rel) +double ro_infinity_JSR; // dimensionless (in q_rel_ro_gate) +double ro_infinity; // dimensionless (in q_rel_ro_gate) +double q_tr; // millimolar_per_millisecond (in q_tr) +double dkm_plb; // millimolar (in q_up) +double dq_up_Ca_MK; // dimensionless (in q_up) +double q_up; // millimolar_per_millisecond (in q_up) + + +//------------------------------------------------------------------------------ +// Initialisation +//------------------------------------------------------------------------------ + +void init() +{ + //--------------------------------------------------------------------------- + // State variables + //--------------------------------------------------------------------------- + + Y[0] = -83.43812846286808; // V (millivolt) (in membrane) + Y[1] = 0.00022355433459434943; // Ca_i (millimolar) (in Ca_i) + Y[2] = 0.002003390432234504; // m (dimensionless) (in i_Na_m_gate) + Y[3] = 0.9786390933308567; // h (dimensionless) (in i_Na_h_gate) + Y[4] = 0.09866447258167589; // j (dimensionless) (in i_Na_j_gate) + Y[5] = 0.002003390432234504; // m_L (dimensionless) (in i_Na_L_m_L_gate) + Y[6] = 0.8946968372659203; // h_L (dimensionless) (in i_Na_L_h_L_gate) + Y[7] = 2.322223865147363e-06; // d (dimensionless) (in i_Ca_L_d_gate) + Y[8] = 0.9985607329462358; // f (dimensionless) (in i_Ca_L_f_gate) + Y[9] = 0.8173435436674658; // f2 (dimensionless) (in i_Ca_L_f2_gate) + Y[10] = 0.9610551285529658; // f_Ca (dimensionless) (in i_Ca_L_f_Ca_gate) + Y[11] = 0.868690796671854; // f_Ca2 (dimensionless) (in i_Ca_L_f_Ca2_gate) + Y[12] = 0.0002563937630984438; // b (dimensionless) (in i_Ca_T_b_gate) + Y[13] = 0.9720432601848331; // g (dimensionless) (in i_Ca_T_g_gate) + Y[14] = 0.0004238729429342389; // a (dimensionless) (in i_to_1_a_gate) + Y[15] = 0.9990935802459496; // i (dimensionless) (in i_to_1_i_gate) + Y[16] = 0.9777368439681764; // i2 (dimensionless) (in i_to_1_i2_gate) + Y[17] = 0.07084939408222911; // xr (dimensionless) (in i_Kr_xr_gate) + Y[18] = 0.0011737654433043125; // xs1 (dimensionless) (in i_Ks_xs1_gate) + Y[19] = 0.001179442867470093; // xs2 (dimensionless) (in i_Ks_xs2_gate) + Y[20] = 0.0014909437525000811; // a (dimensionless) (in i_to_2_a_gate) + Y[21] = 9.927155552932733; // Na_i (millimolar) (in intracellular_ion_concentrations) + Y[22] = 18.904682470140408; // Cl_i (millimolar) (in intracellular_ion_concentrations) + Y[23] = 141.9670801746057; // K_i (millimolar) (in intracellular_ion_concentrations) + Y[24] = 8.789168284782809e-06; // Ca_MK_trap (dimensionless) (in Ca_MK_act) + Y[25] = 1.2132524695849454; // Ca_NSR (millimolar) (in Ca_NSR) + Y[26] = 1.1433050636518596; // Ca_JSR (millimolar) (in Ca_JSR) + Y[27] = 0.00022418117117903934; // Ca_r (millimolar) (in Ca_r) + Y[28] = 0.7802870066567904; // ri (dimensionless) (in q_rel_ri_gate) + Y[29] = 1.2785734760674763e-09; // ro (dimensionless) (in q_rel_ro_gate) + Y[30]; // (time} (milliseconds) + + + strcpy(YNames[0], "V"); + strcpy(YNames[1], "Ca_i"); + strcpy(YNames[2], "m"); + strcpy(YNames[3], "h"); + strcpy(YNames[4], "j"); + strcpy(YNames[5], "m_L"); + strcpy(YNames[6], "h_L"); + strcpy(YNames[7], "d"); + strcpy(YNames[8], "f"); + strcpy(YNames[9], "f2"); + strcpy(YNames[10], "f_Ca"); + strcpy(YNames[11], "f_Ca2"); + strcpy(YNames[12], "b"); + strcpy(YNames[13], "g"); + strcpy(YNames[14], "a"); + strcpy(YNames[15], "i"); + strcpy(YNames[16], "i2"); + strcpy(YNames[17], "xr"); + strcpy(YNames[18], "xs1"); + strcpy(YNames[19], "xs2"); + strcpy(YNames[20], "a"); + strcpy(YNames[21], "Na_i"); + strcpy(YNames[22], "Cl_i"); + strcpy(YNames[23], "K_i"); + strcpy(YNames[24], "Ca_MK_trap"); + strcpy(YNames[25], "Ca_NSR"); + strcpy(YNames[26], "Ca_JSR"); + strcpy(YNames[27], "Ca_r"); + strcpy(YNames[28], "ri"); + strcpy(YNames[29], "ro"); + strcpy(YNames[30], "time"); + + + strcpy(YUnits[0], "millivolt"); + strcpy(YUnits[1], "millimolar"); + strcpy(YUnits[2], "dimensionless"); + strcpy(YUnits[3], "dimensionless"); + strcpy(YUnits[4], "dimensionless"); + strcpy(YUnits[5], "dimensionless"); + strcpy(YUnits[6], "dimensionless"); + strcpy(YUnits[7], "dimensionless"); + strcpy(YUnits[8], "dimensionless"); + strcpy(YUnits[9], "dimensionless"); + strcpy(YUnits[10], "dimensionless"); + strcpy(YUnits[11], "dimensionless"); + strcpy(YUnits[12], "dimensionless"); + strcpy(YUnits[13], "dimensionless"); + strcpy(YUnits[14], "dimensionless"); + strcpy(YUnits[15], "dimensionless"); + strcpy(YUnits[16], "dimensionless"); + strcpy(YUnits[17], "dimensionless"); + strcpy(YUnits[18], "dimensionless"); + strcpy(YUnits[19], "dimensionless"); + strcpy(YUnits[20], "dimensionless"); + strcpy(YUnits[21], "millimolar"); + strcpy(YUnits[22], "millimolar"); + strcpy(YUnits[23], "millimolar"); + strcpy(YUnits[24], "dimensionless"); + strcpy(YUnits[25], "millimolar"); + strcpy(YUnits[26], "millimolar"); + strcpy(YUnits[27], "millimolar"); + strcpy(YUnits[28], "dimensionless"); + strcpy(YUnits[29], "dimensionless"); + strcpy(YUnits[30], "milliseconds"); + + //------------------------------------------------------------------------------ + // Constants + //------------------------------------------------------------------------------ + + A0_bck = 1.0278; + Ampl_gain = 1; + Cext = 1; + E_l = 1; + I = 1; + R_seal = 1; + Scale_bck = 1; + Scaling = 1; + k_bck = 0.098599999999999993; + leak_comp_perc = 1; + q_leak_max = 0.0043750000000000004; + g_rel_max = 3000; + q_up_max = 0.0043750000000000004; + conc_clamp = 1; + Ca_o = 1.8; + K_o = 5.4000000000000004; + Na_o = 140; + g_Ca_L = 0.3392328; + g_Na = 8; + perc_reduced_inact_for_IpNa = 0; + shift_INa_inact = 0; + g_K1_max = 0.25; + g_Kr_max = 0.040008488000000002; + g_Ks_max = 0.052581329000000003; + i_NaCa_max = 4.5; + stim_amplitude = -80; + stim_duration = 1; + stim_start = 100; + stim_period = 800; + g_to_1 = 0.14135944; + + A0_bck = 1.0278; + Ampl_gain = 1; + CT_K_Cl_max = 7.0755999999999996e-6; + CT_Na_Cl_max = 9.8442999999999999e-6; + CSQN_max = 10; + km_CSQN = 0.80000000000000004; + Ca_MK_0 = 0.050000000000000003; + alpha_Ca_MK = 0.050000000000000003; + beta_Ca_MK = 0.00068000000000000005; + km_Ca_MK = 0.14999999999999999; + CMDN_max = 0.050000000000000003; + TRPN_max = 0.070000000000000007; + km_CMDN = 0.0023800000000000002; + km_TRPN = 0.00050000000000000001; + b_SL_max = 1.1240000000000001; + b_SR_max = 0.047; + km_b_SL = 0.0086999999999999994; + km_b_SR = 0.00087000000000000001; + tau_ss = 0.20000000000000001; + Cext = 1; + E_l = 1; + I = 1; + R_seal = 1; + Scale_bck = 1; + Scaling = 1; + g_Cl_b = 0.00022499999999999999; + g_K_b = 0.0050000000000000001; + g_Na_b = 0.0025000000000000001; + r_NaK = 0.018329999999999999; + g_Ca_T = 0.13; + i_Ca_p_max = 0.057500000000000002; + km_Ca_p = 0.00050000000000000001; + g_K_p = 0.0027599999999999999; + X_NaCa = 0.40000000000000002; + k_sat = 0.27000000000000002; + km_Ca_act = 0.000125; + km_Ca_i = 0.0035999999999999999; + km_Ca_o = 1.3; + km_Na_i_1 = 12.300000000000001; + km_Na_o = 87.5; + g_NaK = 0.61875000000000002; + km_K_o = 1.5; + km_Na_i_2 = 10; + g_Na_L = 0.037374999999999999; + km_to_2 = 0.1502; + tau_a = 1; + k_bck = 0.098599999999999993; + leak_comp_perc = 1; + stim_end = 100000; + Cl_o = 100; + Cm = 1; + F = 96485; + R = 8314; + T = 310; + Vol_cell = 0.34539999999999998; + length = 0.01; + radius = 0.0011000000000000001; + rcg = 2; + z_Ca = 2; + NSR_max = 15; + tau_Ca_MK_max = 10; + tau_ro = 3; + tau_tr = 120; + X_q_up = 0.5; + dkm_plb_max = 0.00017000000000000001; + dq_up_Ca_MK_max = 0.75; + km_up = 0.00092000000000000003; + +} + + //--------------------------------------------------------------------------- + // Computation + //--------------------------------------------------------------------------- +void compute() +{ + // time: time (millisecond) + + CMDN = 2 * CMDN_max * Y[1] / pow((km_CMDN + Y[1]), 2); + TRPN = 2 * TRPN_max * Y[1] / pow((km_TRPN + Y[1]), 2); + b_myo = 1 / (1 + CMDN + TRPN); + Ca_MK_bound = (1 - Y[24]) * Ca_MK_0 / (1 + km_Ca_MK / Y[27]); + Ca_MK_act = Ca_MK_bound + Y[24]; + b_SL = 2 * b_SL_max * Y[27] / pow((km_b_SL + Y[27]), 2); + b_SR = 2 * b_SR_max * Y[27] / pow((km_b_SR + Y[27]), 2); + Ca_r_tot = 1 / (1 + b_SL + b_SR); + q_diff = (-Y[1] + Y[27]) / tau_ss; + dY[24] = -beta_Ca_MK * Y[24] + (Ca_MK_bound + Y[24]) * Ca_MK_bound * alpha_Ca_MK; + I_ext = I / (Ampl_gain * Cext); + g_leak = 1 / R_seal; + tau_f_Ca = 0.5 + 1 / (1 + 333.33333333333331 * Y[27]) + 10 * Ca_MK_act / (1 * Ca_MK_act + km_Ca_MK); + i_Ca_p = Y[1] * i_Ca_p_max / (Y[1] + km_Ca_p); + g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / Y[1]), 1.3999999999999999))) * g_Ks_max; + a_infinity = 1 / (1 + km_to_2 / Y[27]); + dY[20] = (-Y[20] + a_infinity) / tau_a; + d_infinity = 1 / (1 + exp(0.59347181008902072 - 0.14836795252225518 * Y[0])); + tau_d = 0.58999999999999997 + 0.80000000000000004 * exp(0.67599999999999993 + 0.051999999999999998 * Y[0]) / (1 + exp(1.7160000000000002 + 0.13200000000000001 * Y[0])); + dY[7] = (-Y[7] + d_infinity) / tau_d; + f2_infinity = 1 / (1 + exp(1.8 + 0.10000000000000001 * Y[0])); + tau_f2 = 38 + 24.217200000000005 * pow((-1 + 0.053763440860215048 * Y[0]), 2); + dY[9] = (-Y[9] + f2_infinity) / tau_f2; + f_infinity = 1 / (1 + exp(1.8 + 0.10000000000000001 * Y[0])); + tau_f = 4 + 0.03125 * pow((-1 + 0.40000000000000002 * Y[0]), 2); + dY[8] = (-Y[8] + f_infinity) / tau_f; + i_Ca_T = (-50 + Y[0]) * Y[12] * Y[13] * g_Ca_T; + alpha_b = 1.0680000000000001 * exp(0.54333333333333333 + 0.033333333333333333 * Y[0]); + b_infinity = 1 / (1 + exp(-5.4098360655737707 - 0.16393442622950821 * Y[0])); + beta_b = 1.0680000000000001 * exp(-0.54333333333333333 - 0.033333333333333333 * Y[0]); + tau_b = 1 / (alpha_b + beta_b); + dY[12] = (-Y[12] + b_infinity) / tau_b; + alpha_g = 0.014999999999999999 * exp(-0.86074429771908767 - 0.012004801920768308 * Y[0]); + beta_g = 0.014999999999999999 * exp(4.6558441558441563 + 0.064935064935064929 * Y[0]); + g_infinity = 1 / (1 + exp(9.0909090909090917 + 0.15151515151515152 * Y[0])); + tau_g = 1 / (alpha_g + beta_g); + dY[13] = (-Y[13] + g_infinity) / tau_g; + kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * Y[0])); + rr_infinity = 1 / (1 + exp(-0.26470588235294124 + 0.049019607843137261 * Y[0])); + tau_xr = 100 + 900 / (1 + exp(0.20000000000000001 * Y[0])); + xr_infinity = 1 / (1 + exp(-0.0069387755102040824 - 0.081632653061224483 * Y[0])); + dY[17] = (-Y[17] + xr_infinity) / tau_xr; + tau_xs1 = 1 / ((((Y[0] >= 0.54999921875000002) && (Y[0] <= 0.55000078125000007)) ? (-2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8)) + 640000.00000042573 * (-0.54999921875000002 + Y[0]) * (2.8124999999996902e-10 / (-1 + exp(9.9999999999988984e-8)) + 2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8)))) : (0.00036000000000000002 * (-0.55000000000000004 + Y[0]) / (-1 + exp(-0.070400000000000004 + 0.128 * Y[0])))) + (((Y[0] >= -44.600000010030094) && (Y[0] <= -44.599999989969909)) ? (-7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 49850000.061936118 * (44.600000010030094 + Y[0]) * (7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 7.6328986866047728e-13 / (1 - exp(-9.9999999875755032e-8)))) : (7.6100000000000007e-5 * (44.600000000000001 + Y[0]) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * Y[0]))))); + xs1_infinity = 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * Y[0])); + dY[18] = (-Y[18] + xs1_infinity) / tau_xs1; + tau_xs2 = 2 / ((((Y[0] >= 0.54999921875000002) && (Y[0] <= 0.55000078125000007)) ? (-2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8)) + 640000.00000042573 * (-0.54999921875000002 + Y[0]) * (2.8124999999996902e-10 / (-1 + exp(9.9999999999988984e-8)) + 2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8)))) : (0.00036000000000000002 * (-0.55000000000000004 + Y[0]) / (-1 + exp(-0.070400000000000004 + 0.128 * Y[0])))) + (((Y[0] >= -44.600000010030094) && (Y[0] <= -44.599999989969909)) ? (-7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 49850000.061936118 * (44.600000010030094 + Y[0]) * (7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 7.6328986866047728e-13 / (1 - exp(-9.9999999875755032e-8)))) : (7.6100000000000007e-5 * (44.600000000000001 + Y[0]) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * Y[0]))))); + xs2_infinity = 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * Y[0])); + dY[19] = (-Y[19] + xs2_infinity) / tau_xs2; + h_L_infinity = 1 / (1 + exp(11.311475409836067 + 0.16393442622950821 * Y[0])); + tau_h_L = 175 + 125 / (1 + exp(-4.166666666666667 - 0.16666666666666666 * Y[0])); + dY[6] = (-Y[6] + h_L_infinity) / tau_h_L; + if ((Y[0] >= -47.130001) && (Y[0] <= -47.129999000000005)) + alpha_m_L = -3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 499999.99998562218 * (47.130001 + Y[0]) * (3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 3.200000000092018e-7 / (1 - exp(-1.0000000000287557e-7))) + else + alpha_m_L = 0.32000000000000001 * (47.130000000000003 + Y[0]) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * Y[0])) + + beta_m_L = 0.080000000000000002 * exp(-0.090909090909090912 * Y[0]); + m_L_infinity = alpha_m_L / (alpha_m_L + beta_m_L); + tau_m_L = 1 / (alpha_m_L + beta_m_L); + dY[5] = (-Y[5] + m_L_infinity) / tau_m_L; + if (Y[0] < -40) + alpha_h = 0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * shift_INa_inact - 0.14705882352941177 * Y[0]) + else + alpha_h = 0 + + if (Y[0] < -40) + beta_h = 310000 * exp(0.34999999999999998 * Y[0] - 0.34999999999999998 * shift_INa_inact) + 3.5600000000000001 * exp(0.079000000000000001 * Y[0] - 0.079000000000000001 * shift_INa_inact) + else + beta_h = 7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * shift_INa_inact - 0.0900900900900901 * Y[0])) + + h_infinity = 0.01 * perc_reduced_inact_for_IpNa + (1 - 0.01 * perc_reduced_inact_for_IpNa) * alpha_h / (alpha_h + beta_h); + tau_h = 1 / (alpha_h + beta_h); + dY[3] = (-Y[3] + h_infinity) / tau_h; + if (Y[0] < -40) + alpha_j = (37.780000000000001 + Y[0]) * (-127140 * exp(0.24440000000000001 * Y[0] - 0.24440000000000001 * shift_INa_inact) - 3.4740000000000003e-5 * exp(0.043909999999999998 * shift_INa_inact - 0.043909999999999998 * Y[0])) / (1 + exp(24.640530000000002 + 0.311 * Y[0] - 0.311 * shift_INa_inact)) + else + alpha_j = 0 + + if (Y[0] < -40) + beta_j = 0.1212 * exp(0.01052 * shift_INa_inact - 0.01052 * Y[0]) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * shift_INa_inact - 0.13780000000000001 * Y[0])) + else + beta_j = 0.29999999999999999 * exp(2.5349999999999999e-7 * shift_INa_inact - 2.5349999999999999e-7 * Y[0]) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * shift_INa_inact - 0.10000000000000001 * Y[0])) + + j_infinity = 0.01 * perc_reduced_inact_for_IpNa + (1 - 0.01 * perc_reduced_inact_for_IpNa) * alpha_j / (alpha_j + beta_j); + tau_j = 1 / (alpha_j + beta_j); + dY[4] = (-Y[4] + j_infinity) / tau_j; + if ((Y[0] >= -47.130001) && (Y[0] <= -47.129999000000005)) + alpha_m = -3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 499999.99998562218 * (47.130001 + Y[0]) * (3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 3.200000000092018e-7 / (1 - exp(-1.0000000000287557e-7))) + else + alpha_m = 0.32000000000000001 * (47.130000000000003 + Y[0]) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * Y[0])) + + beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * Y[0]); + m_infinity = alpha_m / (alpha_m + beta_m); + tau_m = 1 / (alpha_m + beta_m); + dY[2] = (-Y[2] + m_infinity) / tau_m; + i_bck = A0_bck * Scale_bck / ((1 + exp(-Y[0] * k_bck)) * Cext); + i_leak_comp = (-E_l + Y[0]) * g_leak * leak_comp_perc / (100 * Cext); + i_inj = (-i_bck - i_leak_comp + I_ext) * Scaling; + alpha_a = 25 * exp(-3.7999999999999998 + 0.050000000000000003 * Y[0]) / (1 + exp(-3.7999999999999998 + 0.050000000000000003 * Y[0])); + beta_a = 25 * exp(-2.7000000000000002 - 0.050000000000000003 * Y[0]) / (1 + exp(-2.7000000000000002 - 0.050000000000000003 * Y[0])); + a_infinity = alpha_a / (alpha_a + beta_a); + tau_a = 1 / (alpha_a + beta_a); + dY[14] = (-Y[14] + a_infinity) / tau_a; + alpha_i2 = 0.0044200000000000003 / (1 + exp(1.7333333333333334 + 0.066666666666666666 * Y[0])); + beta_i2 = 0.050000000000000003 * exp(-0.66666666666666663 + 0.066666666666666666 * Y[0]) / (1 + exp(-0.66666666666666663 + 0.066666666666666666 * Y[0])); + i2_infinity = alpha_i2 / (alpha_i2 + beta_i2); + tau_i2 = 21.5 + 30 / (1 + exp(-2.5 + 0.10000000000000001 * Y[0])); + dY[16] = (-Y[16] + i2_infinity) / tau_i2; + alpha_i = 0.029999999999999999 / (1 + exp(1.6666666666666667 + 0.066666666666666666 * Y[0])); + beta_i = 0.10000000000000001 * exp(-2.6666666666666665 + 0.066666666666666666 * Y[0]) / (1 + exp(-2.6666666666666665 + 0.066666666666666666 * Y[0])); + i_infinity = alpha_i / (alpha_i + beta_i); + tau_i = 6 + 5 / (1 + exp(-1.6499999999999999 + 0.10000000000000001 * Y[0])); + dY[15] = (-Y[15] + i_infinity) / tau_i; + if ((Y[0] >= -2.6712338705498262e-6) && (Y[0] <= 2.6712338705498262e-6)) + i_to_2_max = 187179.41753901311 * (2.6712338705498262e-6 + Y[0]) * (3.8593999999999993e-9 * (-100 * exp(9.9999999999999995e-8) + Y[22]) / (1 - exp(9.9999999999999995e-8)) + 3.8593999999999993e-9 * (-100 * exp(-9.9999999999999995e-8) + Y[22]) / (1 - exp(-9.9999999999999995e-8))) - 3.8593999999999993e-9 * (-100 * exp(-9.9999999999999995e-8) + Y[22]) / (1 - exp(-9.9999999999999995e-8)) + else + i_to_2_max = 0.0014448004881001341 * (-100 * exp(0.037435883507802616 * Y[0]) + Y[22]) * Y[0] / (1 - exp(0.037435883507802616 * Y[0])) + + i_to_2 = 20 * Y[20] * i_to_2_max; + if ((Y[30] >= stim_start) && (Y[30] <= stim_end) && (stim_duration >= -stim_start - stim_period * floor((-stim_start + Y[30]) / stim_period) + Y[30])) + i_stim = stim_amplitude + else + i_stim = 0 + + if ((Y[0] >= -1.3356169352749131e-6) && (Y[0] <= 1.3356169352749131e-6)) + i_Ca_b = 374358.83507802623 * (1.3356169352749131e-6 + Y[0]) * (3.8499135947999997e-9 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 3.8499135947999997e-9 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 3.8499135947999997e-9 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8)) + else + i_Ca_b = 0.0028824983370007683 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(0.074871767015605231 * Y[0])) * Y[0] / (-1 + exp(0.074871767015605231 * Y[0])) + + if ((Y[0] >= 14.999998664383064) && (Y[0] <= 15.000001335616936)) + i_Ca_L_max = 374358.83507888648 * (-14.999998664383064 + Y[0]) * (4.6891709999892238e-6 * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(9.9999999999770198e-8)) / (-1 + exp(9.9999999999770198e-8)) + 4.6891709999892238e-6 * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(-9.9999999999770198e-8)) / (-1 + exp(-9.9999999999770198e-8))) - 4.6891709999892238e-6 * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(-9.9999999999770198e-8)) / (-1 + exp(-9.9999999999770198e-8)) + else + i_Ca_L_max = 3.510865186083326 * (-15 + Y[0]) * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(-1.1230765052340785 + 0.074871767015605231 * Y[0])) / (-1 + exp(-1.1230765052340785 + 0.074871767015605231 * Y[0])) + + i_Ca_L = Y[10] * Y[11] * Y[7] * Y[8] * Y[9] * g_Ca_L * i_Ca_L_max; + f_Ca2_infinity = 1 / (1 - 100 * i_Ca_L); + tau_f_Ca2 = 125 + 300 / (1 + exp(-4.375 - 25 * i_Ca_L)); + dY[11] = (-Y[11] + f_Ca2_infinity) / tau_f_Ca2; + f_Ca_infinity = 0.14999999999999999 + 0.55000000000000004 / (1 + 333.33333333333331 * Y[27]) + 0.29999999999999999 / (1 - 20 * i_Ca_L); + dY[10] = (-Y[10] + f_Ca_infinity) / tau_f_Ca; + dNaCa_1 = pow(Y[21], 3) * km_Ca_o + 1.5 * pow(km_Na_o, 3) * Y[1] + pow(km_Na_i_1, 3) * (1 + 1.5 * Y[1] / km_Ca_i) * Ca_o; + g_K1 = 0.43033148291193518 * sqrt(K_o) * g_K1_max; + g_Kr = 0.43033148291193518 * sqrt(K_o) * g_Kr_max; + dNaCa_2 = pow(Y[21], 3) * Ca_o + 1.5 * pow(Na_o, 3) * Y[1] + pow(Na_o, 3) * (1 + Y[21] / km_Na_i_1) * km_Ca_i; + sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * Na_o); + E_Cl = -R * T * log(Cl_o / Y[22]) / F; + i_Cl_b = (-E_Cl + Y[0]) * g_Cl_b; + E_K = R * T * log(K_o / Y[23]) / F; + CT_K_Cl = (-E_Cl + E_K) * CT_K_Cl_max / (87.825100000000006 - E_Cl + E_K); + i_K_b = (-E_K + Y[0]) * g_K_b; + E_Ks = R * T * log((r_NaK * Na_o + K_o) / (Y[21] * r_NaK + Y[23])) / F; + E_Na = R * T * log(Na_o / Y[21]) / F; + CT_Na_Cl = pow((-E_Cl + E_Na), 4) * CT_Na_Cl_max / (59494197.640692554 + pow((-E_Cl + E_Na), 4)); + i_Na_b = (-E_Na + Y[0]) * g_Na_b; + alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * Y[0] - 0.23849999999999999 * E_K)); + beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * Y[0] - 0.080320000000000003 * E_K) + exp(-36.698642499999998 + 0.061749999999999999 * Y[0] - 0.061749999999999999 * E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * E_K - 0.51429999999999998 * Y[0])); + xK1 = alpha_xK1 / (alpha_xK1 + beta_xK1); + i_K1 = (0.0040000000000000001 + g_K1 * xK1) * (-E_K + Y[0]); + i_K_p = (-E_K + Y[0]) * g_K_p * kp; + i_Kr = (-E_K + Y[0]) * Y[17] * g_Kr * rr_infinity; + i_Ks = (-E_Ks + Y[0]) * Y[18] * Y[19] * g_Ks; + i_Na = pow(Y[2], 3) * (-E_Na + Y[0]) * (0.20000000000000001 * Y[4] + 0.80000000000000004 * Y[3]) * g_Na; + i_NaCa = (-1.5 * pow(Na_o, 3) * Y[1] * exp(-0.65000000000000002 * Y[0] * F / (R * T)) + pow(Y[21], 3) * X_NaCa * i_NaCa_max * Ca_o * exp(0.34999999999999998 * Y[0] * F / (R * T))) / ((1 + k_sat * exp(-0.65000000000000002 * Y[0] * F / (R * T))) * (1 + 0.44444444444444442 * pow(km_Ca_act, 2) / pow(Y[1], 2)) * (dNaCa_1 + dNaCa_2)); + f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * Y[0] * F / (R * T)) + 0.036499999999999998 * sigma * exp(-Y[0] * F / (R * T))); + i_NaK = 1 * f_NaK * g_NaK * K_o / ((1 + pow(km_Na_i_2, 2) / pow(Y[21], 2)) * (km_K_o + K_o)); + i_Na_L = pow(Y[5], 3) * (-E_Na + Y[0]) * Y[6] * g_Na_L; + i_to_1 = (-E_K + Y[0]) * (0.20000000000000001 * Y[16] + 0.80000000000000004 * Y[15]) * Y[14] * g_to_1; + i_tot = i_Ca_b + i_Cl_b + i_K_b + i_Na_b + i_Ca_L + i_Ca_T + i_Ca_p + i_K1 + i_K_p + i_Kr + i_Ks + i_Na + i_NaCa + i_NaK + i_Na_L + i_to_1 + i_to_2; + dY[0] = -i_inj - i_stim - i_tot; + Vol_jsr = 0.0047999999999999996 * Vol_cell; + Vol_myo = 0.68000000000000005 * Vol_cell; + Vol_nsr = 0.055199999999999999 * Vol_cell; + Vol_ss = 0.02 * Vol_cell; + a_geo = 6.2800000000000002 * pow(radius, 2) + 6.2800000000000002 * length * radius; + a_cap = a_geo * rcg; + dY[22] = (-(i_Cl_b + i_to_2) * Cm * a_cap / (F * Vol_myo) + CT_K_Cl + CT_Na_Cl) * conc_clamp; + dY[23] = (-(-2 * i_NaK + i_K_b + i_K1 + i_K_p + i_Kr + i_Ks + i_to_1) * Cm * a_cap / (F * Vol_myo) + CT_K_Cl) * conc_clamp; + dY[21] = (-(3 * i_NaCa + 3 * i_NaK + i_Na_b + i_Na + i_Na_L) * Cm * a_cap / (F * Vol_myo) + CT_Na_Cl) * conc_clamp; + q_leak = Y[25] * q_leak_max / NSR_max; + vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * g_Ca_L * i_Ca_L_max)); + g_rel = g_rel_max * vg; + Ca_fac = 1 / (1 + exp(3.3333333333333335 + 66.666666666666671 * i_Ca_L)); + ri_infinity = 1 / (1 + exp(-16 + 80 * Ca_fac + 40000 * Y[27])); + tau_Ca_MK = 1 * Ca_MK_act * tau_Ca_MK_max / (1 * Ca_MK_act + km_Ca_MK); + tau_ri = 3 + (350 - tau_Ca_MK) / (1 + exp(-15 + 5000 * Y[27] + 15 * Ca_fac)) + tau_Ca_MK; + dY[28] = (-Y[28] + ri_infinity) / tau_ri; + q_rel = (-Y[27] + Y[26]) * Y[28] * Y[29] * g_rel; + dY[27] = (-q_diff + Vol_jsr * q_rel / Vol_ss - i_Ca_L * Cm * a_cap / (F * Vol_ss * z_Ca)) * Ca_r_tot; + ro_infinity_JSR = pow(Y[26], 1.8999999999999999) / (pow(Y[26], 1.8999999999999999) + 1644.6531773416521 * pow((Y[27] / (0.0028 + Y[27])), 1.8999999999999999)); + ro_infinity = pow(i_Ca_L, 2) * ro_infinity_JSR / (1 + pow(i_Ca_L, 2)); + dY[29] = (-Y[29] + ro_infinity) / tau_ro; + q_tr = (-Y[26] + Y[25]) / tau_tr; + dY[26] = (-q_rel + q_tr) / (1 + CSQN_max * km_CSQN / pow((km_CSQN + Y[26]), 2)); + dkm_plb = 1 * Ca_MK_act * dkm_plb_max / (1 * Ca_MK_act + km_Ca_MK); + dq_up_Ca_MK = 1 * Ca_MK_act * dq_up_Ca_MK_max / (1 * Ca_MK_act + km_Ca_MK); + q_up = (1 + dq_up_Ca_MK) * Y[1] * X_q_up * q_up_max / (-dkm_plb + Y[1] + km_up); + dY[25] = -q_leak - Vol_jsr * q_tr / Vol_nsr + q_up; + dY[1] = -((-q_leak + q_up) * Vol_nsr / Vol_myo - q_diff * Vol_ss / Vol_myo + 0.5 * (-2 * i_NaCa + i_Ca_b + i_Ca_p) * Cm * a_cap / (F * Vol_myo)) * b_myo; +} + + //------------------------------------------------------------------------------ + // Integration & Output + //------------------------------------------------------------------------------ + // Rush-Larsen method + + +// get tau/inf or alpha/beta +void computeTauInf() + double alphaOrTau_2 = tau_m; + double betaOrInf_2 = m_infinity; + double alphaOrTau_3 = tau_h; + double betaOrInf_3 = h_infinity; + double alphaOrTau_4 = tau_j; + double betaOrInf_4 = j_infinity; + double alphaOrTau_5 = tau_m_L; + double betaOrInf_5 = m_L_infinity; + double alphaOrTau_6 = tau_h_L; + double betaOrInf_6 = h_L_infinity; + double alphaOrTau_7 = tau_d; + double betaOrInf_7 = d_infinity; + double alphaOrTau_8 = tau_f; + double betaOrInf_8 = f_infinity; + double alphaOrTau_9 = tau_f2; + double betaOrInf_9 = f2_infinity; + double alphaOrTau_12 = tau_b; + double betaOrInf_12 = b_infinity; + double alphaOrTau_13 = tau_g; + double betaOrInf_13 = g_infinity; + double alphaOrTau_14 = tau_a; + double betaOrInf_14 = a_infinity; + double alphaOrTau_15 = tau_i; + double betaOrInf_15 = i_infinity; + double alphaOrTau_16 = tau_i2; + double betaOrInf_16 = i2_infinity; + double alphaOrTau_17 = tau_xr; + double betaOrInf_17 = xr_infinity; + double alphaOrTau_18 = tau_xs1; + double betaOrInf_18 = xs1_infinity; + double alphaOrTau_19 = tau_xs2; + double betaOrInf_19 = xs2_infinity; + + // gating variables: Exponential integration + + Ynew[2] = betaOrInf_2 + (Y[2] - betaOrInf_2)*exp(-dt/alphaOrTau_2); + Ynew[3] = betaOrInf_3 + (Y[3] - betaOrInf_3)*exp(-dt/alphaOrTau_3); + Ynew[4] = betaOrInf_4 + (Y[4] - betaOrInf_4)*exp(-dt/alphaOrTau_4); + Ynew[5] = betaOrInf_5 + (Y[5] - betaOrInf_5)*exp(-dt/alphaOrTau_5); + Ynew[6] = betaOrInf_6 + (Y[6] - betaOrInf_6)*exp(-dt/alphaOrTau_6); + Ynew[7] = betaOrInf_7 + (Y[7] - betaOrInf_7)*exp(-dt/alphaOrTau_7); + Ynew[8] = betaOrInf_8 + (Y[8] - betaOrInf_8)*exp(-dt/alphaOrTau_8); + Ynew[9] = betaOrInf_9 + (Y[9] - betaOrInf_9)*exp(-dt/alphaOrTau_9); + Ynew[12] = betaOrInf_12 + (Y[12] - betaOrInf_12)*exp(-dt/alphaOrTau_12); + Ynew[13] = betaOrInf_13 + (Y[13] - betaOrInf_13)*exp(-dt/alphaOrTau_13); + Ynew[14] = betaOrInf_14 + (Y[14] - betaOrInf_14)*exp(-dt/alphaOrTau_14); + Ynew[15] = betaOrInf_15 + (Y[15] - betaOrInf_15)*exp(-dt/alphaOrTau_15); + Ynew[16] = betaOrInf_16 + (Y[16] - betaOrInf_16)*exp(-dt/alphaOrTau_16); + Ynew[17] = betaOrInf_17 + (Y[17] - betaOrInf_17)*exp(-dt/alphaOrTau_17); + Ynew[18] = betaOrInf_18 + (Y[18] - betaOrInf_18)*exp(-dt/alphaOrTau_18); + Ynew[19] = betaOrInf_19 + (Y[19] - betaOrInf_19)*exp(-dt/alphaOrTau_19); +} + +// Remainder: Forward Euler +void computeRemainderForwardEuler(){ + + Ynew[0] = Y[0] + dt * d_dt_V; + Ynew[1] = Y[1] + dt * d_dt_Ca_i; + Ynew[10] = Y[10] + dt * d_dt_f_Ca; + Ynew[11] = Y[11] + dt * d_dt_f_Ca2; + Ynew[20] = Y[20] + dt * d_dt_a; + Ynew[21] = Y[21] + dt * d_dt_Na_i; + Ynew[22] = Y[22] + dt * d_dt_Cl_i; + Ynew[23] = Y[23] + dt * d_dt_K_i; + Ynew[24] = Y[24] + dt * d_dt_Ca_MK_trap; + Ynew[25] = Y[25] + dt * d_dt_Ca_NSR; + Ynew[26] = Y[26] + dt * d_dt_Ca_JSR; + Ynew[27] = Y[27] + dt * d_dt_Ca_r; + Ynew[28] = Y[28] + dt * d_dt_ri; + Ynew[29] = Y[29] + dt * d_dt_ro; + Ynew[30] = Y[30] + dt; +} + +compute(); +computeTauInf(); +computeRemainderForwardEuler(); + + +Vmem = Ynew[0]; +time = Ynew[30]; + + + +//============================================================================== +// End of file +//============================================================================== diff --git a/chaste_codegen/data/tests/chaste_reference_models/RL_C/aslanidi_Purkinje_model_2009--sympy_1_14.c b/chaste_codegen/data/tests/chaste_reference_models/RL_C/aslanidi_Purkinje_model_2009--sympy_1_14.c new file mode 100644 index 00000000..a4ed7716 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/RL_C/aslanidi_Purkinje_model_2009--sympy_1_14.c @@ -0,0 +1,816 @@ +//=========================================================================== +// This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +// +// Model: aslanidi_2009 +// +// Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +// (translator: chaste_codegen, model type: RushLarsenC) +// on (date omitted as unimportant) +// +// +//=========================================================================== + + +#include "aslanidi_Purkinje_model_2009.h" + +//------------------------------------------------------------------------------ + +#include +#include + +//------------------------------------------------------------------------------ +// State variables +//------------------------------------------------------------------------------ + +extern double Y[_NB_OF_STATE_VARIABLES_]; +double dY[_NB_OF_STATE_VARIABLES_]; +double Ynew[_NB_OF_STATE_VARIABLES_]; +// 0: V (units: millivolt, initial value: -83.43812846286808, component: membrane) +// 1: Ca_i (units: millimolar, initial value: 0.00022355433459434943, component: Ca_i) +// 2: m (units: dimensionless, initial value: 0.002003390432234504, component: i_Na_m_gate) +// 3: h (units: dimensionless, initial value: 0.9786390933308567, component: i_Na_h_gate) +// 4: j (units: dimensionless, initial value: 0.09866447258167589, component: i_Na_j_gate) +// 5: m_L (units: dimensionless, initial value: 0.002003390432234504, component: i_Na_L_m_L_gate) +// 6: h_L (units: dimensionless, initial value: 0.8946968372659203, component: i_Na_L_h_L_gate) +// 7: d (units: dimensionless, initial value: 2.322223865147363e-06, component: i_Ca_L_d_gate) +// 8: f (units: dimensionless, initial value: 0.9985607329462358, component: i_Ca_L_f_gate) +// 9: f2 (units: dimensionless, initial value: 0.8173435436674658, component: i_Ca_L_f2_gate) +// 10: f_Ca (units: dimensionless, initial value: 0.9610551285529658, component: i_Ca_L_f_Ca_gate) +// 11: f_Ca2 (units: dimensionless, initial value: 0.868690796671854, component: i_Ca_L_f_Ca2_gate) +// 12: b (units: dimensionless, initial value: 0.0002563937630984438, component: i_Ca_T_b_gate) +// 13: g (units: dimensionless, initial value: 0.9720432601848331, component: i_Ca_T_g_gate) +// 14: a (units: dimensionless, initial value: 0.0004238729429342389, component: i_to_1_a_gate) +// 15: i (units: dimensionless, initial value: 0.9990935802459496, component: i_to_1_i_gate) +// 16: i2 (units: dimensionless, initial value: 0.9777368439681764, component: i_to_1_i2_gate) +// 17: xr (units: dimensionless, initial value: 0.07084939408222911, component: i_Kr_xr_gate) +// 18: xs1 (units: dimensionless, initial value: 0.0011737654433043125, component: i_Ks_xs1_gate) +// 19: xs2 (units: dimensionless, initial value: 0.001179442867470093, component: i_Ks_xs2_gate) +// 20: a (units: dimensionless, initial value: 0.0014909437525000811, component: i_to_2_a_gate) +// 21: Na_i (units: millimolar, initial value: 9.927155552932733, component: intracellular_ion_concentrations) +// 22: Cl_i (units: millimolar, initial value: 18.904682470140408, component: intracellular_ion_concentrations) +// 23: K_i (units: millimolar, initial value: 141.9670801746057, component: intracellular_ion_concentrations) +// 24: Ca_MK_trap (units: dimensionless, initial value: 8.789168284782809e-06, component: Ca_MK_act) +// 25: Ca_NSR (units: millimolar, initial value: 1.2132524695849454, component: Ca_NSR) +// 26: Ca_JSR (units: millimolar, initial value: 1.1433050636518596, component: Ca_JSR) +// 27: Ca_r (units: millimolar, initial value: 0.00022418117117903934, component: Ca_r) +// 28: ri (units: dimensionless, initial value: 0.7802870066567904, component: q_rel_ri_gate) +// 29: ro (units: dimensionless, initial value: 1.2785734760674763e-09, component: q_rel_ro_gate) + +double Vmem; +double time; + +char YNames[_NB_OF_STATE_VARIABLES_][11]; +char YUnits[_NB_OF_STATE_VARIABLES_][14]; +char YComponents[_NB_OF_STATE_VARIABLES_][33]; + +//------------------------------------------------------------------------------ +// Constants +//------------------------------------------------------------------------------ + +double A0_bck; // dimensionless (in A0_bc) +double Ampl_gain; // dimensionless (in Ampl_gai) +double Cext; // picoF (in Cex) +double E_l; // millivolt (in E_) +double I; // dimensionless (in ) +double R_seal; // ohm (in R_sea) +double Scale_bck; // dimensionless (in Scale_bc) +double Scaling; // dimensionless (in Scalin) +double k_bck; // one_over_millivolt (in k_bc) +double leak_comp_perc; // dimensionless (in leak_comp_per) +double q_leak_max; // millimolar_per_millisecond (in q_leak) +double g_rel_max; // per_millisecond (in q_rel) +double q_up_max; // millimolar_per_millisecond (in q_up) +double conc_clamp; // dimensionless (in intracellular_ion_concentrations) +double Ca_o; // millimolar (in model_parameters) +double K_o; // millimolar (in model_parameters) +double Na_o; // millimolar (in model_parameters) +double g_Ca_L; // dimensionless (in i_Ca_L) +double g_Na; // milliS_per_microF (in i_Na) +double perc_reduced_inact_for_IpNa; // dimensionless (in i_Na) +double shift_INa_inact; // millivolt (in i_Na) +double g_K1_max; // milliS_per_microF (in i_K1) +double g_Kr_max; // milliS_per_microF (in i_Kr) +double g_Ks_max; // milliS_per_microF (in i_Ks) +double i_NaCa_max; // microA_per_microF (in i_NaCa) +double stim_amplitude; // microA_per_microF (in membrane) +double stim_duration; // millisecond (in membrane) +double stim_start; // millisecond (in membrane) +double stim_period; // millisecond (in membrane) +double g_to_1; // milliS_per_microF (in i_to_1) + +double A0_bck; // dimensionless (in A0_bc) +double Ampl_gain; // dimensionless (in Ampl_gai) +double CT_K_Cl_max; // millimolar_per_millisecond (in CT_K_Cl) +double CT_Na_Cl_max; // millimolar_per_millisecond (in CT_Na_Cl) +double CSQN_max; // millimolar (in Ca_JSR) +double km_CSQN; // millimolar (in Ca_JSR) +double Ca_MK_0; // dimensionless (in Ca_MK_act) +double alpha_Ca_MK; // per_millisecond (in Ca_MK_act) +double beta_Ca_MK; // per_millisecond (in Ca_MK_act) +double km_Ca_MK; // millimolar (in Ca_MK_act) +double CMDN_max; // millimolar (in Ca_i) +double TRPN_max; // millimolar (in Ca_i) +double km_CMDN; // millimolar (in Ca_i) +double km_TRPN; // millimolar (in Ca_i) +double b_SL_max; // millimolar (in Ca_r) +double b_SR_max; // millimolar (in Ca_r) +double km_b_SL; // millimolar (in Ca_r) +double km_b_SR; // millimolar (in Ca_r) +double tau_ss; // millisecond (in Ca_r) +double Cext; // picoF (in Cex) +double E_l; // millivolt (in E_) +double I; // dimensionless (in ) +double R_seal; // ohm (in R_sea) +double Scale_bck; // dimensionless (in Scale_bc) +double Scaling; // dimensionless (in Scalin) +double g_Cl_b; // milliS_per_microF (in background_currents) +double g_K_b; // milliS_per_microF (in background_currents) +double g_Na_b; // milliS_per_microF (in background_currents) +double r_NaK; // dimensionless (in equilibrium_potentials) +double g_Ca_T; // milliS_per_microF (in i_Ca_T) +double i_Ca_p_max; // microA_per_microF (in i_Ca_p) +double km_Ca_p; // millimolar (in i_Ca_p) +double g_K_p; // milliS_per_microF (in i_K_p) +double X_NaCa; // dimensionless (in i_NaCa) +double k_sat; // dimensionless (in i_NaCa) +double km_Ca_act; // millimolar (in i_NaCa) +double km_Ca_i; // millimolar (in i_NaCa) +double km_Ca_o; // millimolar (in i_NaCa) +double km_Na_i_1; // millimolar (in i_NaCa) +double km_Na_o; // millimolar (in i_NaCa) +double g_NaK; // microA_per_microF (in i_NaK) +double km_K_o; // millimolar (in i_NaK) +double km_Na_i_2; // millimolar (in i_NaK) +double g_Na_L; // milliS_per_microF (in i_Na_L) +double km_to_2; // millimolar (in i_to_2_a_gate) +double tau_a; // millisecond (in i_to_2_a_gate) +double k_bck; // one_over_millivolt (in k_bc) +double leak_comp_perc; // dimensionless (in leak_comp_per) +double stim_end; // millisecond (in membrane) +double Cl_o; // millimolar (in model_parameters) +double Cm; // microF_per_cm2 (in model_parameters) +double F; // coulomb_per_mole (in model_parameters) +double R; // joule_per_kilomole_kelvin (in model_parameters) +double T; // kelvin (in model_parameters) +double Vol_cell; // microlitre (in model_parameters) +double length; // cm (in model_parameters) +double radius; // cm (in model_parameters) +double rcg; // dimensionless (in model_parameters) +double z_Ca; // dimensionless (in model_parameters) +double NSR_max; // millimolar (in q_leak) +double tau_Ca_MK_max; // millisecond (in q_rel_ri_gate) +double tau_ro; // millisecond (in q_rel_ro_gate) +double tau_tr; // millisecond (in q_tr) +double X_q_up; // dimensionless (in q_up) +double dkm_plb_max; // millimolar (in q_up) +double dq_up_Ca_MK_max; // dimensionless (in q_up) +double km_up; // millimolar (in q_up) + +//------------------------------------------------------------------------------ +// Computed variables +//------------------------------------------------------------------------------ + +double CMDN; // dimensionless (in Ca_i) +double TRPN; // dimensionless (in Ca_i) +double b_myo; // dimensionless (in Ca_i) +double Ca_MK_bound; // dimensionless (in Ca_MK_act) +double Ca_MK_act; // dimensionless (in Ca_MK_act) +double b_SL; // dimensionless (in Ca_r) +double b_SR; // dimensionless (in Ca_r) +double Ca_r_tot; // dimensionless (in Ca_r) +double q_diff; // millimolar_per_millisecond (in Ca_r) +double I_ext; // dimensionless (in I_ex) +double g_leak; // one_over_ohm (in g_lea) +double tau_f_Ca; // millisecond (in i_Ca_L_f_Ca_gate) +double i_Ca_p; // microA_per_microF (in i_Ca_p) +double g_Ks; // milliS_per_microF (in i_Ks) +double a_infinity; // dimensionless (in i_to_2_a_gate) +double d_infinity; // dimensionless (in i_Ca_L_d_gate) +double tau_d; // millisecond (in i_Ca_L_d_gate) +double f2_infinity; // dimensionless (in i_Ca_L_f2_gate) +double tau_f2; // millisecond (in i_Ca_L_f2_gate) +double f_infinity; // dimensionless (in i_Ca_L_f_gate) +double tau_f; // millisecond (in i_Ca_L_f_gate) +double i_Ca_T; // microA_per_microF (in i_Ca_T) +double alpha_b; // per_millisecond (in i_Ca_T_b_gate) +double b_infinity; // dimensionless (in i_Ca_T_b_gate) +double beta_b; // per_millisecond (in i_Ca_T_b_gate) +double tau_b; // millisecond (in i_Ca_T_b_gate) +double alpha_g; // per_millisecond (in i_Ca_T_g_gate) +double beta_g; // per_millisecond (in i_Ca_T_g_gate) +double g_infinity; // dimensionless (in i_Ca_T_g_gate) +double tau_g; // millisecond (in i_Ca_T_g_gate) +double kp; // dimensionless (in i_K_p) +double rr_infinity; // dimensionless (in i_Kr) +double tau_xr; // millisecond (in i_Kr_xr_gate) +double xr_infinity; // dimensionless (in i_Kr_xr_gate) +double tau_xs1; // millisecond (in i_Ks_xs1_gate) +double xs1_infinity; // dimensionless (in i_Ks_xs1_gate) +double tau_xs2; // millisecond (in i_Ks_xs2_gate) +double xs2_infinity; // dimensionless (in i_Ks_xs2_gate) +double h_L_infinity; // dimensionless (in i_Na_L_h_L_gate) +double tau_h_L; // millisecond (in i_Na_L_h_L_gate) +double alpha_m_L; // per_millisecond (in i_Na_L_m_L_gate) +double beta_m_L; // per_millisecond (in i_Na_L_m_L_gate) +double m_L_infinity; // dimensionless (in i_Na_L_m_L_gate) +double tau_m_L; // millisecond (in i_Na_L_m_L_gate) +double alpha_h; // per_millisecond (in i_Na_h_gate) +double beta_h; // per_millisecond (in i_Na_h_gate) +double h_infinity; // dimensionless (in i_Na_h_gate) +double tau_h; // millisecond (in i_Na_h_gate) +double alpha_j; // per_millisecond (in i_Na_j_gate) +double beta_j; // per_millisecond (in i_Na_j_gate) +double j_infinity; // dimensionless (in i_Na_j_gate) +double tau_j; // millisecond (in i_Na_j_gate) +double alpha_m; // per_millisecond (in i_Na_m_gate) +double beta_m; // per_millisecond (in i_Na_m_gate) +double m_infinity; // dimensionless (in i_Na_m_gate) +double tau_m; // millisecond (in i_Na_m_gate) +double i_bck; // dimensionless (in i_bc) +double i_leak_comp; // dimensionless (in i_leak_com) +double i_inj; // dimensionless (in i_in) +double alpha_a; // per_millisecond (in i_to_1_a_gate) +double beta_a; // per_millisecond (in i_to_1_a_gate) +double a_infinity; // dimensionless (in i_to_1_a_gate) +double tau_a; // millisecond (in i_to_1_a_gate) +double alpha_i2; // per_millisecond (in i_to_1_i2_gate) +double beta_i2; // per_millisecond (in i_to_1_i2_gate) +double i2_infinity; // dimensionless (in i_to_1_i2_gate) +double tau_i2; // millisecond (in i_to_1_i2_gate) +double alpha_i; // per_millisecond (in i_to_1_i_gate) +double beta_i; // per_millisecond (in i_to_1_i_gate) +double i_infinity; // dimensionless (in i_to_1_i_gate) +double tau_i; // millisecond (in i_to_1_i_gate) +double i_to_2_max; // microA_per_microF (in i_to_2) +double i_to_2; // microA_per_microF (in i_to_2) +double i_stim; // microA_per_microF (in membrane) +double i_Ca_b; // microA_per_microF (in background_currents) +double i_Ca_L_max; // microA_per_microF (in i_Ca_L) +double i_Ca_L; // microA_per_microF (in i_Ca_L) +double f_Ca2_infinity; // dimensionless (in i_Ca_L_f_Ca2_gate) +double tau_f_Ca2; // millisecond (in i_Ca_L_f_Ca2_gate) +double f_Ca_infinity; // dimensionless (in i_Ca_L_f_Ca_gate) +double dNaCa_1; // millimolar4 (in i_NaCa) +double g_K1; // milliS_per_microF (in i_K1) +double g_Kr; // milliS_per_microF (in i_Kr) +double dNaCa_2; // millimolar4 (in i_NaCa) +double sigma; // dimensionless (in i_NaK) +double E_Cl; // millivolt (in equilibrium_potentials) +double i_Cl_b; // microA_per_microF (in background_currents) +double E_K; // millivolt (in equilibrium_potentials) +double CT_K_Cl; // millimolar_per_millisecond (in CT_K_Cl) +double i_K_b; // microA_per_microF (in background_currents) +double E_Ks; // millivolt (in equilibrium_potentials) +double E_Na; // millivolt (in equilibrium_potentials) +double CT_Na_Cl; // millimolar_per_millisecond (in CT_Na_Cl) +double i_Na_b; // microA_per_microF (in background_currents) +double alpha_xK1; // dimensionless (in i_K1_xK1_gate) +double beta_xK1; // dimensionless (in i_K1_xK1_gate) +double xK1; // dimensionless (in i_K1_xK1_gate) +double i_K1; // microA_per_microF (in i_K1) +double i_K_p; // microA_per_microF (in i_K_p) +double i_Kr; // microA_per_microF (in i_Kr) +double i_Ks; // microA_per_microF (in i_Ks) +double i_Na; // microA_per_microF (in i_Na) +double i_NaCa; // microA_per_microF (in i_NaCa) +double f_NaK; // dimensionless (in i_NaK) +double i_NaK; // microA_per_microF (in i_NaK) +double i_Na_L; // microA_per_microF (in i_Na_L) +double i_to_1; // microA_per_microF (in i_to_1) +double i_tot; // microA_per_microF (in membrane) +double Vol_jsr; // microlitre (in model_parameters) +double Vol_myo; // microlitre (in model_parameters) +double Vol_nsr; // microlitre (in model_parameters) +double Vol_ss; // microlitre (in model_parameters) +double a_geo; // cm2 (in model_parameters) +double a_cap; // cm2 (in model_parameters) +double q_leak; // millimolar_per_millisecond (in q_leak) +double vg; // dimensionless (in q_rel) +double g_rel; // per_millisecond (in q_rel) +double Ca_fac; // millimolar (in q_rel_ri_gate) +double ri_infinity; // dimensionless (in q_rel_ri_gate) +double tau_Ca_MK; // millisecond (in q_rel_ri_gate) +double tau_ri; // millisecond (in q_rel_ri_gate) +double q_rel; // millimolar_per_millisecond (in q_rel) +double ro_infinity_JSR; // dimensionless (in q_rel_ro_gate) +double ro_infinity; // dimensionless (in q_rel_ro_gate) +double q_tr; // millimolar_per_millisecond (in q_tr) +double dkm_plb; // millimolar (in q_up) +double dq_up_Ca_MK; // dimensionless (in q_up) +double q_up; // millimolar_per_millisecond (in q_up) + + +//------------------------------------------------------------------------------ +// Initialisation +//------------------------------------------------------------------------------ + +void init() +{ + //--------------------------------------------------------------------------- + // State variables + //--------------------------------------------------------------------------- + + Y[0] = -83.43812846286808; // V (millivolt) (in membrane) + Y[1] = 0.00022355433459434943; // Ca_i (millimolar) (in Ca_i) + Y[2] = 0.002003390432234504; // m (dimensionless) (in i_Na_m_gate) + Y[3] = 0.9786390933308567; // h (dimensionless) (in i_Na_h_gate) + Y[4] = 0.09866447258167589; // j (dimensionless) (in i_Na_j_gate) + Y[5] = 0.002003390432234504; // m_L (dimensionless) (in i_Na_L_m_L_gate) + Y[6] = 0.8946968372659203; // h_L (dimensionless) (in i_Na_L_h_L_gate) + Y[7] = 2.322223865147363e-06; // d (dimensionless) (in i_Ca_L_d_gate) + Y[8] = 0.9985607329462358; // f (dimensionless) (in i_Ca_L_f_gate) + Y[9] = 0.8173435436674658; // f2 (dimensionless) (in i_Ca_L_f2_gate) + Y[10] = 0.9610551285529658; // f_Ca (dimensionless) (in i_Ca_L_f_Ca_gate) + Y[11] = 0.868690796671854; // f_Ca2 (dimensionless) (in i_Ca_L_f_Ca2_gate) + Y[12] = 0.0002563937630984438; // b (dimensionless) (in i_Ca_T_b_gate) + Y[13] = 0.9720432601848331; // g (dimensionless) (in i_Ca_T_g_gate) + Y[14] = 0.0004238729429342389; // a (dimensionless) (in i_to_1_a_gate) + Y[15] = 0.9990935802459496; // i (dimensionless) (in i_to_1_i_gate) + Y[16] = 0.9777368439681764; // i2 (dimensionless) (in i_to_1_i2_gate) + Y[17] = 0.07084939408222911; // xr (dimensionless) (in i_Kr_xr_gate) + Y[18] = 0.0011737654433043125; // xs1 (dimensionless) (in i_Ks_xs1_gate) + Y[19] = 0.001179442867470093; // xs2 (dimensionless) (in i_Ks_xs2_gate) + Y[20] = 0.0014909437525000811; // a (dimensionless) (in i_to_2_a_gate) + Y[21] = 9.927155552932733; // Na_i (millimolar) (in intracellular_ion_concentrations) + Y[22] = 18.904682470140408; // Cl_i (millimolar) (in intracellular_ion_concentrations) + Y[23] = 141.9670801746057; // K_i (millimolar) (in intracellular_ion_concentrations) + Y[24] = 8.789168284782809e-06; // Ca_MK_trap (dimensionless) (in Ca_MK_act) + Y[25] = 1.2132524695849454; // Ca_NSR (millimolar) (in Ca_NSR) + Y[26] = 1.1433050636518596; // Ca_JSR (millimolar) (in Ca_JSR) + Y[27] = 0.00022418117117903934; // Ca_r (millimolar) (in Ca_r) + Y[28] = 0.7802870066567904; // ri (dimensionless) (in q_rel_ri_gate) + Y[29] = 1.2785734760674763e-09; // ro (dimensionless) (in q_rel_ro_gate) + Y[30]; // (time} (milliseconds) + + + strcpy(YNames[0], "V"); + strcpy(YNames[1], "Ca_i"); + strcpy(YNames[2], "m"); + strcpy(YNames[3], "h"); + strcpy(YNames[4], "j"); + strcpy(YNames[5], "m_L"); + strcpy(YNames[6], "h_L"); + strcpy(YNames[7], "d"); + strcpy(YNames[8], "f"); + strcpy(YNames[9], "f2"); + strcpy(YNames[10], "f_Ca"); + strcpy(YNames[11], "f_Ca2"); + strcpy(YNames[12], "b"); + strcpy(YNames[13], "g"); + strcpy(YNames[14], "a"); + strcpy(YNames[15], "i"); + strcpy(YNames[16], "i2"); + strcpy(YNames[17], "xr"); + strcpy(YNames[18], "xs1"); + strcpy(YNames[19], "xs2"); + strcpy(YNames[20], "a"); + strcpy(YNames[21], "Na_i"); + strcpy(YNames[22], "Cl_i"); + strcpy(YNames[23], "K_i"); + strcpy(YNames[24], "Ca_MK_trap"); + strcpy(YNames[25], "Ca_NSR"); + strcpy(YNames[26], "Ca_JSR"); + strcpy(YNames[27], "Ca_r"); + strcpy(YNames[28], "ri"); + strcpy(YNames[29], "ro"); + strcpy(YNames[30], "time"); + + + strcpy(YUnits[0], "millivolt"); + strcpy(YUnits[1], "millimolar"); + strcpy(YUnits[2], "dimensionless"); + strcpy(YUnits[3], "dimensionless"); + strcpy(YUnits[4], "dimensionless"); + strcpy(YUnits[5], "dimensionless"); + strcpy(YUnits[6], "dimensionless"); + strcpy(YUnits[7], "dimensionless"); + strcpy(YUnits[8], "dimensionless"); + strcpy(YUnits[9], "dimensionless"); + strcpy(YUnits[10], "dimensionless"); + strcpy(YUnits[11], "dimensionless"); + strcpy(YUnits[12], "dimensionless"); + strcpy(YUnits[13], "dimensionless"); + strcpy(YUnits[14], "dimensionless"); + strcpy(YUnits[15], "dimensionless"); + strcpy(YUnits[16], "dimensionless"); + strcpy(YUnits[17], "dimensionless"); + strcpy(YUnits[18], "dimensionless"); + strcpy(YUnits[19], "dimensionless"); + strcpy(YUnits[20], "dimensionless"); + strcpy(YUnits[21], "millimolar"); + strcpy(YUnits[22], "millimolar"); + strcpy(YUnits[23], "millimolar"); + strcpy(YUnits[24], "dimensionless"); + strcpy(YUnits[25], "millimolar"); + strcpy(YUnits[26], "millimolar"); + strcpy(YUnits[27], "millimolar"); + strcpy(YUnits[28], "dimensionless"); + strcpy(YUnits[29], "dimensionless"); + strcpy(YUnits[30], "milliseconds"); + + //------------------------------------------------------------------------------ + // Constants + //------------------------------------------------------------------------------ + + A0_bck = 1.0278; + Ampl_gain = 1; + Cext = 1; + E_l = 1; + I = 1; + R_seal = 1; + Scale_bck = 1; + Scaling = 1; + k_bck = 0.098599999999999993; + leak_comp_perc = 1; + q_leak_max = 0.0043750000000000004; + g_rel_max = 3000; + q_up_max = 0.0043750000000000004; + conc_clamp = 1; + Ca_o = 1.8; + K_o = 5.4000000000000004; + Na_o = 140; + g_Ca_L = 0.3392328; + g_Na = 8; + perc_reduced_inact_for_IpNa = 0; + shift_INa_inact = 0; + g_K1_max = 0.25; + g_Kr_max = 0.040008488000000002; + g_Ks_max = 0.052581329000000003; + i_NaCa_max = 4.5; + stim_amplitude = -80; + stim_duration = 1; + stim_start = 100; + stim_period = 800; + g_to_1 = 0.14135944; + + A0_bck = 1.0278; + Ampl_gain = 1; + CT_K_Cl_max = 7.0755999999999996e-6; + CT_Na_Cl_max = 9.8442999999999999e-6; + CSQN_max = 10; + km_CSQN = 0.80000000000000004; + Ca_MK_0 = 0.050000000000000003; + alpha_Ca_MK = 0.050000000000000003; + beta_Ca_MK = 0.00068000000000000005; + km_Ca_MK = 0.14999999999999999; + CMDN_max = 0.050000000000000003; + TRPN_max = 0.070000000000000007; + km_CMDN = 0.0023800000000000002; + km_TRPN = 0.00050000000000000001; + b_SL_max = 1.1240000000000001; + b_SR_max = 0.047; + km_b_SL = 0.0086999999999999994; + km_b_SR = 0.00087000000000000001; + tau_ss = 0.20000000000000001; + Cext = 1; + E_l = 1; + I = 1; + R_seal = 1; + Scale_bck = 1; + Scaling = 1; + g_Cl_b = 0.00022499999999999999; + g_K_b = 0.0050000000000000001; + g_Na_b = 0.0025000000000000001; + r_NaK = 0.018329999999999999; + g_Ca_T = 0.13; + i_Ca_p_max = 0.057500000000000002; + km_Ca_p = 0.00050000000000000001; + g_K_p = 0.0027599999999999999; + X_NaCa = 0.40000000000000002; + k_sat = 0.27000000000000002; + km_Ca_act = 0.000125; + km_Ca_i = 0.0035999999999999999; + km_Ca_o = 1.3; + km_Na_i_1 = 12.300000000000001; + km_Na_o = 87.5; + g_NaK = 0.61875000000000002; + km_K_o = 1.5; + km_Na_i_2 = 10; + g_Na_L = 0.037374999999999999; + km_to_2 = 0.1502; + tau_a = 1; + k_bck = 0.098599999999999993; + leak_comp_perc = 1; + stim_end = 100000; + Cl_o = 100; + Cm = 1; + F = 96485; + R = 8314; + T = 310; + Vol_cell = 0.34539999999999998; + length = 0.01; + radius = 0.0011000000000000001; + rcg = 2; + z_Ca = 2; + NSR_max = 15; + tau_Ca_MK_max = 10; + tau_ro = 3; + tau_tr = 120; + X_q_up = 0.5; + dkm_plb_max = 0.00017000000000000001; + dq_up_Ca_MK_max = 0.75; + km_up = 0.00092000000000000003; + +} + + //--------------------------------------------------------------------------- + // Computation + //--------------------------------------------------------------------------- +void compute() +{ + // time: time (millisecond) + + CMDN = 2 * CMDN_max * Y[1] / pow((km_CMDN + Y[1]), 2); + TRPN = 2 * TRPN_max * Y[1] / pow((km_TRPN + Y[1]), 2); + b_myo = 1 / (1 + CMDN + TRPN); + Ca_MK_bound = (1 - Y[24]) * Ca_MK_0 / (1 + km_Ca_MK / Y[27]); + Ca_MK_act = Ca_MK_bound + Y[24]; + b_SL = 2 * b_SL_max * Y[27] / pow((km_b_SL + Y[27]), 2); + b_SR = 2 * b_SR_max * Y[27] / pow((km_b_SR + Y[27]), 2); + Ca_r_tot = 1 / (1 + b_SL + b_SR); + q_diff = (-Y[1] + Y[27]) / tau_ss; + dY[24] = -beta_Ca_MK * Y[24] + (Ca_MK_bound + Y[24]) * Ca_MK_bound * alpha_Ca_MK; + I_ext = I / (Ampl_gain * Cext); + g_leak = 1 / R_seal; + tau_f_Ca = 0.5 + 1 / (1 + 333.33333333333331 * Y[27]) + 10 * Ca_MK_act / (1 * Ca_MK_act + km_Ca_MK); + i_Ca_p = Y[1] * i_Ca_p_max / (Y[1] + km_Ca_p); + g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / Y[1]), 1.3999999999999999))) * g_Ks_max; + a_infinity = 1 / (1 + km_to_2 / Y[27]); + dY[20] = (-Y[20] + a_infinity) / tau_a; + d_infinity = 1 / (1 + exp(0.59347181008902072 - 0.14836795252225518 * Y[0])); + tau_d = 0.58999999999999997 + 0.80000000000000004 * exp(0.67599999999999993 + 0.051999999999999998 * Y[0]) / (1 + exp(1.7160000000000002 + 0.13200000000000001 * Y[0])); + dY[7] = (-Y[7] + d_infinity) / tau_d; + f2_infinity = 1 / (1 + exp(1.8 + 0.10000000000000001 * Y[0])); + tau_f2 = 38 + 0.070000000000000007 * pow((-18.600000000000001 + Y[0]), 2); + dY[9] = (-Y[9] + f2_infinity) / tau_f2; + f_infinity = 1 / (1 + exp(1.8 + 0.10000000000000001 * Y[0])); + tau_f = 4 + 0.0050000000000000001 * pow((-2.5 + Y[0]), 2); + dY[8] = (-Y[8] + f_infinity) / tau_f; + i_Ca_T = (-50 + Y[0]) * Y[12] * Y[13] * g_Ca_T; + alpha_b = 1.0680000000000001 * exp(0.54333333333333333 + 0.033333333333333333 * Y[0]); + b_infinity = 1 / (1 + exp(-5.4098360655737707 - 0.16393442622950821 * Y[0])); + beta_b = 1.0680000000000001 * exp(-0.54333333333333333 - 0.033333333333333333 * Y[0]); + tau_b = 1 / (alpha_b + beta_b); + dY[12] = (-Y[12] + b_infinity) / tau_b; + alpha_g = 0.014999999999999999 * exp(-0.86074429771908767 - 0.012004801920768308 * Y[0]); + beta_g = 0.014999999999999999 * exp(4.6558441558441563 + 0.064935064935064929 * Y[0]); + g_infinity = 1 / (1 + exp(9.0909090909090917 + 0.15151515151515152 * Y[0])); + tau_g = 1 / (alpha_g + beta_g); + dY[13] = (-Y[13] + g_infinity) / tau_g; + kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * Y[0])); + rr_infinity = 1 / (1 + exp(-0.26470588235294124 + 0.049019607843137261 * Y[0])); + tau_xr = 100 + 900 / (1 + exp(0.20000000000000001 * Y[0])); + xr_infinity = 1 / (1 + exp(-0.0069387755102040824 - 0.081632653061224483 * Y[0])); + dY[17] = (-Y[17] + xr_infinity) / tau_xr; + tau_xs1 = 1 / ((((Y[0] >= 0.54999921875000002) && (Y[0] <= 0.55000078125000007)) ? (-2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8)) + 640000.00000042573 * (-0.54999921875000002 + Y[0]) * (2.8124999999996902e-10 / (-1 + exp(9.9999999999988984e-8)) + 2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8)))) : (0.00036000000000000002 * (-0.55000000000000004 + Y[0]) / (-1 + exp(-0.070400000000000004 + 0.128 * Y[0])))) + (((Y[0] >= -44.600000010030094) && (Y[0] <= -44.599999989969909)) ? (-7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 49850000.061936118 * (44.600000010030094 + Y[0]) * (7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 7.6328986866047728e-13 / (1 - exp(-9.9999999875755032e-8)))) : (7.6100000000000007e-5 * (44.600000000000001 + Y[0]) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * Y[0]))))); + xs1_infinity = 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * Y[0])); + dY[18] = (-Y[18] + xs1_infinity) / tau_xs1; + tau_xs2 = 2 / ((((Y[0] >= 0.54999921875000002) && (Y[0] <= 0.55000078125000007)) ? (-2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8)) + 640000.00000042573 * (-0.54999921875000002 + Y[0]) * (2.8124999999996902e-10 / (-1 + exp(9.9999999999988984e-8)) + 2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8)))) : (0.00036000000000000002 * (-0.55000000000000004 + Y[0]) / (-1 + exp(-0.070400000000000004 + 0.128 * Y[0])))) + (((Y[0] >= -44.600000010030094) && (Y[0] <= -44.599999989969909)) ? (-7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 49850000.061936118 * (44.600000010030094 + Y[0]) * (7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 7.6328986866047728e-13 / (1 - exp(-9.9999999875755032e-8)))) : (7.6100000000000007e-5 * (44.600000000000001 + Y[0]) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * Y[0]))))); + xs2_infinity = 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * Y[0])); + dY[19] = (-Y[19] + xs2_infinity) / tau_xs2; + h_L_infinity = 1 / (1 + exp(11.311475409836067 + 0.16393442622950821 * Y[0])); + tau_h_L = 175 + 125 / (1 + exp(-4.166666666666667 - 0.16666666666666666 * Y[0])); + dY[6] = (-Y[6] + h_L_infinity) / tau_h_L; + if ((Y[0] >= -47.130001) && (Y[0] <= -47.129999000000005)) + alpha_m_L = -3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 499999.99998562218 * (47.130001 + Y[0]) * (3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 3.200000000092018e-7 / (1 - exp(-1.0000000000287557e-7))) + else + alpha_m_L = 0.32000000000000001 * (47.130000000000003 + Y[0]) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * Y[0])) + + beta_m_L = 0.080000000000000002 * exp(-0.090909090909090912 * Y[0]); + m_L_infinity = alpha_m_L / (alpha_m_L + beta_m_L); + tau_m_L = 1 / (alpha_m_L + beta_m_L); + dY[5] = (-Y[5] + m_L_infinity) / tau_m_L; + if (Y[0] < -40) + alpha_h = 0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * shift_INa_inact - 0.14705882352941177 * Y[0]) + else + alpha_h = 0 + + if (Y[0] < -40) + beta_h = 310000 * exp(0.34999999999999998 * Y[0] - 0.34999999999999998 * shift_INa_inact) + 3.5600000000000001 * exp(0.079000000000000001 * Y[0] - 0.079000000000000001 * shift_INa_inact) + else + beta_h = 7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * shift_INa_inact - 0.0900900900900901 * Y[0])) + + h_infinity = 0.01 * perc_reduced_inact_for_IpNa + (1 - 0.01 * perc_reduced_inact_for_IpNa) * alpha_h / (alpha_h + beta_h); + tau_h = 1 / (alpha_h + beta_h); + dY[3] = (-Y[3] + h_infinity) / tau_h; + if (Y[0] < -40) + alpha_j = (37.780000000000001 + Y[0]) * (-127140 * exp(0.24440000000000001 * Y[0] - 0.24440000000000001 * shift_INa_inact) - 3.4740000000000003e-5 * exp(0.043909999999999998 * shift_INa_inact - 0.043909999999999998 * Y[0])) / (1 + exp(24.640530000000002 + 0.311 * Y[0] - 0.311 * shift_INa_inact)) + else + alpha_j = 0 + + if (Y[0] < -40) + beta_j = 0.1212 * exp(0.01052 * shift_INa_inact - 0.01052 * Y[0]) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * shift_INa_inact - 0.13780000000000001 * Y[0])) + else + beta_j = 0.29999999999999999 * exp(2.5349999999999999e-7 * shift_INa_inact - 2.5349999999999999e-7 * Y[0]) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * shift_INa_inact - 0.10000000000000001 * Y[0])) + + j_infinity = 0.01 * perc_reduced_inact_for_IpNa + (1 - 0.01 * perc_reduced_inact_for_IpNa) * alpha_j / (alpha_j + beta_j); + tau_j = 1 / (alpha_j + beta_j); + dY[4] = (-Y[4] + j_infinity) / tau_j; + if ((Y[0] >= -47.130001) && (Y[0] <= -47.129999000000005)) + alpha_m = -3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 499999.99998562218 * (47.130001 + Y[0]) * (3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 3.200000000092018e-7 / (1 - exp(-1.0000000000287557e-7))) + else + alpha_m = 0.32000000000000001 * (47.130000000000003 + Y[0]) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * Y[0])) + + beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * Y[0]); + m_infinity = alpha_m / (alpha_m + beta_m); + tau_m = 1 / (alpha_m + beta_m); + dY[2] = (-Y[2] + m_infinity) / tau_m; + i_bck = A0_bck * Scale_bck / ((1 + exp(-Y[0] * k_bck)) * Cext); + i_leak_comp = (-E_l + Y[0]) * g_leak * leak_comp_perc / (100 * Cext); + i_inj = (-i_bck - i_leak_comp + I_ext) * Scaling; + alpha_a = 25 * exp(-3.7999999999999998 + 0.050000000000000003 * Y[0]) / (1 + exp(-3.7999999999999998 + 0.050000000000000003 * Y[0])); + beta_a = 25 * exp(-2.7000000000000002 - 0.050000000000000003 * Y[0]) / (1 + exp(-2.7000000000000002 - 0.050000000000000003 * Y[0])); + a_infinity = alpha_a / (alpha_a + beta_a); + tau_a = 1 / (alpha_a + beta_a); + dY[14] = (-Y[14] + a_infinity) / tau_a; + alpha_i2 = 0.0044200000000000003 / (1 + exp(1.7333333333333334 + 0.066666666666666666 * Y[0])); + beta_i2 = 0.050000000000000003 * exp(-0.66666666666666663 + 0.066666666666666666 * Y[0]) / (1 + exp(-0.66666666666666663 + 0.066666666666666666 * Y[0])); + i2_infinity = alpha_i2 / (alpha_i2 + beta_i2); + tau_i2 = 21.5 + 30 / (1 + exp(-2.5 + 0.10000000000000001 * Y[0])); + dY[16] = (-Y[16] + i2_infinity) / tau_i2; + alpha_i = 0.029999999999999999 / (1 + exp(1.6666666666666667 + 0.066666666666666666 * Y[0])); + beta_i = 0.10000000000000001 * exp(-2.6666666666666665 + 0.066666666666666666 * Y[0]) / (1 + exp(-2.6666666666666665 + 0.066666666666666666 * Y[0])); + i_infinity = alpha_i / (alpha_i + beta_i); + tau_i = 6 + 5 / (1 + exp(-1.6499999999999999 + 0.10000000000000001 * Y[0])); + dY[15] = (-Y[15] + i_infinity) / tau_i; + if ((Y[0] >= -2.6712338705498262e-6) && (Y[0] <= 2.6712338705498262e-6)) + i_to_2_max = 187179.41753901311 * (2.6712338705498262e-6 + Y[0]) * (3.8593999999999993e-9 * (-100 * exp(9.9999999999999995e-8) + Y[22]) / (1 - exp(9.9999999999999995e-8)) + 3.8593999999999993e-9 * (-100 * exp(-9.9999999999999995e-8) + Y[22]) / (1 - exp(-9.9999999999999995e-8))) - 3.8593999999999993e-9 * (-100 * exp(-9.9999999999999995e-8) + Y[22]) / (1 - exp(-9.9999999999999995e-8)) + else + i_to_2_max = 0.0014448004881001341 * (-100 * exp(0.037435883507802616 * Y[0]) + Y[22]) * Y[0] / (1 - exp(0.037435883507802616 * Y[0])) + + i_to_2 = 20 * Y[20] * i_to_2_max; + if ((Y[30] >= stim_start) && (Y[30] <= stim_end) && (stim_duration >= -stim_start - stim_period * floor((-stim_start + Y[30]) / stim_period) + Y[30])) + i_stim = stim_amplitude + else + i_stim = 0 + + if ((Y[0] >= -1.3356169352749131e-6) && (Y[0] <= 1.3356169352749131e-6)) + i_Ca_b = 374358.83507802623 * (1.3356169352749131e-6 + Y[0]) * (3.8499135947999997e-9 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 3.8499135947999997e-9 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 3.8499135947999997e-9 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8)) + else + i_Ca_b = 0.0028824983370007683 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(0.074871767015605231 * Y[0])) * Y[0] / (-1 + exp(0.074871767015605231 * Y[0])) + + if ((Y[0] >= 14.999998664383064) && (Y[0] <= 15.000001335616936)) + i_Ca_L_max = 374358.83507888648 * (-14.999998664383064 + Y[0]) * (4.6891709999892238e-6 * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(9.9999999999770198e-8)) / (-1 + exp(9.9999999999770198e-8)) + 4.6891709999892238e-6 * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(-9.9999999999770198e-8)) / (-1 + exp(-9.9999999999770198e-8))) - 4.6891709999892238e-6 * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(-9.9999999999770198e-8)) / (-1 + exp(-9.9999999999770198e-8)) + else + i_Ca_L_max = 3.510865186083326 * (-15 + Y[0]) * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(-1.1230765052340785 + 0.074871767015605231 * Y[0])) / (-1 + exp(-1.1230765052340785 + 0.074871767015605231 * Y[0])) + + i_Ca_L = Y[10] * Y[11] * Y[7] * Y[8] * Y[9] * g_Ca_L * i_Ca_L_max; + f_Ca2_infinity = 1 / (1 - 100 * i_Ca_L); + tau_f_Ca2 = 125 + 300 / (1 + exp(-4.375 - 25 * i_Ca_L)); + dY[11] = (-Y[11] + f_Ca2_infinity) / tau_f_Ca2; + f_Ca_infinity = 0.14999999999999999 + 0.55000000000000004 / (1 + 333.33333333333331 * Y[27]) + 0.29999999999999999 / (1 - 20 * i_Ca_L); + dY[10] = (-Y[10] + f_Ca_infinity) / tau_f_Ca; + dNaCa_1 = pow(Y[21], 3) * km_Ca_o + 1.5 * pow(km_Na_o, 3) * Y[1] + pow(km_Na_i_1, 3) * (1 + 1.5 * Y[1] / km_Ca_i) * Ca_o; + g_K1 = 0.43033148291193518 * sqrt(K_o) * g_K1_max; + g_Kr = 0.43033148291193518 * sqrt(K_o) * g_Kr_max; + dNaCa_2 = pow(Y[21], 3) * Ca_o + 1.5 * pow(Na_o, 3) * Y[1] + pow(Na_o, 3) * (1 + Y[21] / km_Na_i_1) * km_Ca_i; + sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * Na_o); + E_Cl = -R * T * log(Cl_o / Y[22]) / F; + i_Cl_b = (-E_Cl + Y[0]) * g_Cl_b; + E_K = R * T * log(K_o / Y[23]) / F; + CT_K_Cl = (-E_Cl + E_K) * CT_K_Cl_max / (87.825100000000006 - E_Cl + E_K); + i_K_b = (-E_K + Y[0]) * g_K_b; + E_Ks = R * T * log((r_NaK * Na_o + K_o) / (Y[21] * r_NaK + Y[23])) / F; + E_Na = R * T * log(Na_o / Y[21]) / F; + CT_Na_Cl = pow((-E_Cl + E_Na), 4) * CT_Na_Cl_max / (59494197.640692554 + pow((-E_Cl + E_Na), 4)); + i_Na_b = (-E_Na + Y[0]) * g_Na_b; + alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * Y[0] - 0.23849999999999999 * E_K)); + beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * Y[0] - 0.080320000000000003 * E_K) + exp(-36.698642499999998 + 0.061749999999999999 * Y[0] - 0.061749999999999999 * E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * E_K - 0.51429999999999998 * Y[0])); + xK1 = alpha_xK1 / (alpha_xK1 + beta_xK1); + i_K1 = (0.0040000000000000001 + g_K1 * xK1) * (-E_K + Y[0]); + i_K_p = (-E_K + Y[0]) * g_K_p * kp; + i_Kr = (-E_K + Y[0]) * Y[17] * g_Kr * rr_infinity; + i_Ks = (-E_Ks + Y[0]) * Y[18] * Y[19] * g_Ks; + i_Na = pow(Y[2], 3) * (-E_Na + Y[0]) * (0.20000000000000001 * Y[4] + 0.80000000000000004 * Y[3]) * g_Na; + i_NaCa = (-1.5 * pow(Na_o, 3) * Y[1] * exp(-0.65000000000000002 * Y[0] * F / (R * T)) + pow(Y[21], 3) * X_NaCa * i_NaCa_max * Ca_o * exp(0.34999999999999998 * Y[0] * F / (R * T))) / ((1 + k_sat * exp(-0.65000000000000002 * Y[0] * F / (R * T))) * (1 + 0.44444444444444442 * pow(km_Ca_act, 2) / pow(Y[1], 2)) * (dNaCa_1 + dNaCa_2)); + f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * Y[0] * F / (R * T)) + 0.036499999999999998 * sigma * exp(-Y[0] * F / (R * T))); + i_NaK = 1 * f_NaK * g_NaK * K_o / ((1 + pow(km_Na_i_2, 2) / pow(Y[21], 2)) * (km_K_o + K_o)); + i_Na_L = pow(Y[5], 3) * (-E_Na + Y[0]) * Y[6] * g_Na_L; + i_to_1 = (-E_K + Y[0]) * (0.20000000000000001 * Y[16] + 0.80000000000000004 * Y[15]) * Y[14] * g_to_1; + i_tot = i_Ca_b + i_Cl_b + i_K_b + i_Na_b + i_Ca_L + i_Ca_T + i_Ca_p + i_K1 + i_K_p + i_Kr + i_Ks + i_Na + i_NaCa + i_NaK + i_Na_L + i_to_1 + i_to_2; + dY[0] = -i_inj - i_stim - i_tot; + Vol_jsr = 0.0047999999999999996 * Vol_cell; + Vol_myo = 0.68000000000000005 * Vol_cell; + Vol_nsr = 0.055199999999999999 * Vol_cell; + Vol_ss = 0.02 * Vol_cell; + a_geo = 6.2800000000000002 * pow(radius, 2) + 6.2800000000000002 * length * radius; + a_cap = a_geo * rcg; + dY[22] = (-(i_Cl_b + i_to_2) * Cm * a_cap / (F * Vol_myo) + CT_K_Cl + CT_Na_Cl) * conc_clamp; + dY[23] = (-(-2 * i_NaK + i_K_b + i_K1 + i_K_p + i_Kr + i_Ks + i_to_1) * Cm * a_cap / (F * Vol_myo) + CT_K_Cl) * conc_clamp; + dY[21] = (-(3 * i_NaCa + 3 * i_NaK + i_Na_b + i_Na + i_Na_L) * Cm * a_cap / (F * Vol_myo) + CT_Na_Cl) * conc_clamp; + q_leak = Y[25] * q_leak_max / NSR_max; + vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * g_Ca_L * i_Ca_L_max)); + g_rel = g_rel_max * vg; + Ca_fac = 1 / (1 + exp(3.3333333333333335 + 66.666666666666671 * i_Ca_L)); + ri_infinity = 1 / (1 + exp(-16 + 80 * Ca_fac + 40000 * Y[27])); + tau_Ca_MK = 1 * Ca_MK_act * tau_Ca_MK_max / (1 * Ca_MK_act + km_Ca_MK); + tau_ri = 3 + (350 - tau_Ca_MK) / (1 + exp(-15 + 5000 * Y[27] + 15 * Ca_fac)) + tau_Ca_MK; + dY[28] = (-Y[28] + ri_infinity) / tau_ri; + q_rel = (-Y[27] + Y[26]) * Y[28] * Y[29] * g_rel; + dY[27] = (-q_diff + Vol_jsr * q_rel / Vol_ss - i_Ca_L * Cm * a_cap / (F * Vol_ss * z_Ca)) * Ca_r_tot; + ro_infinity_JSR = pow(Y[26], 1.8999999999999999) / (pow(Y[26], 1.8999999999999999) + 1644.6531773416521 * pow((Y[27] / (0.0028 + Y[27])), 1.8999999999999999)); + ro_infinity = pow(i_Ca_L, 2) * ro_infinity_JSR / (1 + pow(i_Ca_L, 2)); + dY[29] = (-Y[29] + ro_infinity) / tau_ro; + q_tr = (-Y[26] + Y[25]) / tau_tr; + dY[26] = (-q_rel + q_tr) / (1 + CSQN_max * km_CSQN / pow((km_CSQN + Y[26]), 2)); + dkm_plb = 1 * Ca_MK_act * dkm_plb_max / (1 * Ca_MK_act + km_Ca_MK); + dq_up_Ca_MK = 1 * Ca_MK_act * dq_up_Ca_MK_max / (1 * Ca_MK_act + km_Ca_MK); + q_up = (1 + dq_up_Ca_MK) * Y[1] * X_q_up * q_up_max / (-dkm_plb + Y[1] + km_up); + dY[25] = -q_leak - Vol_jsr * q_tr / Vol_nsr + q_up; + dY[1] = -((-q_leak + q_up) * Vol_nsr / Vol_myo - q_diff * Vol_ss / Vol_myo + 0.5 * (-2 * i_NaCa + i_Ca_b + i_Ca_p) * Cm * a_cap / (F * Vol_myo)) * b_myo; +} + + //------------------------------------------------------------------------------ + // Integration & Output + //------------------------------------------------------------------------------ + // Rush-Larsen method + + +// get tau/inf or alpha/beta +void computeTauInf() + double alphaOrTau_2 = tau_m; + double betaOrInf_2 = m_infinity; + double alphaOrTau_3 = tau_h; + double betaOrInf_3 = h_infinity; + double alphaOrTau_4 = tau_j; + double betaOrInf_4 = j_infinity; + double alphaOrTau_5 = tau_m_L; + double betaOrInf_5 = m_L_infinity; + double alphaOrTau_6 = tau_h_L; + double betaOrInf_6 = h_L_infinity; + double alphaOrTau_7 = tau_d; + double betaOrInf_7 = d_infinity; + double alphaOrTau_8 = tau_f; + double betaOrInf_8 = f_infinity; + double alphaOrTau_9 = tau_f2; + double betaOrInf_9 = f2_infinity; + double alphaOrTau_12 = tau_b; + double betaOrInf_12 = b_infinity; + double alphaOrTau_13 = tau_g; + double betaOrInf_13 = g_infinity; + double alphaOrTau_14 = tau_a; + double betaOrInf_14 = a_infinity; + double alphaOrTau_15 = tau_i; + double betaOrInf_15 = i_infinity; + double alphaOrTau_16 = tau_i2; + double betaOrInf_16 = i2_infinity; + double alphaOrTau_17 = tau_xr; + double betaOrInf_17 = xr_infinity; + double alphaOrTau_18 = tau_xs1; + double betaOrInf_18 = xs1_infinity; + double alphaOrTau_19 = tau_xs2; + double betaOrInf_19 = xs2_infinity; + + // gating variables: Exponential integration + + Ynew[2] = betaOrInf_2 + (Y[2] - betaOrInf_2)*exp(-dt/alphaOrTau_2); + Ynew[3] = betaOrInf_3 + (Y[3] - betaOrInf_3)*exp(-dt/alphaOrTau_3); + Ynew[4] = betaOrInf_4 + (Y[4] - betaOrInf_4)*exp(-dt/alphaOrTau_4); + Ynew[5] = betaOrInf_5 + (Y[5] - betaOrInf_5)*exp(-dt/alphaOrTau_5); + Ynew[6] = betaOrInf_6 + (Y[6] - betaOrInf_6)*exp(-dt/alphaOrTau_6); + Ynew[7] = betaOrInf_7 + (Y[7] - betaOrInf_7)*exp(-dt/alphaOrTau_7); + Ynew[8] = betaOrInf_8 + (Y[8] - betaOrInf_8)*exp(-dt/alphaOrTau_8); + Ynew[9] = betaOrInf_9 + (Y[9] - betaOrInf_9)*exp(-dt/alphaOrTau_9); + Ynew[12] = betaOrInf_12 + (Y[12] - betaOrInf_12)*exp(-dt/alphaOrTau_12); + Ynew[13] = betaOrInf_13 + (Y[13] - betaOrInf_13)*exp(-dt/alphaOrTau_13); + Ynew[14] = betaOrInf_14 + (Y[14] - betaOrInf_14)*exp(-dt/alphaOrTau_14); + Ynew[15] = betaOrInf_15 + (Y[15] - betaOrInf_15)*exp(-dt/alphaOrTau_15); + Ynew[16] = betaOrInf_16 + (Y[16] - betaOrInf_16)*exp(-dt/alphaOrTau_16); + Ynew[17] = betaOrInf_17 + (Y[17] - betaOrInf_17)*exp(-dt/alphaOrTau_17); + Ynew[18] = betaOrInf_18 + (Y[18] - betaOrInf_18)*exp(-dt/alphaOrTau_18); + Ynew[19] = betaOrInf_19 + (Y[19] - betaOrInf_19)*exp(-dt/alphaOrTau_19); +} + +// Remainder: Forward Euler +void computeRemainderForwardEuler(){ + + Ynew[0] = Y[0] + dt * d_dt_V; + Ynew[1] = Y[1] + dt * d_dt_Ca_i; + Ynew[10] = Y[10] + dt * d_dt_f_Ca; + Ynew[11] = Y[11] + dt * d_dt_f_Ca2; + Ynew[20] = Y[20] + dt * d_dt_a; + Ynew[21] = Y[21] + dt * d_dt_Na_i; + Ynew[22] = Y[22] + dt * d_dt_Cl_i; + Ynew[23] = Y[23] + dt * d_dt_K_i; + Ynew[24] = Y[24] + dt * d_dt_Ca_MK_trap; + Ynew[25] = Y[25] + dt * d_dt_Ca_NSR; + Ynew[26] = Y[26] + dt * d_dt_Ca_JSR; + Ynew[27] = Y[27] + dt * d_dt_Ca_r; + Ynew[28] = Y[28] + dt * d_dt_ri; + Ynew[29] = Y[29] + dt * d_dt_ro; + Ynew[30] = Y[30] + dt; +} + +compute(); +computeTauInf(); +computeRemainderForwardEuler(); + + +Vmem = Ynew[0]; +time = Ynew[30]; + + + +//============================================================================== +// End of file +//============================================================================== diff --git a/chaste_codegen/data/tests/chaste_reference_models/RL_labview/aslanidi_atrial_model_2009--sympy_1_13.txt b/chaste_codegen/data/tests/chaste_reference_models/RL_labview/aslanidi_atrial_model_2009--sympy_1_13.txt new file mode 100644 index 00000000..f81d33f4 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/RL_labview/aslanidi_atrial_model_2009--sympy_1_13.txt @@ -0,0 +1,573 @@ +//=========================================================================== +// This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +// +// Model: aslanidi_2009 +// +// Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +// (translator: chaste_codegen, model type: RushLarsenLabview) +// on (date omitted as unimportant) +// +// +//=========================================================================== + +//--------------------------------------------------------------------------- +// Setup & input +//--------------------------------------------------------------------------- + +float64 Ynew[31]; +float64 dY[31]; +float64 Vmem; +float64 time; + +//--------------------------------------------------------------------------- +// State Variables +//--------------------------------------------------------------------------- + +// 0: V (units: millivolt, initial value: -83.43812846286808, component: membrane) +// 1: Ca_i (units: millimolar, initial value: 0.00022355433459434943, component: Ca_i) +// 2: m (units: dimensionless, initial value: 0.002003390432234504, component: i_Na_m_gate) +// 3: h (units: dimensionless, initial value: 0.9786390933308567, component: i_Na_h_gate) +// 4: j (units: dimensionless, initial value: 0.09866447258167589, component: i_Na_j_gate) +// 5: m_L (units: dimensionless, initial value: 0.002003390432234504, component: i_Na_L_m_L_gate) +// 6: h_L (units: dimensionless, initial value: 0.8946968372659203, component: i_Na_L_h_L_gate) +// 7: d (units: dimensionless, initial value: 2.322223865147363e-06, component: i_Ca_L_d_gate) +// 8: f (units: dimensionless, initial value: 0.9985607329462358, component: i_Ca_L_f_gate) +// 9: f2 (units: dimensionless, initial value: 0.8173435436674658, component: i_Ca_L_f2_gate) +// 10: f_Ca (units: dimensionless, initial value: 0.9610551285529658, component: i_Ca_L_f_Ca_gate) +// 11: f_Ca2 (units: dimensionless, initial value: 0.868690796671854, component: i_Ca_L_f_Ca2_gate) +// 12: b (units: dimensionless, initial value: 0.0002563937630984438, component: i_Ca_T_b_gate) +// 13: g (units: dimensionless, initial value: 0.9720432601848331, component: i_Ca_T_g_gate) +// 14: a (units: dimensionless, initial value: 0.0004238729429342389, component: i_to_1_a_gate) +// 15: i (units: dimensionless, initial value: 0.9990935802459496, component: i_to_1_i_gate) +// 16: i2 (units: dimensionless, initial value: 0.9777368439681764, component: i_to_1_i2_gate) +// 17: xr (units: dimensionless, initial value: 0.07084939408222911, component: i_Kr_xr_gate) +// 18: xs1 (units: dimensionless, initial value: 0.0011737654433043125, component: i_Ks_xs1_gate) +// 19: xs2 (units: dimensionless, initial value: 0.001179442867470093, component: i_Ks_xs2_gate) +// 20: a (units: dimensionless, initial value: 0.0014909437525000811, component: i_to_2_a_gate) +// 21: Na_i (units: millimolar, initial value: 9.927155552932733, component: intracellular_ion_concentrations) +// 22: Cl_i (units: millimolar, initial value: 18.904682470140408, component: intracellular_ion_concentrations) +// 23: K_i (units: millimolar, initial value: 141.9670801746057, component: intracellular_ion_concentrations) +// 24: Ca_MK_trap (units: dimensionless, initial value: 8.789168284782809e-06, component: Ca_MK_act) +// 25: Ca_NSR (units: millimolar, initial value: 1.2132524695849454, component: Ca_NSR) +// 26: Ca_JSR (units: millimolar, initial value: 1.1433050636518596, component: Ca_JSR) +// 27: Ca_r (units: millimolar, initial value: 0.00022418117117903934, component: Ca_r) +// 28: ri (units: dimensionless, initial value: 0.7802870066567904, component: q_rel_ri_gate) +// 29: ro (units: dimensionless, initial value: 1.2785734760674763e-09, component: q_rel_ro_gate) +// 30: time (millisecond) + +//--------------------------------------------------------------------------- +// Constants +//--------------------------------------------------------------------------- + +float64 A0_bck = 1.0278; // dimensionless (in A0_bc) +float64 Ampl_gain = 1; // dimensionless (in Ampl_gai) +float64 Cext = 1; // picoF (in Cex) +float64 E_l = 1; // millivolt (in E_) +float64 I = 1; // dimensionless (in ) +float64 R_seal = 1; // ohm (in R_sea) +float64 Scale_bck = 1; // dimensionless (in Scale_bc) +float64 Scaling = 1; // dimensionless (in Scalin) +float64 k_bck = 0.098599999999999993; // one_over_millivolt (in k_bc) +float64 leak_comp_perc = 1; // dimensionless (in leak_comp_per) +float64 q_leak_max = 0.0043750000000000004; // millimolar_per_millisecond (in q_leak) +float64 g_rel_max = 3000; // per_millisecond (in q_rel) +float64 q_up_max = 0.0043750000000000004; // millimolar_per_millisecond (in q_up) +float64 conc_clamp = 1; // dimensionless (in intracellular_ion_concentrations) +float64 Ca_o = 1.8; // millimolar (in model_parameters) +float64 K_o = 5.4000000000000004; // millimolar (in model_parameters) +float64 Na_o = 140; // millimolar (in model_parameters) +float64 g_Ca_L = 0.3392328; // dimensionless (in i_Ca_L) +float64 g_Na = 8; // milliS_per_microF (in i_Na) +float64 perc_reduced_inact_for_IpNa = 0; // dimensionless (in i_Na) +float64 shift_INa_inact = 0; // millivolt (in i_Na) +float64 g_K1_max = 0.25; // milliS_per_microF (in i_K1) +float64 g_Kr_max = 0.040008488000000002; // milliS_per_microF (in i_Kr) +float64 g_Ks_max = 0.052581329000000003; // milliS_per_microF (in i_Ks) +float64 i_NaCa_max = 4.5; // microA_per_microF (in i_NaCa) +float64 stim_amplitude = -80; // microA_per_microF (in membrane) +float64 stim_duration = 1; // millisecond (in membrane) +float64 stim_start = 100; // millisecond (in membrane) +float64 stim_period = 800; // millisecond (in membrane) +float64 g_to_1 = 0.14135944; // milliS_per_microF (in i_to_1) + +float64 CT_K_Cl_max = 7.0755999999999996e-6; // millimolar_per_millisecond (in CT_K_Cl) +float64 CT_Na_Cl_max = 9.8442999999999999e-6; // millimolar_per_millisecond (in CT_Na_Cl) +float64 CSQN_max = 10; // millimolar (in Ca_JSR) +float64 km_CSQN = 0.80000000000000004; // millimolar (in Ca_JSR) +float64 Ca_MK_0 = 0.050000000000000003; // dimensionless (in Ca_MK_act) +float64 alpha_Ca_MK = 0.050000000000000003; // per_millisecond (in Ca_MK_act) +float64 beta_Ca_MK = 0.00068000000000000005; // per_millisecond (in Ca_MK_act) +float64 km_Ca_MK = 0.14999999999999999; // millimolar (in Ca_MK_act) +float64 CMDN_max = 0.050000000000000003; // millimolar (in Ca_i) +float64 TRPN_max = 0.070000000000000007; // millimolar (in Ca_i) +float64 km_CMDN = 0.0023800000000000002; // millimolar (in Ca_i) +float64 km_TRPN = 0.00050000000000000001; // millimolar (in Ca_i) +float64 b_SL_max = 1.1240000000000001; // millimolar (in Ca_r) +float64 b_SR_max = 0.047; // millimolar (in Ca_r) +float64 km_b_SL = 0.0086999999999999994; // millimolar (in Ca_r) +float64 km_b_SR = 0.00087000000000000001; // millimolar (in Ca_r) +float64 tau_ss = 0.20000000000000001; // millisecond (in Ca_r) +float64 g_Cl_b = 0.00022499999999999999; // milliS_per_microF (in background_currents) +float64 g_K_b = 0.0050000000000000001; // milliS_per_microF (in background_currents) +float64 g_Na_b = 0.0025000000000000001; // milliS_per_microF (in background_currents) +float64 r_NaK = 0.018329999999999999; // dimensionless (in equilibrium_potentials) +float64 g_Ca_T = 0.13; // milliS_per_microF (in i_Ca_T) +float64 i_Ca_p_max = 0.057500000000000002; // microA_per_microF (in i_Ca_p) +float64 km_Ca_p = 0.00050000000000000001; // millimolar (in i_Ca_p) +float64 g_K_p = 0.0027599999999999999; // milliS_per_microF (in i_K_p) +float64 X_NaCa = 0.40000000000000002; // dimensionless (in i_NaCa) +float64 k_sat = 0.27000000000000002; // dimensionless (in i_NaCa) +float64 km_Ca_act = 0.000125; // millimolar (in i_NaCa) +float64 km_Ca_i = 0.0035999999999999999; // millimolar (in i_NaCa) +float64 km_Ca_o = 1.3; // millimolar (in i_NaCa) +float64 km_Na_i_1 = 12.300000000000001; // millimolar (in i_NaCa) +float64 km_Na_o = 87.5; // millimolar (in i_NaCa) +float64 g_NaK = 0.61875000000000002; // microA_per_microF (in i_NaK) +float64 km_K_o = 1.5; // millimolar (in i_NaK) +float64 km_Na_i_2 = 10; // millimolar (in i_NaK) +float64 g_Na_L = 0.037374999999999999; // milliS_per_microF (in i_Na_L) +float64 km_to_2 = 0.1502; // millimolar (in i_to_2_a_gate) +float64 tau_a = 1; // millisecond (in i_to_2_a_gate) +float64 stim_end = 100000; // millisecond (in membrane) +float64 Cl_o = 100; // millimolar (in model_parameters) +float64 Cm = 1; // microF_per_cm2 (in model_parameters) +float64 F = 96485; // coulomb_per_mole (in model_parameters) +float64 R = 8314; // joule_per_kilomole_kelvin (in model_parameters) +float64 T = 310; // kelvin (in model_parameters) +float64 Vol_cell = 0.34539999999999998; // microlitre (in model_parameters) +float64 length = 0.01; // cm (in model_parameters) +float64 radius = 0.0011000000000000001; // cm (in model_parameters) +float64 rcg = 2; // dimensionless (in model_parameters) +float64 z_Ca = 2; // dimensionless (in model_parameters) +float64 NSR_max = 15; // millimolar (in q_leak) +float64 tau_Ca_MK_max = 10; // millisecond (in q_rel_ri_gate) +float64 tau_ro = 3; // millisecond (in q_rel_ro_gate) +float64 tau_tr = 120; // millisecond (in q_tr) +float64 X_q_up = 0.5; // dimensionless (in q_up) +float64 dkm_plb_max = 0.00017000000000000001; // millimolar (in q_up) +float64 dq_up_Ca_MK_max = 0.75; // dimensionless (in q_up) +float64 km_up = 0.00092000000000000003; // millimolar (in q_up) + +//------------------------------------------------------------------------------ +// Computed variables +//------------------------------------------------------------------------------ + +float64 CMDN; // dimensionless (in Ca_i) +float64 TRPN; // dimensionless (in Ca_i) +float64 b_myo; // dimensionless (in Ca_i) +float64 Ca_MK_bound; // dimensionless (in Ca_MK_act) +float64 Ca_MK_act; // dimensionless (in Ca_MK_act) +float64 b_SL; // dimensionless (in Ca_r) +float64 b_SR; // dimensionless (in Ca_r) +float64 Ca_r_tot; // dimensionless (in Ca_r) +float64 q_diff; // millimolar_per_millisecond (in Ca_r) +float64 I_ext; // dimensionless (in I_ex) +float64 g_leak; // one_over_ohm (in g_lea) +float64 tau_f_Ca; // millisecond (in i_Ca_L_f_Ca_gate) +float64 i_Ca_p; // microA_per_microF (in i_Ca_p) +float64 g_Ks; // milliS_per_microF (in i_Ks) +float64 a_infinity; // dimensionless (in i_to_2_a_gate) +float64 d_infinity; // dimensionless (in i_Ca_L_d_gate) +float64 tau_d; // millisecond (in i_Ca_L_d_gate) +float64 f2_infinity; // dimensionless (in i_Ca_L_f2_gate) +float64 tau_f2; // millisecond (in i_Ca_L_f2_gate) +float64 f_infinity; // dimensionless (in i_Ca_L_f_gate) +float64 tau_f; // millisecond (in i_Ca_L_f_gate) +float64 i_Ca_T; // microA_per_microF (in i_Ca_T) +float64 alpha_b; // per_millisecond (in i_Ca_T_b_gate) +float64 b_infinity; // dimensionless (in i_Ca_T_b_gate) +float64 beta_b; // per_millisecond (in i_Ca_T_b_gate) +float64 tau_b; // millisecond (in i_Ca_T_b_gate) +float64 alpha_g; // per_millisecond (in i_Ca_T_g_gate) +float64 beta_g; // per_millisecond (in i_Ca_T_g_gate) +float64 g_infinity; // dimensionless (in i_Ca_T_g_gate) +float64 tau_g; // millisecond (in i_Ca_T_g_gate) +float64 kp; // dimensionless (in i_K_p) +float64 rr_infinity; // dimensionless (in i_Kr) +float64 tau_xr; // millisecond (in i_Kr_xr_gate) +float64 xr_infinity; // dimensionless (in i_Kr_xr_gate) +float64 tau_xs1_PW_0; // millisecond (in i_Ks_xs1_gate) +float64 tau_xs1_PW_1; // millisecond (in i_Ks_xs1_gate) +float64 tau_xs1; // millisecond (in i_Ks_xs1_gate) +float64 xs1_infinity; // dimensionless (in i_Ks_xs1_gate) +float64 tau_xs2_PW_0; // millisecond (in i_Ks_xs2_gate) +float64 tau_xs2_PW_1; // millisecond (in i_Ks_xs2_gate) +float64 tau_xs2; // millisecond (in i_Ks_xs2_gate) +float64 xs2_infinity; // dimensionless (in i_Ks_xs2_gate) +float64 h_L_infinity; // dimensionless (in i_Na_L_h_L_gate) +float64 tau_h_L; // millisecond (in i_Na_L_h_L_gate) +float64 alpha_m_L; // per_millisecond (in i_Na_L_m_L_gate) +float64 beta_m_L; // per_millisecond (in i_Na_L_m_L_gate) +float64 m_L_infinity; // dimensionless (in i_Na_L_m_L_gate) +float64 tau_m_L; // millisecond (in i_Na_L_m_L_gate) +float64 alpha_h; // per_millisecond (in i_Na_h_gate) +float64 beta_h; // per_millisecond (in i_Na_h_gate) +float64 h_infinity; // dimensionless (in i_Na_h_gate) +float64 tau_h; // millisecond (in i_Na_h_gate) +float64 alpha_j; // per_millisecond (in i_Na_j_gate) +float64 beta_j; // per_millisecond (in i_Na_j_gate) +float64 j_infinity; // dimensionless (in i_Na_j_gate) +float64 tau_j; // millisecond (in i_Na_j_gate) +float64 alpha_m; // per_millisecond (in i_Na_m_gate) +float64 beta_m; // per_millisecond (in i_Na_m_gate) +float64 m_infinity; // dimensionless (in i_Na_m_gate) +float64 tau_m; // millisecond (in i_Na_m_gate) +float64 i_bck; // dimensionless (in i_bc) +float64 i_leak_comp; // dimensionless (in i_leak_com) +float64 i_inj; // dimensionless (in i_in) +float64 alpha_a; // per_millisecond (in i_to_1_a_gate) +float64 beta_a; // per_millisecond (in i_to_1_a_gate) +float64 a_infinity; // dimensionless (in i_to_1_a_gate) +float64 tau_a; // millisecond (in i_to_1_a_gate) +float64 alpha_i2; // per_millisecond (in i_to_1_i2_gate) +float64 beta_i2; // per_millisecond (in i_to_1_i2_gate) +float64 i2_infinity; // dimensionless (in i_to_1_i2_gate) +float64 tau_i2; // millisecond (in i_to_1_i2_gate) +float64 alpha_i; // per_millisecond (in i_to_1_i_gate) +float64 beta_i; // per_millisecond (in i_to_1_i_gate) +float64 i_infinity; // dimensionless (in i_to_1_i_gate) +float64 tau_i; // millisecond (in i_to_1_i_gate) +float64 i_to_2_max; // microA_per_microF (in i_to_2) +float64 i_to_2; // microA_per_microF (in i_to_2) +float64 i_stim; // microA_per_microF (in membrane) +float64 i_Ca_b; // microA_per_microF (in background_currents) +float64 i_Ca_L_max; // microA_per_microF (in i_Ca_L) +float64 i_Ca_L; // microA_per_microF (in i_Ca_L) +float64 f_Ca2_infinity; // dimensionless (in i_Ca_L_f_Ca2_gate) +float64 tau_f_Ca2; // millisecond (in i_Ca_L_f_Ca2_gate) +float64 f_Ca_infinity; // dimensionless (in i_Ca_L_f_Ca_gate) +float64 dNaCa_1; // millimolar4 (in i_NaCa) +float64 g_K1; // milliS_per_microF (in i_K1) +float64 g_Kr; // milliS_per_microF (in i_Kr) +float64 dNaCa_2; // millimolar4 (in i_NaCa) +float64 sigma; // dimensionless (in i_NaK) +float64 E_Cl; // millivolt (in equilibrium_potentials) +float64 i_Cl_b; // microA_per_microF (in background_currents) +float64 E_K; // millivolt (in equilibrium_potentials) +float64 CT_K_Cl; // millimolar_per_millisecond (in CT_K_Cl) +float64 i_K_b; // microA_per_microF (in background_currents) +float64 E_Ks; // millivolt (in equilibrium_potentials) +float64 E_Na; // millivolt (in equilibrium_potentials) +float64 CT_Na_Cl; // millimolar_per_millisecond (in CT_Na_Cl) +float64 i_Na_b; // microA_per_microF (in background_currents) +float64 alpha_xK1; // dimensionless (in i_K1_xK1_gate) +float64 beta_xK1; // dimensionless (in i_K1_xK1_gate) +float64 xK1; // dimensionless (in i_K1_xK1_gate) +float64 i_K1; // microA_per_microF (in i_K1) +float64 i_K_p; // microA_per_microF (in i_K_p) +float64 i_Kr; // microA_per_microF (in i_Kr) +float64 i_Ks; // microA_per_microF (in i_Ks) +float64 i_Na; // microA_per_microF (in i_Na) +float64 i_NaCa; // microA_per_microF (in i_NaCa) +float64 f_NaK; // dimensionless (in i_NaK) +float64 i_NaK; // microA_per_microF (in i_NaK) +float64 i_Na_L; // microA_per_microF (in i_Na_L) +float64 i_to_1; // microA_per_microF (in i_to_1) +float64 i_tot; // microA_per_microF (in membrane) +float64 Vol_jsr; // microlitre (in model_parameters) +float64 Vol_myo; // microlitre (in model_parameters) +float64 Vol_nsr; // microlitre (in model_parameters) +float64 Vol_ss; // microlitre (in model_parameters) +float64 a_geo; // cm2 (in model_parameters) +float64 a_cap; // cm2 (in model_parameters) +float64 q_leak; // millimolar_per_millisecond (in q_leak) +float64 vg; // dimensionless (in q_rel) +float64 g_rel; // per_millisecond (in q_rel) +float64 Ca_fac; // millimolar (in q_rel_ri_gate) +float64 ri_infinity; // dimensionless (in q_rel_ri_gate) +float64 tau_Ca_MK; // millisecond (in q_rel_ri_gate) +float64 tau_ri; // millisecond (in q_rel_ri_gate) +float64 q_rel; // millimolar_per_millisecond (in q_rel) +float64 ro_infinity_JSR; // dimensionless (in q_rel_ro_gate) +float64 ro_infinity; // dimensionless (in q_rel_ro_gate) +float64 q_tr; // millimolar_per_millisecond (in q_tr) +float64 dkm_plb; // millimolar (in q_up) +float64 dq_up_Ca_MK; // dimensionless (in q_up) +float64 q_up; // millimolar_per_millisecond (in q_up) + + +//--------------------------------------------------------------------------- +// Computation +//--------------------------------------------------------------------------- + +CMDN = 2 * CMDN_max * Y[1] / pow((km_CMDN + Y[1]), 2); // dimensionless +TRPN = 2 * TRPN_max * Y[1] / pow((km_TRPN + Y[1]), 2); // dimensionless +b_myo = 1 / (1 + CMDN + TRPN); // dimensionless +Ca_MK_bound = (1 - Y[24]) * Ca_MK_0 / (1 + km_Ca_MK / Y[27]); // dimensionless +Ca_MK_act = Ca_MK_bound + Y[24]; // dimensionless +b_SL = 2 * b_SL_max * Y[27] / pow((km_b_SL + Y[27]), 2); // dimensionless +b_SR = 2 * b_SR_max * Y[27] / pow((km_b_SR + Y[27]), 2); // dimensionless +Ca_r_tot = 1 / (1 + b_SL + b_SR); // dimensionless +q_diff = (-Y[1] + Y[27]) / tau_ss; // millimolar_per_millisecond +dY[24] = -beta_Ca_MK * Y[24] + (Ca_MK_bound + Y[24]) * Ca_MK_bound * alpha_Ca_MK; // 1 / millisecond +I_ext = I / (Ampl_gain * Cext); // dimensionless +g_leak = 1 / R_seal; // one_over_ohm +tau_f_Ca = 0.5 + 1 / (1 + 333.33333333333331 * Y[27]) + 10 * Ca_MK_act / (1 * Ca_MK_act + km_Ca_MK); // millisecond +i_Ca_p = Y[1] * i_Ca_p_max / (Y[1] + km_Ca_p); // microA_per_microF +g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / Y[1]), 1.3999999999999999))) * g_Ks_max; // milliS_per_microF +a_infinity = 1 / (1 + km_to_2 / Y[27]); // dimensionless +dY[20] = (-Y[20] + a_infinity) / tau_a; // 1 / millisecond +d_infinity = 1 / (1 + exp(0.59347181008902072 - 0.14836795252225518 * Y[0])); // dimensionless +tau_d = 0.58999999999999997 + 0.80000000000000004 * exp(0.67599999999999993 + 0.051999999999999998 * Y[0]) / (1 + exp(1.7160000000000002 + 0.13200000000000001 * Y[0])); // millisecond +f2_infinity = 1 / (1 + exp(1.8 + 0.10000000000000001 * Y[0])); // dimensionless +tau_f2 = 38 + 24.217200000000005 * pow((-1 + 0.053763440860215048 * Y[0]), 2); // millisecond +f_infinity = 1 / (1 + exp(1.8 + 0.10000000000000001 * Y[0])); // dimensionless +tau_f = 4 + 0.03125 * pow((-1 + 0.40000000000000002 * Y[0]), 2); // millisecond +i_Ca_T = (-50 + Y[0]) * Y[12] * Y[13] * g_Ca_T; // microA_per_microF +alpha_b = 1.0680000000000001 * exp(0.54333333333333333 + 0.033333333333333333 * Y[0]); // per_millisecond +b_infinity = 1 / (1 + exp(-5.4098360655737707 - 0.16393442622950821 * Y[0])); // dimensionless +beta_b = 1.0680000000000001 * exp(-0.54333333333333333 - 0.033333333333333333 * Y[0]); // per_millisecond +tau_b = 1 / (alpha_b + beta_b); // millisecond +alpha_g = 0.014999999999999999 * exp(-0.86074429771908767 - 0.012004801920768308 * Y[0]); // per_millisecond +beta_g = 0.014999999999999999 * exp(4.6558441558441563 + 0.064935064935064929 * Y[0]); // per_millisecond +g_infinity = 1 / (1 + exp(9.0909090909090917 + 0.15151515151515152 * Y[0])); // dimensionless +tau_g = 1 / (alpha_g + beta_g); // millisecond +kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * Y[0])); // dimensionless +rr_infinity = 1 / (1 + exp(-0.26470588235294124 + 0.049019607843137261 * Y[0])); // dimensionless +tau_xr = 100 + 900 / (1 + exp(0.20000000000000001 * Y[0])); // millisecond +xr_infinity = 1 / (1 + exp(-0.0069387755102040824 - 0.081632653061224483 * Y[0])); // dimensionless +if ((Y[0] >= 0.54999921875000002) && (Y[0] <= 0.55000078125000007)) + tau_xs1_PW_0 = -2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8)) + 640000.00000042573 * (-0.54999921875000002 + Y[0]) * (2.8124999999996902e-10 / (-1 + exp(9.9999999999988984e-8)) + 2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8))) +else + tau_xs1_PW_0 = 0.00036000000000000002 * (-0.55000000000000004 + Y[0]) / (-1 + exp(-0.070400000000000004 + 0.128 * Y[0])) + +if ((Y[0] >= -44.600000010030094) && (Y[0] <= -44.599999989969909)) + tau_xs1_PW_1 = -7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 49850000.061936118 * (44.600000010030094 + Y[0]) * (7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 7.6328986866047728e-13 / (1 - exp(-9.9999999875755032e-8))) +else + tau_xs1_PW_1 = 7.6100000000000007e-5 * (44.600000000000001 + Y[0]) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * Y[0])) + +tau_xs1 = 1 / (tau_xs1_PW_0 + tau_xs1_PW_1); // millisecond +xs1_infinity = 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * Y[0])); // dimensionless +if ((Y[0] >= 0.54999921875000002) && (Y[0] <= 0.55000078125000007)) + tau_xs2_PW_0 = -2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8)) + 640000.00000042573 * (-0.54999921875000002 + Y[0]) * (2.8124999999996902e-10 / (-1 + exp(9.9999999999988984e-8)) + 2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8))) +else + tau_xs2_PW_0 = 0.00036000000000000002 * (-0.55000000000000004 + Y[0]) / (-1 + exp(-0.070400000000000004 + 0.128 * Y[0])) + +if ((Y[0] >= -44.600000010030094) && (Y[0] <= -44.599999989969909)) + tau_xs2_PW_1 = -7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 49850000.061936118 * (44.600000010030094 + Y[0]) * (7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 7.6328986866047728e-13 / (1 - exp(-9.9999999875755032e-8))) +else + tau_xs2_PW_1 = 7.6100000000000007e-5 * (44.600000000000001 + Y[0]) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * Y[0])) + +tau_xs2 = 2 / (tau_xs2_PW_0 + tau_xs2_PW_1); // millisecond +xs2_infinity = 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * Y[0])); // dimensionless +h_L_infinity = 1 / (1 + exp(11.311475409836067 + 0.16393442622950821 * Y[0])); // dimensionless +tau_h_L = 175 + 125 / (1 + exp(-4.166666666666667 - 0.16666666666666666 * Y[0])); // millisecond +if ((Y[0] >= -47.130001) && (Y[0] <= -47.129999000000005)) + alpha_m_L = -3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 499999.99998562218 * (47.130001 + Y[0]) * (3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 3.200000000092018e-7 / (1 - exp(-1.0000000000287557e-7))) +else + alpha_m_L = 0.32000000000000001 * (47.130000000000003 + Y[0]) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * Y[0])) + +beta_m_L = 0.080000000000000002 * exp(-0.090909090909090912 * Y[0]); // per_millisecond +m_L_infinity = alpha_m_L / (alpha_m_L + beta_m_L); // dimensionless +tau_m_L = 1 / (alpha_m_L + beta_m_L); // millisecond +if (Y[0] < -40) + alpha_h = 0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * shift_INa_inact - 0.14705882352941177 * Y[0]) +else + alpha_h = 0 + +if (Y[0] < -40) + beta_h = 310000 * exp(0.34999999999999998 * Y[0] - 0.34999999999999998 * shift_INa_inact) + 3.5600000000000001 * exp(0.079000000000000001 * Y[0] - 0.079000000000000001 * shift_INa_inact) +else + beta_h = 7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * shift_INa_inact - 0.0900900900900901 * Y[0])) + +h_infinity = 0.01 * perc_reduced_inact_for_IpNa + (1 - 0.01 * perc_reduced_inact_for_IpNa) * alpha_h / (alpha_h + beta_h); // dimensionless +tau_h = 1 / (alpha_h + beta_h); // millisecond +if (Y[0] < -40) + alpha_j = (37.780000000000001 + Y[0]) * (-127140 * exp(0.24440000000000001 * Y[0] - 0.24440000000000001 * shift_INa_inact) - 3.4740000000000003e-5 * exp(0.043909999999999998 * shift_INa_inact - 0.043909999999999998 * Y[0])) / (1 + exp(24.640530000000002 + 0.311 * Y[0] - 0.311 * shift_INa_inact)) +else + alpha_j = 0 + +if (Y[0] < -40) + beta_j = 0.1212 * exp(0.01052 * shift_INa_inact - 0.01052 * Y[0]) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * shift_INa_inact - 0.13780000000000001 * Y[0])) +else + beta_j = 0.29999999999999999 * exp(2.5349999999999999e-7 * shift_INa_inact - 2.5349999999999999e-7 * Y[0]) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * shift_INa_inact - 0.10000000000000001 * Y[0])) + +j_infinity = 0.01 * perc_reduced_inact_for_IpNa + (1 - 0.01 * perc_reduced_inact_for_IpNa) * alpha_j / (alpha_j + beta_j); // dimensionless +tau_j = 1 / (alpha_j + beta_j); // millisecond +if ((Y[0] >= -47.130001) && (Y[0] <= -47.129999000000005)) + alpha_m = -3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 499999.99998562218 * (47.130001 + Y[0]) * (3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 3.200000000092018e-7 / (1 - exp(-1.0000000000287557e-7))) +else + alpha_m = 0.32000000000000001 * (47.130000000000003 + Y[0]) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * Y[0])) + +beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * Y[0]); // per_millisecond +m_infinity = alpha_m / (alpha_m + beta_m); // dimensionless +tau_m = 1 / (alpha_m + beta_m); // millisecond +i_bck = A0_bck * Scale_bck / ((1 + exp(-Y[0] * k_bck)) * Cext); // dimensionless +i_leak_comp = (-E_l + Y[0]) * g_leak * leak_comp_perc / (100 * Cext); // dimensionless +i_inj = (-i_bck - i_leak_comp + I_ext) * Scaling; // dimensionless +alpha_a = 25 * exp(-3.7999999999999998 + 0.050000000000000003 * Y[0]) / (1 + exp(-3.7999999999999998 + 0.050000000000000003 * Y[0])); // per_millisecond +beta_a = 25 * exp(-2.7000000000000002 - 0.050000000000000003 * Y[0]) / (1 + exp(-2.7000000000000002 - 0.050000000000000003 * Y[0])); // per_millisecond +a_infinity = alpha_a / (alpha_a + beta_a); // dimensionless +tau_a = 1 / (alpha_a + beta_a); // millisecond +alpha_i2 = 0.0044200000000000003 / (1 + exp(1.7333333333333334 + 0.066666666666666666 * Y[0])); // per_millisecond +beta_i2 = 0.050000000000000003 * exp(-0.66666666666666663 + 0.066666666666666666 * Y[0]) / (1 + exp(-0.66666666666666663 + 0.066666666666666666 * Y[0])); // per_millisecond +i2_infinity = alpha_i2 / (alpha_i2 + beta_i2); // dimensionless +tau_i2 = 21.5 + 30 / (1 + exp(-2.5 + 0.10000000000000001 * Y[0])); // millisecond +alpha_i = 0.029999999999999999 / (1 + exp(1.6666666666666667 + 0.066666666666666666 * Y[0])); // per_millisecond +beta_i = 0.10000000000000001 * exp(-2.6666666666666665 + 0.066666666666666666 * Y[0]) / (1 + exp(-2.6666666666666665 + 0.066666666666666666 * Y[0])); // per_millisecond +i_infinity = alpha_i / (alpha_i + beta_i); // dimensionless +tau_i = 6 + 5 / (1 + exp(-1.6499999999999999 + 0.10000000000000001 * Y[0])); // millisecond +if ((Y[0] >= -2.6712338705498262e-6) && (Y[0] <= 2.6712338705498262e-6)) + i_to_2_max = 187179.41753901311 * (2.6712338705498262e-6 + Y[0]) * (3.8593999999999993e-9 * (-100 * exp(9.9999999999999995e-8) + Y[22]) / (1 - exp(9.9999999999999995e-8)) + 3.8593999999999993e-9 * (-100 * exp(-9.9999999999999995e-8) + Y[22]) / (1 - exp(-9.9999999999999995e-8))) - 3.8593999999999993e-9 * (-100 * exp(-9.9999999999999995e-8) + Y[22]) / (1 - exp(-9.9999999999999995e-8)) +else + i_to_2_max = 0.0014448004881001341 * (-100 * exp(0.037435883507802616 * Y[0]) + Y[22]) * Y[0] / (1 - exp(0.037435883507802616 * Y[0])) + +i_to_2 = 20 * Y[20] * i_to_2_max; // microA_per_microF +if ((Y[30] >= stim_start) && (Y[30] <= stim_end) && (stim_duration >= -stim_start - stim_period * floor((-stim_start + Y[30]) / stim_period) + Y[30])) + i_stim = stim_amplitude +else + i_stim = 0 + +if ((Y[0] >= -1.3356169352749131e-6) && (Y[0] <= 1.3356169352749131e-6)) + i_Ca_b = 374358.83507802623 * (1.3356169352749131e-6 + Y[0]) * (3.8499135947999997e-9 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 3.8499135947999997e-9 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 3.8499135947999997e-9 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8)) +else + i_Ca_b = 0.0028824983370007683 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(0.074871767015605231 * Y[0])) * Y[0] / (-1 + exp(0.074871767015605231 * Y[0])) + +if ((Y[0] >= 14.999998664383064) && (Y[0] <= 15.000001335616936)) + i_Ca_L_max = 374358.83507888648 * (-14.999998664383064 + Y[0]) * (4.6891709999892238e-6 * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(9.9999999999770198e-8)) / (-1 + exp(9.9999999999770198e-8)) + 4.6891709999892238e-6 * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(-9.9999999999770198e-8)) / (-1 + exp(-9.9999999999770198e-8))) - 4.6891709999892238e-6 * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(-9.9999999999770198e-8)) / (-1 + exp(-9.9999999999770198e-8)) +else + i_Ca_L_max = 3.510865186083326 * (-15 + Y[0]) * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(-1.1230765052340785 + 0.074871767015605231 * Y[0])) / (-1 + exp(-1.1230765052340785 + 0.074871767015605231 * Y[0])) + +i_Ca_L = Y[10] * Y[11] * Y[7] * Y[8] * Y[9] * g_Ca_L * i_Ca_L_max; // microA_per_microF +f_Ca2_infinity = 1 / (1 - 100 * i_Ca_L); // dimensionless +tau_f_Ca2 = 125 + 300 / (1 + exp(-4.375 - 25 * i_Ca_L)); // millisecond +dY[11] = (-Y[11] + f_Ca2_infinity) / tau_f_Ca2; // 1 / millisecond +f_Ca_infinity = 0.14999999999999999 + 0.55000000000000004 / (1 + 333.33333333333331 * Y[27]) + 0.29999999999999999 / (1 - 20 * i_Ca_L); // dimensionless +dY[10] = (-Y[10] + f_Ca_infinity) / tau_f_Ca; // 1 / millisecond +dNaCa_1 = pow(Y[21], 3) * km_Ca_o + 1.5 * pow(km_Na_o, 3) * Y[1] + pow(km_Na_i_1, 3) * (1 + 1.5 * Y[1] / km_Ca_i) * Ca_o; // millimolar4 +g_K1 = 0.43033148291193518 * sqrt(K_o) * g_K1_max; // milliS_per_microF +g_Kr = 0.43033148291193518 * sqrt(K_o) * g_Kr_max; // milliS_per_microF +dNaCa_2 = pow(Y[21], 3) * Ca_o + 1.5 * pow(Na_o, 3) * Y[1] + pow(Na_o, 3) * (1 + Y[21] / km_Na_i_1) * km_Ca_i; // millimolar4 +sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * Na_o); // dimensionless +E_Cl = -R * T * log(Cl_o / Y[22]) / F; // millivolt +i_Cl_b = (-E_Cl + Y[0]) * g_Cl_b; // microA_per_microF +E_K = R * T * log(K_o / Y[23]) / F; // millivolt +CT_K_Cl = (-E_Cl + E_K) * CT_K_Cl_max / (87.825100000000006 - E_Cl + E_K); // millimolar_per_millisecond +i_K_b = (-E_K + Y[0]) * g_K_b; // microA_per_microF +E_Ks = R * T * log((r_NaK * Na_o + K_o) / (Y[21] * r_NaK + Y[23])) / F; // millivolt +E_Na = R * T * log(Na_o / Y[21]) / F; // millivolt +CT_Na_Cl = pow((-E_Cl + E_Na), 4) * CT_Na_Cl_max / (59494197.640692554 + pow((-E_Cl + E_Na), 4)); // millimolar_per_millisecond +i_Na_b = (-E_Na + Y[0]) * g_Na_b; // microA_per_microF +alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * Y[0] - 0.23849999999999999 * E_K)); // dimensionless +beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * Y[0] - 0.080320000000000003 * E_K) + exp(-36.698642499999998 + 0.061749999999999999 * Y[0] - 0.061749999999999999 * E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * E_K - 0.51429999999999998 * Y[0])); // dimensionless +xK1 = alpha_xK1 / (alpha_xK1 + beta_xK1); // dimensionless +i_K1 = (0.0040000000000000001 + g_K1 * xK1) * (-E_K + Y[0]); // microA_per_microF +i_K_p = (-E_K + Y[0]) * g_K_p * kp; // microA_per_microF +i_Kr = (-E_K + Y[0]) * Y[17] * g_Kr * rr_infinity; // microA_per_microF +i_Ks = (-E_Ks + Y[0]) * Y[18] * Y[19] * g_Ks; // microA_per_microF +i_Na = pow(Y[2], 3) * (-E_Na + Y[0]) * (0.20000000000000001 * Y[4] + 0.80000000000000004 * Y[3]) * g_Na; // microA_per_microF +i_NaCa = (-1.5 * pow(Na_o, 3) * Y[1] * exp(-0.65000000000000002 * Y[0] * F / (R * T)) + pow(Y[21], 3) * X_NaCa * i_NaCa_max * Ca_o * exp(0.34999999999999998 * Y[0] * F / (R * T))) / ((1 + k_sat * exp(-0.65000000000000002 * Y[0] * F / (R * T))) * (1 + 0.44444444444444442 * pow(km_Ca_act, 2) / pow(Y[1], 2)) * (dNaCa_1 + dNaCa_2)); // microA_per_microF +f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * Y[0] * F / (R * T)) + 0.036499999999999998 * sigma * exp(-Y[0] * F / (R * T))); // dimensionless +i_NaK = 1 * f_NaK * g_NaK * K_o / ((1 + pow(km_Na_i_2, 2) / pow(Y[21], 2)) * (km_K_o + K_o)); // microA_per_microF +i_Na_L = pow(Y[5], 3) * (-E_Na + Y[0]) * Y[6] * g_Na_L; // microA_per_microF +i_to_1 = (-E_K + Y[0]) * (0.20000000000000001 * Y[16] + 0.80000000000000004 * Y[15]) * Y[14] * g_to_1; // microA_per_microF +i_tot = i_Ca_b + i_Cl_b + i_K_b + i_Na_b + i_Ca_L + i_Ca_T + i_Ca_p + i_K1 + i_K_p + i_Kr + i_Ks + i_Na + i_NaCa + i_NaK + i_Na_L + i_to_1 + i_to_2; // microA_per_microF +dY[0] = -i_inj - i_stim - i_tot; // millivolt / millisecond +Vol_jsr = 0.0047999999999999996 * Vol_cell; // microlitre +Vol_myo = 0.68000000000000005 * Vol_cell; // microlitre +Vol_nsr = 0.055199999999999999 * Vol_cell; // microlitre +Vol_ss = 0.02 * Vol_cell; // microlitre +a_geo = 6.2800000000000002 * pow(radius, 2) + 6.2800000000000002 * length * radius; // cm2 +a_cap = a_geo * rcg; // cm2 +dY[22] = (-(i_Cl_b + i_to_2) * Cm * a_cap / (F * Vol_myo) + CT_K_Cl + CT_Na_Cl) * conc_clamp; // millimolar / millisecond +dY[23] = (-(-2 * i_NaK + i_K_b + i_K1 + i_K_p + i_Kr + i_Ks + i_to_1) * Cm * a_cap / (F * Vol_myo) + CT_K_Cl) * conc_clamp; // millimolar / millisecond +dY[21] = (-(3 * i_NaCa + 3 * i_NaK + i_Na_b + i_Na + i_Na_L) * Cm * a_cap / (F * Vol_myo) + CT_Na_Cl) * conc_clamp; // millimolar / millisecond +q_leak = Y[25] * q_leak_max / NSR_max; // millimolar_per_millisecond +vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * g_Ca_L * i_Ca_L_max)); // dimensionless +g_rel = g_rel_max * vg; // per_millisecond +Ca_fac = 1 / (1 + exp(3.3333333333333335 + 66.666666666666671 * i_Ca_L)); // millimolar +ri_infinity = 1 / (1 + exp(-16 + 80 * Ca_fac + 40000 * Y[27])); // dimensionless +tau_Ca_MK = 1 * Ca_MK_act * tau_Ca_MK_max / (1 * Ca_MK_act + km_Ca_MK); // millisecond +tau_ri = 3 + (350 - tau_Ca_MK) / (1 + exp(-15 + 5000 * Y[27] + 15 * Ca_fac)) + tau_Ca_MK; // millisecond +dY[28] = (-Y[28] + ri_infinity) / tau_ri; // 1 / millisecond +q_rel = (-Y[27] + Y[26]) * Y[28] * Y[29] * g_rel; // millimolar_per_millisecond +dY[27] = (-q_diff + Vol_jsr * q_rel / Vol_ss - i_Ca_L * Cm * a_cap / (F * Vol_ss * z_Ca)) * Ca_r_tot; // millimolar / millisecond +ro_infinity_JSR = pow(Y[26], 1.8999999999999999) / (pow(Y[26], 1.8999999999999999) + 1644.6531773416521 * pow((Y[27] / (0.0028 + Y[27])), 1.8999999999999999)); // dimensionless +ro_infinity = pow(i_Ca_L, 2) * ro_infinity_JSR / (1 + pow(i_Ca_L, 2)); // dimensionless +dY[29] = (-Y[29] + ro_infinity) / tau_ro; // 1 / millisecond +q_tr = (-Y[26] + Y[25]) / tau_tr; // millimolar_per_millisecond +dY[26] = (-q_rel + q_tr) / (1 + CSQN_max * km_CSQN / pow((km_CSQN + Y[26]), 2)); // millimolar / millisecond +dkm_plb = 1 * Ca_MK_act * dkm_plb_max / (1 * Ca_MK_act + km_Ca_MK); // millimolar +dq_up_Ca_MK = 1 * Ca_MK_act * dq_up_Ca_MK_max / (1 * Ca_MK_act + km_Ca_MK); // dimensionless +q_up = (1 + dq_up_Ca_MK) * Y[1] * X_q_up * q_up_max / (-dkm_plb + Y[1] + km_up); // millimolar_per_millisecond +dY[25] = -q_leak - Vol_jsr * q_tr / Vol_nsr + q_up; // millimolar / millisecond +dY[1] = -((-q_leak + q_up) * Vol_nsr / Vol_myo - q_diff * Vol_ss / Vol_myo + 0.5 * (-2 * i_NaCa + i_Ca_b + i_Ca_p) * Cm * a_cap / (F * Vol_myo)) * b_myo; // millimolar / millisecond +//------------------------------------------------------------------------------ +// Integration & Output +//------------------------------------------------------------------------------ +// Rush-Larsen method + +// get tau/inf or alpha/beta + +float64 alphaOrTau_2 = tau_m; +float64 betaOrInf_2 = m_infinity; +float64 alphaOrTau_3 = tau_h; +float64 betaOrInf_3 = h_infinity; +float64 alphaOrTau_4 = tau_j; +float64 betaOrInf_4 = j_infinity; +float64 alphaOrTau_5 = tau_m_L; +float64 betaOrInf_5 = m_L_infinity; +float64 alphaOrTau_6 = tau_h_L; +float64 betaOrInf_6 = h_L_infinity; +float64 alphaOrTau_7 = tau_d; +float64 betaOrInf_7 = d_infinity; +float64 alphaOrTau_8 = tau_f; +float64 betaOrInf_8 = f_infinity; +float64 alphaOrTau_9 = tau_f2; +float64 betaOrInf_9 = f2_infinity; +float64 alphaOrTau_12 = tau_b; +float64 betaOrInf_12 = b_infinity; +float64 alphaOrTau_13 = tau_g; +float64 betaOrInf_13 = g_infinity; +float64 alphaOrTau_14 = tau_a; +float64 betaOrInf_14 = a_infinity; +float64 alphaOrTau_15 = tau_i; +float64 betaOrInf_15 = i_infinity; +float64 alphaOrTau_16 = tau_i2; +float64 betaOrInf_16 = i2_infinity; +float64 alphaOrTau_17 = tau_xr; +float64 betaOrInf_17 = xr_infinity; +float64 alphaOrTau_18 = tau_xs1; +float64 betaOrInf_18 = xs1_infinity; +float64 alphaOrTau_19 = tau_xs2; +float64 betaOrInf_19 = xs2_infinity; + +// gating variables: Exponential integration + +Ynew[2] = betaOrInf_2 + (Y[2] - betaOrInf_2)*exp(-dt/alphaOrTau_2); +Ynew[3] = betaOrInf_3 + (Y[3] - betaOrInf_3)*exp(-dt/alphaOrTau_3); +Ynew[4] = betaOrInf_4 + (Y[4] - betaOrInf_4)*exp(-dt/alphaOrTau_4); +Ynew[5] = betaOrInf_5 + (Y[5] - betaOrInf_5)*exp(-dt/alphaOrTau_5); +Ynew[6] = betaOrInf_6 + (Y[6] - betaOrInf_6)*exp(-dt/alphaOrTau_6); +Ynew[7] = betaOrInf_7 + (Y[7] - betaOrInf_7)*exp(-dt/alphaOrTau_7); +Ynew[8] = betaOrInf_8 + (Y[8] - betaOrInf_8)*exp(-dt/alphaOrTau_8); +Ynew[9] = betaOrInf_9 + (Y[9] - betaOrInf_9)*exp(-dt/alphaOrTau_9); +Ynew[12] = betaOrInf_12 + (Y[12] - betaOrInf_12)*exp(-dt/alphaOrTau_12); +Ynew[13] = betaOrInf_13 + (Y[13] - betaOrInf_13)*exp(-dt/alphaOrTau_13); +Ynew[14] = betaOrInf_14 + (Y[14] - betaOrInf_14)*exp(-dt/alphaOrTau_14); +Ynew[15] = betaOrInf_15 + (Y[15] - betaOrInf_15)*exp(-dt/alphaOrTau_15); +Ynew[16] = betaOrInf_16 + (Y[16] - betaOrInf_16)*exp(-dt/alphaOrTau_16); +Ynew[17] = betaOrInf_17 + (Y[17] - betaOrInf_17)*exp(-dt/alphaOrTau_17); +Ynew[18] = betaOrInf_18 + (Y[18] - betaOrInf_18)*exp(-dt/alphaOrTau_18); +Ynew[19] = betaOrInf_19 + (Y[19] - betaOrInf_19)*exp(-dt/alphaOrTau_19); + +// Remainder: Forward Euler + +Ynew[0] = Y[0] + dt * d_dt_V; +Ynew[1] = Y[1] + dt * d_dt_Ca_i; +Ynew[10] = Y[10] + dt * d_dt_f_Ca; +Ynew[11] = Y[11] + dt * d_dt_f_Ca2; +Ynew[20] = Y[20] + dt * d_dt_a; +Ynew[21] = Y[21] + dt * d_dt_Na_i; +Ynew[22] = Y[22] + dt * d_dt_Cl_i; +Ynew[23] = Y[23] + dt * d_dt_K_i; +Ynew[24] = Y[24] + dt * d_dt_Ca_MK_trap; +Ynew[25] = Y[25] + dt * d_dt_Ca_NSR; +Ynew[26] = Y[26] + dt * d_dt_Ca_JSR; +Ynew[27] = Y[27] + dt * d_dt_Ca_r; +Ynew[28] = Y[28] + dt * d_dt_ri; +Ynew[29] = Y[29] + dt * d_dt_ro; +Ynew[30] = Y[30] + dt; + +Vmem = Ynew[0]; +time = Ynew[30]; \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/RL_labview/aslanidi_atrial_model_2009--sympy_1_14.txt b/chaste_codegen/data/tests/chaste_reference_models/RL_labview/aslanidi_atrial_model_2009--sympy_1_14.txt new file mode 100644 index 00000000..318b8500 --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/RL_labview/aslanidi_atrial_model_2009--sympy_1_14.txt @@ -0,0 +1,573 @@ +//=========================================================================== +// This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +// +// Model: aslanidi_2009 +// +// Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +// (translator: chaste_codegen, model type: RushLarsenLabview) +// on (date omitted as unimportant) +// +// +//=========================================================================== + +//--------------------------------------------------------------------------- +// Setup & input +//--------------------------------------------------------------------------- + +float64 Ynew[31]; +float64 dY[31]; +float64 Vmem; +float64 time; + +//--------------------------------------------------------------------------- +// State Variables +//--------------------------------------------------------------------------- + +// 0: V (units: millivolt, initial value: -83.43812846286808, component: membrane) +// 1: Ca_i (units: millimolar, initial value: 0.00022355433459434943, component: Ca_i) +// 2: m (units: dimensionless, initial value: 0.002003390432234504, component: i_Na_m_gate) +// 3: h (units: dimensionless, initial value: 0.9786390933308567, component: i_Na_h_gate) +// 4: j (units: dimensionless, initial value: 0.09866447258167589, component: i_Na_j_gate) +// 5: m_L (units: dimensionless, initial value: 0.002003390432234504, component: i_Na_L_m_L_gate) +// 6: h_L (units: dimensionless, initial value: 0.8946968372659203, component: i_Na_L_h_L_gate) +// 7: d (units: dimensionless, initial value: 2.322223865147363e-06, component: i_Ca_L_d_gate) +// 8: f (units: dimensionless, initial value: 0.9985607329462358, component: i_Ca_L_f_gate) +// 9: f2 (units: dimensionless, initial value: 0.8173435436674658, component: i_Ca_L_f2_gate) +// 10: f_Ca (units: dimensionless, initial value: 0.9610551285529658, component: i_Ca_L_f_Ca_gate) +// 11: f_Ca2 (units: dimensionless, initial value: 0.868690796671854, component: i_Ca_L_f_Ca2_gate) +// 12: b (units: dimensionless, initial value: 0.0002563937630984438, component: i_Ca_T_b_gate) +// 13: g (units: dimensionless, initial value: 0.9720432601848331, component: i_Ca_T_g_gate) +// 14: a (units: dimensionless, initial value: 0.0004238729429342389, component: i_to_1_a_gate) +// 15: i (units: dimensionless, initial value: 0.9990935802459496, component: i_to_1_i_gate) +// 16: i2 (units: dimensionless, initial value: 0.9777368439681764, component: i_to_1_i2_gate) +// 17: xr (units: dimensionless, initial value: 0.07084939408222911, component: i_Kr_xr_gate) +// 18: xs1 (units: dimensionless, initial value: 0.0011737654433043125, component: i_Ks_xs1_gate) +// 19: xs2 (units: dimensionless, initial value: 0.001179442867470093, component: i_Ks_xs2_gate) +// 20: a (units: dimensionless, initial value: 0.0014909437525000811, component: i_to_2_a_gate) +// 21: Na_i (units: millimolar, initial value: 9.927155552932733, component: intracellular_ion_concentrations) +// 22: Cl_i (units: millimolar, initial value: 18.904682470140408, component: intracellular_ion_concentrations) +// 23: K_i (units: millimolar, initial value: 141.9670801746057, component: intracellular_ion_concentrations) +// 24: Ca_MK_trap (units: dimensionless, initial value: 8.789168284782809e-06, component: Ca_MK_act) +// 25: Ca_NSR (units: millimolar, initial value: 1.2132524695849454, component: Ca_NSR) +// 26: Ca_JSR (units: millimolar, initial value: 1.1433050636518596, component: Ca_JSR) +// 27: Ca_r (units: millimolar, initial value: 0.00022418117117903934, component: Ca_r) +// 28: ri (units: dimensionless, initial value: 0.7802870066567904, component: q_rel_ri_gate) +// 29: ro (units: dimensionless, initial value: 1.2785734760674763e-09, component: q_rel_ro_gate) +// 30: time (millisecond) + +//--------------------------------------------------------------------------- +// Constants +//--------------------------------------------------------------------------- + +float64 A0_bck = 1.0278; // dimensionless (in A0_bc) +float64 Ampl_gain = 1; // dimensionless (in Ampl_gai) +float64 Cext = 1; // picoF (in Cex) +float64 E_l = 1; // millivolt (in E_) +float64 I = 1; // dimensionless (in ) +float64 R_seal = 1; // ohm (in R_sea) +float64 Scale_bck = 1; // dimensionless (in Scale_bc) +float64 Scaling = 1; // dimensionless (in Scalin) +float64 k_bck = 0.098599999999999993; // one_over_millivolt (in k_bc) +float64 leak_comp_perc = 1; // dimensionless (in leak_comp_per) +float64 q_leak_max = 0.0043750000000000004; // millimolar_per_millisecond (in q_leak) +float64 g_rel_max = 3000; // per_millisecond (in q_rel) +float64 q_up_max = 0.0043750000000000004; // millimolar_per_millisecond (in q_up) +float64 conc_clamp = 1; // dimensionless (in intracellular_ion_concentrations) +float64 Ca_o = 1.8; // millimolar (in model_parameters) +float64 K_o = 5.4000000000000004; // millimolar (in model_parameters) +float64 Na_o = 140; // millimolar (in model_parameters) +float64 g_Ca_L = 0.3392328; // dimensionless (in i_Ca_L) +float64 g_Na = 8; // milliS_per_microF (in i_Na) +float64 perc_reduced_inact_for_IpNa = 0; // dimensionless (in i_Na) +float64 shift_INa_inact = 0; // millivolt (in i_Na) +float64 g_K1_max = 0.25; // milliS_per_microF (in i_K1) +float64 g_Kr_max = 0.040008488000000002; // milliS_per_microF (in i_Kr) +float64 g_Ks_max = 0.052581329000000003; // milliS_per_microF (in i_Ks) +float64 i_NaCa_max = 4.5; // microA_per_microF (in i_NaCa) +float64 stim_amplitude = -80; // microA_per_microF (in membrane) +float64 stim_duration = 1; // millisecond (in membrane) +float64 stim_start = 100; // millisecond (in membrane) +float64 stim_period = 800; // millisecond (in membrane) +float64 g_to_1 = 0.14135944; // milliS_per_microF (in i_to_1) + +float64 CT_K_Cl_max = 7.0755999999999996e-6; // millimolar_per_millisecond (in CT_K_Cl) +float64 CT_Na_Cl_max = 9.8442999999999999e-6; // millimolar_per_millisecond (in CT_Na_Cl) +float64 CSQN_max = 10; // millimolar (in Ca_JSR) +float64 km_CSQN = 0.80000000000000004; // millimolar (in Ca_JSR) +float64 Ca_MK_0 = 0.050000000000000003; // dimensionless (in Ca_MK_act) +float64 alpha_Ca_MK = 0.050000000000000003; // per_millisecond (in Ca_MK_act) +float64 beta_Ca_MK = 0.00068000000000000005; // per_millisecond (in Ca_MK_act) +float64 km_Ca_MK = 0.14999999999999999; // millimolar (in Ca_MK_act) +float64 CMDN_max = 0.050000000000000003; // millimolar (in Ca_i) +float64 TRPN_max = 0.070000000000000007; // millimolar (in Ca_i) +float64 km_CMDN = 0.0023800000000000002; // millimolar (in Ca_i) +float64 km_TRPN = 0.00050000000000000001; // millimolar (in Ca_i) +float64 b_SL_max = 1.1240000000000001; // millimolar (in Ca_r) +float64 b_SR_max = 0.047; // millimolar (in Ca_r) +float64 km_b_SL = 0.0086999999999999994; // millimolar (in Ca_r) +float64 km_b_SR = 0.00087000000000000001; // millimolar (in Ca_r) +float64 tau_ss = 0.20000000000000001; // millisecond (in Ca_r) +float64 g_Cl_b = 0.00022499999999999999; // milliS_per_microF (in background_currents) +float64 g_K_b = 0.0050000000000000001; // milliS_per_microF (in background_currents) +float64 g_Na_b = 0.0025000000000000001; // milliS_per_microF (in background_currents) +float64 r_NaK = 0.018329999999999999; // dimensionless (in equilibrium_potentials) +float64 g_Ca_T = 0.13; // milliS_per_microF (in i_Ca_T) +float64 i_Ca_p_max = 0.057500000000000002; // microA_per_microF (in i_Ca_p) +float64 km_Ca_p = 0.00050000000000000001; // millimolar (in i_Ca_p) +float64 g_K_p = 0.0027599999999999999; // milliS_per_microF (in i_K_p) +float64 X_NaCa = 0.40000000000000002; // dimensionless (in i_NaCa) +float64 k_sat = 0.27000000000000002; // dimensionless (in i_NaCa) +float64 km_Ca_act = 0.000125; // millimolar (in i_NaCa) +float64 km_Ca_i = 0.0035999999999999999; // millimolar (in i_NaCa) +float64 km_Ca_o = 1.3; // millimolar (in i_NaCa) +float64 km_Na_i_1 = 12.300000000000001; // millimolar (in i_NaCa) +float64 km_Na_o = 87.5; // millimolar (in i_NaCa) +float64 g_NaK = 0.61875000000000002; // microA_per_microF (in i_NaK) +float64 km_K_o = 1.5; // millimolar (in i_NaK) +float64 km_Na_i_2 = 10; // millimolar (in i_NaK) +float64 g_Na_L = 0.037374999999999999; // milliS_per_microF (in i_Na_L) +float64 km_to_2 = 0.1502; // millimolar (in i_to_2_a_gate) +float64 tau_a = 1; // millisecond (in i_to_2_a_gate) +float64 stim_end = 100000; // millisecond (in membrane) +float64 Cl_o = 100; // millimolar (in model_parameters) +float64 Cm = 1; // microF_per_cm2 (in model_parameters) +float64 F = 96485; // coulomb_per_mole (in model_parameters) +float64 R = 8314; // joule_per_kilomole_kelvin (in model_parameters) +float64 T = 310; // kelvin (in model_parameters) +float64 Vol_cell = 0.34539999999999998; // microlitre (in model_parameters) +float64 length = 0.01; // cm (in model_parameters) +float64 radius = 0.0011000000000000001; // cm (in model_parameters) +float64 rcg = 2; // dimensionless (in model_parameters) +float64 z_Ca = 2; // dimensionless (in model_parameters) +float64 NSR_max = 15; // millimolar (in q_leak) +float64 tau_Ca_MK_max = 10; // millisecond (in q_rel_ri_gate) +float64 tau_ro = 3; // millisecond (in q_rel_ro_gate) +float64 tau_tr = 120; // millisecond (in q_tr) +float64 X_q_up = 0.5; // dimensionless (in q_up) +float64 dkm_plb_max = 0.00017000000000000001; // millimolar (in q_up) +float64 dq_up_Ca_MK_max = 0.75; // dimensionless (in q_up) +float64 km_up = 0.00092000000000000003; // millimolar (in q_up) + +//------------------------------------------------------------------------------ +// Computed variables +//------------------------------------------------------------------------------ + +float64 CMDN; // dimensionless (in Ca_i) +float64 TRPN; // dimensionless (in Ca_i) +float64 b_myo; // dimensionless (in Ca_i) +float64 Ca_MK_bound; // dimensionless (in Ca_MK_act) +float64 Ca_MK_act; // dimensionless (in Ca_MK_act) +float64 b_SL; // dimensionless (in Ca_r) +float64 b_SR; // dimensionless (in Ca_r) +float64 Ca_r_tot; // dimensionless (in Ca_r) +float64 q_diff; // millimolar_per_millisecond (in Ca_r) +float64 I_ext; // dimensionless (in I_ex) +float64 g_leak; // one_over_ohm (in g_lea) +float64 tau_f_Ca; // millisecond (in i_Ca_L_f_Ca_gate) +float64 i_Ca_p; // microA_per_microF (in i_Ca_p) +float64 g_Ks; // milliS_per_microF (in i_Ks) +float64 a_infinity; // dimensionless (in i_to_2_a_gate) +float64 d_infinity; // dimensionless (in i_Ca_L_d_gate) +float64 tau_d; // millisecond (in i_Ca_L_d_gate) +float64 f2_infinity; // dimensionless (in i_Ca_L_f2_gate) +float64 tau_f2; // millisecond (in i_Ca_L_f2_gate) +float64 f_infinity; // dimensionless (in i_Ca_L_f_gate) +float64 tau_f; // millisecond (in i_Ca_L_f_gate) +float64 i_Ca_T; // microA_per_microF (in i_Ca_T) +float64 alpha_b; // per_millisecond (in i_Ca_T_b_gate) +float64 b_infinity; // dimensionless (in i_Ca_T_b_gate) +float64 beta_b; // per_millisecond (in i_Ca_T_b_gate) +float64 tau_b; // millisecond (in i_Ca_T_b_gate) +float64 alpha_g; // per_millisecond (in i_Ca_T_g_gate) +float64 beta_g; // per_millisecond (in i_Ca_T_g_gate) +float64 g_infinity; // dimensionless (in i_Ca_T_g_gate) +float64 tau_g; // millisecond (in i_Ca_T_g_gate) +float64 kp; // dimensionless (in i_K_p) +float64 rr_infinity; // dimensionless (in i_Kr) +float64 tau_xr; // millisecond (in i_Kr_xr_gate) +float64 xr_infinity; // dimensionless (in i_Kr_xr_gate) +float64 tau_xs1_PW_0; // millisecond (in i_Ks_xs1_gate) +float64 tau_xs1_PW_1; // millisecond (in i_Ks_xs1_gate) +float64 tau_xs1; // millisecond (in i_Ks_xs1_gate) +float64 xs1_infinity; // dimensionless (in i_Ks_xs1_gate) +float64 tau_xs2_PW_0; // millisecond (in i_Ks_xs2_gate) +float64 tau_xs2_PW_1; // millisecond (in i_Ks_xs2_gate) +float64 tau_xs2; // millisecond (in i_Ks_xs2_gate) +float64 xs2_infinity; // dimensionless (in i_Ks_xs2_gate) +float64 h_L_infinity; // dimensionless (in i_Na_L_h_L_gate) +float64 tau_h_L; // millisecond (in i_Na_L_h_L_gate) +float64 alpha_m_L; // per_millisecond (in i_Na_L_m_L_gate) +float64 beta_m_L; // per_millisecond (in i_Na_L_m_L_gate) +float64 m_L_infinity; // dimensionless (in i_Na_L_m_L_gate) +float64 tau_m_L; // millisecond (in i_Na_L_m_L_gate) +float64 alpha_h; // per_millisecond (in i_Na_h_gate) +float64 beta_h; // per_millisecond (in i_Na_h_gate) +float64 h_infinity; // dimensionless (in i_Na_h_gate) +float64 tau_h; // millisecond (in i_Na_h_gate) +float64 alpha_j; // per_millisecond (in i_Na_j_gate) +float64 beta_j; // per_millisecond (in i_Na_j_gate) +float64 j_infinity; // dimensionless (in i_Na_j_gate) +float64 tau_j; // millisecond (in i_Na_j_gate) +float64 alpha_m; // per_millisecond (in i_Na_m_gate) +float64 beta_m; // per_millisecond (in i_Na_m_gate) +float64 m_infinity; // dimensionless (in i_Na_m_gate) +float64 tau_m; // millisecond (in i_Na_m_gate) +float64 i_bck; // dimensionless (in i_bc) +float64 i_leak_comp; // dimensionless (in i_leak_com) +float64 i_inj; // dimensionless (in i_in) +float64 alpha_a; // per_millisecond (in i_to_1_a_gate) +float64 beta_a; // per_millisecond (in i_to_1_a_gate) +float64 a_infinity; // dimensionless (in i_to_1_a_gate) +float64 tau_a; // millisecond (in i_to_1_a_gate) +float64 alpha_i2; // per_millisecond (in i_to_1_i2_gate) +float64 beta_i2; // per_millisecond (in i_to_1_i2_gate) +float64 i2_infinity; // dimensionless (in i_to_1_i2_gate) +float64 tau_i2; // millisecond (in i_to_1_i2_gate) +float64 alpha_i; // per_millisecond (in i_to_1_i_gate) +float64 beta_i; // per_millisecond (in i_to_1_i_gate) +float64 i_infinity; // dimensionless (in i_to_1_i_gate) +float64 tau_i; // millisecond (in i_to_1_i_gate) +float64 i_to_2_max; // microA_per_microF (in i_to_2) +float64 i_to_2; // microA_per_microF (in i_to_2) +float64 i_stim; // microA_per_microF (in membrane) +float64 i_Ca_b; // microA_per_microF (in background_currents) +float64 i_Ca_L_max; // microA_per_microF (in i_Ca_L) +float64 i_Ca_L; // microA_per_microF (in i_Ca_L) +float64 f_Ca2_infinity; // dimensionless (in i_Ca_L_f_Ca2_gate) +float64 tau_f_Ca2; // millisecond (in i_Ca_L_f_Ca2_gate) +float64 f_Ca_infinity; // dimensionless (in i_Ca_L_f_Ca_gate) +float64 dNaCa_1; // millimolar4 (in i_NaCa) +float64 g_K1; // milliS_per_microF (in i_K1) +float64 g_Kr; // milliS_per_microF (in i_Kr) +float64 dNaCa_2; // millimolar4 (in i_NaCa) +float64 sigma; // dimensionless (in i_NaK) +float64 E_Cl; // millivolt (in equilibrium_potentials) +float64 i_Cl_b; // microA_per_microF (in background_currents) +float64 E_K; // millivolt (in equilibrium_potentials) +float64 CT_K_Cl; // millimolar_per_millisecond (in CT_K_Cl) +float64 i_K_b; // microA_per_microF (in background_currents) +float64 E_Ks; // millivolt (in equilibrium_potentials) +float64 E_Na; // millivolt (in equilibrium_potentials) +float64 CT_Na_Cl; // millimolar_per_millisecond (in CT_Na_Cl) +float64 i_Na_b; // microA_per_microF (in background_currents) +float64 alpha_xK1; // dimensionless (in i_K1_xK1_gate) +float64 beta_xK1; // dimensionless (in i_K1_xK1_gate) +float64 xK1; // dimensionless (in i_K1_xK1_gate) +float64 i_K1; // microA_per_microF (in i_K1) +float64 i_K_p; // microA_per_microF (in i_K_p) +float64 i_Kr; // microA_per_microF (in i_Kr) +float64 i_Ks; // microA_per_microF (in i_Ks) +float64 i_Na; // microA_per_microF (in i_Na) +float64 i_NaCa; // microA_per_microF (in i_NaCa) +float64 f_NaK; // dimensionless (in i_NaK) +float64 i_NaK; // microA_per_microF (in i_NaK) +float64 i_Na_L; // microA_per_microF (in i_Na_L) +float64 i_to_1; // microA_per_microF (in i_to_1) +float64 i_tot; // microA_per_microF (in membrane) +float64 Vol_jsr; // microlitre (in model_parameters) +float64 Vol_myo; // microlitre (in model_parameters) +float64 Vol_nsr; // microlitre (in model_parameters) +float64 Vol_ss; // microlitre (in model_parameters) +float64 a_geo; // cm2 (in model_parameters) +float64 a_cap; // cm2 (in model_parameters) +float64 q_leak; // millimolar_per_millisecond (in q_leak) +float64 vg; // dimensionless (in q_rel) +float64 g_rel; // per_millisecond (in q_rel) +float64 Ca_fac; // millimolar (in q_rel_ri_gate) +float64 ri_infinity; // dimensionless (in q_rel_ri_gate) +float64 tau_Ca_MK; // millisecond (in q_rel_ri_gate) +float64 tau_ri; // millisecond (in q_rel_ri_gate) +float64 q_rel; // millimolar_per_millisecond (in q_rel) +float64 ro_infinity_JSR; // dimensionless (in q_rel_ro_gate) +float64 ro_infinity; // dimensionless (in q_rel_ro_gate) +float64 q_tr; // millimolar_per_millisecond (in q_tr) +float64 dkm_plb; // millimolar (in q_up) +float64 dq_up_Ca_MK; // dimensionless (in q_up) +float64 q_up; // millimolar_per_millisecond (in q_up) + + +//--------------------------------------------------------------------------- +// Computation +//--------------------------------------------------------------------------- + +CMDN = 2 * CMDN_max * Y[1] / pow((km_CMDN + Y[1]), 2); // dimensionless +TRPN = 2 * TRPN_max * Y[1] / pow((km_TRPN + Y[1]), 2); // dimensionless +b_myo = 1 / (1 + CMDN + TRPN); // dimensionless +Ca_MK_bound = (1 - Y[24]) * Ca_MK_0 / (1 + km_Ca_MK / Y[27]); // dimensionless +Ca_MK_act = Ca_MK_bound + Y[24]; // dimensionless +b_SL = 2 * b_SL_max * Y[27] / pow((km_b_SL + Y[27]), 2); // dimensionless +b_SR = 2 * b_SR_max * Y[27] / pow((km_b_SR + Y[27]), 2); // dimensionless +Ca_r_tot = 1 / (1 + b_SL + b_SR); // dimensionless +q_diff = (-Y[1] + Y[27]) / tau_ss; // millimolar_per_millisecond +dY[24] = -beta_Ca_MK * Y[24] + (Ca_MK_bound + Y[24]) * Ca_MK_bound * alpha_Ca_MK; // 1 / millisecond +I_ext = I / (Ampl_gain * Cext); // dimensionless +g_leak = 1 / R_seal; // one_over_ohm +tau_f_Ca = 0.5 + 1 / (1 + 333.33333333333331 * Y[27]) + 10 * Ca_MK_act / (1 * Ca_MK_act + km_Ca_MK); // millisecond +i_Ca_p = Y[1] * i_Ca_p_max / (Y[1] + km_Ca_p); // microA_per_microF +g_Ks = (1 + 0.59999999999999998 / (1 + 6.4818210260626455e-7 * pow((1 / Y[1]), 1.3999999999999999))) * g_Ks_max; // milliS_per_microF +a_infinity = 1 / (1 + km_to_2 / Y[27]); // dimensionless +dY[20] = (-Y[20] + a_infinity) / tau_a; // 1 / millisecond +d_infinity = 1 / (1 + exp(0.59347181008902072 - 0.14836795252225518 * Y[0])); // dimensionless +tau_d = 0.58999999999999997 + 0.80000000000000004 * exp(0.67599999999999993 + 0.051999999999999998 * Y[0]) / (1 + exp(1.7160000000000002 + 0.13200000000000001 * Y[0])); // millisecond +f2_infinity = 1 / (1 + exp(1.8 + 0.10000000000000001 * Y[0])); // dimensionless +tau_f2 = 38 + 0.070000000000000007 * pow((-18.600000000000001 + Y[0]), 2); // millisecond +f_infinity = 1 / (1 + exp(1.8 + 0.10000000000000001 * Y[0])); // dimensionless +tau_f = 4 + 0.0050000000000000001 * pow((-2.5 + Y[0]), 2); // millisecond +i_Ca_T = (-50 + Y[0]) * Y[12] * Y[13] * g_Ca_T; // microA_per_microF +alpha_b = 1.0680000000000001 * exp(0.54333333333333333 + 0.033333333333333333 * Y[0]); // per_millisecond +b_infinity = 1 / (1 + exp(-5.4098360655737707 - 0.16393442622950821 * Y[0])); // dimensionless +beta_b = 1.0680000000000001 * exp(-0.54333333333333333 - 0.033333333333333333 * Y[0]); // per_millisecond +tau_b = 1 / (alpha_b + beta_b); // millisecond +alpha_g = 0.014999999999999999 * exp(-0.86074429771908767 - 0.012004801920768308 * Y[0]); // per_millisecond +beta_g = 0.014999999999999999 * exp(4.6558441558441563 + 0.064935064935064929 * Y[0]); // per_millisecond +g_infinity = 1 / (1 + exp(9.0909090909090917 + 0.15151515151515152 * Y[0])); // dimensionless +tau_g = 1 / (alpha_g + beta_g); // millisecond +kp = 1 / (1 + exp(1.2521739130434781 - 0.16722408026755853 * Y[0])); // dimensionless +rr_infinity = 1 / (1 + exp(-0.26470588235294124 + 0.049019607843137261 * Y[0])); // dimensionless +tau_xr = 100 + 900 / (1 + exp(0.20000000000000001 * Y[0])); // millisecond +xr_infinity = 1 / (1 + exp(-0.0069387755102040824 - 0.081632653061224483 * Y[0])); // dimensionless +if ((Y[0] >= 0.54999921875000002) && (Y[0] <= 0.55000078125000007)) + tau_xs1_PW_0 = -2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8)) + 640000.00000042573 * (-0.54999921875000002 + Y[0]) * (2.8124999999996902e-10 / (-1 + exp(9.9999999999988984e-8)) + 2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8))) +else + tau_xs1_PW_0 = 0.00036000000000000002 * (-0.55000000000000004 + Y[0]) / (-1 + exp(-0.070400000000000004 + 0.128 * Y[0])) + +if ((Y[0] >= -44.600000010030094) && (Y[0] <= -44.599999989969909)) + tau_xs1_PW_1 = -7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 49850000.061936118 * (44.600000010030094 + Y[0]) * (7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 7.6328986866047728e-13 / (1 - exp(-9.9999999875755032e-8))) +else + tau_xs1_PW_1 = 7.6100000000000007e-5 * (44.600000000000001 + Y[0]) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * Y[0])) + +tau_xs1 = 1 / (tau_xs1_PW_0 + tau_xs1_PW_1); // millisecond +xs1_infinity = 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * Y[0])); // dimensionless +if ((Y[0] >= 0.54999921875000002) && (Y[0] <= 0.55000078125000007)) + tau_xs2_PW_0 = -2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8)) + 640000.00000042573 * (-0.54999921875000002 + Y[0]) * (2.8124999999996902e-10 / (-1 + exp(9.9999999999988984e-8)) + 2.8124999999965681e-10 / (-1 + exp(-9.999999999987797e-8))) +else + tau_xs2_PW_0 = 0.00036000000000000002 * (-0.55000000000000004 + Y[0]) / (-1 + exp(-0.070400000000000004 + 0.128 * Y[0])) + +if ((Y[0] >= -44.600000010030094) && (Y[0] <= -44.599999989969909)) + tau_xs2_PW_1 = -7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 49850000.061936118 * (44.600000010030094 + Y[0]) * (7.6328986866047728e-13 / (1 - exp(9.9999999875755032e-8)) + 7.6328986866047728e-13 / (1 - exp(-9.9999999875755032e-8))) +else + tau_xs2_PW_1 = 7.6100000000000007e-5 * (44.600000000000001 + Y[0]) / (1 - exp(-444.66200000000003 - 9.9700000000000006 * Y[0])) + +tau_xs2 = 2 / (tau_xs2_PW_0 + tau_xs2_PW_1); // millisecond +xs2_infinity = 1 / (1 + exp(0.65693430656934315 - 0.072992700729927015 * Y[0])); // dimensionless +h_L_infinity = 1 / (1 + exp(11.311475409836067 + 0.16393442622950821 * Y[0])); // dimensionless +tau_h_L = 175 + 125 / (1 + exp(-4.166666666666667 - 0.16666666666666666 * Y[0])); // millisecond +if ((Y[0] >= -47.130001) && (Y[0] <= -47.129999000000005)) + alpha_m_L = -3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 499999.99998562218 * (47.130001 + Y[0]) * (3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 3.200000000092018e-7 / (1 - exp(-1.0000000000287557e-7))) +else + alpha_m_L = 0.32000000000000001 * (47.130000000000003 + Y[0]) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * Y[0])) + +beta_m_L = 0.080000000000000002 * exp(-0.090909090909090912 * Y[0]); // per_millisecond +m_L_infinity = alpha_m_L / (alpha_m_L + beta_m_L); // dimensionless +tau_m_L = 1 / (alpha_m_L + beta_m_L); // millisecond +if (Y[0] < -40) + alpha_h = 0.13500000000000001 * exp(-11.764705882352942 + 0.14705882352941177 * shift_INa_inact - 0.14705882352941177 * Y[0]) +else + alpha_h = 0 + +if (Y[0] < -40) + beta_h = 310000 * exp(0.34999999999999998 * Y[0] - 0.34999999999999998 * shift_INa_inact) + 3.5600000000000001 * exp(0.079000000000000001 * Y[0] - 0.079000000000000001 * shift_INa_inact) +else + beta_h = 7.6923076923076916 / (1 + exp(-0.96036036036036043 + 0.0900900900900901 * shift_INa_inact - 0.0900900900900901 * Y[0])) + +h_infinity = 0.01 * perc_reduced_inact_for_IpNa + (1 - 0.01 * perc_reduced_inact_for_IpNa) * alpha_h / (alpha_h + beta_h); // dimensionless +tau_h = 1 / (alpha_h + beta_h); // millisecond +if (Y[0] < -40) + alpha_j = (37.780000000000001 + Y[0]) * (-127140 * exp(0.24440000000000001 * Y[0] - 0.24440000000000001 * shift_INa_inact) - 3.4740000000000003e-5 * exp(0.043909999999999998 * shift_INa_inact - 0.043909999999999998 * Y[0])) / (1 + exp(24.640530000000002 + 0.311 * Y[0] - 0.311 * shift_INa_inact)) +else + alpha_j = 0 + +if (Y[0] < -40) + beta_j = 0.1212 * exp(0.01052 * shift_INa_inact - 0.01052 * Y[0]) / (1 + exp(-5.5312920000000005 + 0.13780000000000001 * shift_INa_inact - 0.13780000000000001 * Y[0])) +else + beta_j = 0.29999999999999999 * exp(2.5349999999999999e-7 * shift_INa_inact - 2.5349999999999999e-7 * Y[0]) / (1 + exp(-3.2000000000000002 + 0.10000000000000001 * shift_INa_inact - 0.10000000000000001 * Y[0])) + +j_infinity = 0.01 * perc_reduced_inact_for_IpNa + (1 - 0.01 * perc_reduced_inact_for_IpNa) * alpha_j / (alpha_j + beta_j); // dimensionless +tau_j = 1 / (alpha_j + beta_j); // millisecond +if ((Y[0] >= -47.130001) && (Y[0] <= -47.129999000000005)) + alpha_m = -3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 499999.99998562218 * (47.130001 + Y[0]) * (3.200000000092018e-7 / (1 - exp(1.0000000000287557e-7)) + 3.200000000092018e-7 / (1 - exp(-1.0000000000287557e-7))) +else + alpha_m = 0.32000000000000001 * (47.130000000000003 + Y[0]) / (1 - exp(-4.7130000000000001 - 0.10000000000000001 * Y[0])) + +beta_m = 0.080000000000000002 * exp(-0.090909090909090912 * Y[0]); // per_millisecond +m_infinity = alpha_m / (alpha_m + beta_m); // dimensionless +tau_m = 1 / (alpha_m + beta_m); // millisecond +i_bck = A0_bck * Scale_bck / ((1 + exp(-Y[0] * k_bck)) * Cext); // dimensionless +i_leak_comp = (-E_l + Y[0]) * g_leak * leak_comp_perc / (100 * Cext); // dimensionless +i_inj = (-i_bck - i_leak_comp + I_ext) * Scaling; // dimensionless +alpha_a = 25 * exp(-3.7999999999999998 + 0.050000000000000003 * Y[0]) / (1 + exp(-3.7999999999999998 + 0.050000000000000003 * Y[0])); // per_millisecond +beta_a = 25 * exp(-2.7000000000000002 - 0.050000000000000003 * Y[0]) / (1 + exp(-2.7000000000000002 - 0.050000000000000003 * Y[0])); // per_millisecond +a_infinity = alpha_a / (alpha_a + beta_a); // dimensionless +tau_a = 1 / (alpha_a + beta_a); // millisecond +alpha_i2 = 0.0044200000000000003 / (1 + exp(1.7333333333333334 + 0.066666666666666666 * Y[0])); // per_millisecond +beta_i2 = 0.050000000000000003 * exp(-0.66666666666666663 + 0.066666666666666666 * Y[0]) / (1 + exp(-0.66666666666666663 + 0.066666666666666666 * Y[0])); // per_millisecond +i2_infinity = alpha_i2 / (alpha_i2 + beta_i2); // dimensionless +tau_i2 = 21.5 + 30 / (1 + exp(-2.5 + 0.10000000000000001 * Y[0])); // millisecond +alpha_i = 0.029999999999999999 / (1 + exp(1.6666666666666667 + 0.066666666666666666 * Y[0])); // per_millisecond +beta_i = 0.10000000000000001 * exp(-2.6666666666666665 + 0.066666666666666666 * Y[0]) / (1 + exp(-2.6666666666666665 + 0.066666666666666666 * Y[0])); // per_millisecond +i_infinity = alpha_i / (alpha_i + beta_i); // dimensionless +tau_i = 6 + 5 / (1 + exp(-1.6499999999999999 + 0.10000000000000001 * Y[0])); // millisecond +if ((Y[0] >= -2.6712338705498262e-6) && (Y[0] <= 2.6712338705498262e-6)) + i_to_2_max = 187179.41753901311 * (2.6712338705498262e-6 + Y[0]) * (3.8593999999999993e-9 * (-100 * exp(9.9999999999999995e-8) + Y[22]) / (1 - exp(9.9999999999999995e-8)) + 3.8593999999999993e-9 * (-100 * exp(-9.9999999999999995e-8) + Y[22]) / (1 - exp(-9.9999999999999995e-8))) - 3.8593999999999993e-9 * (-100 * exp(-9.9999999999999995e-8) + Y[22]) / (1 - exp(-9.9999999999999995e-8)) +else + i_to_2_max = 0.0014448004881001341 * (-100 * exp(0.037435883507802616 * Y[0]) + Y[22]) * Y[0] / (1 - exp(0.037435883507802616 * Y[0])) + +i_to_2 = 20 * Y[20] * i_to_2_max; // microA_per_microF +if ((Y[30] >= stim_start) && (Y[30] <= stim_end) && (stim_duration >= -stim_start - stim_period * floor((-stim_start + Y[30]) / stim_period) + Y[30])) + i_stim = stim_amplitude +else + i_stim = 0 + +if ((Y[0] >= -1.3356169352749131e-6) && (Y[0] <= 1.3356169352749131e-6)) + i_Ca_b = 374358.83507802623 * (1.3356169352749131e-6 + Y[0]) * (3.8499135947999997e-9 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(9.9999999999999995e-8)) / (-1 + exp(9.9999999999999995e-8)) + 3.8499135947999997e-9 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8))) - 3.8499135947999997e-9 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(-9.9999999999999995e-8)) / (-1 + exp(-9.9999999999999995e-8)) +else + i_Ca_b = 0.0028824983370007683 * (-0.34100000000000003 * Ca_o + 1 * Y[1] * exp(0.074871767015605231 * Y[0])) * Y[0] / (-1 + exp(0.074871767015605231 * Y[0])) + +if ((Y[0] >= 14.999998664383064) && (Y[0] <= 15.000001335616936)) + i_Ca_L_max = 374358.83507888648 * (-14.999998664383064 + Y[0]) * (4.6891709999892238e-6 * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(9.9999999999770198e-8)) / (-1 + exp(9.9999999999770198e-8)) + 4.6891709999892238e-6 * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(-9.9999999999770198e-8)) / (-1 + exp(-9.9999999999770198e-8))) - 4.6891709999892238e-6 * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(-9.9999999999770198e-8)) / (-1 + exp(-9.9999999999770198e-8)) +else + i_Ca_L_max = 3.510865186083326 * (-15 + Y[0]) * (-0.34100000000000003 * Ca_o + 1 * Y[27] * exp(-1.1230765052340785 + 0.074871767015605231 * Y[0])) / (-1 + exp(-1.1230765052340785 + 0.074871767015605231 * Y[0])) + +i_Ca_L = Y[10] * Y[11] * Y[7] * Y[8] * Y[9] * g_Ca_L * i_Ca_L_max; // microA_per_microF +f_Ca2_infinity = 1 / (1 - 100 * i_Ca_L); // dimensionless +tau_f_Ca2 = 125 + 300 / (1 + exp(-4.375 - 25 * i_Ca_L)); // millisecond +dY[11] = (-Y[11] + f_Ca2_infinity) / tau_f_Ca2; // 1 / millisecond +f_Ca_infinity = 0.14999999999999999 + 0.55000000000000004 / (1 + 333.33333333333331 * Y[27]) + 0.29999999999999999 / (1 - 20 * i_Ca_L); // dimensionless +dY[10] = (-Y[10] + f_Ca_infinity) / tau_f_Ca; // 1 / millisecond +dNaCa_1 = pow(Y[21], 3) * km_Ca_o + 1.5 * pow(km_Na_o, 3) * Y[1] + pow(km_Na_i_1, 3) * (1 + 1.5 * Y[1] / km_Ca_i) * Ca_o; // millimolar4 +g_K1 = 0.43033148291193518 * sqrt(K_o) * g_K1_max; // milliS_per_microF +g_Kr = 0.43033148291193518 * sqrt(K_o) * g_Kr_max; // milliS_per_microF +dNaCa_2 = pow(Y[21], 3) * Ca_o + 1.5 * pow(Na_o, 3) * Y[1] + pow(Na_o, 3) * (1 + Y[21] / km_Na_i_1) * km_Ca_i; // millimolar4 +sigma = -0.14285714285714285 + 0.14285714285714285 * exp(0.01485884101040119 * Na_o); // dimensionless +E_Cl = -R * T * log(Cl_o / Y[22]) / F; // millivolt +i_Cl_b = (-E_Cl + Y[0]) * g_Cl_b; // microA_per_microF +E_K = R * T * log(K_o / Y[23]) / F; // millivolt +CT_K_Cl = (-E_Cl + E_K) * CT_K_Cl_max / (87.825100000000006 - E_Cl + E_K); // millimolar_per_millisecond +i_K_b = (-E_K + Y[0]) * g_K_b; // microA_per_microF +E_Ks = R * T * log((r_NaK * Na_o + K_o) / (Y[21] * r_NaK + Y[23])) / F; // millivolt +E_Na = R * T * log(Na_o / Y[21]) / F; // millivolt +CT_Na_Cl = pow((-E_Cl + E_Na), 4) * CT_Na_Cl_max / (59494197.640692554 + pow((-E_Cl + E_Na), 4)); // millimolar_per_millisecond +i_Na_b = (-E_Na + Y[0]) * g_Na_b; // microA_per_microF +alpha_xK1 = 1.02 / (1 + exp(-14.1227775 + 0.23849999999999999 * Y[0] - 0.23849999999999999 * E_K)); // dimensionless +beta_xK1 = (0.49124000000000001 * exp(0.43983232 + 0.080320000000000003 * Y[0] - 0.080320000000000003 * E_K) + exp(-36.698642499999998 + 0.061749999999999999 * Y[0] - 0.061749999999999999 * E_K)) / (1 + exp(-2.4444678999999998 + 0.51429999999999998 * E_K - 0.51429999999999998 * Y[0])); // dimensionless +xK1 = alpha_xK1 / (alpha_xK1 + beta_xK1); // dimensionless +i_K1 = (0.0040000000000000001 + g_K1 * xK1) * (-E_K + Y[0]); // microA_per_microF +i_K_p = (-E_K + Y[0]) * g_K_p * kp; // microA_per_microF +i_Kr = (-E_K + Y[0]) * Y[17] * g_Kr * rr_infinity; // microA_per_microF +i_Ks = (-E_Ks + Y[0]) * Y[18] * Y[19] * g_Ks; // microA_per_microF +i_Na = pow(Y[2], 3) * (-E_Na + Y[0]) * (0.20000000000000001 * Y[4] + 0.80000000000000004 * Y[3]) * g_Na; // microA_per_microF +i_NaCa = (-1.5 * pow(Na_o, 3) * Y[1] * exp(-0.65000000000000002 * Y[0] * F / (R * T)) + pow(Y[21], 3) * X_NaCa * i_NaCa_max * Ca_o * exp(0.34999999999999998 * Y[0] * F / (R * T))) / ((1 + k_sat * exp(-0.65000000000000002 * Y[0] * F / (R * T))) * (1 + 0.44444444444444442 * pow(km_Ca_act, 2) / pow(Y[1], 2)) * (dNaCa_1 + dNaCa_2)); // microA_per_microF +f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * Y[0] * F / (R * T)) + 0.036499999999999998 * sigma * exp(-Y[0] * F / (R * T))); // dimensionless +i_NaK = 1 * f_NaK * g_NaK * K_o / ((1 + pow(km_Na_i_2, 2) / pow(Y[21], 2)) * (km_K_o + K_o)); // microA_per_microF +i_Na_L = pow(Y[5], 3) * (-E_Na + Y[0]) * Y[6] * g_Na_L; // microA_per_microF +i_to_1 = (-E_K + Y[0]) * (0.20000000000000001 * Y[16] + 0.80000000000000004 * Y[15]) * Y[14] * g_to_1; // microA_per_microF +i_tot = i_Ca_b + i_Cl_b + i_K_b + i_Na_b + i_Ca_L + i_Ca_T + i_Ca_p + i_K1 + i_K_p + i_Kr + i_Ks + i_Na + i_NaCa + i_NaK + i_Na_L + i_to_1 + i_to_2; // microA_per_microF +dY[0] = -i_inj - i_stim - i_tot; // millivolt / millisecond +Vol_jsr = 0.0047999999999999996 * Vol_cell; // microlitre +Vol_myo = 0.68000000000000005 * Vol_cell; // microlitre +Vol_nsr = 0.055199999999999999 * Vol_cell; // microlitre +Vol_ss = 0.02 * Vol_cell; // microlitre +a_geo = 6.2800000000000002 * pow(radius, 2) + 6.2800000000000002 * length * radius; // cm2 +a_cap = a_geo * rcg; // cm2 +dY[22] = (-(i_Cl_b + i_to_2) * Cm * a_cap / (F * Vol_myo) + CT_K_Cl + CT_Na_Cl) * conc_clamp; // millimolar / millisecond +dY[23] = (-(-2 * i_NaK + i_K_b + i_K1 + i_K_p + i_Kr + i_Ks + i_to_1) * Cm * a_cap / (F * Vol_myo) + CT_K_Cl) * conc_clamp; // millimolar / millisecond +dY[21] = (-(3 * i_NaCa + 3 * i_NaK + i_Na_b + i_Na + i_Na_L) * Cm * a_cap / (F * Vol_myo) + CT_Na_Cl) * conc_clamp; // millimolar / millisecond +q_leak = Y[25] * q_leak_max / NSR_max; // millimolar_per_millisecond +vg = 1 / (1 + exp(2.6000000000000001 + 0.20000000000000001 * g_Ca_L * i_Ca_L_max)); // dimensionless +g_rel = g_rel_max * vg; // per_millisecond +Ca_fac = 1 / (1 + exp(3.3333333333333335 + 66.666666666666671 * i_Ca_L)); // millimolar +ri_infinity = 1 / (1 + exp(-16 + 80 * Ca_fac + 40000 * Y[27])); // dimensionless +tau_Ca_MK = 1 * Ca_MK_act * tau_Ca_MK_max / (1 * Ca_MK_act + km_Ca_MK); // millisecond +tau_ri = 3 + (350 - tau_Ca_MK) / (1 + exp(-15 + 5000 * Y[27] + 15 * Ca_fac)) + tau_Ca_MK; // millisecond +dY[28] = (-Y[28] + ri_infinity) / tau_ri; // 1 / millisecond +q_rel = (-Y[27] + Y[26]) * Y[28] * Y[29] * g_rel; // millimolar_per_millisecond +dY[27] = (-q_diff + Vol_jsr * q_rel / Vol_ss - i_Ca_L * Cm * a_cap / (F * Vol_ss * z_Ca)) * Ca_r_tot; // millimolar / millisecond +ro_infinity_JSR = pow(Y[26], 1.8999999999999999) / (pow(Y[26], 1.8999999999999999) + 1644.6531773416521 * pow((Y[27] / (0.0028 + Y[27])), 1.8999999999999999)); // dimensionless +ro_infinity = pow(i_Ca_L, 2) * ro_infinity_JSR / (1 + pow(i_Ca_L, 2)); // dimensionless +dY[29] = (-Y[29] + ro_infinity) / tau_ro; // 1 / millisecond +q_tr = (-Y[26] + Y[25]) / tau_tr; // millimolar_per_millisecond +dY[26] = (-q_rel + q_tr) / (1 + CSQN_max * km_CSQN / pow((km_CSQN + Y[26]), 2)); // millimolar / millisecond +dkm_plb = 1 * Ca_MK_act * dkm_plb_max / (1 * Ca_MK_act + km_Ca_MK); // millimolar +dq_up_Ca_MK = 1 * Ca_MK_act * dq_up_Ca_MK_max / (1 * Ca_MK_act + km_Ca_MK); // dimensionless +q_up = (1 + dq_up_Ca_MK) * Y[1] * X_q_up * q_up_max / (-dkm_plb + Y[1] + km_up); // millimolar_per_millisecond +dY[25] = -q_leak - Vol_jsr * q_tr / Vol_nsr + q_up; // millimolar / millisecond +dY[1] = -((-q_leak + q_up) * Vol_nsr / Vol_myo - q_diff * Vol_ss / Vol_myo + 0.5 * (-2 * i_NaCa + i_Ca_b + i_Ca_p) * Cm * a_cap / (F * Vol_myo)) * b_myo; // millimolar / millisecond +//------------------------------------------------------------------------------ +// Integration & Output +//------------------------------------------------------------------------------ +// Rush-Larsen method + +// get tau/inf or alpha/beta + +float64 alphaOrTau_2 = tau_m; +float64 betaOrInf_2 = m_infinity; +float64 alphaOrTau_3 = tau_h; +float64 betaOrInf_3 = h_infinity; +float64 alphaOrTau_4 = tau_j; +float64 betaOrInf_4 = j_infinity; +float64 alphaOrTau_5 = tau_m_L; +float64 betaOrInf_5 = m_L_infinity; +float64 alphaOrTau_6 = tau_h_L; +float64 betaOrInf_6 = h_L_infinity; +float64 alphaOrTau_7 = tau_d; +float64 betaOrInf_7 = d_infinity; +float64 alphaOrTau_8 = tau_f; +float64 betaOrInf_8 = f_infinity; +float64 alphaOrTau_9 = tau_f2; +float64 betaOrInf_9 = f2_infinity; +float64 alphaOrTau_12 = tau_b; +float64 betaOrInf_12 = b_infinity; +float64 alphaOrTau_13 = tau_g; +float64 betaOrInf_13 = g_infinity; +float64 alphaOrTau_14 = tau_a; +float64 betaOrInf_14 = a_infinity; +float64 alphaOrTau_15 = tau_i; +float64 betaOrInf_15 = i_infinity; +float64 alphaOrTau_16 = tau_i2; +float64 betaOrInf_16 = i2_infinity; +float64 alphaOrTau_17 = tau_xr; +float64 betaOrInf_17 = xr_infinity; +float64 alphaOrTau_18 = tau_xs1; +float64 betaOrInf_18 = xs1_infinity; +float64 alphaOrTau_19 = tau_xs2; +float64 betaOrInf_19 = xs2_infinity; + +// gating variables: Exponential integration + +Ynew[2] = betaOrInf_2 + (Y[2] - betaOrInf_2)*exp(-dt/alphaOrTau_2); +Ynew[3] = betaOrInf_3 + (Y[3] - betaOrInf_3)*exp(-dt/alphaOrTau_3); +Ynew[4] = betaOrInf_4 + (Y[4] - betaOrInf_4)*exp(-dt/alphaOrTau_4); +Ynew[5] = betaOrInf_5 + (Y[5] - betaOrInf_5)*exp(-dt/alphaOrTau_5); +Ynew[6] = betaOrInf_6 + (Y[6] - betaOrInf_6)*exp(-dt/alphaOrTau_6); +Ynew[7] = betaOrInf_7 + (Y[7] - betaOrInf_7)*exp(-dt/alphaOrTau_7); +Ynew[8] = betaOrInf_8 + (Y[8] - betaOrInf_8)*exp(-dt/alphaOrTau_8); +Ynew[9] = betaOrInf_9 + (Y[9] - betaOrInf_9)*exp(-dt/alphaOrTau_9); +Ynew[12] = betaOrInf_12 + (Y[12] - betaOrInf_12)*exp(-dt/alphaOrTau_12); +Ynew[13] = betaOrInf_13 + (Y[13] - betaOrInf_13)*exp(-dt/alphaOrTau_13); +Ynew[14] = betaOrInf_14 + (Y[14] - betaOrInf_14)*exp(-dt/alphaOrTau_14); +Ynew[15] = betaOrInf_15 + (Y[15] - betaOrInf_15)*exp(-dt/alphaOrTau_15); +Ynew[16] = betaOrInf_16 + (Y[16] - betaOrInf_16)*exp(-dt/alphaOrTau_16); +Ynew[17] = betaOrInf_17 + (Y[17] - betaOrInf_17)*exp(-dt/alphaOrTau_17); +Ynew[18] = betaOrInf_18 + (Y[18] - betaOrInf_18)*exp(-dt/alphaOrTau_18); +Ynew[19] = betaOrInf_19 + (Y[19] - betaOrInf_19)*exp(-dt/alphaOrTau_19); + +// Remainder: Forward Euler + +Ynew[0] = Y[0] + dt * d_dt_V; +Ynew[1] = Y[1] + dt * d_dt_Ca_i; +Ynew[10] = Y[10] + dt * d_dt_f_Ca; +Ynew[11] = Y[11] + dt * d_dt_f_Ca2; +Ynew[20] = Y[20] + dt * d_dt_a; +Ynew[21] = Y[21] + dt * d_dt_Na_i; +Ynew[22] = Y[22] + dt * d_dt_Cl_i; +Ynew[23] = Y[23] + dt * d_dt_K_i; +Ynew[24] = Y[24] + dt * d_dt_Ca_MK_trap; +Ynew[25] = Y[25] + dt * d_dt_Ca_NSR; +Ynew[26] = Y[26] + dt * d_dt_Ca_JSR; +Ynew[27] = Y[27] + dt * d_dt_Ca_r; +Ynew[28] = Y[28] + dt * d_dt_ri; +Ynew[29] = Y[29] + dt * d_dt_ro; +Ynew[30] = Y[30] + dt; + +Vmem = Ynew[0]; +time = Ynew[30]; \ No newline at end of file diff --git a/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_13.cpp b/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_13.cpp new file mode 100644 index 00000000..5fdafd7e --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_13.cpp @@ -0,0 +1,1545 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: bondarenko_2004_apical +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: RushLarsenOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractRushLarsenCardiacCell* Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt(p_solver, p_stimulus); +} + +bool Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::registered = ModelFactory::Register("dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical", "RushLarsenOpt", (ModelFactory::TCreateMethod)Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::CreateMethod); + +class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<37; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[37]; + + // Lookup tables + double (*_lookup_table_0)[37]; + int _lookup_table_0_num_misshit_piecewise[37] = {0}; + +}; + +std::shared_ptr Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 0.5; // millisecond + const double var_chaste_interface__membrane__stim_period = 71.430000000000007; // millisecond + const double var_chaste_interface__membrane__stim_start = 0; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractRushLarsenCardiacCell( + 41, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1.7399999999999999e-5; // (var_calcium_fluxes__v2) [per_millisecond] + this->mParameters[1] = 4.5; // (var_calcium_fluxes__v1) [per_millisecond] + this->mParameters[2] = 0.45000000000000001; // (var_calcium_fluxes__v3) [micromolar_per_millisecond] + this->mParameters[3] = 1; // (var_sodium_concentration__conc_clamp) [dimensionless] + this->mParameters[4] = 1800; // (var_membrane__Cao) [micromolar] + this->mParameters[5] = 5400; // (var_membrane__Ko) [micromolar] + this->mParameters[6] = 140000; // (var_membrane__Nao) [micromolar] + this->mParameters[7] = 0.1729; // (var_L_type_calcium_current__g_CaL) [milliS_per_microF] + this->mParameters[8] = 1; // (var_membrane__Cm) [microF_per_cm2] + this->mParameters[9] = 13; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[10] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[11] = 0.29380000000000001; // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = 0.050000000000000003; // (var_non_inactivating_steady_state_potassium_current__g_Kss) [milliS_per_microF] + this->mParameters[13] = 0.078; // (var_rapid_delayed_rectifier_potassium_current__g_Kr) [milliS_per_microF] + this->mParameters[14] = 0.0057499999999999999; // (var_slow_delayed_rectifier_potassium_current__g_Ks) [milliS_per_microF] + this->mParameters[15] = 292.80000000000001; // (var_sodium_calcium_exchange_current__k_NaCa) [picoA_per_picoF] + this->mParameters[16] = 0.40670000000000001; // (var_fast_transient_outward_potassium_current__g_Kto_f) [milliS_per_microF] + } + + Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::~Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt() + { + } + + AbstractLookupTableCollection* Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::GetLookupTableCollection() + { + return Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::Instance(); + } + + void Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 41; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + // Lookup table indexing + const bool _oob_0 = Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__i_pCa = 1 * pow(var_calcium_concentration__Cai, 2) / (0.25 + pow(var_calcium_concentration__Cai, 2)); // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = (-63 + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // uA_per_cm2 + const double var_calcium_activated_chloride_current__i_ClCa = 2 * _lt_0_row[0] * (40 + var_chaste_interface__membrane__V) * var_calcium_concentration__Cai / (10 + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_calcium_background_current__i_Cab = 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(mParameters[4] / var_calcium_concentration__Cai); // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = 25.674321243523316 * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki); // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // uA_per_cm2 + const double var_non_inactivating_steady_state_potassium_current__i_Kss_converted = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // uA_per_cm2 + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[14]; // uA_per_cm2 + const double var_slow_transient_outward_potassium_current__i_Kto_s = 0; // picoA_per_picoF + const double var_fast_sodium_current__E_Na = 25.674321243523316 * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)); // millivolt + const double var_fast_sodium_current__i_Na_converted = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = (-25.674321243523316 * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // uA_per_cm2 + const double var_sodium_background_current__i_Nab = 0.0025999999999999999 * var_chaste_interface__membrane__V - 0.0025999999999999999 * var_fast_sodium_current__E_Na; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = 1 * _lt_0_row[3] * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * _lt_0_row[1] - pow(mParameters[6], 3) * var_calcium_concentration__Cai * _lt_0_row[2]) * HeartConfig::Instance()->GetCapacitance() * mParameters[15] / ((1380 + mParameters[4]) * (669921875000000.0 + pow(mParameters[6], 3))); // uA_per_cm2 + const double var_sodium_potassium_pump_current__i_NaK = 0.88 * mParameters[5] / ((1 + 3043189.1166997822 * pow((1 / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (1500 + mParameters[5]) * (1 + _lt_0_row[5] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * _lt_0_row[4])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1_converted = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // uA_per_cm2 + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = 0.16 * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_calcium_activated_chloride_current__i_ClCa + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Cab + HeartConfig::Instance()->GetCapacitance() * var_calcium_pump_current__i_pCa + HeartConfig::Instance()->GetCapacitance() * var_slow_transient_outward_potassium_current__i_Kto_s + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Nab + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump_current__i_NaK + HeartConfig::Instance()->GetCapacitance() * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur + var_L_type_calcium_current__i_CaL_converted + var_fast_sodium_current__i_Na_converted + var_fast_transient_outward_potassium_current__i_Kto_f_converted + var_non_inactivating_steady_state_potassium_current__i_Kss_converted + var_rapid_delayed_rectifier_potassium_current__i_Kr_converted + var_slow_delayed_rectifier_potassium_current__i_Ks_converted + var_sodium_calcium_exchange_current__i_NaCa_converted + var_time_independent_potassium_current__i_K1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::EvaluateEquations(double var_chaste_interface__environment__time, std::vector &rDY, std::vector &rAlphaOrTau, std::vector &rBetaOrInf) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.115001 + double var_chaste_interface__calcium_concentration__CaJSR = rY[3]; + // Units: micromolar; Initial value: 1299.5 + double var_chaste_interface__calcium_concentration__CaNSR = rY[4]; + // Units: micromolar; Initial value: 1299.5 + double var_chaste_interface__calcium_fluxes__P_RyR = rY[5]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_buffering__LTRPN_Ca = rY[6]; + // Units: micromolar; Initial value: 11.2684 + double var_chaste_interface__calcium_buffering__HTRPN_Ca = rY[7]; + // Units: micromolar; Initial value: 125.29 + double var_chaste_interface__ryanodine_receptors__P_O1 = rY[8]; + // Units: dimensionless; Initial value: 1.49102e-05 + double var_chaste_interface__ryanodine_receptors__P_O2 = rY[9]; + // Units: dimensionless; Initial value: 9.51726e-11 + double var_chaste_interface__ryanodine_receptors__P_C2 = rY[10]; + // Units: dimensionless; Initial value: 0.00016774 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__L_type_calcium_current__C2 = rY[12]; + // Units: dimensionless; Initial value: 0.000124216 + double var_chaste_interface__L_type_calcium_current__C3 = rY[13]; + // Units: dimensionless; Initial value: 5.78679e-09 + double var_chaste_interface__L_type_calcium_current__C4 = rY[14]; + // Units: dimensionless; Initial value: 1.19816e-13 + double var_chaste_interface__L_type_calcium_current__I1 = rY[15]; + // Units: dimensionless; Initial value: 4.97923e-19 + double var_chaste_interface__L_type_calcium_current__I2 = rY[16]; + // Units: dimensionless; Initial value: 3.45847e-14 + double var_chaste_interface__L_type_calcium_current__I3 = rY[17]; + // Units: dimensionless; Initial value: 1.85106e-14 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__fast_sodium_current__C_Na1 = rY[20]; + // Units: dimensionless; Initial value: 0.000279132 + double var_chaste_interface__fast_sodium_current__C_Na2 = rY[21]; + // Units: dimensionless; Initial value: 0.020752 + double var_chaste_interface__fast_sodium_current__I1_Na = rY[22]; + // Units: dimensionless; Initial value: 6.73345e-07 + double var_chaste_interface__fast_sodium_current__I2_Na = rY[23]; + // Units: dimensionless; Initial value: 1.55787e-09 + double var_chaste_interface__fast_sodium_current__IF_Na = rY[24]; + // Units: dimensionless; Initial value: 0.000153176 + double var_chaste_interface__fast_sodium_current__IC_Na2 = rY[25]; + // Units: dimensionless; Initial value: 0.0113879 + double var_chaste_interface__fast_sodium_current__IC_Na3 = rY[26]; + // Units: dimensionless; Initial value: 0.34278 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 = rY[38]; + // Units: dimensionless; Initial value: 0.000992513 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 = rY[39]; + // Units: dimensionless; Initial value: 0.000641229 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K = rY[40]; + // Units: dimensionless; Initial value: 3.19129e-05 + + // Lookup table indexing + const bool _oob_0 = Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double d_dt_chaste_interface_var_non_inactivating_steady_state_potassium_current__iKss = 0; // 1 / millisecond + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_L_type_calcium_current__Kpc_half = 20; // micromolar + const double var_L_type_calcium_current__Kpc_max = 0.23324; // per_millisecond + const double var_L_type_calcium_current__Kpcb = 0.00050000000000000001; // per_millisecond + const double var_L_type_calcium_current__C1 = 1 - var_chaste_interface__L_type_calcium_current__C2 - var_chaste_interface__L_type_calcium_current__C3 - var_chaste_interface__L_type_calcium_current__C4 - var_chaste_interface__L_type_calcium_current__I1 - var_chaste_interface__L_type_calcium_current__I2 - var_chaste_interface__L_type_calcium_current__I3 - var_chaste_interface__L_type_calcium_current__O; // dimensionless + const double var_L_type_calcium_current__i_CaL_max = 7; // picoA_per_picoF + const double var_calcium_background_current__g_Cab = 0.00036699999999999998; // milliS_per_microF + const double var_calcium_buffering__HTRPN_tot = 140; // micromolar + const double var_calcium_buffering__LTRPN_tot = 70; // micromolar + const double var_calcium_concentration__CMDN_tot = 50; // micromolar + const double var_calcium_concentration__CSQN_tot = 15000; // micromolar + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_L_type_calcium_current__gamma = var_L_type_calcium_current__Kpc_max * var_chaste_interface__calcium_concentration__Cass / (var_L_type_calcium_current__Kpc_half + var_chaste_interface__calcium_concentration__Cass); // per_millisecond + const double var_calcium_concentration__Km_CMDN = 0.23799999999999999; // micromolar + const double var_calcium_concentration__Bi = 1 / (1 + var_calcium_concentration__CMDN_tot * var_calcium_concentration__Km_CMDN / pow((var_calcium_concentration__Cai + var_calcium_concentration__Km_CMDN), 2)); // dimensionless + const double var_calcium_concentration__Bss = 1 / (1 + var_calcium_concentration__CMDN_tot * var_calcium_concentration__Km_CMDN / pow((var_chaste_interface__calcium_concentration__Cass + var_calcium_concentration__Km_CMDN), 2)); // dimensionless + const double var_calcium_concentration__Km_CSQN = 800; // micromolar + const double var_calcium_concentration__BJSR = 1 / (1 + var_calcium_concentration__CSQN_tot * var_calcium_concentration__Km_CSQN / pow((var_chaste_interface__calcium_concentration__CaJSR + var_calcium_concentration__Km_CSQN), 2)); // dimensionless + const double var_calcium_fluxes__Km_up = 0.5; // micromolar + const double var_calcium_fluxes__k_minus_htrpn = 3.1999999999999999e-5; // per_millisecond + const double var_calcium_fluxes__k_minus_ltrpn = 0.019599999999999999; // per_millisecond + const double var_calcium_fluxes__k_plus_htrpn = 0.0023700000000000001; // per_micromolar_millisecond + const double d_dt_chaste_interface_var_calcium_buffering__HTRPN_Ca = -var_chaste_interface__calcium_buffering__HTRPN_Ca * var_calcium_fluxes__k_minus_htrpn + (-var_chaste_interface__calcium_buffering__HTRPN_Ca + var_calcium_buffering__HTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_htrpn; // micromolar / millisecond + const double var_calcium_fluxes__k_plus_ltrpn = 0.0327; // per_micromolar_millisecond + const double d_dt_chaste_interface_var_calcium_buffering__LTRPN_Ca = -var_chaste_interface__calcium_buffering__LTRPN_Ca * var_calcium_fluxes__k_minus_ltrpn + (-var_chaste_interface__calcium_buffering__LTRPN_Ca + var_calcium_buffering__LTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_ltrpn; // micromolar / millisecond + const double var_calcium_fluxes__J_trpn = -var_chaste_interface__calcium_buffering__HTRPN_Ca * var_calcium_fluxes__k_minus_htrpn - var_chaste_interface__calcium_buffering__LTRPN_Ca * var_calcium_fluxes__k_minus_ltrpn + (-var_chaste_interface__calcium_buffering__HTRPN_Ca + var_calcium_buffering__HTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_htrpn + (-var_chaste_interface__calcium_buffering__LTRPN_Ca + var_calcium_buffering__LTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_ltrpn; // micromolar_per_millisecond + const double var_calcium_fluxes__tau_tr = 20; // millisecond + const double var_calcium_fluxes__J_tr = (-var_chaste_interface__calcium_concentration__CaJSR + var_chaste_interface__calcium_concentration__CaNSR) / var_calcium_fluxes__tau_tr; // micromolar_per_millisecond + const double var_calcium_fluxes__tau_xfer = 8; // millisecond + const double var_calcium_fluxes__J_xfer = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__Cass) / var_calcium_fluxes__tau_xfer; // micromolar_per_millisecond + const double var_calcium_fluxes__J_leak = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0]; // micromolar_per_millisecond + const double var_calcium_fluxes__J_up = pow(var_calcium_concentration__Cai, 2) * mParameters[2] / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_fluxes__Km_up, 2)); // micromolar_per_millisecond + const double var_calcium_pump_current__Km_pCa = 0.5; // micromolar + const double var_calcium_pump_current__i_pCa_max = 1; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_fast_sodium_current__C_Na3 = 1 - var_chaste_interface__fast_sodium_current__C_Na1 - var_chaste_interface__fast_sodium_current__C_Na2 - var_chaste_interface__fast_sodium_current__I1_Na - var_chaste_interface__fast_sodium_current__I2_Na - var_chaste_interface__fast_sodium_current__IC_Na2 - var_chaste_interface__fast_sodium_current__IC_Na3 - var_chaste_interface__fast_sodium_current__IF_Na - var_chaste_interface__fast_sodium_current__O_Na; // dimensionless + const double var_membrane__Acap = 0.00015339999999999999; // cm2 + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_calcium_concentration__Cai) / var_membrane__F; // millivolt + const double var_L_type_calcium_current__Kpcf = _lt_0_row[6]; // per_millisecond + const double var_L_type_calcium_current__alpha = _lt_0_row[7]; // per_millisecond + const double var_L_type_calcium_current__beta = _lt_0_row[8]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C2 = -var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__beta + 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__beta + 4 * var_L_type_calcium_current__C1 * var_L_type_calcium_current__alpha - 3 * var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__alpha; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C3 = 3 * var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__alpha + 3 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__beta - 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__alpha - 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C4 = -var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha + 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__alpha + 4 * var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__beta + 0.0080000000000000002 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__beta - 3 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__beta - 0.002 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf + 4 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta + 0.040000000000000001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta - 1 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma - 0.01 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I1 = var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__gamma - var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb + 0.001 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha - 0.001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf + 0.01 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma - 0.040000000000000001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I2 = var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb - var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__gamma + 0.001 * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O + 0.002 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf - 0.001 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - 0.0080000000000000002 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I3 = var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__gamma - var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb + 0.001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf - 0.001 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha + 1 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma - 4 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__O = var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha + var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb - var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__gamma + 0.001 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - 4 * var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__beta - 0.001 * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O; // 1 / millisecond + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double d_dt_chaste_interface_var_calcium_fluxes__P_RyR = -0.040000000000000001 * var_chaste_interface__calcium_fluxes__P_RyR - 0.10000000000000001 * var_L_type_calcium_current__i_CaL * _lt_0_row[9] / var_L_type_calcium_current__i_CaL_max; // 1 / millisecond + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_fast_sodium_current__alpha_Na11 = _lt_0_row[10]; // per_millisecond + const double var_fast_sodium_current__alpha_Na12 = _lt_0_row[11]; // per_millisecond + const double var_fast_sodium_current__alpha_Na13 = _lt_0_row[12]; // per_millisecond + const double var_fast_sodium_current__alpha_Na2 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 + 0.060240963855421679 * mParameters[10] - 0.060240963855421679 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na3 = _lt_0_row[13]; // per_millisecond + const double var_fast_sodium_current__alpha_Na4 = 0.001 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__alpha_Na5 = 1.0526315789473684e-5 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__beta_Na11 = _lt_0_row[14]; // per_millisecond + const double var_fast_sodium_current__beta_Na12 = _lt_0_row[15]; // per_millisecond + const double var_fast_sodium_current__beta_Na13 = _lt_0_row[16]; // per_millisecond + const double var_fast_sodium_current__beta_Na3 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__membrane__V; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na1 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na2 = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 + var_fast_sodium_current__C_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na2 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na3 = var_fast_sodium_current__C_Na3 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na3; // 1 / millisecond + const double var_fast_sodium_current__beta_Na2 = var_fast_sodium_current__alpha_Na13 * var_fast_sodium_current__alpha_Na2 * var_fast_sodium_current__alpha_Na3 / (var_fast_sodium_current__beta_Na13 * var_fast_sodium_current__beta_Na3); // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__O_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13; // 1 / millisecond + const double var_fast_sodium_current__beta_Na4 = var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IF_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2; // 1 / millisecond + const double var_fast_sodium_current__beta_Na5 = 0.02 * var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I1_Na = var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I2_Na = var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5; // 1 / millisecond + const double var_fast_transient_outward_potassium_current__alpha_a = 0.18064 * _lt_0_row[17]; // per_millisecond + const double var_fast_transient_outward_potassium_current__alpha_i = 0.00015200000000000001 * _lt_0_row[19] * _lt_0_row[20]; // per_millisecond + const double var_fast_transient_outward_potassium_current__beta_a = 0.39560000000000001 * _lt_0_row[18]; // per_millisecond + const double var_fast_transient_outward_potassium_current__beta_i = 0.00095 * _lt_0_row[21] * _lt_0_row[22]; // per_millisecond + const double var_membrane__VJSR = 1.1999999999999999e-7; // microlitre + const double var_membrane__VNSR = 2.0980000000000001e-6; // microlitre + const double var_membrane__Vmyo = 2.584e-5; // microlitre + const double d_dt_chaste_interface_var_calcium_concentration__CaNSR = (-var_calcium_fluxes__J_leak + var_calcium_fluxes__J_up) * var_membrane__Vmyo / var_membrane__VNSR - var_calcium_fluxes__J_tr * var_membrane__VJSR / var_membrane__VNSR; // micromolar / millisecond + const double var_membrane__Vss = 1.4849999999999999e-9; // microlitre + const double var_non_inactivating_steady_state_potassium_current__tau_Kss = 13.17 + 39.299999999999997 * exp(-0.086199999999999999 * var_chaste_interface__membrane__V); // millisecond + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__C_K0 = 1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K; // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__alpha_a0 = 0.022348 * _lt_0_row[27]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__alpha_a1 = _lt_0_row[23]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__alpha_i = _lt_0_row[24]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_a0 = 0.047002000000000002 * _lt_0_row[28]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_a1 = _lt_0_row[25]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_i = _lt_0_row[26]; // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__I_K = var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__alpha_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K * var_rapid_delayed_rectifier_potassium_current__beta_i; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__O_K = var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__alpha_a1 + var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K * var_rapid_delayed_rectifier_potassium_current__beta_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__alpha_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__beta_a1; // 1 / millisecond + const double var_rapid_delayed_rectifier_potassium_current__kb = 0.036777999999999998; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__kf = 0.023761000000000001; // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K1 = var_rapid_delayed_rectifier_potassium_current__C_K0 * var_rapid_delayed_rectifier_potassium_current__alpha_a0 + var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__kb - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * var_rapid_delayed_rectifier_potassium_current__beta_a0 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * var_rapid_delayed_rectifier_potassium_current__kf; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K2 = var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * var_rapid_delayed_rectifier_potassium_current__kf + var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__beta_a1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__alpha_a1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__kb; // 1 / millisecond + const double var_calcium_fluxes__J_rel = (-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; // micromolar_per_millisecond + const double d_dt_chaste_interface_var_calcium_concentration__CaJSR = (-var_calcium_fluxes__J_rel + var_calcium_fluxes__J_tr) * var_calcium_concentration__BJSR; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cass = (var_calcium_fluxes__J_rel * var_membrane__VJSR / var_membrane__Vss - var_calcium_fluxes__J_xfer * var_membrane__Vmyo / var_membrane__Vss - 0.5 * var_L_type_calcium_current__i_CaL * var_membrane__Acap * mParameters[8] / (var_membrane__F * var_membrane__Vss)) * var_calcium_concentration__Bss; // micromolar / millisecond + const double var_ryanodine_receptors__P_C1 = 1 - var_chaste_interface__ryanodine_receptors__P_C2 - var_chaste_interface__ryanodine_receptors__P_O1 - var_chaste_interface__ryanodine_receptors__P_O2; // dimensionless + const double var_ryanodine_receptors__k_minus_a = 0.071249999999999994; // per_millisecond + const double var_ryanodine_receptors__k_minus_b = 0.96499999999999997; // per_millisecond + const double var_ryanodine_receptors__k_minus_c = 0.00080000000000000004; // per_millisecond + const double var_ryanodine_receptors__k_plus_a = 0.0060749999999999997; // micromolar4_per_millisecond + const double var_ryanodine_receptors__k_plus_b = 0.0040499999999999998; // micromolar3_per_millisecond + const double var_ryanodine_receptors__k_plus_c = 0.0089999999999999993; // per_millisecond + const double d_dt_chaste_interface_var_ryanodine_receptors__P_C2 = var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_c - var_chaste_interface__ryanodine_receptors__P_C2 * var_ryanodine_receptors__k_minus_c; // 1 / millisecond + const double var_ryanodine_receptors__m = 3; // dimensionless + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O2 = -var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b + pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__m) * var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_b; // 1 / millisecond + const double var_ryanodine_receptors__n = 4; // dimensionless + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O1 = var_chaste_interface__ryanodine_receptors__P_C2 * var_ryanodine_receptors__k_minus_c + var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b - var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_minus_a - var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_c + pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__n) * var_ryanodine_receptors__P_C1 * var_ryanodine_receptors__k_plus_a - pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__m) * var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_b; // 1 / millisecond + const double var_slow_delayed_rectifier_potassium_current__alpha_n = 4.8133299999999997e-6 * _lt_0_row[30] * (26.5 + var_chaste_interface__membrane__V); // per_millisecond + const double var_slow_delayed_rectifier_potassium_current__beta_n = 9.5333299999999997e-5 * _lt_0_row[29]; // per_millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_transient_outward_potassium_current__ass = _lt_0_row[31]; // dimensionless + const double var_slow_transient_outward_potassium_current__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_potassium_current__iss = _lt_0_row[33]; // dimensionless + const double var_slow_transient_outward_potassium_current__i_Kto_s = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__slow_transient_outward_potassium_current__ato_s * var_slow_transient_outward_potassium_current__g_Kto_s * var_chaste_interface__slow_transient_outward_potassium_current__ito_s; // picoA_per_picoF + const double var_slow_transient_outward_potassium_current__tau_ta_s = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); // millisecond + const double var_slow_transient_outward_potassium_current__tau_ti_s = 270 + 1050 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); // millisecond + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_calcium_concentration__Cai_orig_deriv = (-var_calcium_fluxes__J_trpn - var_calcium_fluxes__J_up - 0.5 * (-2 * var_sodium_calcium_exchange_current__i_NaCa + var_calcium_background_current__i_Cab + var_calcium_pump_current__i_pCa) * var_membrane__Acap * mParameters[8] / (var_membrane__F * var_membrane__Vmyo) + var_calcium_fluxes__J_leak + var_calcium_fluxes__J_xfer) * var_calcium_concentration__Bi; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cai_converted = 0.001 * var_calcium_concentration__Cai_orig_deriv; // millimolar / millisecond + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 21000; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 0.88; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[5] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (mParameters[5] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double d_dt_chaste_interface_var_sodium_concentration__Nai = -(3 * var_sodium_calcium_exchange_current__i_NaCa + 3 * var_sodium_potassium_pump_current__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Nab) * var_membrane__Acap * mParameters[8] * mParameters[3] / (var_membrane__F * var_membrane__Vmyo); // micromolar / millisecond + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur = 0.16; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_potassium_concentration__Ki = -(-2 * var_sodium_potassium_pump_current__i_NaK + var_fast_transient_outward_potassium_current__i_Kto_f + var_non_inactivating_steady_state_potassium_current__i_Kss + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_slow_delayed_rectifier_potassium_current__i_Ks + var_slow_transient_outward_potassium_current__i_Kto_s + var_time_independent_potassium_current__i_K1 + var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur) * var_membrane__Acap * mParameters[8] * mParameters[3] / (var_membrane__F * var_membrane__Vmyo); // micromolar / millisecond + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); // millisecond + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur = 1200 - 170 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); // millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_calcium_activated_chloride_current__E_Cl = -40; // millivolt + const double var_calcium_activated_chloride_current__Km_Cl = 10; // micromolar + const double var_calcium_activated_chloride_current__g_ClCa = 10; // milliS_per_microF + const double var_calcium_activated_chloride_current__O_ClCa = 0.20000000000000001 * _lt_0_row[0]; // dimensionless + const double var_calcium_activated_chloride_current__i_ClCa = (-var_calcium_activated_chloride_current__E_Cl + var_chaste_interface__membrane__V) * var_calcium_activated_chloride_current__O_ClCa * var_calcium_activated_chloride_current__g_ClCa * var_calcium_concentration__Cai / (var_calcium_activated_chloride_current__Km_Cl + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_stim = var_membrane__i_stim_converted / HeartConfig::Instance()->GetCapacitance(); // picoA_per_picoF + d_dt_chaste_interface_var_membrane__V = -var_L_type_calcium_current__i_CaL - var_calcium_activated_chloride_current__i_ClCa - var_calcium_background_current__i_Cab - var_calcium_pump_current__i_pCa - var_fast_sodium_current__i_Na - var_fast_transient_outward_potassium_current__i_Kto_f - var_membrane__i_stim - var_non_inactivating_steady_state_potassium_current__i_Kss - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_slow_transient_outward_potassium_current__i_Kto_s - var_sodium_background_current__i_Nab - var_sodium_calcium_exchange_current__i_NaCa - var_sodium_potassium_pump_current__i_NaK - var_time_independent_potassium_current__i_K1 - var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur; // millivolt / millisecond + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_calcium_concentration__Cai_converted; + rDY[2] = d_dt_chaste_interface_var_calcium_concentration__Cass; + rDY[3] = d_dt_chaste_interface_var_calcium_concentration__CaJSR; + rDY[4] = d_dt_chaste_interface_var_calcium_concentration__CaNSR; + rDY[5] = d_dt_chaste_interface_var_calcium_fluxes__P_RyR; + rDY[6] = d_dt_chaste_interface_var_calcium_buffering__LTRPN_Ca; + rDY[7] = d_dt_chaste_interface_var_calcium_buffering__HTRPN_Ca; + rDY[8] = d_dt_chaste_interface_var_ryanodine_receptors__P_O1; + rDY[9] = d_dt_chaste_interface_var_ryanodine_receptors__P_O2; + rDY[10] = d_dt_chaste_interface_var_ryanodine_receptors__P_C2; + rDY[11] = d_dt_chaste_interface_var_L_type_calcium_current__O; + rDY[12] = d_dt_chaste_interface_var_L_type_calcium_current__C2; + rDY[13] = d_dt_chaste_interface_var_L_type_calcium_current__C3; + rDY[14] = d_dt_chaste_interface_var_L_type_calcium_current__C4; + rDY[15] = d_dt_chaste_interface_var_L_type_calcium_current__I1; + rDY[16] = d_dt_chaste_interface_var_L_type_calcium_current__I2; + rDY[17] = d_dt_chaste_interface_var_L_type_calcium_current__I3; + rDY[18] = d_dt_chaste_interface_var_sodium_concentration__Nai; + rDY[19] = d_dt_chaste_interface_var_fast_sodium_current__O_Na; + rDY[20] = d_dt_chaste_interface_var_fast_sodium_current__C_Na1; + rDY[21] = d_dt_chaste_interface_var_fast_sodium_current__C_Na2; + rDY[22] = d_dt_chaste_interface_var_fast_sodium_current__I1_Na; + rDY[23] = d_dt_chaste_interface_var_fast_sodium_current__I2_Na; + rDY[24] = d_dt_chaste_interface_var_fast_sodium_current__IF_Na; + rDY[25] = d_dt_chaste_interface_var_fast_sodium_current__IC_Na2; + rDY[26] = d_dt_chaste_interface_var_fast_sodium_current__IC_Na3; + rDY[27] = d_dt_chaste_interface_var_potassium_concentration__Ki; + rAlphaOrTau[28] = 1 * var_fast_transient_outward_potassium_current__alpha_a; + rBetaOrInf[28] = var_fast_transient_outward_potassium_current__beta_a; + rAlphaOrTau[29] = 1 * var_fast_transient_outward_potassium_current__alpha_i; + rBetaOrInf[29] = var_fast_transient_outward_potassium_current__beta_i; + rAlphaOrTau[30] = var_slow_transient_outward_potassium_current__tau_ta_s; + rBetaOrInf[30] = var_slow_transient_outward_potassium_current__ass; + rAlphaOrTau[31] = var_slow_transient_outward_potassium_current__tau_ti_s; + rBetaOrInf[31] = var_slow_transient_outward_potassium_current__iss; + rAlphaOrTau[32] = 1 * var_slow_delayed_rectifier_potassium_current__alpha_n; + rBetaOrInf[32] = var_slow_delayed_rectifier_potassium_current__beta_n; + rAlphaOrTau[33] = var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur; + rBetaOrInf[33] = var_slow_transient_outward_potassium_current__ass; + rAlphaOrTau[34] = var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur; + rBetaOrInf[34] = var_slow_transient_outward_potassium_current__iss; + rAlphaOrTau[35] = var_non_inactivating_steady_state_potassium_current__tau_Kss; + rBetaOrInf[35] = var_slow_transient_outward_potassium_current__ass; + rDY[36] = d_dt_chaste_interface_var_non_inactivating_steady_state_potassium_current__iKss; + rDY[37] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__O_K; + rDY[38] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K1; + rDY[39] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K2; + rDY[40] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__I_K; + } + void Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::ComputeOneStepExceptVoltage(const std::vector &rDY, const std::vector &rAlphaOrTau, const std::vector &rBetaOrInf) + { + + std::vector& rY = rGetStateVariables(); + + rY[1] += mDt * rDY[1]; + rY[2] += mDt * rDY[2]; + rY[3] += mDt * rDY[3]; + rY[4] += mDt * rDY[4]; + rY[5] += mDt * rDY[5]; + rY[6] += mDt * rDY[6]; + rY[7] += mDt * rDY[7]; + rY[8] += mDt * rDY[8]; + rY[9] += mDt * rDY[9]; + rY[10] += mDt * rDY[10]; + rY[11] += mDt * rDY[11]; + rY[12] += mDt * rDY[12]; + rY[13] += mDt * rDY[13]; + rY[14] += mDt * rDY[14]; + rY[15] += mDt * rDY[15]; + rY[16] += mDt * rDY[16]; + rY[17] += mDt * rDY[17]; + rY[18] += mDt * rDY[18]; + rY[19] += mDt * rDY[19]; + rY[20] += mDt * rDY[20]; + rY[21] += mDt * rDY[21]; + rY[22] += mDt * rDY[22]; + rY[23] += mDt * rDY[23]; + rY[24] += mDt * rDY[24]; + rY[25] += mDt * rDY[25]; + rY[26] += mDt * rDY[26]; + rY[27] += mDt * rDY[27]; + { + const double tau_inv = rAlphaOrTau[28] + rBetaOrInf[28]; + const double y_inf = rAlphaOrTau[28] / tau_inv; + rY[28] = y_inf + (rY[28] - y_inf)*exp(-mDt*tau_inv); + } + { + const double tau_inv = rAlphaOrTau[29] + rBetaOrInf[29]; + const double y_inf = rAlphaOrTau[29] / tau_inv; + rY[29] = y_inf + (rY[29] - y_inf)*exp(-mDt*tau_inv); + } + rY[30] = rBetaOrInf[30] + (rY[30] - rBetaOrInf[30])*exp(-mDt/rAlphaOrTau[30]); + rY[31] = rBetaOrInf[31] + (rY[31] - rBetaOrInf[31])*exp(-mDt/rAlphaOrTau[31]); + { + const double tau_inv = rAlphaOrTau[32] + rBetaOrInf[32]; + const double y_inf = rAlphaOrTau[32] / tau_inv; + rY[32] = y_inf + (rY[32] - y_inf)*exp(-mDt*tau_inv); + } + rY[33] = rBetaOrInf[33] + (rY[33] - rBetaOrInf[33])*exp(-mDt/rAlphaOrTau[33]); + rY[34] = rBetaOrInf[34] + (rY[34] - rBetaOrInf[34])*exp(-mDt/rAlphaOrTau[34]); + rY[35] = rBetaOrInf[35] + (rY[35] - rBetaOrInf[35])*exp(-mDt/rAlphaOrTau[35]); + rY[36] += mDt * rDY[36]; + rY[37] += mDt * rDY[37]; + rY[38] += mDt * rDY[38]; + rY[39] += mDt * rDY[39]; + rY[40] += mDt * rDY[40]; + } + + std::vector Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.115001 + double var_chaste_interface__calcium_concentration__CaJSR = rY[3]; + // Units: micromolar; Initial value: 1299.5 + double var_chaste_interface__calcium_fluxes__P_RyR = rY[5]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ryanodine_receptors__P_O1 = rY[8]; + // Units: dimensionless; Initial value: 1.49102e-05 + double var_chaste_interface__ryanodine_receptors__P_O2 = rY[9]; + // Units: dimensionless; Initial value: 9.51726e-11 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + + // Mathematics + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_transient_outward_potassium_current__i_Kto_f; // uA_per_cm2 + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss_converted = HeartConfig::Instance()->GetCapacitance() * var_non_inactivating_steady_state_potassium_current__i_Kss; // uA_per_cm2 + const double var_calcium_fluxes__J_rel = (-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; // micromolar_per_millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchange_current__i_NaCa; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + + std::vector dqs(12); + dqs[0] = var_calcium_fluxes__J_rel; + dqs[1] = var_chaste_interface__calcium_concentration__Cai_converted; + dqs[2] = var_L_type_calcium_current__i_CaL_converted; + dqs[3] = var_fast_sodium_current__i_Na_converted; + dqs[4] = var_time_independent_potassium_current__i_K1_converted; + dqs[5] = var_non_inactivating_steady_state_potassium_current__i_Kss_converted; + dqs[6] = var_rapid_delayed_rectifier_potassium_current__i_Kr_converted; + dqs[7] = var_slow_delayed_rectifier_potassium_current__i_Ks_converted; + dqs[8] = var_sodium_calcium_exchange_current__i_NaCa_converted; + dqs[9] = var_membrane__i_stim_converted; + dqs[10] = var_fast_transient_outward_potassium_current__i_Kto_f_converted; + dqs[11] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "bondarenko_2004_apical"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-82.4202); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000115001); + + // rY[2]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(0.115001); + + // rY[3]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(1299.5); + + // rY[4]: + this->mVariableNames.push_back("calcium_concentration__CaNSR"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(1299.5); + + // rY[5]: + this->mVariableNames.push_back("calcium_fluxes__P_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[6]: + this->mVariableNames.push_back("calcium_buffering__LTRPN_Ca"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(11.2684); + + // rY[7]: + this->mVariableNames.push_back("calcium_buffering__HTRPN_Ca"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(125.29); + + // rY[8]: + this->mVariableNames.push_back("ryanodine_receptors__P_O1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.49102e-05); + + // rY[9]: + this->mVariableNames.push_back("ryanodine_receptors__P_O2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.51726e-11); + + // rY[10]: + this->mVariableNames.push_back("ryanodine_receptors__P_C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00016774); + + // rY[11]: + this->mVariableNames.push_back("L_type_calcium_current__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.30308e-19); + + // rY[12]: + this->mVariableNames.push_back("L_type_calcium_current__C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000124216); + + // rY[13]: + this->mVariableNames.push_back("L_type_calcium_current__C3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(5.78679e-09); + + // rY[14]: + this->mVariableNames.push_back("L_type_calcium_current__C4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.19816e-13); + + // rY[15]: + this->mVariableNames.push_back("L_type_calcium_current__I1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(4.97923e-19); + + // rY[16]: + this->mVariableNames.push_back("L_type_calcium_current__I2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.45847e-14); + + // rY[17]: + this->mVariableNames.push_back("L_type_calcium_current__I3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.85106e-14); + + // rY[18]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(14237.1); + + // rY[19]: + this->mVariableNames.push_back("fast_sodium_current__O_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.13483e-07); + + // rY[20]: + this->mVariableNames.push_back("fast_sodium_current__C_Na1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000279132); + + // rY[21]: + this->mVariableNames.push_back("fast_sodium_current__C_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.020752); + + // rY[22]: + this->mVariableNames.push_back("fast_sodium_current__I1_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.73345e-07); + + // rY[23]: + this->mVariableNames.push_back("fast_sodium_current__I2_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.55787e-09); + + // rY[24]: + this->mVariableNames.push_back("fast_sodium_current__IF_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000153176); + + // rY[25]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0113879); + + // rY[26]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.34278); + + // rY[27]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(143720.0); + + // rY[28]: + this->mVariableNames.push_back("fast_transient_outward_potassium_current__ato_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00265563); + + // rY[29]: + this->mVariableNames.push_back("fast_transient_outward_potassium_current__ito_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999977); + + // rY[30]: + this->mVariableNames.push_back("slow_transient_outward_potassium_current__ato_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[31]: + this->mVariableNames.push_back("slow_transient_outward_potassium_current__ito_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998543); + + // rY[32]: + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current__nKs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000262753); + + // rY[33]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_potassium_current__aur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[34]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_potassium_current__iur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998543); + + // rY[35]: + this->mVariableNames.push_back("non_inactivating_steady_state_potassium_current__aKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[36]: + this->mVariableNames.push_back("non_inactivating_steady_state_potassium_current__iKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[37]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__O_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000175298); + + // rY[38]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__C_K1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000992513); + + // rY[39]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__C_K2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000641229); + + // rY[40]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__I_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.19129e-05); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("micromolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_non_inactivating_steady_state_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("micromolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_non_inactivating_steady_state_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_14.cpp b/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_14.cpp new file mode 100644 index 00000000..75d52e2e --- /dev/null +++ b/chaste_codegen/data/tests/chaste_reference_models/RLopt/dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical--sympy_1_14.cpp @@ -0,0 +1,1545 @@ +//! @file +//! +//! This source file was generated from CellML by chaste_codegen version (version omitted as unimportant) +//! +//! Model: bondarenko_2004_apical +//! +//! Processed by chaste_codegen: https://github.com/ModellingWebLab/chaste-codegen +//! (translator: chaste_codegen, model type: RushLarsenOpt) +//! on (date omitted as unimportant) +//! +//! + +#include "dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical.hpp" +#include +#include +#include +#include +#include "Exception.hpp" +#include "OdeSystemInformation.hpp" +#include "RegularStimulus.hpp" +#include "HeartConfig.hpp" +#include "IsNan.hpp" +#include "MathsCustomFunctions.hpp" + +#include "ModelFactory.hpp" + +AbstractRushLarsenCardiacCell* Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::CreateMethod(boost::shared_ptr p_solver, boost::shared_ptr p_stimulus) { + return new Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt(p_solver, p_stimulus); +} + +bool Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::registered = ModelFactory::Register("dynamic_bondarenko_szigeti_bett_kim_rasmusson_2004_apical", "RushLarsenOpt", (ModelFactory::TCreateMethod)Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::CreateMethod); + +class Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables : public AbstractLookupTableCollection +{ +public: + static Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables* Instance() + { + if (mpInstance.get() == NULL) + { + mpInstance.reset(new Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables); + } + return mpInstance.get(); + } + + void FreeMemory() + { + + if (_lookup_table_0) + { + delete[] _lookup_table_0; + _lookup_table_0 = NULL; + } + + mNeedsRegeneration.assign(mNeedsRegeneration.size(), true); + } + + // Row lookup methods + // using linear-interpolation + + double* _lookup_0_row(unsigned i, double _factor_) + { + for (unsigned j=0; j<37; j++) + { + const double y1 = _lookup_table_0[i][j]; + const double y2 = _lookup_table_0[i+1][j]; + _lookup_table_0_row[j] = y1 + (y2-y1)*_factor_; + } + return _lookup_table_0_row; + } + + + const double * IndexTable0(double var_chaste_interface__membrane__V) + { + const double _offset_0 = var_chaste_interface__membrane__V - mTableMins[0]; + const double _offset_0_over_table_step = _offset_0 * mTableStepInverses[0]; + const unsigned _table_index_0 = (unsigned)(_offset_0_over_table_step); + const double _factor_0 = _offset_0_over_table_step - _table_index_0; + const double* const _lt_0_row = Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::Instance()->_lookup_0_row(_table_index_0, _factor_0); + return _lt_0_row; + } + + +// LCOV_EXCL_START + bool CheckIndex0(double& var_chaste_interface__membrane__V) + { + bool _oob_0 = false; + if (var_chaste_interface__membrane__V>mTableMaxs[0] || var_chaste_interface__membrane__V mpInstance; + + // Row lookup methods memory + double _lookup_table_0_row[37]; + + // Lookup tables + double (*_lookup_table_0)[37]; + int _lookup_table_0_num_misshit_piecewise[37] = {0}; + +}; + +std::shared_ptr Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::mpInstance; + + + boost::shared_ptr Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::UseCellMLDefaultStimulus() + { + // Use the default stimulus specified by CellML metadata + const double var_chaste_interface__membrane__stim_amplitude_converted = -80 * HeartConfig::Instance()->GetCapacitance(); // uA_per_cm2 + const double var_chaste_interface__membrane__stim_duration = 0.5; // millisecond + const double var_chaste_interface__membrane__stim_period = 71.430000000000007; // millisecond + const double var_chaste_interface__membrane__stim_start = 0; // millisecond + boost::shared_ptr p_cellml_stim(new RegularStimulus( + -fabs(var_chaste_interface__membrane__stim_amplitude_converted), + var_chaste_interface__membrane__stim_duration, + var_chaste_interface__membrane__stim_period, + var_chaste_interface__membrane__stim_start + )); + mpIntracellularStimulus = p_cellml_stim; + return p_cellml_stim; + } + double Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::GetIntracellularCalciumConcentration() + { + return mStateVariables[1]; + } + Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt(boost::shared_ptr /* unused; should be empty */, boost::shared_ptr pIntracellularStimulus) + : AbstractRushLarsenCardiacCell( + 41, + 0, + pIntracellularStimulus) + { + // Time units: millisecond + // + this->mpSystemInfo = OdeSystemInformation::Instance(); + Init(); + + // We have a default stimulus specified in the CellML file metadata + this->mHasDefaultStimulusFromCellML = true; + + this->mParameters[0] = 1.7399999999999999e-5; // (var_calcium_fluxes__v2) [per_millisecond] + this->mParameters[1] = 4.5; // (var_calcium_fluxes__v1) [per_millisecond] + this->mParameters[2] = 0.45000000000000001; // (var_calcium_fluxes__v3) [micromolar_per_millisecond] + this->mParameters[3] = 1; // (var_sodium_concentration__conc_clamp) [dimensionless] + this->mParameters[4] = 1800; // (var_membrane__Cao) [micromolar] + this->mParameters[5] = 5400; // (var_membrane__Ko) [micromolar] + this->mParameters[6] = 140000; // (var_membrane__Nao) [micromolar] + this->mParameters[7] = 0.1729; // (var_L_type_calcium_current__g_CaL) [milliS_per_microF] + this->mParameters[8] = 1; // (var_membrane__Cm) [microF_per_cm2] + this->mParameters[9] = 13; // (var_fast_sodium_current__g_Na) [milliS_per_microF] + this->mParameters[10] = 0; // (var_fast_sodium_current__shift_INa_inact) [millivolt] + this->mParameters[11] = 0.29380000000000001; // (var_time_independent_potassium_current__g_K1) [milliS_per_microF] + this->mParameters[12] = 0.050000000000000003; // (var_non_inactivating_steady_state_potassium_current__g_Kss) [milliS_per_microF] + this->mParameters[13] = 0.078; // (var_rapid_delayed_rectifier_potassium_current__g_Kr) [milliS_per_microF] + this->mParameters[14] = 0.0057499999999999999; // (var_slow_delayed_rectifier_potassium_current__g_Ks) [milliS_per_microF] + this->mParameters[15] = 292.80000000000001; // (var_sodium_calcium_exchange_current__k_NaCa) [picoA_per_picoF] + this->mParameters[16] = 0.40670000000000001; // (var_fast_transient_outward_potassium_current__g_Kto_f) [milliS_per_microF] + } + + Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::~Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt() + { + } + + AbstractLookupTableCollection* Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::GetLookupTableCollection() + { + return Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::Instance(); + } + + void Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::VerifyStateVariables() + { + std::vector& rY = rGetStateVariables(); + std::string error_message = ""; + + for (unsigned i=0; i < 41; i++) + { + if(std::isnan(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " is not a number\n"; + } + if(std::isinf(rY[i])) + { + error_message += "State variable " + this->rGetStateVariableNames()[i] + " has become INFINITE\n"; + } + if(this->is_concentration[i] && rY[i] < 0) + { + error_message += "Concentration " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] < 0) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " below 0\n"; + } + if(this->is_probability[i] && rY[i] > 1) + { + error_message += "Probability " + this->rGetStateVariableNames()[i] + " above 1\n"; + } + } + if (error_message != ""){ + EXCEPTION(DumpState(error_message)); + } + } + + double Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::GetIIonic(const std::vector* pStateVariables) + { + // For state variable interpolation (SVI) we read in interpolated state variables, + // otherwise for ionic current interpolation (ICI) we use the state variables of this model (node). + if (!pStateVariables) pStateVariables = &rGetStateVariables(); + const std::vector& rY = *pStateVariables; + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + // Lookup table indexing + const bool _oob_0 = Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_calcium_pump_current__i_pCa = 1 * pow(var_calcium_concentration__Cai, 2) / (0.25 + pow(var_calcium_concentration__Cai, 2)); // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = (-63 + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // uA_per_cm2 + const double var_calcium_activated_chloride_current__i_ClCa = 2 * _lt_0_row[0] * (40 + var_chaste_interface__membrane__V) * var_calcium_concentration__Cai / (10 + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_calcium_background_current__i_Cab = 0.00036699999999999998 * var_chaste_interface__membrane__V - 0.0047112379481865285 * log(mParameters[4] / var_calcium_concentration__Cai); // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__E_K = 25.674321243523316 * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki); // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // uA_per_cm2 + const double var_non_inactivating_steady_state_potassium_current__i_Kss_converted = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // uA_per_cm2 + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[14]; // uA_per_cm2 + const double var_slow_transient_outward_potassium_current__i_Kto_s = 0; // picoA_per_picoF + const double var_fast_sodium_current__E_Na = 25.674321243523316 * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)); // millivolt + const double var_fast_sodium_current__i_Na_converted = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = (-25.674321243523316 * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // uA_per_cm2 + const double var_sodium_background_current__i_Nab = 0.0025999999999999999 * var_chaste_interface__membrane__V - 0.0025999999999999999 * var_fast_sodium_current__E_Na; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = 1 * _lt_0_row[3] * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * _lt_0_row[1] - pow(mParameters[6], 3) * var_calcium_concentration__Cai * _lt_0_row[2]) * HeartConfig::Instance()->GetCapacitance() * mParameters[15] / ((1380 + mParameters[4]) * (669921875000000.0 + pow(mParameters[6], 3))); // uA_per_cm2 + const double var_sodium_potassium_pump_current__i_NaK = 0.88 * mParameters[5] / ((1 + 3043189.1166997822 * pow((1 / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (1500 + mParameters[5]) * (1 + _lt_0_row[5] + 0.036499999999999998 * (-0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6])) * _lt_0_row[4])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1_converted = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * HeartConfig::Instance()->GetCapacitance() * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // uA_per_cm2 + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = 0.16 * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double var_chaste_interface__i_ionic = HeartConfig::Instance()->GetCapacitance() * var_calcium_activated_chloride_current__i_ClCa + HeartConfig::Instance()->GetCapacitance() * var_calcium_background_current__i_Cab + HeartConfig::Instance()->GetCapacitance() * var_calcium_pump_current__i_pCa + HeartConfig::Instance()->GetCapacitance() * var_slow_transient_outward_potassium_current__i_Kto_s + HeartConfig::Instance()->GetCapacitance() * var_sodium_background_current__i_Nab + HeartConfig::Instance()->GetCapacitance() * var_sodium_potassium_pump_current__i_NaK + HeartConfig::Instance()->GetCapacitance() * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur + var_L_type_calcium_current__i_CaL_converted + var_fast_sodium_current__i_Na_converted + var_fast_transient_outward_potassium_current__i_Kto_f_converted + var_non_inactivating_steady_state_potassium_current__i_Kss_converted + var_rapid_delayed_rectifier_potassium_current__i_Kr_converted + var_slow_delayed_rectifier_potassium_current__i_Ks_converted + var_sodium_calcium_exchange_current__i_NaCa_converted + var_time_independent_potassium_current__i_K1_converted; // uA_per_cm2 + + const double i_ionic = var_chaste_interface__i_ionic; + EXCEPT_IF_NOT(!std::isnan(i_ionic)); + return i_ionic; + } + + void Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::EvaluateEquations(double var_chaste_interface__environment__time, std::vector &rDY, std::vector &rAlphaOrTau, std::vector &rBetaOrInf) + { + std::vector& rY = rGetStateVariables(); + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.115001 + double var_chaste_interface__calcium_concentration__CaJSR = rY[3]; + // Units: micromolar; Initial value: 1299.5 + double var_chaste_interface__calcium_concentration__CaNSR = rY[4]; + // Units: micromolar; Initial value: 1299.5 + double var_chaste_interface__calcium_fluxes__P_RyR = rY[5]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__calcium_buffering__LTRPN_Ca = rY[6]; + // Units: micromolar; Initial value: 11.2684 + double var_chaste_interface__calcium_buffering__HTRPN_Ca = rY[7]; + // Units: micromolar; Initial value: 125.29 + double var_chaste_interface__ryanodine_receptors__P_O1 = rY[8]; + // Units: dimensionless; Initial value: 1.49102e-05 + double var_chaste_interface__ryanodine_receptors__P_O2 = rY[9]; + // Units: dimensionless; Initial value: 9.51726e-11 + double var_chaste_interface__ryanodine_receptors__P_C2 = rY[10]; + // Units: dimensionless; Initial value: 0.00016774 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__L_type_calcium_current__C2 = rY[12]; + // Units: dimensionless; Initial value: 0.000124216 + double var_chaste_interface__L_type_calcium_current__C3 = rY[13]; + // Units: dimensionless; Initial value: 5.78679e-09 + double var_chaste_interface__L_type_calcium_current__C4 = rY[14]; + // Units: dimensionless; Initial value: 1.19816e-13 + double var_chaste_interface__L_type_calcium_current__I1 = rY[15]; + // Units: dimensionless; Initial value: 4.97923e-19 + double var_chaste_interface__L_type_calcium_current__I2 = rY[16]; + // Units: dimensionless; Initial value: 3.45847e-14 + double var_chaste_interface__L_type_calcium_current__I3 = rY[17]; + // Units: dimensionless; Initial value: 1.85106e-14 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__fast_sodium_current__C_Na1 = rY[20]; + // Units: dimensionless; Initial value: 0.000279132 + double var_chaste_interface__fast_sodium_current__C_Na2 = rY[21]; + // Units: dimensionless; Initial value: 0.020752 + double var_chaste_interface__fast_sodium_current__I1_Na = rY[22]; + // Units: dimensionless; Initial value: 6.73345e-07 + double var_chaste_interface__fast_sodium_current__I2_Na = rY[23]; + // Units: dimensionless; Initial value: 1.55787e-09 + double var_chaste_interface__fast_sodium_current__IF_Na = rY[24]; + // Units: dimensionless; Initial value: 0.000153176 + double var_chaste_interface__fast_sodium_current__IC_Na2 = rY[25]; + // Units: dimensionless; Initial value: 0.0113879 + double var_chaste_interface__fast_sodium_current__IC_Na3 = rY[26]; + // Units: dimensionless; Initial value: 0.34278 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_transient_outward_potassium_current__ato_s = rY[30]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__slow_transient_outward_potassium_current__ito_s = rY[31]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur = rY[33]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur = rY[34]; + // Units: dimensionless; Initial value: 0.998543 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 = rY[38]; + // Units: dimensionless; Initial value: 0.000992513 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 = rY[39]; + // Units: dimensionless; Initial value: 0.000641229 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K = rY[40]; + // Units: dimensionless; Initial value: 3.19129e-05 + + // Lookup table indexing + const bool _oob_0 = Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::Instance()->CheckIndex0(var_chaste_interface__membrane__V); +// LCOV_EXCL_START + if (_oob_0) + EXCEPTION(DumpState("membrane_voltage outside lookup table range", rY , var_chaste_interface__environment__time)); +// LCOV_EXCL_STOP + const double* const _lt_0_row = Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt_LookupTables::Instance()->IndexTable0(var_chaste_interface__membrane__V); + + // Mathematics + double d_dt_chaste_interface_var_membrane__V; + const double d_dt_chaste_interface_var_non_inactivating_steady_state_potassium_current__iKss = 0; // 1 / millisecond + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_L_type_calcium_current__Kpc_half = 20; // micromolar + const double var_L_type_calcium_current__Kpc_max = 0.23324; // per_millisecond + const double var_L_type_calcium_current__Kpcb = 0.00050000000000000001; // per_millisecond + const double var_L_type_calcium_current__C1 = 1 - var_chaste_interface__L_type_calcium_current__C2 - var_chaste_interface__L_type_calcium_current__C3 - var_chaste_interface__L_type_calcium_current__C4 - var_chaste_interface__L_type_calcium_current__I1 - var_chaste_interface__L_type_calcium_current__I2 - var_chaste_interface__L_type_calcium_current__I3 - var_chaste_interface__L_type_calcium_current__O; // dimensionless + const double var_L_type_calcium_current__i_CaL_max = 7; // picoA_per_picoF + const double var_calcium_background_current__g_Cab = 0.00036699999999999998; // milliS_per_microF + const double var_calcium_buffering__HTRPN_tot = 140; // micromolar + const double var_calcium_buffering__LTRPN_tot = 70; // micromolar + const double var_calcium_concentration__CMDN_tot = 50; // micromolar + const double var_calcium_concentration__CSQN_tot = 15000; // micromolar + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_L_type_calcium_current__gamma = var_L_type_calcium_current__Kpc_max * var_chaste_interface__calcium_concentration__Cass / (var_L_type_calcium_current__Kpc_half + var_chaste_interface__calcium_concentration__Cass); // per_millisecond + const double var_calcium_concentration__Km_CMDN = 0.23799999999999999; // micromolar + const double var_calcium_concentration__Bi = 1 / (1 + var_calcium_concentration__CMDN_tot * var_calcium_concentration__Km_CMDN / pow((var_calcium_concentration__Cai + var_calcium_concentration__Km_CMDN), 2)); // dimensionless + const double var_calcium_concentration__Bss = 1 / (1 + var_calcium_concentration__CMDN_tot * var_calcium_concentration__Km_CMDN / pow((var_chaste_interface__calcium_concentration__Cass + var_calcium_concentration__Km_CMDN), 2)); // dimensionless + const double var_calcium_concentration__Km_CSQN = 800; // micromolar + const double var_calcium_concentration__BJSR = 1 / (1 + var_calcium_concentration__CSQN_tot * var_calcium_concentration__Km_CSQN / pow((var_chaste_interface__calcium_concentration__CaJSR + var_calcium_concentration__Km_CSQN), 2)); // dimensionless + const double var_calcium_fluxes__Km_up = 0.5; // micromolar + const double var_calcium_fluxes__k_minus_htrpn = 3.1999999999999999e-5; // per_millisecond + const double var_calcium_fluxes__k_minus_ltrpn = 0.019599999999999999; // per_millisecond + const double var_calcium_fluxes__k_plus_htrpn = 0.0023700000000000001; // per_micromolar_millisecond + const double d_dt_chaste_interface_var_calcium_buffering__HTRPN_Ca = -var_chaste_interface__calcium_buffering__HTRPN_Ca * var_calcium_fluxes__k_minus_htrpn + (-var_chaste_interface__calcium_buffering__HTRPN_Ca + var_calcium_buffering__HTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_htrpn; // micromolar / millisecond + const double var_calcium_fluxes__k_plus_ltrpn = 0.0327; // per_micromolar_millisecond + const double d_dt_chaste_interface_var_calcium_buffering__LTRPN_Ca = -var_chaste_interface__calcium_buffering__LTRPN_Ca * var_calcium_fluxes__k_minus_ltrpn + (-var_chaste_interface__calcium_buffering__LTRPN_Ca + var_calcium_buffering__LTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_ltrpn; // micromolar / millisecond + const double var_calcium_fluxes__J_trpn = -var_chaste_interface__calcium_buffering__HTRPN_Ca * var_calcium_fluxes__k_minus_htrpn - var_chaste_interface__calcium_buffering__LTRPN_Ca * var_calcium_fluxes__k_minus_ltrpn + (-var_chaste_interface__calcium_buffering__HTRPN_Ca + var_calcium_buffering__HTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_htrpn + (-var_chaste_interface__calcium_buffering__LTRPN_Ca + var_calcium_buffering__LTRPN_tot) * var_calcium_concentration__Cai * var_calcium_fluxes__k_plus_ltrpn; // micromolar_per_millisecond + const double var_calcium_fluxes__tau_tr = 20; // millisecond + const double var_calcium_fluxes__J_tr = (-var_chaste_interface__calcium_concentration__CaJSR + var_chaste_interface__calcium_concentration__CaNSR) / var_calcium_fluxes__tau_tr; // micromolar_per_millisecond + const double var_calcium_fluxes__tau_xfer = 8; // millisecond + const double var_calcium_fluxes__J_xfer = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__Cass) / var_calcium_fluxes__tau_xfer; // micromolar_per_millisecond + const double var_calcium_fluxes__J_leak = (-var_calcium_concentration__Cai + var_chaste_interface__calcium_concentration__CaNSR) * mParameters[0]; // micromolar_per_millisecond + const double var_calcium_fluxes__J_up = pow(var_calcium_concentration__Cai, 2) * mParameters[2] / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_fluxes__Km_up, 2)); // micromolar_per_millisecond + const double var_calcium_pump_current__Km_pCa = 0.5; // micromolar + const double var_calcium_pump_current__i_pCa_max = 1; // picoA_per_picoF + const double var_calcium_pump_current__i_pCa = pow(var_calcium_concentration__Cai, 2) * var_calcium_pump_current__i_pCa_max / (pow(var_calcium_concentration__Cai, 2) + pow(var_calcium_pump_current__Km_pCa, 2)); // picoA_per_picoF + const double var_fast_sodium_current__C_Na3 = 1 - var_chaste_interface__fast_sodium_current__C_Na1 - var_chaste_interface__fast_sodium_current__C_Na2 - var_chaste_interface__fast_sodium_current__I1_Na - var_chaste_interface__fast_sodium_current__I2_Na - var_chaste_interface__fast_sodium_current__IC_Na2 - var_chaste_interface__fast_sodium_current__IC_Na3 - var_chaste_interface__fast_sodium_current__IF_Na - var_chaste_interface__fast_sodium_current__O_Na; // dimensionless + const double var_membrane__Acap = 0.00015339999999999999; // cm2 + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_calcium_background_current__E_CaN = 0.5 * var_membrane__R * var_membrane__T * log(mParameters[4] / var_calcium_concentration__Cai) / var_membrane__F; // millivolt + const double var_L_type_calcium_current__Kpcf = _lt_0_row[6]; // per_millisecond + const double var_L_type_calcium_current__alpha = _lt_0_row[7]; // per_millisecond + const double var_L_type_calcium_current__beta = _lt_0_row[8]; // per_millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C2 = -var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__beta + 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__beta + 4 * var_L_type_calcium_current__C1 * var_L_type_calcium_current__alpha - 3 * var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__alpha; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C3 = 3 * var_chaste_interface__L_type_calcium_current__C2 * var_L_type_calcium_current__alpha + 3 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__beta - 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__alpha - 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__C4 = -var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha + 2 * var_chaste_interface__L_type_calcium_current__C3 * var_L_type_calcium_current__alpha + 4 * var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__beta + 0.0080000000000000002 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__beta - 3 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__beta - 0.002 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf + 4 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta + 0.040000000000000001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta - 1 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma - 0.01 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I1 = var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__gamma - var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb + 0.001 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha - 0.001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf + 0.01 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha * var_L_type_calcium_current__gamma - 0.040000000000000001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I2 = var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb - var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__gamma + 0.001 * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O + 0.002 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf - 0.001 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - 0.0080000000000000002 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__I3 = var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__gamma - var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb + 0.001 * var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcf - 0.001 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__alpha + 1 * var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__Kpcf * var_L_type_calcium_current__gamma - 4 * var_chaste_interface__L_type_calcium_current__I3 * var_L_type_calcium_current__Kpcb * var_L_type_calcium_current__beta; // 1 / millisecond + const double d_dt_chaste_interface_var_L_type_calcium_current__O = var_chaste_interface__L_type_calcium_current__C4 * var_L_type_calcium_current__alpha + var_chaste_interface__L_type_calcium_current__I1 * var_L_type_calcium_current__Kpcb - var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__gamma + 0.001 * var_chaste_interface__L_type_calcium_current__I2 * var_L_type_calcium_current__alpha - 4 * var_chaste_interface__L_type_calcium_current__O * var_L_type_calcium_current__beta - 0.001 * var_L_type_calcium_current__Kpcf * var_chaste_interface__L_type_calcium_current__O; // 1 / millisecond + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double d_dt_chaste_interface_var_calcium_fluxes__P_RyR = -0.040000000000000001 * var_chaste_interface__calcium_fluxes__P_RyR - 0.10000000000000001 * var_L_type_calcium_current__i_CaL * _lt_0_row[9] / var_L_type_calcium_current__i_CaL_max; // 1 / millisecond + const double var_calcium_background_current__i_Cab = (-var_calcium_background_current__E_CaN + var_chaste_interface__membrane__V) * var_calcium_background_current__g_Cab; // picoA_per_picoF + const double var_fast_sodium_current__alpha_Na11 = _lt_0_row[10]; // per_millisecond + const double var_fast_sodium_current__alpha_Na12 = _lt_0_row[11]; // per_millisecond + const double var_fast_sodium_current__alpha_Na13 = _lt_0_row[12]; // per_millisecond + const double var_fast_sodium_current__alpha_Na2 = 1 / (0.39395599999999997 + 0.188495 * exp(-0.42168674698795178 + 0.060240963855421679 * mParameters[10] - 0.060240963855421679 * var_chaste_interface__membrane__V)); // per_millisecond + const double var_fast_sodium_current__alpha_Na3 = _lt_0_row[13]; // per_millisecond + const double var_fast_sodium_current__alpha_Na4 = 0.001 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__alpha_Na5 = 1.0526315789473684e-5 * var_fast_sodium_current__alpha_Na2; // per_millisecond + const double var_fast_sodium_current__beta_Na11 = _lt_0_row[14]; // per_millisecond + const double var_fast_sodium_current__beta_Na12 = _lt_0_row[15]; // per_millisecond + const double var_fast_sodium_current__beta_Na13 = _lt_0_row[16]; // per_millisecond + const double var_fast_sodium_current__beta_Na3 = 0.008539999999999999 + 2.0000000000000002e-5 * var_chaste_interface__membrane__V; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na1 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__C_Na2 = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na12 + var_fast_sodium_current__C_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na2 = var_chaste_interface__fast_sodium_current__C_Na2 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IC_Na3 = var_fast_sodium_current__C_Na3 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__beta_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na11 - var_chaste_interface__fast_sodium_current__IC_Na3 * var_fast_sodium_current__alpha_Na3; // 1 / millisecond + const double var_fast_sodium_current__beta_Na2 = var_fast_sodium_current__alpha_Na13 * var_fast_sodium_current__alpha_Na2 * var_fast_sodium_current__alpha_Na3 / (var_fast_sodium_current__beta_Na13 * var_fast_sodium_current__beta_Na3); // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__O_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__alpha_Na13 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__beta_Na13; // 1 / millisecond + const double var_fast_sodium_current__beta_Na4 = var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__IF_Na = var_chaste_interface__fast_sodium_current__C_Na1 * var_fast_sodium_current__beta_Na3 + var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4 + var_chaste_interface__fast_sodium_current__IC_Na2 * var_fast_sodium_current__alpha_Na12 + var_chaste_interface__fast_sodium_current__O_Na * var_fast_sodium_current__alpha_Na2 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na3 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na12 - var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__beta_Na2; // 1 / millisecond + const double var_fast_sodium_current__beta_Na5 = 0.02 * var_fast_sodium_current__alpha_Na3; // per_millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I1_Na = var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5 + var_chaste_interface__fast_sodium_current__IF_Na * var_fast_sodium_current__alpha_Na4 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__beta_Na4; // 1 / millisecond + const double d_dt_chaste_interface_var_fast_sodium_current__I2_Na = var_chaste_interface__fast_sodium_current__I1_Na * var_fast_sodium_current__alpha_Na5 - var_chaste_interface__fast_sodium_current__I2_Na * var_fast_sodium_current__beta_Na5; // 1 / millisecond + const double var_fast_transient_outward_potassium_current__alpha_a = 0.18064 * _lt_0_row[17]; // per_millisecond + const double var_fast_transient_outward_potassium_current__alpha_i = 0.00015200000000000001 * _lt_0_row[19] * _lt_0_row[20]; // per_millisecond + const double var_fast_transient_outward_potassium_current__beta_a = 0.39560000000000001 * _lt_0_row[18]; // per_millisecond + const double var_fast_transient_outward_potassium_current__beta_i = 0.00095 * _lt_0_row[21] * _lt_0_row[22]; // per_millisecond + const double var_membrane__VJSR = 1.1999999999999999e-7; // microlitre + const double var_membrane__VNSR = 2.0980000000000001e-6; // microlitre + const double var_membrane__Vmyo = 2.584e-5; // microlitre + const double d_dt_chaste_interface_var_calcium_concentration__CaNSR = (-var_calcium_fluxes__J_leak + var_calcium_fluxes__J_up) * var_membrane__Vmyo / var_membrane__VNSR - var_calcium_fluxes__J_tr * var_membrane__VJSR / var_membrane__VNSR; // micromolar / millisecond + const double var_membrane__Vss = 1.4849999999999999e-9; // microlitre + const double var_non_inactivating_steady_state_potassium_current__tau_Kss = 13.17 + 39.299999999999997 * exp(-0.086199999999999999 * var_chaste_interface__membrane__V); // millisecond + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__C_K0 = 1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K; // dimensionless + const double var_rapid_delayed_rectifier_potassium_current__alpha_a0 = 0.022348 * _lt_0_row[27]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__alpha_a1 = _lt_0_row[23]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__alpha_i = _lt_0_row[24]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_a0 = 0.047002000000000002 * _lt_0_row[28]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_a1 = _lt_0_row[25]; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__beta_i = _lt_0_row[26]; // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__I_K = var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__alpha_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K * var_rapid_delayed_rectifier_potassium_current__beta_i; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__O_K = var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__alpha_a1 + var_chaste_interface__rapid_delayed_rectifier_potassium_current__I_K * var_rapid_delayed_rectifier_potassium_current__beta_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__alpha_i - var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__beta_a1; // 1 / millisecond + const double var_rapid_delayed_rectifier_potassium_current__kb = 0.036777999999999998; // per_millisecond + const double var_rapid_delayed_rectifier_potassium_current__kf = 0.023761000000000001; // per_millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K1 = var_rapid_delayed_rectifier_potassium_current__C_K0 * var_rapid_delayed_rectifier_potassium_current__alpha_a0 + var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__kb - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * var_rapid_delayed_rectifier_potassium_current__beta_a0 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * var_rapid_delayed_rectifier_potassium_current__kf; // 1 / millisecond + const double d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K2 = var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K1 * var_rapid_delayed_rectifier_potassium_current__kf + var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * var_rapid_delayed_rectifier_potassium_current__beta_a1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__alpha_a1 - var_chaste_interface__rapid_delayed_rectifier_potassium_current__C_K2 * var_rapid_delayed_rectifier_potassium_current__kb; // 1 / millisecond + const double var_calcium_fluxes__J_rel = (-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; // micromolar_per_millisecond + const double d_dt_chaste_interface_var_calcium_concentration__CaJSR = (-var_calcium_fluxes__J_rel + var_calcium_fluxes__J_tr) * var_calcium_concentration__BJSR; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cass = (var_calcium_fluxes__J_rel * var_membrane__VJSR / var_membrane__Vss - var_calcium_fluxes__J_xfer * var_membrane__Vmyo / var_membrane__Vss - 0.5 * var_L_type_calcium_current__i_CaL * var_membrane__Acap * mParameters[8] / (var_membrane__F * var_membrane__Vss)) * var_calcium_concentration__Bss; // micromolar / millisecond + const double var_ryanodine_receptors__P_C1 = 1 - var_chaste_interface__ryanodine_receptors__P_C2 - var_chaste_interface__ryanodine_receptors__P_O1 - var_chaste_interface__ryanodine_receptors__P_O2; // dimensionless + const double var_ryanodine_receptors__k_minus_a = 0.071249999999999994; // per_millisecond + const double var_ryanodine_receptors__k_minus_b = 0.96499999999999997; // per_millisecond + const double var_ryanodine_receptors__k_minus_c = 0.00080000000000000004; // per_millisecond + const double var_ryanodine_receptors__k_plus_a = 0.0060749999999999997; // micromolar4_per_millisecond + const double var_ryanodine_receptors__k_plus_b = 0.0040499999999999998; // micromolar3_per_millisecond + const double var_ryanodine_receptors__k_plus_c = 0.0089999999999999993; // per_millisecond + const double d_dt_chaste_interface_var_ryanodine_receptors__P_C2 = var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_c - var_chaste_interface__ryanodine_receptors__P_C2 * var_ryanodine_receptors__k_minus_c; // 1 / millisecond + const double var_ryanodine_receptors__m = 3; // dimensionless + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O2 = -var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b + pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__m) * var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_b; // 1 / millisecond + const double var_ryanodine_receptors__n = 4; // dimensionless + const double d_dt_chaste_interface_var_ryanodine_receptors__P_O1 = var_chaste_interface__ryanodine_receptors__P_C2 * var_ryanodine_receptors__k_minus_c + var_chaste_interface__ryanodine_receptors__P_O2 * var_ryanodine_receptors__k_minus_b - var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_minus_a - var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_c + pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__n) * var_ryanodine_receptors__P_C1 * var_ryanodine_receptors__k_plus_a - pow(var_chaste_interface__calcium_concentration__Cass, var_ryanodine_receptors__m) * var_chaste_interface__ryanodine_receptors__P_O1 * var_ryanodine_receptors__k_plus_b; // 1 / millisecond + const double var_slow_delayed_rectifier_potassium_current__alpha_n = 4.8133299999999997e-6 * _lt_0_row[30] * (26.5 + var_chaste_interface__membrane__V); // per_millisecond + const double var_slow_delayed_rectifier_potassium_current__beta_n = 9.5333299999999997e-5 * _lt_0_row[29]; // per_millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_transient_outward_potassium_current__ass = _lt_0_row[31]; // dimensionless + const double var_slow_transient_outward_potassium_current__g_Kto_s = 0; // milliS_per_microF + const double var_slow_transient_outward_potassium_current__iss = _lt_0_row[33]; // dimensionless + const double var_slow_transient_outward_potassium_current__i_Kto_s = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__slow_transient_outward_potassium_current__ato_s * var_slow_transient_outward_potassium_current__g_Kto_s * var_chaste_interface__slow_transient_outward_potassium_current__ito_s; // picoA_per_picoF + const double var_slow_transient_outward_potassium_current__tau_ta_s = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); // millisecond + const double var_slow_transient_outward_potassium_current__tau_ti_s = 270 + 1050 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); // millisecond + const double var_sodium_background_current__g_Nab = 0.0025999999999999999; // milliS_per_microF + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_sodium_background_current__i_Nab = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_sodium_background_current__g_Nab; // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_calcium_concentration__Cai_orig_deriv = (-var_calcium_fluxes__J_trpn - var_calcium_fluxes__J_up - 0.5 * (-2 * var_sodium_calcium_exchange_current__i_NaCa + var_calcium_background_current__i_Cab + var_calcium_pump_current__i_pCa) * var_membrane__Acap * mParameters[8] / (var_membrane__F * var_membrane__Vmyo) + var_calcium_fluxes__J_leak + var_calcium_fluxes__J_xfer) * var_calcium_concentration__Bi; // micromolar / millisecond + const double d_dt_chaste_interface_var_calcium_concentration__Cai_converted = 0.001 * var_calcium_concentration__Cai_orig_deriv; // millimolar / millisecond + const double var_sodium_potassium_pump_current__Km_Ko = 1500; // micromolar + const double var_sodium_potassium_pump_current__Km_Nai = 21000; // micromolar + const double var_sodium_potassium_pump_current__i_NaK_max = 0.88; // picoA_per_picoF + const double var_sodium_potassium_pump_current__sigma = -0.14285714285714285 + 0.14285714285714285 * exp(1.4858841010401188e-5 * mParameters[6]); // dimensionless + const double var_sodium_potassium_pump_current__f_NaK = 1 / (1 + 0.1245 * exp(-0.10000000000000001 * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T)) + 0.036499999999999998 * var_sodium_potassium_pump_current__sigma * exp(-var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))); // dimensionless + const double var_sodium_potassium_pump_current__i_NaK = 1 * mParameters[5] * var_sodium_potassium_pump_current__f_NaK * var_sodium_potassium_pump_current__i_NaK_max / ((1 + pow((var_sodium_potassium_pump_current__Km_Nai / var_chaste_interface__sodium_concentration__Nai), 1.5)) * (mParameters[5] + var_sodium_potassium_pump_current__Km_Ko)); // picoA_per_picoF + const double d_dt_chaste_interface_var_sodium_concentration__Nai = -(3 * var_sodium_calcium_exchange_current__i_NaCa + 3 * var_sodium_potassium_pump_current__i_NaK + var_fast_sodium_current__i_Na + var_sodium_background_current__i_Nab) * var_membrane__Acap * mParameters[8] * mParameters[3] / (var_membrane__F * var_membrane__Vmyo); // micromolar / millisecond + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur = 0.16; // milliS_per_microF + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__aur * var_ultra_rapidly_activating_delayed_rectifier_potassium_current__g_Kur * var_chaste_interface__ultra_rapidly_activating_delayed_rectifier_potassium_current__iur; // picoA_per_picoF + const double d_dt_chaste_interface_var_potassium_concentration__Ki = -(-2 * var_sodium_potassium_pump_current__i_NaK + var_fast_transient_outward_potassium_current__i_Kto_f + var_non_inactivating_steady_state_potassium_current__i_Kss + var_rapid_delayed_rectifier_potassium_current__i_Kr + var_slow_delayed_rectifier_potassium_current__i_Ks + var_slow_transient_outward_potassium_current__i_Kto_s + var_time_independent_potassium_current__i_K1 + var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur) * var_membrane__Acap * mParameters[8] * mParameters[3] / (var_membrane__F * var_membrane__Vmyo); // micromolar / millisecond + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur = 2.0579999999999998 + 0.49299999999999999 * exp(-0.062899999999999998 * var_chaste_interface__membrane__V); // millisecond + const double var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur = 1200 - 170 / (1 + exp(7.9298245614035094 + 0.17543859649122806 * var_chaste_interface__membrane__V)); // millisecond + + if (mSetVoltageDerivativeToZero) + { + d_dt_chaste_interface_var_membrane__V = 0.0; + } + else + { + const double var_calcium_activated_chloride_current__E_Cl = -40; // millivolt + const double var_calcium_activated_chloride_current__Km_Cl = 10; // micromolar + const double var_calcium_activated_chloride_current__g_ClCa = 10; // milliS_per_microF + const double var_calcium_activated_chloride_current__O_ClCa = 0.20000000000000001 * _lt_0_row[0]; // dimensionless + const double var_calcium_activated_chloride_current__i_ClCa = (-var_calcium_activated_chloride_current__E_Cl + var_chaste_interface__membrane__V) * var_calcium_activated_chloride_current__O_ClCa * var_calcium_activated_chloride_current__g_ClCa * var_calcium_concentration__Cai / (var_calcium_activated_chloride_current__Km_Cl + var_calcium_concentration__Cai); // picoA_per_picoF + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_membrane__i_stim = var_membrane__i_stim_converted / HeartConfig::Instance()->GetCapacitance(); // picoA_per_picoF + d_dt_chaste_interface_var_membrane__V = -var_L_type_calcium_current__i_CaL - var_calcium_activated_chloride_current__i_ClCa - var_calcium_background_current__i_Cab - var_calcium_pump_current__i_pCa - var_fast_sodium_current__i_Na - var_fast_transient_outward_potassium_current__i_Kto_f - var_membrane__i_stim - var_non_inactivating_steady_state_potassium_current__i_Kss - var_rapid_delayed_rectifier_potassium_current__i_Kr - var_slow_delayed_rectifier_potassium_current__i_Ks - var_slow_transient_outward_potassium_current__i_Kto_s - var_sodium_background_current__i_Nab - var_sodium_calcium_exchange_current__i_NaCa - var_sodium_potassium_pump_current__i_NaK - var_time_independent_potassium_current__i_K1 - var_ultra_rapidly_activating_delayed_rectifier_potassium_current__i_Kur; // millivolt / millisecond + } + + rDY[0] = d_dt_chaste_interface_var_membrane__V; + rDY[1] = d_dt_chaste_interface_var_calcium_concentration__Cai_converted; + rDY[2] = d_dt_chaste_interface_var_calcium_concentration__Cass; + rDY[3] = d_dt_chaste_interface_var_calcium_concentration__CaJSR; + rDY[4] = d_dt_chaste_interface_var_calcium_concentration__CaNSR; + rDY[5] = d_dt_chaste_interface_var_calcium_fluxes__P_RyR; + rDY[6] = d_dt_chaste_interface_var_calcium_buffering__LTRPN_Ca; + rDY[7] = d_dt_chaste_interface_var_calcium_buffering__HTRPN_Ca; + rDY[8] = d_dt_chaste_interface_var_ryanodine_receptors__P_O1; + rDY[9] = d_dt_chaste_interface_var_ryanodine_receptors__P_O2; + rDY[10] = d_dt_chaste_interface_var_ryanodine_receptors__P_C2; + rDY[11] = d_dt_chaste_interface_var_L_type_calcium_current__O; + rDY[12] = d_dt_chaste_interface_var_L_type_calcium_current__C2; + rDY[13] = d_dt_chaste_interface_var_L_type_calcium_current__C3; + rDY[14] = d_dt_chaste_interface_var_L_type_calcium_current__C4; + rDY[15] = d_dt_chaste_interface_var_L_type_calcium_current__I1; + rDY[16] = d_dt_chaste_interface_var_L_type_calcium_current__I2; + rDY[17] = d_dt_chaste_interface_var_L_type_calcium_current__I3; + rDY[18] = d_dt_chaste_interface_var_sodium_concentration__Nai; + rDY[19] = d_dt_chaste_interface_var_fast_sodium_current__O_Na; + rDY[20] = d_dt_chaste_interface_var_fast_sodium_current__C_Na1; + rDY[21] = d_dt_chaste_interface_var_fast_sodium_current__C_Na2; + rDY[22] = d_dt_chaste_interface_var_fast_sodium_current__I1_Na; + rDY[23] = d_dt_chaste_interface_var_fast_sodium_current__I2_Na; + rDY[24] = d_dt_chaste_interface_var_fast_sodium_current__IF_Na; + rDY[25] = d_dt_chaste_interface_var_fast_sodium_current__IC_Na2; + rDY[26] = d_dt_chaste_interface_var_fast_sodium_current__IC_Na3; + rDY[27] = d_dt_chaste_interface_var_potassium_concentration__Ki; + rAlphaOrTau[28] = 1 * var_fast_transient_outward_potassium_current__alpha_a; + rBetaOrInf[28] = var_fast_transient_outward_potassium_current__beta_a; + rAlphaOrTau[29] = 1 * var_fast_transient_outward_potassium_current__alpha_i; + rBetaOrInf[29] = var_fast_transient_outward_potassium_current__beta_i; + rAlphaOrTau[30] = var_slow_transient_outward_potassium_current__tau_ta_s; + rBetaOrInf[30] = var_slow_transient_outward_potassium_current__ass; + rAlphaOrTau[31] = var_slow_transient_outward_potassium_current__tau_ti_s; + rBetaOrInf[31] = var_slow_transient_outward_potassium_current__iss; + rAlphaOrTau[32] = 1 * var_slow_delayed_rectifier_potassium_current__alpha_n; + rBetaOrInf[32] = var_slow_delayed_rectifier_potassium_current__beta_n; + rAlphaOrTau[33] = var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_aur; + rBetaOrInf[33] = var_slow_transient_outward_potassium_current__ass; + rAlphaOrTau[34] = var_ultra_rapidly_activating_delayed_rectifier_potassium_current__tau_iur; + rBetaOrInf[34] = var_slow_transient_outward_potassium_current__iss; + rAlphaOrTau[35] = var_non_inactivating_steady_state_potassium_current__tau_Kss; + rBetaOrInf[35] = var_slow_transient_outward_potassium_current__ass; + rDY[36] = d_dt_chaste_interface_var_non_inactivating_steady_state_potassium_current__iKss; + rDY[37] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__O_K; + rDY[38] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K1; + rDY[39] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__C_K2; + rDY[40] = d_dt_chaste_interface_var_rapid_delayed_rectifier_potassium_current__I_K; + } + void Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::ComputeOneStepExceptVoltage(const std::vector &rDY, const std::vector &rAlphaOrTau, const std::vector &rBetaOrInf) + { + + std::vector& rY = rGetStateVariables(); + + rY[1] += mDt * rDY[1]; + rY[2] += mDt * rDY[2]; + rY[3] += mDt * rDY[3]; + rY[4] += mDt * rDY[4]; + rY[5] += mDt * rDY[5]; + rY[6] += mDt * rDY[6]; + rY[7] += mDt * rDY[7]; + rY[8] += mDt * rDY[8]; + rY[9] += mDt * rDY[9]; + rY[10] += mDt * rDY[10]; + rY[11] += mDt * rDY[11]; + rY[12] += mDt * rDY[12]; + rY[13] += mDt * rDY[13]; + rY[14] += mDt * rDY[14]; + rY[15] += mDt * rDY[15]; + rY[16] += mDt * rDY[16]; + rY[17] += mDt * rDY[17]; + rY[18] += mDt * rDY[18]; + rY[19] += mDt * rDY[19]; + rY[20] += mDt * rDY[20]; + rY[21] += mDt * rDY[21]; + rY[22] += mDt * rDY[22]; + rY[23] += mDt * rDY[23]; + rY[24] += mDt * rDY[24]; + rY[25] += mDt * rDY[25]; + rY[26] += mDt * rDY[26]; + rY[27] += mDt * rDY[27]; + { + const double tau_inv = rAlphaOrTau[28] + rBetaOrInf[28]; + const double y_inf = rAlphaOrTau[28] / tau_inv; + rY[28] = y_inf + (rY[28] - y_inf)*exp(-mDt*tau_inv); + } + { + const double tau_inv = rAlphaOrTau[29] + rBetaOrInf[29]; + const double y_inf = rAlphaOrTau[29] / tau_inv; + rY[29] = y_inf + (rY[29] - y_inf)*exp(-mDt*tau_inv); + } + rY[30] = rBetaOrInf[30] + (rY[30] - rBetaOrInf[30])*exp(-mDt/rAlphaOrTau[30]); + rY[31] = rBetaOrInf[31] + (rY[31] - rBetaOrInf[31])*exp(-mDt/rAlphaOrTau[31]); + { + const double tau_inv = rAlphaOrTau[32] + rBetaOrInf[32]; + const double y_inf = rAlphaOrTau[32] / tau_inv; + rY[32] = y_inf + (rY[32] - y_inf)*exp(-mDt*tau_inv); + } + rY[33] = rBetaOrInf[33] + (rY[33] - rBetaOrInf[33])*exp(-mDt/rAlphaOrTau[33]); + rY[34] = rBetaOrInf[34] + (rY[34] - rBetaOrInf[34])*exp(-mDt/rAlphaOrTau[34]); + rY[35] = rBetaOrInf[35] + (rY[35] - rBetaOrInf[35])*exp(-mDt/rAlphaOrTau[35]); + rY[36] += mDt * rDY[36]; + rY[37] += mDt * rDY[37]; + rY[38] += mDt * rDY[38]; + rY[39] += mDt * rDY[39]; + rY[40] += mDt * rDY[40]; + } + + std::vector Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt::ComputeDerivedQuantities(double var_chaste_interface__environment__time, const std::vector & rY) + { + // Inputs: + // Time units: millisecond + double var_chaste_interface__membrane__V = (mSetVoltageDerivativeToZero ? this->mFixedVoltage : rY[0]); + // Units: millivolt; Initial value: -82.4202 + double var_chaste_interface__calcium_concentration__Cai_converted = rY[1]; + // Units: millimolar; Initial value: 0.000115001 + double var_chaste_interface__calcium_concentration__Cass = rY[2]; + // Units: micromolar; Initial value: 0.115001 + double var_chaste_interface__calcium_concentration__CaJSR = rY[3]; + // Units: micromolar; Initial value: 1299.5 + double var_chaste_interface__calcium_fluxes__P_RyR = rY[5]; + // Units: dimensionless; Initial value: 0.0 + double var_chaste_interface__ryanodine_receptors__P_O1 = rY[8]; + // Units: dimensionless; Initial value: 1.49102e-05 + double var_chaste_interface__ryanodine_receptors__P_O2 = rY[9]; + // Units: dimensionless; Initial value: 9.51726e-11 + double var_chaste_interface__L_type_calcium_current__O = rY[11]; + // Units: dimensionless; Initial value: 9.30308e-19 + double var_chaste_interface__sodium_concentration__Nai = rY[18]; + // Units: micromolar; Initial value: 14237.1 + double var_chaste_interface__fast_sodium_current__O_Na = rY[19]; + // Units: dimensionless; Initial value: 7.13483e-07 + double var_chaste_interface__potassium_concentration__Ki = rY[27]; + // Units: micromolar; Initial value: 143720.0 + double var_chaste_interface__fast_transient_outward_potassium_current__ato_f = rY[28]; + // Units: dimensionless; Initial value: 0.00265563 + double var_chaste_interface__fast_transient_outward_potassium_current__ito_f = rY[29]; + // Units: dimensionless; Initial value: 0.999977 + double var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs = rY[32]; + // Units: dimensionless; Initial value: 0.000262753 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss = rY[35]; + // Units: dimensionless; Initial value: 0.000417069 + double var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss = rY[36]; + // Units: dimensionless; Initial value: 1.0 + double var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K = rY[37]; + // Units: dimensionless; Initial value: 0.000175298 + + + // Mathematics + const double var_L_type_calcium_current__E_CaL = 63; // millivolt + const double var_calcium_concentration__Cai = 1000 * var_chaste_interface__calcium_concentration__Cai_converted; // micromolar + const double var_membrane__F = 96.5; // coulomb_per_millimole + const double var_membrane__R = 8.3140000000000001; // joule_per_mole_kelvin + const double var_membrane__T = 298; // kelvin + const double var_L_type_calcium_current__i_CaL = (-var_L_type_calcium_current__E_CaL + var_chaste_interface__membrane__V) * var_chaste_interface__L_type_calcium_current__O * mParameters[7]; // picoA_per_picoF + const double var_L_type_calcium_current__i_CaL_converted = HeartConfig::Instance()->GetCapacitance() * var_L_type_calcium_current__i_CaL; // uA_per_cm2 + const double var_membrane__i_stim_converted = GetIntracellularAreaStimulus(var_chaste_interface__environment__time); // uA_per_cm2 + const double var_fast_transient_outward_potassium_current__E_K = var_membrane__R * var_membrane__T * log(mParameters[5] / var_chaste_interface__potassium_concentration__Ki) / var_membrane__F; // millivolt + const double var_fast_transient_outward_potassium_current__i_Kto_f = pow(var_chaste_interface__fast_transient_outward_potassium_current__ato_f, 3) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[16] * var_chaste_interface__fast_transient_outward_potassium_current__ito_f; // picoA_per_picoF + const double var_fast_transient_outward_potassium_current__i_Kto_f_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_transient_outward_potassium_current__i_Kto_f; // uA_per_cm2 + const double var_non_inactivating_steady_state_potassium_current__i_Kss = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * var_chaste_interface__non_inactivating_steady_state_potassium_current__aKss * mParameters[12] * var_chaste_interface__non_inactivating_steady_state_potassium_current__iKss; // picoA_per_picoF + const double var_non_inactivating_steady_state_potassium_current__i_Kss_converted = HeartConfig::Instance()->GetCapacitance() * var_non_inactivating_steady_state_potassium_current__i_Kss; // uA_per_cm2 + const double var_calcium_fluxes__J_rel = (-var_chaste_interface__calcium_concentration__Cass + var_chaste_interface__calcium_concentration__CaJSR) * (var_chaste_interface__ryanodine_receptors__P_O1 + var_chaste_interface__ryanodine_receptors__P_O2) * var_chaste_interface__calcium_fluxes__P_RyR * mParameters[1]; // micromolar_per_millisecond + const double var_slow_delayed_rectifier_potassium_current__i_Ks = pow(var_chaste_interface__slow_delayed_rectifier_potassium_current__nKs, 2) * (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[14]; // picoA_per_picoF + const double var_slow_delayed_rectifier_potassium_current__i_Ks_converted = HeartConfig::Instance()->GetCapacitance() * var_slow_delayed_rectifier_potassium_current__i_Ks; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__K_mCa = 1380; // micromolar + const double var_sodium_calcium_exchange_current__K_mNa = 87500; // micromolar + const double var_sodium_calcium_exchange_current__eta = 0.34999999999999998; // dimensionless + const double var_sodium_calcium_exchange_current__k_sat = 0.10000000000000001; // dimensionless + const double var_fast_sodium_current__E_Na = var_membrane__R * var_membrane__T * log((1 * mParameters[6] + 0.1111111111111111 * mParameters[5]) / (1 * var_chaste_interface__sodium_concentration__Nai + 0.1111111111111111 * var_chaste_interface__potassium_concentration__Ki)) / var_membrane__F; // millivolt + const double var_fast_sodium_current__i_Na = (-var_fast_sodium_current__E_Na + var_chaste_interface__membrane__V) * var_chaste_interface__fast_sodium_current__O_Na * mParameters[9]; // picoA_per_picoF + const double var_fast_sodium_current__i_Na_converted = HeartConfig::Instance()->GetCapacitance() * var_fast_sodium_current__i_Na; // uA_per_cm2 + const double var_rapid_delayed_rectifier_potassium_current__i_Kr = (-var_membrane__R * var_membrane__T * log((1 * mParameters[5] + 0.020408163265306124 * mParameters[6]) / (1 * var_chaste_interface__potassium_concentration__Ki + 0.020408163265306124 * var_chaste_interface__sodium_concentration__Nai)) / var_membrane__F + var_chaste_interface__membrane__V) * var_chaste_interface__rapid_delayed_rectifier_potassium_current__O_K * mParameters[13]; // picoA_per_picoF + const double var_rapid_delayed_rectifier_potassium_current__i_Kr_converted = HeartConfig::Instance()->GetCapacitance() * var_rapid_delayed_rectifier_potassium_current__i_Kr; // uA_per_cm2 + const double var_sodium_calcium_exchange_current__i_NaCa = 1 * (pow(var_chaste_interface__sodium_concentration__Nai, 3) * mParameters[4] * exp(var_membrane__F * var_chaste_interface__membrane__V * var_sodium_calcium_exchange_current__eta / (var_membrane__R * var_membrane__T)) - pow(mParameters[6], 3) * var_calcium_concentration__Cai * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * mParameters[15] / ((1 + var_sodium_calcium_exchange_current__k_sat * exp((-1 + var_sodium_calcium_exchange_current__eta) * var_membrane__F * var_chaste_interface__membrane__V / (var_membrane__R * var_membrane__T))) * (pow(mParameters[6], 3) + pow(var_sodium_calcium_exchange_current__K_mNa, 3)) * (mParameters[4] + var_sodium_calcium_exchange_current__K_mCa)); // picoA_per_picoF + const double var_sodium_calcium_exchange_current__i_NaCa_converted = HeartConfig::Instance()->GetCapacitance() * var_sodium_calcium_exchange_current__i_NaCa; // uA_per_cm2 + const double var_time_independent_potassium_current__i_K1 = (-var_fast_transient_outward_potassium_current__E_K + var_chaste_interface__membrane__V) * mParameters[5] * mParameters[11] / ((1 + exp(0.089599999999999999 * var_chaste_interface__membrane__V - 0.089599999999999999 * var_fast_transient_outward_potassium_current__E_K)) * (210 + mParameters[5])); // picoA_per_picoF + const double var_time_independent_potassium_current__i_K1_converted = HeartConfig::Instance()->GetCapacitance() * var_time_independent_potassium_current__i_K1; // uA_per_cm2 + + std::vector dqs(12); + dqs[0] = var_calcium_fluxes__J_rel; + dqs[1] = var_chaste_interface__calcium_concentration__Cai_converted; + dqs[2] = var_L_type_calcium_current__i_CaL_converted; + dqs[3] = var_fast_sodium_current__i_Na_converted; + dqs[4] = var_time_independent_potassium_current__i_K1_converted; + dqs[5] = var_non_inactivating_steady_state_potassium_current__i_Kss_converted; + dqs[6] = var_rapid_delayed_rectifier_potassium_current__i_Kr_converted; + dqs[7] = var_slow_delayed_rectifier_potassium_current__i_Ks_converted; + dqs[8] = var_sodium_calcium_exchange_current__i_NaCa_converted; + dqs[9] = var_membrane__i_stim_converted; + dqs[10] = var_fast_transient_outward_potassium_current__i_Kto_f_converted; + dqs[11] = var_chaste_interface__environment__time; + return dqs; + } + +template<> +void OdeSystemInformation::Initialise(void) +{ + this->mSystemName = "bondarenko_2004_apical"; + this->mFreeVariableName = "time"; + this->mFreeVariableUnits = "millisecond"; + + // rY[0]: + this->mVariableNames.push_back("membrane_voltage"); + this->mVariableUnits.push_back("millivolt"); + this->mInitialConditions.push_back(-82.4202); + + // rY[1]: + this->mVariableNames.push_back("cytosolic_calcium_concentration"); + this->mVariableUnits.push_back("millimolar"); + this->mInitialConditions.push_back(0.000115001); + + // rY[2]: + this->mVariableNames.push_back("dyadic_space_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(0.115001); + + // rY[3]: + this->mVariableNames.push_back("JSR_calcium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(1299.5); + + // rY[4]: + this->mVariableNames.push_back("calcium_concentration__CaNSR"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(1299.5); + + // rY[5]: + this->mVariableNames.push_back("calcium_fluxes__P_RyR"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0); + + // rY[6]: + this->mVariableNames.push_back("calcium_buffering__LTRPN_Ca"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(11.2684); + + // rY[7]: + this->mVariableNames.push_back("calcium_buffering__HTRPN_Ca"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(125.29); + + // rY[8]: + this->mVariableNames.push_back("ryanodine_receptors__P_O1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.49102e-05); + + // rY[9]: + this->mVariableNames.push_back("ryanodine_receptors__P_O2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.51726e-11); + + // rY[10]: + this->mVariableNames.push_back("ryanodine_receptors__P_C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00016774); + + // rY[11]: + this->mVariableNames.push_back("L_type_calcium_current__O"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(9.30308e-19); + + // rY[12]: + this->mVariableNames.push_back("L_type_calcium_current__C2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000124216); + + // rY[13]: + this->mVariableNames.push_back("L_type_calcium_current__C3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(5.78679e-09); + + // rY[14]: + this->mVariableNames.push_back("L_type_calcium_current__C4"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.19816e-13); + + // rY[15]: + this->mVariableNames.push_back("L_type_calcium_current__I1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(4.97923e-19); + + // rY[16]: + this->mVariableNames.push_back("L_type_calcium_current__I2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.45847e-14); + + // rY[17]: + this->mVariableNames.push_back("L_type_calcium_current__I3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.85106e-14); + + // rY[18]: + this->mVariableNames.push_back("cytosolic_sodium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(14237.1); + + // rY[19]: + this->mVariableNames.push_back("fast_sodium_current__O_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(7.13483e-07); + + // rY[20]: + this->mVariableNames.push_back("fast_sodium_current__C_Na1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000279132); + + // rY[21]: + this->mVariableNames.push_back("fast_sodium_current__C_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.020752); + + // rY[22]: + this->mVariableNames.push_back("fast_sodium_current__I1_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(6.73345e-07); + + // rY[23]: + this->mVariableNames.push_back("fast_sodium_current__I2_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.55787e-09); + + // rY[24]: + this->mVariableNames.push_back("fast_sodium_current__IF_Na"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000153176); + + // rY[25]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.0113879); + + // rY[26]: + this->mVariableNames.push_back("fast_sodium_current__IC_Na3"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.34278); + + // rY[27]: + this->mVariableNames.push_back("cytosolic_potassium_concentration"); + this->mVariableUnits.push_back("micromolar"); + this->mInitialConditions.push_back(143720.0); + + // rY[28]: + this->mVariableNames.push_back("fast_transient_outward_potassium_current__ato_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.00265563); + + // rY[29]: + this->mVariableNames.push_back("fast_transient_outward_potassium_current__ito_f"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.999977); + + // rY[30]: + this->mVariableNames.push_back("slow_transient_outward_potassium_current__ato_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[31]: + this->mVariableNames.push_back("slow_transient_outward_potassium_current__ito_s"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998543); + + // rY[32]: + this->mVariableNames.push_back("slow_delayed_rectifier_potassium_current__nKs"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000262753); + + // rY[33]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_potassium_current__aur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[34]: + this->mVariableNames.push_back("ultra_rapidly_activating_delayed_rectifier_potassium_current__iur"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.998543); + + // rY[35]: + this->mVariableNames.push_back("non_inactivating_steady_state_potassium_current__aKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000417069); + + // rY[36]: + this->mVariableNames.push_back("non_inactivating_steady_state_potassium_current__iKss"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(1.0); + + // rY[37]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__O_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000175298); + + // rY[38]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__C_K1"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000992513); + + // rY[39]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__C_K2"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(0.000641229); + + // rY[40]: + this->mVariableNames.push_back("rapid_delayed_rectifier_potassium_current__I_K"); + this->mVariableUnits.push_back("dimensionless"); + this->mInitialConditions.push_back(3.19129e-05); + + // mParameters[0]: + this->mParameterNames.push_back("SR_leak_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[1]: + this->mParameterNames.push_back("SR_release_current_max"); + this->mParameterUnits.push_back("per_millisecond"); + + // mParameters[2]: + this->mParameterNames.push_back("SR_uptake_current_max"); + this->mParameterUnits.push_back("micromolar_per_millisecond"); + + // mParameters[3]: + this->mParameterNames.push_back("concentration_clamp_onoff"); + this->mParameterUnits.push_back("dimensionless"); + + // mParameters[4]: + this->mParameterNames.push_back("extracellular_calcium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[5]: + this->mParameterNames.push_back("extracellular_potassium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[6]: + this->mParameterNames.push_back("extracellular_sodium_concentration"); + this->mParameterUnits.push_back("micromolar"); + + // mParameters[7]: + this->mParameterNames.push_back("membrane_L_type_calcium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[8]: + this->mParameterNames.push_back("membrane_capacitance"); + this->mParameterUnits.push_back("microF_per_cm2"); + + // mParameters[9]: + this->mParameterNames.push_back("membrane_fast_sodium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[10]: + this->mParameterNames.push_back("membrane_fast_sodium_current_shift_inactivation"); + this->mParameterUnits.push_back("millivolt"); + + // mParameters[11]: + this->mParameterNames.push_back("membrane_inward_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[12]: + this->mParameterNames.push_back("membrane_non_inactivating_steady_state_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[13]: + this->mParameterNames.push_back("membrane_rapid_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[14]: + this->mParameterNames.push_back("membrane_slow_delayed_rectifier_potassium_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // mParameters[15]: + this->mParameterNames.push_back("membrane_sodium_calcium_exchanger_current_conductance"); + this->mParameterUnits.push_back("picoA_per_picoF"); + + // mParameters[16]: + this->mParameterNames.push_back("membrane_transient_outward_current_conductance"); + this->mParameterUnits.push_back("milliS_per_microF"); + + // Derived Quantity index [0]: + this->mDerivedQuantityNames.push_back("SR_release_current"); + this->mDerivedQuantityUnits.push_back("micromolar_per_millisecond"); + + // Derived Quantity index [1]: + this->mDerivedQuantityNames.push_back("cytosolic_calcium_concentration"); + this->mDerivedQuantityUnits.push_back("millimolar"); + + // Derived Quantity index [2]: + this->mDerivedQuantityNames.push_back("membrane_L_type_calcium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [3]: + this->mDerivedQuantityNames.push_back("membrane_fast_sodium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [4]: + this->mDerivedQuantityNames.push_back("membrane_inward_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [5]: + this->mDerivedQuantityNames.push_back("membrane_non_inactivating_steady_state_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [6]: + this->mDerivedQuantityNames.push_back("membrane_rapid_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [7]: + this->mDerivedQuantityNames.push_back("membrane_slow_delayed_rectifier_potassium_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [8]: + this->mDerivedQuantityNames.push_back("membrane_sodium_calcium_exchanger_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [9]: + this->mDerivedQuantityNames.push_back("membrane_stimulus_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [10]: + this->mDerivedQuantityNames.push_back("membrane_transient_outward_current"); + this->mDerivedQuantityUnits.push_back("uA_per_cm2"); + + // Derived Quantity index [11]: + this->mDerivedQuantityNames.push_back("time"); + this->mDerivedQuantityUnits.push_back("millisecond"); + + this->mInitialised = true; +} + +// Serialization for Boost >= 1.36 +#include "SerializationExportWrapperForCpp.hpp" +CHASTE_CLASS_EXPORT(Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt) +extern "C" +{ + AbstractCardiacCellInterface* MakeCardiacCell( + boost::shared_ptr pSolver, + boost::shared_ptr pStimulus) + { + return new Dynamicbondarenko_szigeti_bett_kim_rasmusson_2004_apicalFromCellMLRushLarsenOpt(pSolver, pStimulus); + } + +} diff --git a/chaste_codegen/data/tests/test_linearity_check_deq--sympy_1_14.txt b/chaste_codegen/data/tests/test_linearity_check_deq--sympy_1_14.txt new file mode 100644 index 00000000..5907c2a4 --- /dev/null +++ b/chaste_codegen/data/tests/test_linearity_check_deq--sympy_1_14.txt @@ -0,0 +1 @@ +[Eq(_INa$perc_reduced_inact_for_IpNa, 0), Eq(_INa$shift_INa_inact, 0), Eq(_ICaL_d_gate$d_infinity, 1.0/(exp_(-0.16666666666666667*_cell$V - 2.4166666666666667) + 1.0)), Eq(_ICaL_d_gate$tau_d, Piecewise((-47619047.618779709*(1.0 - exp_(1.000000000005626e-7))/(exp_(1.000000000005626e-7) + 1.0) + 833333.33333828234*(_cell$V + 14.5000006)*(47619047.619881121*(1.0 - exp_(-9.9999999998249637e-8))/(exp_(-9.9999999998249637e-8) + 1.0) + 47619047.618779709*(1.0 - exp_(1.000000000005626e-7))/(exp_(1.000000000005626e-7) + 1.0)), (_cell$V >= -14.5000006) & (_cell$V <= -14.4999994)), (28.571428571428569*(1.0 - exp_(-0.16666666666666667*_cell$V - 2.4166666666666667))/((_cell$V + 14.5)*(exp_(-0.16666666666666667*_cell$V - 2.4166666666666667) + 1.0)), True))), Eq(Derivative(_ICaL_d_gate$d, _environment$time), (-_ICaL_d_gate$d + _ICaL_d_gate$d_infinity)/_ICaL_d_gate$tau_d), Eq(_ICaL_f_gate$f_infinity, 1.0/(exp_(0.27777777777777777*_cell$V + 9.7388888888888893) + 1.0) + 0.59999999999999998/(exp_(2.5 - 0.05*_cell$V) + 1.0)), Eq(_ICaL_f_gate$tau_f, 1.0/(0.019699999999999999*exp_(-(0.033700000000000001*_cell$V + 0.48865000000000001)**2.0) + 0.02)), Eq(Derivative(_ICaL_f_gate$f, _environment$time), (-_ICaL_f_gate$f + _ICaL_f_gate$f_infinity)/_ICaL_f_gate$tau_f), Eq(_IKr_Xr_gate$Xr_infinity, 1.0/(exp_(-0.13333333333333333*_cell$V - 6.6666666666666667) + 1.0)), Eq(_IKr_Xr_gate$tau_Xr, 1.0/(Piecewise((614999.9999992996*(_cell$V + 7.0000008130081301)*(1.1219512195134728e-9/(1.0 - exp_(1.0000000000011389e-7)) + 1.1219512195134728e-9/(1.0 - exp_(-1.0000000000011389e-7))) - 1.1219512195134728e-9/(1.0 - exp_(1.0000000000011389e-7)), (_cell$V >= -7.0000008130081301) & (_cell$V <= -6.9999991869918699)), (0.0013799999999999999*(_cell$V + 7.0)/(1.0 - exp_(-0.123*_cell$V - 0.86099999999999999)), True)) + Piecewise((724999.99999927494*(_cell$V + 10.000000689655172)*(4.206896551728345e-10/(exp_(1.000000000001e-7) - 1.0) + 4.206896551728345e-10/(exp_(-1.000000000001e-7) - 1.0)) - 4.206896551728345e-10/(exp_(-1.000000000001e-7) - 1.0), (_cell$V >= -10.000000689655172) & (_cell$V <= -9.9999993103448276)), (0.00060999999999999997*(_cell$V + 10.0)/(exp_(0.14499999999999999*_cell$V + 1.4499999999999999) - 1.0), True)))), Eq(Derivative(_IKr_Xr_gate$Xr, _environment$time), (-_IKr_Xr_gate$Xr + _IKr_Xr_gate$Xr_infinity)/_IKr_Xr_gate$tau_Xr), Eq(_IKs_Xs_gate$Xs_infinity, 1.0/(exp_(0.08982035928143713 - 0.059880239520958086*_cell$V) + 1.0)), Eq(_IKs_Xs_gate$tau_Xs, 1.0*Piecewise((1/(343500.00000040966*(_cell$V + 30.000001455604076)*(1.9068413391534757e-10/(exp_(9.9999999999880736e-8) - 1.0) + 1.9068413391534757e-10/(exp_(-9.9999999999880736e-8) - 1.0) + 1.046579330420877e-10/(1.0 - exp_(2.1542940320207203e-7)) + 1.046579330420877e-10/(1.0 - exp_(-2.1542940320207203e-7))) - 1.9068413391534757e-10/(exp_(-9.9999999999880736e-8) - 1.0) - 1.046579330420877e-10/(1.0 - exp_(2.1542940320207203e-7))), (_cell$V >= -30.000001455604076) & (_cell$V <= -29.999998544395924)), (1/(0.00013100000000000001*(_cell$V + 30.0)/(exp_(0.068699999999999997*_cell$V + 2.0609999999999999) - 1.0) + 7.1899999999999999e-5*(_cell$V + 30.0)/(1.0 - exp_(-0.14799999999999999*_cell$V - 4.4399999999999998))), True))), Eq(Derivative(_IKs_Xs_gate$Xs, _environment$time), (-_IKs_Xs_gate$Xs + _IKs_Xs_gate$Xs_infinity)/_IKs_Xs_gate$tau_Xs), Eq(_INa_h_gate$alpha_h, Piecewise((0.13500000000000001*exp_(0.14705882352941177*_INa$shift_INa_inact - 0.14705882352941177*_cell$V - 11.764705882352941), _cell$V < -40.0), (0, True))), Eq(_INa_h_gate$beta_h, Piecewise((310000.0*exp_(-0.34999999999999998*_INa$shift_INa_inact + 0.34999999999999998*_cell$V) + 3.5600000000000001*exp_(-0.079000000000000001*_INa$shift_INa_inact + 0.079000000000000001*_cell$V), _cell$V < -40.0), (7.692307692307692/(exp_(0.090090090090090093*_INa$shift_INa_inact - 0.090090090090090093*_cell$V - 0.9603603603603604) + 1.0), True))), Eq(_INa_h_gate$h_infinity, 0.01*_INa$perc_reduced_inact_for_IpNa + _INa_h_gate$alpha_h*(1.0 - 0.01*_INa$perc_reduced_inact_for_IpNa)/(_INa_h_gate$alpha_h + _INa_h_gate$beta_h)), Eq(_INa_h_gate$tau_h, 1.0/(_INa_h_gate$alpha_h + _INa_h_gate$beta_h)), Eq(Derivative(_INa_h_gate$h, _environment$time), (-_INa_h_gate$h + _INa_h_gate$h_infinity)/_INa_h_gate$tau_h), Eq(_INa_j_gate$alpha_j, Piecewise((1.0*(_cell$V + 37.780000000000001)*(-127140.0*exp_(-0.24440000000000001*_INa$shift_INa_inact + 0.24440000000000001*_cell$V) - 3.4740000000000003e-5*exp_(0.043909999999999998*_INa$shift_INa_inact - 0.043909999999999998*_cell$V))/(exp_(-0.311*_INa$shift_INa_inact + 0.311*_cell$V + 24.640530000000001) + 1.0), _cell$V < -40.0), (0, True))), Eq(_INa_j_gate$beta_j, Piecewise((0.1212*exp_(0.01052*_INa$shift_INa_inact - 0.01052*_cell$V)/(exp_(0.13780000000000001*_INa$shift_INa_inact - 0.13780000000000001*_cell$V - 5.5312920000000003) + 1.0), _cell$V < -40.0), (0.29999999999999999*exp_(2.5349999999999999e-7*_INa$shift_INa_inact - 2.5349999999999999e-7*_cell$V)/(exp_(0.10000000000000001*_INa$shift_INa_inact - 0.10000000000000001*_cell$V - 3.2000000000000002) + 1.0), True))), Eq(_INa_j_gate$j_infinity, 0.01*_INa$perc_reduced_inact_for_IpNa + _INa_j_gate$alpha_j*(1.0 - 0.01*_INa$perc_reduced_inact_for_IpNa)/(_INa_j_gate$alpha_j + _INa_j_gate$beta_j)), Eq(_INa_j_gate$tau_j, 1.0/(_INa_j_gate$alpha_j + _INa_j_gate$beta_j)), Eq(Derivative(_INa_j_gate$j, _environment$time), (-_INa_j_gate$j + _INa_j_gate$j_infinity)/_INa_j_gate$tau_j), Eq(_INa_m_gate$alpha_m, Piecewise((499999.99998562217*(_cell$V + 47.130001000000003)*(3.2000000000920182e-7/(1.0 - exp_(1.0000000000287557e-7)) + 3.2000000000920182e-7/(1.0 - exp_(-1.0000000000287557e-7))) - 3.2000000000920182e-7/(1.0 - exp_(1.0000000000287557e-7)), (_cell$V >= -47.130001000000003) & (_cell$V <= -47.129999000000003)), (0.32000000000000001*(_cell$V + 47.130000000000003)/(1.0 - exp_(-0.10000000000000001*_cell$V - 4.7130000000000005)), True))), Eq(_INa_m_gate$beta_m, 0.080000000000000002*exp_(-0.090909090909090909*_cell$V)), Eq(_INa_m_gate$m_infinity, _INa_m_gate$alpha_m/(_INa_m_gate$alpha_m + _INa_m_gate$beta_m)), Eq(_INa_m_gate$tau_m, 1.0/(_INa_m_gate$alpha_m + _INa_m_gate$beta_m)), Eq(Derivative(_INa_m_gate$m, _environment$time), (-_INa_m_gate$m + _INa_m_gate$m_infinity)/_INa_m_gate$tau_m), Eq(_Itof_X_gate$X_tof_infinity, 1.0/(exp_(-0.066666666666666667*_cell$V - 0.2) + 1.0)), Eq(_Itof_X_gate$tau_X_tof, 3.5*exp_(-0.0011111111111111111*_cell$V**2.0) + 1.5), Eq(Derivative(_Itof_X_gate$X_tof, _environment$time), (-_Itof_X_gate$X_tof + _Itof_X_gate$X_tof_infinity)/_Itof_X_gate$tau_X_tof), Eq(_Itof_Y_gate$Y_tof_infinity, 1.0/(exp_(0.1*_cell$V + 3.35) + 1.0)), Eq(_Itof_Y_gate$tau_Y_tof, 20.0 + 20.0/(exp_(0.1*_cell$V + 3.35) + 1.0)), Eq(Derivative(_Itof_Y_gate$Y_tof, _environment$time), (-_Itof_Y_gate$Y_tof + _Itof_Y_gate$Y_tof_infinity)/_Itof_Y_gate$tau_Y_tof), Eq(_Itos_R_gate$R_tos_infinity, 1.0/(exp_(0.1*_cell$V + 3.35) + 1.0)), Eq(_Itos_R_gate$tau_R_tos, 220.0 + 2800.0/(exp_(0.1*_cell$V + 6.0) + 1.0)), Eq(Derivative(_Itos_R_gate$R_tos, _environment$time), (-_Itos_R_gate$R_tos + _Itos_R_gate$R_tos_infinity)/_Itos_R_gate$tau_R_tos), Eq(_Itos_X_gate$X_tos_infinity, 1.0/(exp_(-0.066666666666666667*_cell$V - 0.2) + 1.0)), Eq(_Itos_X_gate$tau_X_tos, 0.5 + 9.0/(exp_(0.066666666666666667*_cell$V + 0.2) + 1.0)), Eq(Derivative(_Itos_X_gate$X_tos, _environment$time), (-_Itos_X_gate$X_tos + _Itos_X_gate$X_tos_infinity)/_Itos_X_gate$tau_X_tos), Eq(_Itos_Y_gate$Y_tos_infinity, 1.0/(exp_(0.1*_cell$V + 3.35) + 1.0)), Eq(_Itos_Y_gate$tau_Y_tos, 30.0 + 3000.0/(exp_(0.1*_cell$V + 6.0) + 1.0)), Eq(Derivative(_Itos_Y_gate$Y_tos, _environment$time), (-_Itos_Y_gate$Y_tos + _Itos_Y_gate$Y_tos_infinity)/_Itos_Y_gate$tau_Y_tos)] \ No newline at end of file diff --git a/chaste_codegen/data/tests/test_lookup_tables_change_lookup_table--sympy_1_13.txt b/chaste_codegen/data/tests/test_lookup_tables_change_lookup_table--sympy_1_13.txt new file mode 100644 index 00000000..bed2e328 --- /dev/null +++ b/chaste_codegen/data/tests/test_lookup_tables_change_lookup_table--sympy_1_13.txt @@ -0,0 +1 @@ +[['40.0 * exp(-(72.0 + membrane$V) * 0.056)', False], ['0.095 * exp((-membrane$V + 5.0) / 100.0) / (1.0 + exp((-membrane$V + 5.0) / 13.89))', False], ['0.07 * exp((-44.0 - membrane$V) / 59.0) / (1.0 + exp((44.0 + membrane$V) / 20.0))', False], ['0.012 * exp((-28.0 - membrane$V) / 125.0) / (1.0 + exp((28.0 + membrane$V) / 6.67))', False], ['0.0065 * exp((-30.0 - membrane$V) / 50.0) / (1.0 + exp((-30.0 - membrane$V) / 5.0))', False], ['1 / exp((35.0 + membrane$V) * 0.04)', False], ['-1.0 + exp((77.0 + membrane$V) * 0.04)', False], ['0.0005 * exp((50.0 + membrane$V) / 12.1) / (1.0 + exp((50.0 + membrane$V) / 17.5))', False], ['0.0013 * exp((-20.0 - membrane$V) / 16.67) / (1.0 + exp((-20.0 - membrane$V) / 25.0))', False], ['(-1.0 + exp((85.0 + membrane$V) * 0.04)) * 4.0 / (exp((53.0 + membrane$V) * 0.08) + exp((53.0 + membrane$V) * 0.04))', False]] \ No newline at end of file From 46736ffc9bc4143a66cd07f09f06a735d55a5b41 Mon Sep 17 00:00:00 2001 From: Kwabena Amponsah Date: Thu, 16 Jul 2026 19:03:06 +0100 Subject: [PATCH 13/13] #285 Version the partial-eval reference per sympy version --- chaste_codegen/tests/test_partial_eval.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/chaste_codegen/tests/test_partial_eval.py b/chaste_codegen/tests/test_partial_eval.py index 71a656f6..a98cdac8 100644 --- a/chaste_codegen/tests/test_partial_eval.py +++ b/chaste_codegen/tests/test_partial_eval.py @@ -4,7 +4,7 @@ from sympy import Eq, Piecewise, symbols from chaste_codegen._partial_eval import partial_eval -from chaste_codegen.tests.conftest import TESTS_FOLDER +from chaste_codegen.tests.conftest import TESTS_FOLDER, compare_string_against_reference def test_wrong_params(): @@ -29,8 +29,8 @@ def test_partial_eval(n_model): derivatives_eqs = partial_eval(derivatives_eqs, lhs_to_keep, keep_multiple_usages=False) assert len(derivatives_eqs) == 4, str(len(derivatives_eqs)) - expected = open(os.path.join(TESTS_FOLDER, 'test_partial_eval_derivatives_eqs.txt'), 'r').read() - assert str(derivatives_eqs) == expected, str(derivatives_eqs) + compare_string_against_reference( + str(derivatives_eqs), os.path.join(TESTS_FOLDER, 'test_partial_eval_derivatives_eqs.txt')) def test_partial_eval_piecewise():